B °u¸”H0­ã@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ú6/opt/alt/python37/lib/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 =