B � f��@sZdZddlZddlmZddlmZdddd�Zdd d �Zdd d�Zddd�Z dd�Z dS)zFdistutils.file_util Utility functions for operating on single files. �N)�DistutilsFileError)�logZcopyingz hard linkingzsymbolically linking)N�hard�sym�@c Cs�d}d}�zvyt|d�}Wn4tk rN}ztd||jf��Wdd}~XYnXtj�|�r�yt�|�Wn4tk r�}ztd||jf��Wdd}~XYnXyt|d�}Wn4tk r�}ztd||jf��Wdd}~XYnXx�y|�|�}Wn6tk �r*}ztd||jf��Wdd}~XYnX|�s4Py|� |�Wq�tk �rx}ztd||jf��Wdd}~XYq�Xq�WWd|�r�|� �|�r�|� �XdS) a5Copy 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. N�rbzcould not open '%s': %szcould not delete '%s': %s�wbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) �open�OSErrorr�strerror�os�path�exists�unlink�read�write�close)�src�dst� buffer_sizeZfsrcZfdst�eZbuf�r�8/opt/alt/python37/lib64/python3.7/distutils/file_util.py�_copy_file_contentssF $ """*r�cCs ddlm}ddlm} m} m} m} tj� |�s %srr)Zdistutils.dep_utilr�statrrrrr r �isfiler�isdir�join�basename�dirnamer�debug� _copy_action�KeyError� ValueError�infor�samefile�linkr �symlinkr�utime�chmod)rrZ preserve_modeZpreserve_times�updater,�verbose�dry_runrrrrr�dir�action�strrr� copy_fileCsT!               r6c Cs�ddlm}m}m}m}m}ddl} |dkr:t�d||�|rB|S||�sVt d|��||�rrt j � |||��}n||�r�t d||f��|||��s�t d||f��d } yt � ||�WnPtk �r } z0| j\} } | | jkr�d } nt d ||| f��Wdd} ~ XYnX| �r�t|||d �yt �|�Wnhtk �r�} zH| j\} } yt �|�Wntk �rpYnXt d |||| f��Wdd} ~ XYnX|S)a%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??? r)rr!r"r$r%Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%�errnorr*rr r r#�renamer �argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnum�msgrrr� move_file�sR       " "r;cCs:t|d�}z x|D]}|�|d�qWWd|��XdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. �w� N)r rr)�filename�contents�f�linerrr� write_file�s   rB)r)rrrNrr)rr) �__doc__r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrr�s   3 c =