3 \@sVddlZddlmZddlmZddddZdd d Zdd dZdddZddZ dS)N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)NhardsymicNCsd}d}zvyt|d}Wn4tk rN}ztd||jfWYdd}~XnXtjj|rytj|Wn4tk r}ztd||jfWYdd}~XnXyt|d}Wn4tk r}ztd||jfWYdd}~XnXxy|j|}Wn6tk r*}ztd||jfWYdd}~XnX|s4Py|j |Wqtk rx}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS)Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.6/distutils/file_util.py_copy_file_contentssF $ """*rcCsddlm}ddlm} m} m} m} tjj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c(Csddlm}m}m}m}m}ddl} |dkr:tjd|||rB|S||sVt d|||rrt j j |||}n||rt d||f|||st d||fd} yt j ||WnPtk r } z2| j\} } | | jkrd } nt d ||| fWYdd} ~ XnX| rt|||d yt j|Wnhtk r} zJ| j\} } yt j|Wntk rpYnXt d |||| fWYdd} ~ XnX|S) Nr)rr!r"r$r%rzmoving %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_itrZnummsgrrr move_filesR       " "r;c Cs:t|d}z x|D]}|j|dqWWd|jXdS)Nw )r rr)filenamecontentsflinerrr write_files   rB@)rC)rrrNrr)rr) r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =