From dce391cb398f4ce266d98130d10810a6a36617b3 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Mon, 15 Dec 2003 16:08:48 +0000 Subject: [PATCH] Remove __del__ methods to avoid creating uncollectable cyclic trash. Keep close() methods for backwards compatibility. Does any call close() explicitly? --- Lib/urllib2.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 3fbb5e3c596..35a46be5538 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -170,12 +170,6 @@ class HTTPError(URLError, addinfourl): def __str__(self): return 'HTTP Error %s: %s' % (self.code, self.msg) - def __del__(self): - # XXX is this safe? what if user catches exception, then - # extracts fp and discards exception? - if self.fp: - self.fp.close() - class GopherError(URLError): pass @@ -307,13 +301,9 @@ class OpenerDirector: bisect.insort(self.handlers, handler) handler.add_parent(self) - def __del__(self): - self.close() - def close(self): - for handler in self.handlers: - handler.close() - self.handlers = [] + # Only exists for backwards compatibility. + pass def _call_chain(self, chain, kind, meth_name, *args): # XXX raise an exception if no one else should try to handle @@ -436,7 +426,8 @@ class BaseHandler: self.parent = parent def close(self): - self.parent = None + # Only exists for backwards compatibility + pass def __lt__(self, other): if not hasattr(other, "handler_order"):