parameters: (dst_url, src_obj_metadata, logger)
return_statement: return download_file_name, need_to_unzip
docstring: Creates a new download file, and deletes the file that will be replaced.
  
    Names and creates a temporary file for this download. Also, if there is an
    existing file at the path where this file will be placed after the download
    is completed, that file will be deleted.
  
    Args:
      dst_url: Destination FileUrl.
      src_obj_metadata: Metadata from the source object.
      logger: for outputting log messages.
  
    Returns:
      (download_file_name, need_to_unzip)
      download_file_name: The name of the temporary file to which the object will
                          be downloaded.
      need_to_unzip: If true, a temporary zip file was used and must be
                     uncompressed as part of validation.
docstring_summary: Creates a new download file, and deletes the file that will be replaced.
docstring_tokens: Creates a new download file and deletes the file that will be replaced .
function: def _GetDownloadFile(dst_url, src_obj_metadata, logger):
    """Creates a new download file, and deletes the file that will be replaced.
  
    Names and creates a temporary file for this download. Also, if there is an
    existing file at the path where this file will be placed after the download
    is completed, that file will be deleted.
  
    Args:
      dst_url: Destination FileUrl.
      src_obj_metadata: Metadata from the source object.
      logger: for outputting log messages.
  
    Returns:
      (download_file_name, need_to_unzip)
      download_file_name: The name of the temporary file to which the object will
                          be downloaded.
      need_to_unzip: If true, a temporary zip file was used and must be
                     uncompressed as part of validation.
    """
    dir_name = os.path.dirname(dst_url.object_name)
    if dir_name and not os.path.exists(dir_name):
      # Do dir creation in try block so can ignore case where dir already
      # exists. This is needed to avoid a race condition when running gsutil
      # -m cp.
      try:
        os.makedirs(dir_name)
      except OSError, e:
        if e.errno != errno.EEXIST:
          raise
  
    need_to_unzip = False
    # For gzipped objects download to a temp file and unzip. For the XML API,
    # this represents the result of a HEAD request. For the JSON API, this is
    # the stored encoding which the service may not respect. However, if the
    # server sends decompressed bytes for a file that is stored compressed
    # (double compressed case), there is no way we can validate the hash and
    # we will fail our hash check for the object.
    if (src_obj_metadata.contentEncoding and
        src_obj_metadata.contentEncoding.lower().endswith('gzip')):
      need_to_unzip = True
      download_file_name = _GetDownloadTempZipFileName(dst_url)
      logger.info(
          'Downloading to temp gzip filename %s', download_file_name)
    else:
      download_file_name = _GetDownloadTempFileName(dst_url)
  
    # If a file exists at the permanent destination (where the file will be moved
    # after the download is completed), delete it here to reduce disk space
    # requirements.
    if os.path.exists(dst_url.object_name):
      os.unlink(dst_url.object_name)
  
    # Downloads open the temporary download file in r+b mode, which requires it
    # to already exist, so we create it here if it doesn't exist already.
    fp = open(download_file_name, 'ab')
    fp.close()
    return download_file_name, need_to_unzip
function_tokens: def _GetDownloadFile ( dst_url , src_obj_metadata , logger ) : dir_name = os . path . dirname ( dst_url . object_name ) if dir_name and not os . path . exists ( dir_name ) : # Do dir creation in try block so can ignore case where dir already # exists. This is needed to avoid a race condition when running gsutil # -m cp. try : os . makedirs ( dir_name ) except OSError , e : if e . errno != errno . EEXIST : raise need_to_unzip = False # For gzipped objects download to a temp file and unzip. For the XML API, # this represents the result of a HEAD request. For the JSON API, this is # the stored encoding which the service may not respect. However, if the # server sends decompressed bytes for a file that is stored compressed # (double compressed case), there is no way we can validate the hash and # we will fail our hash check for the object. if ( src_obj_metadata . contentEncoding and src_obj_metadata . contentEncoding . lower ( ) . endswith ( 'gzip' ) ) : need_to_unzip = True download_file_name = _GetDownloadTempZipFileName ( dst_url ) logger . info ( 'Downloading to temp gzip filename %s' , download_file_name ) else : download_file_name = _GetDownloadTempFileName ( dst_url ) # If a file exists at the permanent destination (where the file will be moved # after the download is completed), delete it here to reduce disk space # requirements. if os . path . exists ( dst_url . object_name ) : os . unlink ( dst_url . object_name ) # Downloads open the temporary download file in r+b mode, which requires it # to already exist, so we create it here if it doesn't exist already. fp = open ( download_file_name , 'ab' ) fp . close ( ) return download_file_name , need_to_unzip