[Stackless] Fwd: [Stackless-checkins] stackless (2.7-slp): add a filter function to zipfile.PyZipFile.

Christian Tismer tismer at stackless.com
Fri Oct 25 02:05:50 CEST 2013


Hi Richard,

yes, I needed in a version of stackless since I'm working on a project
that needs this in 2.7.5 slp, but probably pushed to the wrong
remote repos.

cheers - chris

On 24.10.13 22:28, Richard Tew wrote:
> Christian,
>
> Does this really need to be checked into the Stackless repository?
>
> I think up til now, the general rule has been to not check in fixes to
> mainline which are not related to Stackless directly and are not
> checked in mainline.  Does this qualify?
>
> Cheers,
> Richard.
>
> ---------- Forwarded message ----------
> From: "christian.tismer" <python-checkins at python.org>
> Date: Wed, 16 Oct 2013 22:00:12 +0200 (CEST)
> Subject: [Stackless-checkins] stackless (2.7-slp): add a filter
> function to zipfile.PyZipFile.
> To: stackless-checkins at stackless.com
>
> http://hg.python.org/stackless/rev/22523a1bd01e
> changeset:   82915:22523a1bd01e
> branch:      2.7-slp
> user:        Christian Tismer  <tismer at stackless.com>
> date:        Wed Oct 16 21:58:28 2013 +0200
> summary:
>    add a filter function to zipfile.PyZipFile.
>
> Reason:
> When creating an archive of the python lib, we don't want the tests.
> Especially the test file "badsyntax_future3.py" does not compile.
>
> files:
>    Lib/zipfile.py |  11 +++++++++--
>    1 files changed, 9 insertions(+), 2 deletions(-)
>
>
> diff --git a/Lib/zipfile.py b/Lib/zipfile.py
> --- a/Lib/zipfile.py
> +++ b/Lib/zipfile.py
> @@ -1353,7 +1353,7 @@
>   class PyZipFile(ZipFile):
>       """Class to create ZIP archives with Python library files and packages."""
>
> -    def writepy(self, pathname, basename = ""):
> +    def writepy(self, pathname, basename = "", filterfunc=None):
>           """Add all files from "pathname" to the ZIP archive.
>
>           If pathname is a package directory, search the directory and
> @@ -1364,7 +1364,13 @@
>           archive.  Added modules are always module.pyo or module.pyc.
>           This method will compile the module.py into module.pyc if
>           necessary.
> +        If filterfunc(pathname) is given, it is called with every argument.
> +        When it is False, the file or directory is skipped.
>           """
> +        if filterfunc and not filterfunc(pathname):
> +            if self.debug:
> +                print 'pathname "%s" skipped by filterfunc' % pathname
> +            return
>           dir, name = os.path.split(pathname)
>           if os.path.isdir(pathname):
>               initname = os.path.join(pathname, "__init__.py")
> @@ -1389,7 +1395,8 @@
>                       if os.path.isdir(path):
>                           if os.path.isfile(os.path.join(path, "__init__.py")):
>                               # This is a package directory, add it
> -                            self.writepy(path, basename)  # Recursive call
> +                            self.writepy(path, basename,
> +                                         filterfunc=filterfunc)  #
> Recursive call
>                       elif ext == ".py":
>                           fname, arcname = self._get_codename(path[0:-3],
>                                            basename)
>


-- 
Christian Tismer             :^)   <mailto:tismer at stackless.com>
Software Consulting          :     Have a break! Take a ride on Python's
Karl-Liebknecht-Str. 121     :    *Starship* http://starship.python.net/
14482 Potsdam                :     PGP key -> http://pgp.uni-mainz.de
phone +49 173 24 18 776  fax +49 (30) 700143-0023
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
       whom do you want to sponsor today?   http://www.stackless.com/




More information about the Stackless mailing list