changeset: 87417:271cc3660445 user: Serhiy Storchaka date: Sat Nov 23 15:55:38 2013 +0200 files: Doc/library/zipfile.rst Lib/test/test_zipfile.py Lib/test/test_zipfile64.py Lib/zipfile.py Misc/ACKS Misc/NEWS description: Issue #17201: ZIP64 extensions now are enabled by default. Patch by William Mallard. diff -r 11a200202d7a -r 271cc3660445 Doc/library/zipfile.rst --- a/Doc/library/zipfile.rst Sat Nov 23 14:52:39 2013 +0100 +++ b/Doc/library/zipfile.rst Sat Nov 23 15:55:38 2013 +0200 @@ -130,7 +130,7 @@ --------------- -.. class:: ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=False) +.. class:: ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True) Open a ZIP file, where *file* can be either a path to a file (a string) or a file-like object. The *mode* parameter should be ``'r'`` to read an existing @@ -147,12 +147,9 @@ :const:`ZIP_BZIP2` or :const:`ZIP_LZMA` is specified but the corresponding module (:mod:`zlib`, :mod:`bz2` or :mod:`lzma`) is not available, :exc:`RuntimeError` is also raised. The default is :const:`ZIP_STORED`. If *allowZip64* is - ``True`` zipfile will create ZIP files that use the ZIP64 extensions when - the zipfile is larger than 2 GiB. If it is false (the default) :mod:`zipfile` + ``True`` (the default) zipfile will create ZIP files that use the ZIP64 + extensions when the zipfile is larger than 2 GiB. If it is false :mod:`zipfile` will raise an exception when the ZIP file would require ZIP64 extensions. - ZIP64 extensions are disabled by default because the default :program:`zip` - and :program:`unzip` commands on Unix (the InfoZIP utilities) don't support - these extensions. If the file is created with mode ``'a'`` or ``'w'`` and then :meth:`closed ` without adding any files to the archive, the appropriate @@ -171,6 +168,9 @@ .. versionchanged:: 3.3 Added support for :mod:`bzip2 ` and :mod:`lzma` compression. + .. versionchanged:: 3.4 + ZIP64 extensions are enabled by default. + .. method:: ZipFile.close() @@ -374,12 +374,15 @@ The :class:`PyZipFile` constructor takes the same parameters as the :class:`ZipFile` constructor, and one additional parameter, *optimize*. -.. class:: PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=False, \ +.. class:: PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, \ optimize=-1) .. versionadded:: 3.2 The *optimize* parameter. + .. versionchanged:: 3.4 + ZIP64 extensions are enabled by default. + Instances have one method in addition to those of :class:`ZipFile` objects: .. method:: PyZipFile.writepy(pathname, basename='', filterfunc=None) diff -r 11a200202d7a -r 271cc3660445 Lib/test/test_zipfile.py --- a/Lib/test/test_zipfile.py Sat Nov 23 14:52:39 2013 +0100 +++ b/Lib/test/test_zipfile.py Sat Nov 23 15:55:38 2013 +0200 @@ -506,12 +506,12 @@ compression = zipfile.ZIP_STORED def large_file_exception_test(self, f, compression): - with zipfile.ZipFile(f, "w", compression) as zipfp: + with zipfile.ZipFile(f, "w", compression, allowZip64=False) as zipfp: self.assertRaises(zipfile.LargeZipFile, zipfp.write, TESTFN, "another.name") def large_file_exception_test2(self, f, compression): - with zipfile.ZipFile(f, "w", compression) as zipfp: + with zipfile.ZipFile(f, "w", compression, allowZip64=False) as zipfp: self.assertRaises(zipfile.LargeZipFile, zipfp.writestr, "another.name", self.data) diff -r 11a200202d7a -r 271cc3660445 Lib/test/test_zipfile64.py --- a/Lib/test/test_zipfile64.py Sat Nov 23 14:52:39 2013 +0100 +++ b/Lib/test/test_zipfile64.py Sat Nov 23 15:55:38 2013 +0200 @@ -38,7 +38,7 @@ def zipTest(self, f, compression): # Create the ZIP archive. - zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True) + zipfp = zipfile.ZipFile(f, "w", compression) # It will contain enough copies of self.data to reach about 6GB of # raw data to store. @@ -92,7 +92,7 @@ def testMoreThan64kFiles(self): # This test checks that more than 64k files can be added to an archive, # and that the resulting archive can be read properly by ZipFile - zipf = zipfile.ZipFile(TESTFN, mode="w") + zipf = zipfile.ZipFile(TESTFN, mode="w", allowZip64=False) zipf.debug = 100 numfiles = (1 << 16) * 3//2 for i in range(numfiles): diff -r 11a200202d7a -r 271cc3660445 Lib/zipfile.py --- a/Lib/zipfile.py Sat Nov 23 14:52:39 2013 +0100 +++ b/Lib/zipfile.py Sat Nov 23 15:55:38 2013 +0200 @@ -876,7 +876,7 @@ class ZipFile: """ Class with methods to open, read, write, close, list zip files. - z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) + z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True) file: Either the path to the file, or a file-like object. If it is a path, the file will be opened and closed by ZipFile. @@ -892,7 +892,7 @@ fp = None # Set here since __del__ checks it _windows_illegal_name_trans_table = None - def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False): + def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=True): """Open the ZIP file with mode read "r", write "w" or append "a".""" if mode not in ("r", "w", "a"): raise RuntimeError('ZipFile() requires mode "r", "w", or "a"') @@ -1561,7 +1561,7 @@ """Class to create ZIP archives with Python library files and packages.""" def __init__(self, file, mode="r", compression=ZIP_STORED, - allowZip64=False, optimize=-1): + allowZip64=True, optimize=-1): ZipFile.__init__(self, file, mode=mode, compression=compression, allowZip64=allowZip64) self._optimize = optimize @@ -1783,7 +1783,7 @@ os.path.join(path, nm), os.path.join(zippath, nm)) # else: ignore - with ZipFile(args[1], 'w', allowZip64=True) as zf: + with ZipFile(args[1], 'w') as zf: for src in args[2:]: addToZip(zf, src, os.path.basename(src)) diff -r 11a200202d7a -r 271cc3660445 Misc/ACKS --- a/Misc/ACKS Sat Nov 23 14:52:39 2013 +0100 +++ b/Misc/ACKS Sat Nov 23 15:55:38 2013 +0200 @@ -806,6 +806,7 @@ Grzegorz Makarewicz David Malcolm Greg Malcolm +William Mallard Ken Manheimer Vladimir Marangozov Colin Marc diff -r 11a200202d7a -r 271cc3660445 Misc/NEWS --- a/Misc/NEWS Sat Nov 23 14:52:39 2013 +0100 +++ b/Misc/NEWS Sat Nov 23 15:55:38 2013 +0200 @@ -68,6 +68,9 @@ Library ------- +- Issue #17201: ZIP64 extensions now are enabled by default. Patch by + William Mallard. + - Issue #19292: Add SSLContext.load_default_certs() to load default root CA certificates from default stores or system stores. By default the method loads CA certs for authentication of server certs.

AltStyle によって変換されたページ (->オリジナル) /