diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2014-05-17 23:09:56 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2014-05-17 23:09:56 -0400 |
commit | 0f7f8d71dc1c8eda869c423a324064d4bc419879 (patch) | |
tree | 4967353555bf29f2c721aa6a60c6d998c19eeb5d /setuptools/archive_util.py | |
parent | 14f168f249c86085dbf9f67fdc8d6a5b801946a0 (diff) | |
download | external_python_setuptools-0f7f8d71dc1c8eda869c423a324064d4bc419879.tar.gz external_python_setuptools-0f7f8d71dc1c8eda869c423a324064d4bc419879.tar.bz2 external_python_setuptools-0f7f8d71dc1c8eda869c423a324064d4bc419879.zip |
Use ContextualZipFile and contextlib.closing for archiveutil
Diffstat (limited to 'setuptools/archive_util.py')
-rwxr-xr-x | setuptools/archive_util.py | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/setuptools/archive_util.py b/setuptools/archive_util.py index a5be2f98..67a67e23 100755 --- a/setuptools/archive_util.py +++ b/setuptools/archive_util.py @@ -11,7 +11,8 @@ import tarfile import os import shutil import posixpath -from pkg_resources import ensure_directory +import contextlib +from pkg_resources import ensure_directory, ContextualZipFile from distutils.errors import DistutilsError class UnrecognizedFormat(DistutilsError): @@ -92,8 +93,7 @@ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): if not zipfile.is_zipfile(filename): raise UnrecognizedFormat("%s is not a zip file" % (filename,)) - z = zipfile.ZipFile(filename) - try: + with ContextualZipFile(filename) as z: for info in z.infolist(): name = info.filename @@ -121,8 +121,6 @@ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): unix_attributes = info.external_attr >> 16 if unix_attributes: os.chmod(target, unix_attributes) - finally: - z.close() def unpack_tarfile(filename, extract_dir, progress_filter=default_filter): @@ -138,7 +136,7 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter): raise UnrecognizedFormat( "%s is not a compressed or uncompressed tar file" % (filename,) ) - try: + with contextlib.closing(tarobj): tarobj.chown = lambda *args: None # don't do any chowning! for member in tarobj: name = member.name @@ -164,7 +162,5 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter): except tarfile.ExtractError: pass # chown/chmod/mkfifo/mknode/makedev failed return True - finally: - tarobj.close() extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile |