parameters: (base_name, format, root_dir=None, base_dir=None, verbose=0,
                   dry_run=0, owner=None, group=None)
return_statement: return filename
docstring: Create an archive file (eg. zip or tar).
  
      'base_name' is the name of the file to create, minus any format-specific
      extension; 'format' is the archive format: one of "zip", "tar", "gztar",
      "bztar", "xztar", or "ztar".
  
      'root_dir' is a directory that will be the root directory of the
      archive; ie. we typically chdir into 'root_dir' before creating the
      archive.  'base_dir' is the directory where we start archiving from;
      ie. 'base_dir' will be the common prefix of all files and
      directories in the archive.  'root_dir' and 'base_dir' both default
      to the current directory.  Returns the name of the archive file.
  
      'owner' and 'group' are used when creating a tar archive. By default,
      uses the current owner and group.
docstring_summary: Create an archive file (eg. zip or tar).
docstring_tokens: Create an archive file ( eg . zip or tar ) .
function: def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
                   dry_run=0, owner=None, group=None):
      """Create an archive file (eg. zip or tar).
  
      'base_name' is the name of the file to create, minus any format-specific
      extension; 'format' is the archive format: one of "zip", "tar", "gztar",
      "bztar", "xztar", or "ztar".
  
      'root_dir' is a directory that will be the root directory of the
      archive; ie. we typically chdir into 'root_dir' before creating the
      archive.  'base_dir' is the directory where we start archiving from;
      ie. 'base_dir' will be the common prefix of all files and
      directories in the archive.  'root_dir' and 'base_dir' both default
      to the current directory.  Returns the name of the archive file.
  
      'owner' and 'group' are used when creating a tar archive. By default,
      uses the current owner and group.
      """
      save_cwd = os.getcwd()
      if root_dir is not None:
          log.debug("changing into '%s'", root_dir)
          base_name = os.path.abspath(base_name)
          if not dry_run:
              os.chdir(root_dir)
  
      if base_dir is None:
          base_dir = os.curdir
  
      kwargs = {'dry_run': dry_run}
  
      try:
          format_info = ARCHIVE_FORMATS[format]
      except KeyError:
          raise ValueError("unknown archive format '%s'" % format)
  
      func = format_info[0]
      for arg, val in format_info[1]:
          kwargs[arg] = val
  
      if format != 'zip':
          kwargs['owner'] = owner
          kwargs['group'] = group
  
      try:
          filename = func(base_name, base_dir, **kwargs)
      finally:
          if root_dir is not None:
              log.debug("changing back to '%s'", save_cwd)
              os.chdir(save_cwd)
  
      return filename
function_tokens: def make_archive ( base_name , format , root_dir = None , base_dir = None , verbose = 0 , dry_run = 0 , owner = None , group = None ) : save_cwd = os . getcwd ( ) if root_dir is not None : log . debug ( "changing into '%s'" , root_dir ) base_name = os . path . abspath ( base_name ) if not dry_run : os . chdir ( root_dir ) if base_dir is None : base_dir = os . curdir kwargs = { 'dry_run' : dry_run } try : format_info = ARCHIVE_FORMATS [ format ] except KeyError : raise ValueError ( "unknown archive format '%s'" % format ) func = format_info [ 0 ] for arg , val in format_info [ 1 ] : kwargs [ arg ] = val if format != 'zip' : kwargs [ 'owner' ] = owner kwargs [ 'group' ] = group try : filename = func ( base_name , base_dir , * * kwargs ) finally : if root_dir is not None : log . debug ( "changing back to '%s'" , save_cwd ) os . chdir ( save_cwd ) return filename