[Python-Dev] [Python-checkins] r86699 - python/branches/py3k/Lib/zipfile.py

Łukasz Langa lukasz at langa.pl
Tue Nov 23 01:25:01 CET 2010


Wiadomość napisana przez Benjamin Peterson w dniu 2010-11-23, o godz. 00:47:

> No test?
> 

The tests were there already, raising ResourceWarnings. After this change, they stopped doing that. You may say: now they pass for the first time :)

Best regards,
Łukasz


> 2010/11/22 lukasz.langa <python-checkins at 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-checkins at python.org
>> http://mail.python.org/mailman/listinfo/python-checkins
>> 
> 
> 
> 
> -- 
> Regards,
> Benjamin
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins

-- 
Pozdrawiam serdecznie,
Łukasz Langa
tel. +48 791 080 144
WWW http://lukasz.langa.pl/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20101123/5cb7412d/attachment.html>


More information about the Python-Dev mailing list