parameters: (self, pathname, basename="", filterfunc=None)
docstring: Add all files from "pathname" to the ZIP archive.
  
          If pathname is a package directory, search the directory and
          all package subdirectories recursively for all *.py and enter
          the modules into the archive.  If pathname is a plain
          directory, listdir *.py and enter all modules.  Else, pathname
          must be a Python *.py file and the module will be put into the
          archive.  Added modules are always 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.
docstring_summary: Add all files from "pathname" to the ZIP archive.
docstring_tokens: Add all files from pathname to the ZIP archive .
function: 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
          all package subdirectories recursively for all *.py and enter
          the modules into the archive.  If pathname is a plain
          directory, listdir *.py and enter all modules.  Else, pathname
          must be a Python *.py file and the module will be put into the
          archive.  Added modules are always 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.
          """
          pathname = os.fspath(pathname)
          if filterfunc and not filterfunc(pathname):
              if self.debug:
                  label = 'path' if os.path.isdir(pathname) else 'file'
                  print('%s %r skipped by filterfunc' % (label, pathname))
              return
          dir, name = os.path.split(pathname)
          if os.path.isdir(pathname):
              initname = os.path.join(pathname, "__init__.py")
              if os.path.isfile(initname):
                  # This is a package directory, add it
                  if basename:
                      basename = "%s/%s" % (basename, name)
                  else:
                      basename = name
                  if self.debug:
                      print("Adding package in", pathname, "as", basename)
                  fname, arcname = self._get_codename(initname[0:-3], basename)
                  if self.debug:
                      print("Adding", arcname)
                  self.write(fname, arcname)
                  dirlist = sorted(os.listdir(pathname))
                  dirlist.remove("__init__.py")
                  # Add all *.py files and package subdirectories
                  for filename in dirlist:
                      path = os.path.join(pathname, filename)
                      root, ext = os.path.splitext(filename)
                      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,
                                           filterfunc=filterfunc)  # Recursive call
                      elif ext == ".py":
                          if filterfunc and not filterfunc(path):
                              if self.debug:
                                  print('file %r skipped by filterfunc' % path)
                              continue
                          fname, arcname = self._get_codename(path[0:-3],
                                                              basename)
                          if self.debug:
                              print("Adding", arcname)
                          self.write(fname, arcname)
              else:
                  # This is NOT a package directory, add its files at top level
                  if self.debug:
                      print("Adding files from directory", pathname)
                  for filename in sorted(os.listdir(pathname)):
                      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 %r skipped by filterfunc' % path)
                              continue
                          fname, arcname = self._get_codename(path[0:-3],
                                                              basename)
                          if self.debug:
                              print("Adding", arcname)
                          self.write(fname, arcname)
          else:
              if pathname[-3:] != ".py":
                  raise RuntimeError(
                      'Files added with writepy() must end with ".py"')
              fname, arcname = self._get_codename(pathname[0:-3], basename)
              if self.debug:
                  print("Adding file", arcname)
              self.write(fname, arcname)
function_tokens: def writepy ( self , pathname , basename = "" , filterfunc = None ) : pathname = os . fspath ( pathname ) if filterfunc and not filterfunc ( pathname ) : if self . debug : label = 'path' if os . path . isdir ( pathname ) else 'file' print ( '%s %r skipped by filterfunc' % ( label , pathname ) ) return dir , name = os . path . split ( pathname ) if os . path . isdir ( pathname ) : initname = os . path . join ( pathname , "__init__.py" ) if os . path . isfile ( initname ) : # This is a package directory, add it if basename : basename = "%s/%s" % ( basename , name ) else : basename = name if self . debug : print ( "Adding package in" , pathname , "as" , basename ) fname , arcname = self . _get_codename ( initname [ 0 : - 3 ] , basename ) if self . debug : print ( "Adding" , arcname ) self . write ( fname , arcname ) dirlist = sorted ( os . listdir ( pathname ) ) dirlist . remove ( "__init__.py" ) # Add all *.py files and package subdirectories for filename in dirlist : path = os . path . join ( pathname , filename ) root , ext = os . path . splitext ( filename ) 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 , filterfunc = filterfunc ) # Recursive call elif ext == ".py" : if filterfunc and not filterfunc ( path ) : if self . debug : print ( 'file %r skipped by filterfunc' % path ) continue fname , arcname = self . _get_codename ( path [ 0 : - 3 ] , basename ) if self . debug : print ( "Adding" , arcname ) self . write ( fname , arcname ) else : # This is NOT a package directory, add its files at top level if self . debug : print ( "Adding files from directory" , pathname ) for filename in sorted ( os . listdir ( pathname ) ) : 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 %r skipped by filterfunc' % path ) continue fname , arcname = self . _get_codename ( path [ 0 : - 3 ] , basename ) if self . debug : print ( "Adding" , arcname ) self . write ( fname , arcname ) else : if pathname [ - 3 : ] != ".py" : raise RuntimeError ( 'Files added with writepy() must end with ".py"' ) fname , arcname = self . _get_codename ( pathname [ 0 : - 3 ] , basename ) if self . debug : print ( "Adding file" , arcname ) self . write ( fname , arcname )