def copy_file(src, dst, preserve_mode=1, preserve_times=1, update=0, link=None, verbose=1, dry_run=0):
 from distutils.dep_util import newer
 from stat import ST_ATIME, ST_MTIME, ST_MODE, S_IMODE
 if (not os.path.isfile(src)):
  raise DistutilsFileError(("can't copy '%s': doesn't exist or not a regular file" % src))
 if os.path.isdir(dst):
  dir = dst
  dst = os.path.join(dst, os.path.basename(src))
 else:
  dir = os.path.dirname(dst)
 if (update and (not newer(src, dst))):
  if (verbose >= 1):
   log.debug('not copying %s (output up-to-date)', src)
  return (dst, 0)
 try:
  action = _copy_action[link]
 except KeyError:
  raise ValueError(("invalid value '%s' for 'link' argument" % link))
 if (verbose >= 1):
  if (os.path.basename(dst) == os.path.basename(src)):
   log.info('%s %s -> %s', action, src, dir)
  else:
   log.info('%s %s -> %s', action, src, dst)
 if dry_run:
  return (dst, 1)
 elif (link == 'hard'):
  if (not (os.path.exists(dst) and os.path.samefile(src, dst))):
   try:
    os.link(src, dst)
    return (dst, 1)
   except OSError:
    pass
 elif (link == 'sym'):
  if (not (os.path.exists(dst) and os.path.samefile(src, dst))):
   os.symlink(src, dst)
   return (dst, 1)
 _copy_file_contents(src, dst)
 if (preserve_mode or preserve_times):
  st = os.stat(src)
  if preserve_times:
   os.utime(dst, (st[ST_ATIME], st[ST_MTIME]))
  if preserve_mode:
   os.chmod(dst, S_IMODE(st[ST_MODE]))
 return (dst, 1)

def copy_file ( src , dst , preserve_mode = 1 , preserve_times = 1 , update = 0 , link = None , verbose = 1 , dry_run = 0 ) : from distutils . dep_util import newer from stat import ST_ATIME , ST_MTIME , ST_MODE , S_IMODE if ( not os . path . isfile ( src ) ) : raise DistutilsFileError ( ( "can't copy '%s': doesn't exist or not a regular file" % src ) ) if os . path . isdir ( dst ) : dir = dst dst = os . path . join ( dst , os . path . basename ( src ) ) else : dir = os . path . dirname ( dst ) if ( update and ( not newer ( src , dst ) ) ) : if ( verbose >= 1 ) : log . debug ( 'not copying %s (output up-to-date)' , src ) return ( dst , 0 ) try : action = _copy_action [ link ] except KeyError : raise ValueError ( ( "invalid value '%s' for 'link' argument" % link ) ) if ( verbose >= 1 ) : if ( os . path . basename ( dst ) == os . path . basename ( src ) ) : log . info ( '%s %s -> %s' , action , src , dir ) else : log . info ( '%s %s -> %s' , action , src , dst ) if dry_run : return ( dst , 1 ) elif ( link == 'hard' ) : if ( not ( os . path . exists ( dst ) and os . path . samefile ( src , dst ) ) ) : try : os . link ( src , dst ) return ( dst , 1 ) except OSError : pass elif ( link == 'sym' ) : if ( not ( os . path . exists ( dst ) and os . path . samefile ( src , dst ) ) ) : os . symlink ( src , dst ) return ( dst , 1 ) _copy_file_contents ( src , dst ) if ( preserve_mode or preserve_times ) : st = os . stat ( src ) if preserve_times : os . utime ( dst , ( st [ ST_ATIME ] , st [ ST_MTIME ] ) ) if preserve_mode : os . chmod ( dst , S_IMODE ( st [ ST_MODE ] ) ) return ( dst , 1 )
copy source_path to output_path .