�`^c@s�dZdZddlZddlmZddlmZidd6dd6d d
6Zdd
�Z ddddddd�Z
ddd�Zd�ZdS(sFdistutils.file_util
Utility functions for operating on single files.
s$Id$i�N(tDistutilsFileError(tlogtcopyingshard linkingthardssymbolically linkingtsymiicCs�d}d}z�yt|d�}Wn2tjk
rV\}}td||f��nXtjj|�r�ytj|�Wq�tjk
r�\}}td||f��q�Xnyt|d�}Wn2tjk
r�}}td||f��nXx�y|j|�}Wn2tjk
rD\}}td||f��nX|sOPny|j |�Wq�jk
r�\}}td||f��q��|r�|j
�n|r�|j
�nXdS( s5Copy the file 'src' to 'dst'.
Both must be filenames. Any error opening either file, reading from
'src', or writing to 'dst', raises DistutilsFileError. Data is
read/written in chunks of 'buffer_size' bytes (default 16k). No attempt
is made to handle anything apart from regular files.
trbscould not open '%s': %sscould not delete '%s': %stwbscould not create '%s': %sscould not read from '%s': %sscould not write to '%s': %sN(tNonetopentosterrorRtpathtexiststunlinktreadtwritetclose(tsrctdsttbuffer_sizetfsrctfdstterrnoterrstrtbuf((s)/sys/lib/python2.7/distutils/file_util.pyt_copy_file_contentssF
iicCs�ddlm}ddlm} m}
m}m}tjj |�sWt
d|��ntjj|�r�|}
tjj|tjj
|��}ntjj|�}
|r�||�r�dkr�tjd|�n|dfSyt|}Wn!tk
rtd|��nX|dkrxtjj
|�tjj
|�kr_tjd |||
�qxtjd |||�n|r�|dfS|d
kr�tjj|�o�tjj||�s�tj||�q�n�|dkrtjj|�otjj||�s�tj||�q�nut||�|s3|r�tj|�}|ritj||| ||
f�n|r�tj||||��q�n|dfS(s�Copy a file 'src' to 'dst'.
If 'dst' is a directory, then 'src' is copied there with the same name;
otherwise, it must be a filename. (If the file exists, it will be
ruthlessly clobbered.) If 'preserve_mode' is true (the default),
the file's mode (type and permission bits, or whatever is analogous on
the current platform) is copied. If 'preserve_times' is true (the
default), the last-modified and last-access times are copied as well.
If 'update' is true, 'src' will only be copied if 'dst' does not exist,
or if 'dst' does exist but is older than 'src'.
'link' allows you to make hard links (os.link) or symbolic links
(os.symlink) instead of copying: set it to "hard" or "sym"; if it is
None (the default), files are copied. Don't set 'link' on systems that
don't support it: 'copy_file()' doesn't check if hard or symbolic
linking is available.
Under Mac OS, uses the native file copy function in macostools; on
other systems, uses '_copy_file_contents()' to copy file contents.
Return a tuple (dest_name, copied): 'dest_name' is the actual name of
the output file, and 'copied' is true if the file was copied (or would
have been copied, if 'dry_run' true).
i�(tnewer(tST_ATIMEtST_MTIMEtST_MODEtS_IMODEs4can't copy '%s': doesn't exist or not a regular fileis"not copying %s (output up-to-date)is&invalid value '%s' for 'link' arguments%s %s -> %sRR(tdistutils.dep_utilRtstatRRRRR RtisfileRtisdirtjointbasenametdirnameRtdebugt_copy_actiontKeyErrort
ValueErrortinfoRtsamefiletlinktsymlinkRtutimetchmod(RRt
preserve_modetpreserve_timestupdateR,tverbosetdry_runRRRRRtdirtactiontst((s)/sys/lib/python2.7/distutils/file_util.pyt copy_fileGsJ!"$
$
''
! c
Cs�ddlm}m}m}m}m}ddl} |dkrVtjd||�n|r`|S||�st d|��n||�r�t
jj|||��}n%||�r�t d||f��n|||��s�d||f��nd }
yt
j
||�WnMt
jk
rb\}}|| jkrFd}
qct d
|||f��nX|
r�||d|�yt
j|�Wq�
jk
r�}}yt
j|�Wnt
jk
r�nXt dd
||||f��q�|S(s)Move a file 'src' to 'dst'.
If 'dst' is a directory, the file will be moved into it with the same
name; otherwise, 'src' is just renamed to 'dst'. Return the new
full name of the file.
Handles cross-device moves on Unix using 'copy_file()'. What about
other systems???
i�(RR!R"R$R%Nismoving %s -> %ss#can't move '%s': not a regular files0can't move '%s': destination '%s' already existss2can't move '%s': destination '%s' not a valid pathiscouldn't move '%s' to '%s': %sR3s+couldn't move '%s' to '%s' by copy/delete: sdelete '%s' failed: %s(tos.pathRR!R"R$R%RRR*RR RR#trenameR
tEXDEVR8R
(
RRR3R4RR!R"R$R%Rtcopy_ittnumtmsg((s)/sys/lib/python2.7/distutils/file_util.pyt move_file�sP
( cCsGt|d�}z&x|D]}|j|d�qWWd|j�XdS(s{Create a file with the specified name and write 'contents' (a
sequence of strings without line terminators) to it.
tws
N(RRR(tfilenametcontentstftline((s)/sys/lib/python2.7/distutils/file_util.pyt
write_file�s
i@(
t__doc__t__revision__R tdistutils.errorsRt distutilsRRR'RR8R?RE(((s)/sys/lib/python2.7/distutils/file_util.pyt<module>s
5 Z<
|