No test? 2010/11/22 lukasz.langa <python-check...@python.org>: > Author: lukasz.langa > Date: Tue Nov 23 00:31:26 2010 > New Revision: 86699 > > Log: > Issue #9846: ZipExtFile provides no mechanism for closing the underlying file > object > > > > Modified: > python/branches/py3k/Lib/zipfile.py > > Modified: python/branches/py3k/Lib/zipfile.py > ============================================================================== > --- python/branches/py3k/Lib/zipfile.py (original) > +++ python/branches/py3k/Lib/zipfile.py Tue Nov 23 00:31:26 2010 > @@ -473,9 +473,11 @@ > # Search for universal newlines or line chunks. > PATTERN = re.compile(br'^(?P<chunk>[^\r\n]+)|(?P<newline>\n|\r\n?)') > > - def __init__(self, fileobj, mode, zipinfo, decrypter=None): > + def __init__(self, fileobj, mode, zipinfo, decrypter=None, > + close_fileobj=False): > self._fileobj = fileobj > self._decrypter = decrypter > + self._close_fileobj = close_fileobj > > self._compress_type = zipinfo.compress_type > self._compress_size = zipinfo.compress_size > @@ -647,6 +649,12 @@ > self._offset += len(data) > return data > > + def close(self): > + try: > + if self._close_fileobj: > + self._fileobj.close() > + finally: > + super().close() > > > class ZipFile: > @@ -889,8 +897,10 @@ > # given a file object in the constructor > if self._filePassed: > zef_file = self.fp > + should_close = False > else: > zef_file = io.open(self.filename, 'rb') > + should_close = True > > # Make sure we have an info object > if isinstance(name, ZipInfo): > @@ -944,7 +954,7 @@ > if h[11] != check_byte: > raise RuntimeError("Bad password for file", name) > > - return ZipExtFile(zef_file, mode, zinfo, zd) > + return ZipExtFile(zef_file, mode, zinfo, zd, > close_fileobj=should_close) > > def extract(self, member, path=None, pwd=None): > """Extract a member from the archive to the current working directory, > _______________________________________________ > Python-checkins mailing list > python-check...@python.org > http://mail.python.org/mailman/listinfo/python-checkins >
-- Regards, Benjamin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com