parameters: (base_name, base_dir, verbose=0, dry_run=0, logger=None)
return_statement: return zip_filename
docstring: Create a zip file from all the files under 'base_dir'.
  
      The output zip file will be named 'base_name' + ".zip".  Uses either the
      "zipfile" Python module (if available) or the InfoZIP "zip" utility
      (if installed and found on the default search path).  If neither tool is
      available, raises ExecError.  Returns the name of the output zip
      file.
docstring_summary: Create a zip file from all the files under 'base_dir'.
docstring_tokens: Create a zip file from all the files under base_dir .
function: def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
      """Create a zip file from all the files under 'base_dir'.
  
      The output zip file will be named 'base_name' + ".zip".  Uses either the
      "zipfile" Python module (if available) or the InfoZIP "zip" utility
      (if installed and found on the default search path).  If neither tool is
      available, raises ExecError.  Returns the name of the output zip
      file.
      """
      zip_filename = base_name + ".zip"
      archive_dir = os.path.dirname(base_name)
  
      if not os.path.exists(archive_dir):
          if logger is not None:
              logger.info("creating %s", archive_dir)
          if not dry_run:
              os.makedirs(archive_dir)
  
      # If zipfile module is not available, try spawning an external 'zip'
      # command.
      try:
          import zipfile
      except ImportError:
          zipfile = None
  
      if zipfile is None:
          _call_external_zip(base_dir, zip_filename, verbose, dry_run)
      else:
          if logger is not None:
              logger.info("creating '%s' and adding '%s' to it",
                          zip_filename, base_dir)
  
          if not dry_run:
              zip = zipfile.ZipFile(zip_filename, "w",
                                    compression=zipfile.ZIP_DEFLATED)
  
              for dirpath, dirnames, filenames in os.walk(base_dir):
                  for name in filenames:
                      path = os.path.normpath(os.path.join(dirpath, name))
                      if os.path.isfile(path):
                          zip.write(path, path)
                          if logger is not None:
                              logger.info("adding '%s'", path)
              zip.close()
  
      return zip_filename
function_tokens: def _make_zipfile ( base_name , base_dir , verbose = 0 , dry_run = 0 , logger = None ) : zip_filename = base_name + ".zip" archive_dir = os . path . dirname ( base_name ) if not os . path . exists ( archive_dir ) : if logger is not None : logger . info ( "creating %s" , archive_dir ) if not dry_run : os . makedirs ( archive_dir ) # If zipfile module is not available, try spawning an external 'zip' # command. try : import zipfile except ImportError : zipfile = None if zipfile is None : _call_external_zip ( base_dir , zip_filename , verbose , dry_run ) else : if logger is not None : logger . info ( "creating '%s' and adding '%s' to it" , zip_filename , base_dir ) if not dry_run : zip = zipfile . ZipFile ( zip_filename , "w" , compression = zipfile . ZIP_DEFLATED ) for dirpath , dirnames , filenames in os . walk ( base_dir ) : for name in filenames : path = os . path . normpath ( os . path . join ( dirpath , name ) ) if os . path . isfile ( path ) : zip . write ( path , path ) if logger is not None : logger . info ( "adding '%s'" , path ) zip . close ( ) return zip_filename