summaryrefslogtreecommitdiffstats
path: root/Lib/zipfile.py
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2013-10-22 02:09:28 (GMT)
committerChristian Tismer <tismer@stackless.com>2013-10-22 02:09:28 (GMT)
commit410d931a177af3253b7a360dc3d04f1ba57c294c (patch)
tree51a27517beff501d45e369442d3e2f166b85d2c0 /Lib/zipfile.py
parent8ed30c15e8491ba70ee1cc89acec569c72b2ce26 (diff)
downloadcpython-410d931a177af3253b7a360dc3d04f1ba57c294c.zip
cpython-410d931a177af3253b7a360dc3d04f1ba57c294c.tar.gz
cpython-410d931a177af3253b7a360dc3d04f1ba57c294c.tar.bz2
add filtering of individual files to PyZipFile
changed output of debug messages to say "path" or "file" extended test for filtering certain files in a package added test for filtering files in a python dir (no package)
Diffstat (limited to 'Lib/zipfile.py')
-rw-r--r--Lib/zipfile.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index b3554fb..ca2611d 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -1582,7 +1582,8 @@ class PyZipFile(ZipFile):
"""
if filterfunc and not filterfunc(pathname):
if self.debug:
- print('pathname "%s" skipped by filterfunc' % pathname)
+ label = 'path' if os.path.isdir(pathname) else 'file'
+ print('%s "%s" skipped by filterfunc' % (label, pathname))
return
dir, name = os.path.split(pathname)
if os.path.isdir(pathname):
@@ -1611,6 +1612,10 @@ class PyZipFile(ZipFile):
self.writepy(path, basename,
filterfunc=filterfunc) # Recursive call
elif ext == ".py":
+ if filterfunc and not filterfunc(path):
+ if self.debug:
+ print('file "%s" skipped by filterfunc' % path)
+ continue
fname, arcname = self._get_codename(path[0:-3],
basename)
if self.debug:
@@ -1624,6 +1629,10 @@ class PyZipFile(ZipFile):
path = os.path.join(pathname, filename)
root, ext = os.path.splitext(filename)
if ext == ".py":
+ if filterfunc and not filterfunc(path):
+ if self.debug:
+ print('file "%s" skipped by filterfunc' % path)
+ continue
fname, arcname = self._get_codename(path[0:-3],
basename)
if self.debug: