U e5d1@sddlZddlZddlZddlZddlZddlZzddlZ[dZWnek rZdZYnXzddl Z [ dZ Wnek rdZ YnXzddl Z [ dZ Wnek rdZ YnXzddl mZWnek rdZYnXzddlmZWnek rdZYnXejdkZdZZejdkr2ddlZner@ddlZerJdnd Zeed odejd aeoteed Zd Zddddddddddddddddddd d!d"d#d$d%d&gZGd'ddeZGd(d&d&eZGd)ddeZ Gd*ddeZ!Gd+d,d,eZ"Gd-d.d.e#Z$Gd/d0d0e#Z%d1d2Z&d3d4Z'efd5d6Z(dd7dZ)d8d9Z*d:d;Z+dd?dZ-dd>d@dZ.eedArdd>dBdCZ/ndDdCZ/dd>dEdZ0dd>dFdZ1dd>dGdZ2dHd"Z3ddIdJZ4dde2ddfdKdZ5eej6dLrdMdNZ7dOdPZ8ndQdNZ7dRdPZ8dSdTZ9dUdVZ:ej;ejejkobej?ej@kobejejAkZBddWdZCeBeC_DdXdYZEe2fdZdZFd[d\ZGd]d^ZHd_d`ZIdadbZJddddeZKddfdgZLdheKdigdjfiZMereKdkgdlfeMdm<eLgdnfeMdo<e reKdpgdqfeMdr<e reKdsgdtfeMdu<dvdZNddxdZOdydZPddzdZQd{dZRd|d}ZSdd~dZTdd ZUddZVddZWddddZXdgeXgdjfdgeWgdnfdZYerddgeXgdlfeYdm<e rddgeXgdqfeYdr<e rddgeXgdtfeYdu<ddZZddddd!Z[eedrHe\de]ddZ^de^j__`de^ja_`de^jb_`ddZcn$erle\de]ddZ^ddZcddd#Zdddd%ZeddZfejgejhBdfdd$ZidS)NTF)getpwnam)getgrnamntposixiisendfileZlinux _fcopyfilez%.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC copyfileobjcopyfilecopymodecopystatcopycopy2copytreemovermtreeErrorSpecialFileError ExecError make_archiveget_archive_formatsregister_archive_formatunregister_archive_formatget_unpack_formatsregister_unpack_formatunregister_unpack_formatunpack_archiveignore_patternschownwhichget_terminal_size SameFileErrorc@s eZdZdS)rN__name__ __module__ __qualname__r%r%/usr/lib64/python3.8/shutil.pyrEsc@s eZdZdS)r Nr!r%r%r%r&r Hsc@s eZdZdS)rNr!r%r%r%r&rKsc@s eZdZdS)rNr!r%r%r%r&rOsc@s eZdZdS) ReadErrorNr!r%r%r%r&r'Rsr'c@s eZdZdS) RegistryErrorNr!r%r%r%r&r(Usr(c@s eZdZdS)_GiveupOnFastCopyNr!r%r%r%r&r)Ysr)c Csz|}|}Wn*tk r>}z t|W5d}~XYnXzt|||WnTtk r}z6|j|_|j|_|j t j t j hkrt|n|dW5d}~XYnXdSN) fileno Exceptionr)rrOSErrornamefilename filename2errnoEINVALENOTSUP)fsrcfdstflagsinfdoutfderrr%r%r&_fastcopy_fcopyfile^s  r:c CsDz|}|}Wn*tk r>}z t|W5d}~XYnXztt|jd}Wntk rnd}YnXtj dkrt |d}d}zt ||||}Wntk r&}zj|j |_ |j |_|jtjkrdat||jtjkr|d|dkrt|dtjdkrt||W5d}~XYqX|dkr6q@||7}qdS)Niili@rF)r+r,r)maxosfstatst_sizer-sysmaxsizeminrr.r/r0r1ZENOTSOCK_USE_CP_SENDFILEZENOSPClseekSEEK_CUR)r4r5r7r8r9Z blocksizeoffsetZsentr%r%r&_fastcopy_sendfilers8        rFc Csn|j}|j}tt|L}||}|s*q`q||krV|d|}||W5QRXq||qW5QRXdSr*)readintowrite memoryview bytearray)r4r5lengthZ fsrc_readinto fdst_writeZmvnZsmvr%r%r&_copyfileobj_readintosrNcCs0|st}|j}|j}||}|s"q,||qdSr*) COPY_BUFSIZEreadrH)r4r5rKZ fsrc_readrLZbufr%r%r&rscCst|tjrJttjdrJztj|t|WStk rHYdSXttjdr~ztj||WStk r|YdSXtj tj |tj tj |kS)NsamestatFsamefile) isinstancer<DirEntryhasattrpathrQstatr-rRnormcaseabspathsrcdstr%r%r& _samefiles r]cCst|tjr|St|Sr*)rSr<rTrWfnr%r%r&_statsr`cCs t|tjr|Stj|Sr*)rSr<rT is_symlinkrVislinkr^r%r%r&_islinksrcfollow_symlinksc Cstd||t||r(td||d}t||gD]j\}}z t|}Wntk r`Yq8Xt |j rt |t j r|jn|}td|tr8|dkr8|j}q8|st|rt t ||n t|d}t|d}tr,z,t||tj|WW5QRW5QRStk r(YnXntrtz(t|||WW5QRW5QRStk rpYnXn>tr|dkrt||t|t|W5QRW5QRSt ||W5QRXW5QRX|S)Nzshutil.copyfilez{!r} and {!r} are the same filerz`%s` is a named piperbwb)!r?auditr]r format enumerater`r-rWS_ISFIFOst_moderSr<rTrVr_WINDOWSr>rcsymlinkreadlinkopen_HAS_FCOPYFILEr:rZ_COPYFILE_DATAr)rBrFrNrArOr) r[r\re file_sizeir_str4r5r%r%r&r sD       cCsptd|||sFt|rFtj|rFttdr@tjtj}}qRdSn t tj }}||}||t |j dS)Nzshutil.copymodelchmod)r?rhrcr<rVrbrUlstatrur`chmodrWS_IMODErl)r[r\reZ stat_funcZ chmod_funcrtr%r%r&r !s   listxattrc Csztj||d}Wn@tk rR}z"|jtjtjtjfkr<WYdSd}~XYnX|D]j}z&tj|||d}tj||||dWqXtk r}z |jtj tjtjtjfkrW5d}~XYqXXqXdSNrd) r<ryr-r1r3ZENODATAr2getxattrsetxattrZEPERM)r[r\renameser.valuer%r%r& _copyxattr7s rcOsdSr*r%)argskwargsr%r%r&rOsc s`td||ddddd|p6t|o4tj| }|rJfdd}n fdd}t|tjrp|j|d}n|d ||d}t |j }|d ||j |j f|dt |||dz|d |||dWntk rYnXt|d r\z|d ||j|dWnVtk rZ}z6dD]*}tt|r|jtt|krqJqW5d}~XYnXdS)Nzshutil.copystat)nsrecWsdSr*r%)rrerr%r%r&_nop`szcopystat.._nopcs tt|Sr*)getattrr<r.rr%r&lookupgszcopystat..lookupcstt|}|tjkr|SSr*)rr<supports_follow_symlinks)r.r_rr%r&rls  rdrWutimerwst_flagsZchflags)Z EOPNOTSUPPr3)r?rhrcr<rVrbrSrTrWrxrl st_atime_ns st_mtime_nsrNotImplementedErrorrUrr-r1r) r[r\reZfollowrrtmodewhyr9r%rr&r Rs4       cCsBtj|r"tj|tj|}t|||dt|||d|Srz)r<rVisdirjoinbasenamer r r[r\rer%r%r&r s cCsBtj|r"tj|tj|}t|||dt|||d|Srz)r<rVrrrr r rr%r%r&r s csfdd}|S)Ncs(g}D]}|t||qt|Sr*)extendfnmatchfilterset)rVr} ignored_namespatternpatternsr%r&_ignore_patternssz)ignore_patterns.._ignore_patternsr%)rrr%rr&rs c Cs>|dk r$|t|dd|D}nt}tj||dg} |tkpJ|tk} |D]~} | j|krbqPtj|| j} tj|| j} | r| n| }z| }|rtjdkr| j dd}|j t j krd}|r8t | }|rt|| t|| | dnBtj|s |r WqP| r,t|| ||||dn ||| n*| rXt|| ||||dn ||| WqPtk r}z| |jdW5d}~XYqPtk r}z| | | t|fW5d}~XYqPXqPzt||WnJtk r*}z*t|d ddkr| ||t|fW5d}~XYnX| r:t| |S) NcSsg|] }|jqSr%r).0xr%r%r& sz_copytree..)exist_okrFrd) dirs_exist_okrZwinerror)r<fspathrmakedirsr r r.rVrrarWst_reparse_tagIO_REPARSE_TAG_MOUNT_POINTrornr existsis_dirrrrrr-appendstrr)entriesr[r\symlinksignore copy_functionignore_dangling_symlinksrrerrorsZ use_srcentryZsrcentryZsrcnameZdstnameZsrcobjrarvlinktor9rr%r%r& _copytrees`             (&rc CsDtd||t|}t|}W5QRXt||||||||dS)Nzshutil.copytree)rr[r\rrrrr)r?rhr<scandirlistr) r[r\rrrrrZitrrr%r%r&rs&  st_file_attributescCsPz4|jdd}t|jo2|jtj@o0|jtjk WStk rJYdSXdSNFrd)rWS_ISDIRrlrFILE_ATTRIBUTE_REPARSE_POINTrrr-)entryrtr%r%r& _rmtree_isdir6s    rcCsLz0t|}t|jp.|jtj@o.|jtjkWSt k rFYdSXdS)NF) r<rvrWS_ISLNKrlrrrrr-)rVrtr%r%r&_rmtree_islink?s    rcCs*z|jddWStk r$YdSXdSr)rr-)rr%r%r&rHscCs tj|Sr*)r<rVrb)rVr%r%r&rNsc Cs&z"t|}t|}W5QRXWn*tk rL|tj|tg}YnX|D]}|j}t|rz|rvtdWn,tk r|tjj |tYqRYnXt ||qRzt |WqRtk r|tj |tYqRXqRzt |Wn(tk r |tj |tYnXdS)N%Cannot call rmtree on a symbolic link) r<rrr-r?exc_inforVrrarb_rmtree_unsafeunlinkrmdir)rVonerror scandir_itrrfullnamer%r%r&rRs0     rc Cs.z"t|}t|}W5QRXWn@tk rb}z"||_|tj|tWYdSd}~XYnX|D]}tj||j }z|j dd}Wntk rd}YnNX|rz|j dd} t | j }Wn*tk r|tj|tYqhYnX|rztj|j tj|d} Wn(tk r:|tj|tYnXztj| t| rt| ||ztj|j |dWn(tk r|tj|tYnXn8z tdWn*tk r|tjj|tYnXW5t| Xqhztj|j |dWqhtk r&|tj|tYqhXqhdS)NFrd)dir_fdr)r<rrr-r/r?rrVrr.rrWrrlrvrpO_RDONLYcloserQr=_rmtree_safe_fdrrbr) topfdrVrrrr9rrrorig_stdirfdr%r%r&rqsR       rc Cstd||rdd}n|dkr*dd}tr`t|trDt|}zt|}Wn(tk rz|tj|t YdSXzt |tj }Wn(tk r|tj |t YdSXztj |t|rt|||zt|Wn(tk r|tj|t YnXn8z tdWn*tk rL|tj j|t YnXW5t |XnNzt|rttdWn,tk r|tj j|t YdSXt||SdS)Nz shutil.rmtreecWsdSr*r%rr%r%r&rszrmtree..onerrorcWsdSr*r%rr%r%r&rsr)r?rh_use_fd_functionsrSbytesr<fsdecodervr,rrprrrVrQr=rrr-rbrr)rV ignore_errorsrrfdr%r%r&rsJ        cCs&tjjtjjpd}tj||S)N)r<rVsepaltseprrstrip)rVrr%r%r& _basenamesrc CsTtd|||}tj|rbt||r8t||dStj|t|}tj |rbt d|zt||Wnt k rNtj |rt |}t||t|ntj|r6t||rt d||ft|s t|tjst|rtjdkrtd||ft|||ddt|n|||t|YnX|S)Nz shutil.movez$Destination path '%s' already existsz.Cannot move a directory '%s' into itself '%s'.darwinzKCannot move the non-empty directory '%s': Lacking write permission to '%s'.T)rr)r?rhr<rVrr]renamerrrrr-rbrornr _destinsrc _is_immutableaccessW_OKlistdirplatformPermissionErrorrr)r[r\rZreal_dstrr%r%r&rsL              cCsVtj|}tj|}|tjjs2|tjj7}|tjjsL|tjj7}||Sr*)r<rVrYendswithr startswithrZr%r%r&r/s    rcCs(t|}tjtjg}t|do&|j|kS)Nr)r`rW UF_IMMUTABLE SF_IMMUTABLErUr)r[rtZimmutable_statesr%r%r&r8s rcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdSN)rKeyErrorr.resultr%r%r&_get_gid=s  rcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdSr)rrrr%r%r&_get_uidIs  rgzipcs |dkrd}nDtr |dkr d}n2tr2|dkr2d}n trD|dkrDd}ntd|ddl} |rfd |nd} |d | } tj| } | rtj | s|dk r| d | |st | |dk r| d t t fd d} |s| | d|}z|j|| dW5|X| S)NrrZgzbzip2bz2xzzCbad value for 'compress', or compression format not supported : {0}r..tar creating %szCreating tar archivecs,dk r|_|_dk r(|_|_|Sr*)gidZgnameuiduname)Ztarinforgroupownerrr%r& _set_uid_gidsz#_make_tarball.._set_uid_gidzw|%sr)_ZLIB_SUPPORTED_BZ2_SUPPORTED_LZMA_SUPPORTED ValueErrorritarfiler<rVdirnamerinforrrrpradd) base_namebase_dircompressverbosedry_runrrloggerZtar_compressionrZ compress_extZ archive_name archive_dirrtarr%rr& _make_tarballUs>          r c Csnddl}|d}tj|}|rNtj|sN|dk r@|d||sNt||dk rd|d|||sj|j|d|jd}tj |} | tj kr| | | |dk r|d| t |D]\} } } t | D]:} tj tj| | } | | | |dk r|d| q| D]L} tj tj| | } tj| r| | | |dk r|d| qqW5QRX|S)Nr.ziprz#creating '%s' and adding '%s' to itw)Z compressionz adding '%s')zipfiler<rVrrrrZipFileZ ZIP_DEFLATEDnormpathcurdirrHwalksortedrisfile)rrrrrr Z zip_filenamerZzfrVdirpathZdirnames filenamesr.r%r%r& _make_zipfilesH           rr )rNzuncompressed tar file)rrzgzip'ed tar-fileZgztarzZIP filezip)rrzbzip2'ed tar-fileZbztar)rrzxz'ed tar-fileZxztarcCsddtD}||S)NcSsg|]\}}||dfqS)rr%)rr.registryr%r%r&rsz'get_archive_formats..)_ARCHIVE_FORMATSitemssortZformatsr%r%r&rs rcCst|dkr g}t|s td|t|ttfs6td|D]&}t|ttfrXt|dkr:tdq:|||ft|<dS)NzThe %s object is not callablez!extra_args needs to be a sequencerz+extra_args elements are : (arg_name, value))callable TypeErrorrStuplerlenr)r.function extra_args descriptionZelementr%r%r&rs   cCs t|=dSr*)rrr%r%r&rsc  Cstd||||t} |dk rP|dk r6|d|tj|}|sPt||dkr^tj}||d} z t |} Wn"t k rt d|dYnX| d} | dD]\} }|| | <q|dkr|| d<|| d <z| ||f| }W5|dk r|dk r|d | t| X|S) Nzshutil.make_archivezchanging into '%s')rrzunknown archive format '%s'rrrrzchanging back to '%s') r?rhr<getcwddebugrVrYchdirrrrr)rriZroot_dirrrrrrrZsave_cwdr format_infofuncargvalr/r%r%r&rs8          cCsddtD}||S)NcSs"g|]\}}||d|dfqS)rr%)rr.rr%r%r&r3sz&get_unpack_formats..)_UNPACK_FORMATSrrrr%r%r&r-s c Csji}tD]\}}|dD] }|||<qq |D]$}||kr0d}t||||fq0t|sftddS)Nrz!%s is already registered for "%s"z*The registered function must be a callable)r-rr(rr) extensionsr!r"Zexisting_extensionsr.rext extensionmsgr%r%r&_check_unpack_options8s   r2cCs,|dkr g}t|||||||ft|<dSr*)r2r-)r.r.r!r"r#r%r%r&rJs cCs t|=dSr*)r-rr%r%r&r`scCs&tj|}tj|s"t|dSr*)r<rVrrr)rVrr%r%r&_ensure_directoryds  r3c Csddl}||std|||}z|D]}|j}|ds2d|krPq2tj j |f| d}|snq2t || ds2||j}t|d}z||W5|~Xq2W5|XdS)Nrz%s is not a zip file/z..rg)r Z is_zipfiler'rrZinfolistr/rr<rVrsplitr3rrPrprH) r/ extract_dirr rrr.targetdatafr%r%r&_unpack_zipfilejs*        r:rcCs\ddl}z||}Wn"|jk r8td|YnXz|j||dW5|XdS)Nrz/%s is not a compressed or uncompressed tar filer)rrpZTarErrorr'rZ extractall)r/r6rrZtarobjr%r%r&_unpack_tarfiles r;rr )r rz.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzcCs:tD],\}}|dD]}||r|SqqdS)Nr)r-rr)r/r.rr0r%r%r&_find_unpack_formats   r<cCstd||||dkr t}t|}t|}|dkrBi}nd|i}|dk rz t|}Wn$tk rtd|dYnX|d}|||ft |d|nRt |}|dkrt d|t|d}t t|d}| ||||f|dS)Nzshutil.unpack_archiverzUnknown unpack format '{0}'r$rzUnknown archive format '{0}') r?rhr<r%rr-rrridictr<r'update)r/r6rirZ filter_kwargsr(r)rr%r%r&rs,     statvfs disk_usageZusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytescCs@t|}|j|j}|j|j}|j|j|j}t|||Sr*)r<r?f_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)rVrtfreetotalusedr%r%r&r@s    cCs"t|\}}||}t|||Sr*)rZ _getdiskusagerE)rVrGrFrHr%r%r&r@scCstd||||dkr(|dkr(td|}|}|dkr>d}n(t|trft|}|dkrftd||dkrtd}n(t|tst |}|dkrtd|t |||dS)Nz shutil.chownzuser and/or group must be setzno such user: {!r}zno such group: {!r}) r?rhrrSrr LookupErrorriintrr<r)rVuserrZ_userZ_groupr%r%r&rs$  Pc Cszttjd}Wnttfk r.d}YnXzttjd}Wnttfk r^d}YnX|dksp|dkrzttj}Wn$t tt fk rt |}YnX|dkr|j }|dkr|j }t ||fS)NZCOLUMNSrZLINES)rKr<environrrrr? __stdout__r+AttributeErrorr- terminal_sizecolumnslines)ZfallbackrTrUsizer%r%r&r(s$  cCs&tj|o$t||o$tj| Sr*)r<rVrrr)r_rr%r%r& _access_checkYs rWc stjrt|rSdStt}|dkrttjdd}|dkrtztd}Wnt t fk rrtj }YnX|s|dS|rt |}| t tj}nt|}| tj}tjdkrTtj}|rt |}||kr|d|tdpt}dd| tjD}|r dd|D}tfd d |Dr@g}nfd d|D}ng}t}|D]X} tj| } | |krd|| |D],} tj| | } t| |r| SqqddS) NPATHCS_PATHZwin32rZPATHEXTcSsg|] }|r|qSr%r%rr/r%r%r&rszwhich..cSsg|]}t|qSr%)r<fsencoderZr%r%r&rsc3s |]}|VqdSr*)lowerrrZcmdr%r& szwhich..csg|] }|qSr%r%rZr]r%r&rs)r<rVrrWrSrrPgetconfstrrRrdefpathr[r5pathseprr?rrinsertgetenv_WIN_DEFAULT_PATHEXTanyrrXrr) r^rrVZ use_bytesrZpathext_sourceZpathextfilesseendirZnormdirZthefiler.r%r]r&r^sV              )r)F)FN)rrrNNN)rrN)Nr)NNrrNNN)Nr)NN)NN)rM)jr<r?rWr collectionsr1zlibr ImportErrorrrZlzmarpwdrZgrprr.rmrrrOrUrrrBrqrf__all__r-rr rrr'r,r(r)r:rFrNrr]r`rcr r rr r r rrr stat_resultrrrrrprrsupports_dir_fdr supports_fdrrrZavoids_symlink_attacksrrrrrrr rrrrrrrr2rrr3r:r;r-r<rr namedtuplerErG__doc__rHrFr@rrrWF_OKX_OKrr%r%r%r&sr          @  7 B A . 4   > ?    A -   8  "     2       1