a DOg&@shddlZddlZddlZddlZddlZddlZzddlZ[dZWneyXdZYn0zddl Z [ dZ WneydZ Yn0zddl Z [ dZ WneydZ Yn0zddl mZWneydZYn0zddlmZWneydZYn0ejdkZdZZejdkr&ddlZner4ddlZer>dnd Zeed oXejd aeoheed Zd ZgdZGdddeZGdddeZGdddeZ GdddeZ!GdddeZ"Gddde#Z$Gddde#Z%ddZ&dd Z'efd!d"Z(dd#d$Z)d%d&Z*d'd(Z+d)d*Z,dd+d,d-Z-dd+d.d/Z.eed0r\dd+d1d2Z/nd3d2Z/dd+d4d5Z0dd+d6d7Z1dd+d8d9Z2d:d;Z3ddd?Z5eej6d@rdAdBZ7dCdDZ8ndEdBZ7dFdDZ8dGdHZ9dIdJZ:ej;ejejko(ej?ej@vo(ejejAvZBddKdLZCeBeC_DdMdNZEe2fdOdPZFdQdRZGdSdTZHdUdVZIdWdXZJddZd[ZKdd\d]ZLd^eKd_gd`fiZMereKdagdbfeMdc<eLgddfeMde<e reKdfgdgfeMdh<e reKdigdjfeMdk<dldmZNddodpZOdqdrZPddsdtZQdudvZRdwdxZSddydzZTd{d|ZUd}d~ZVddZWddddZXdgeXgd`fdgeWgddfdZYer~ddgeXgdbfeYdc<e rddgeXgdgfeYdh<e rddgeXgdjfeYdk<ddZZdddddZ[eedre\de]ddZ^de^j__`de^ja_`de^jb_`ddZcn$er2e\de]ddZ^ddZcdddZddddZeddZfejgejhBdfddZidS)NTF)getpwnam)getgrnamntposixiisendfilelinux _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.9/shutil.pyrEsrc@s eZdZdS)r!Nr"r&r&r&r'r!Hsr!c@s eZdZdS)rNr"r&r&r&r'rKsrc@s eZdZdS)rNr"r&r&r&r'rOsrc@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,ty@}zt|WYd}~n d}~00zt|||WnVty}z>|j|_|j|_|j t j t j hvrt|n|dWYd}~n d}~00dSN) fileno Exceptionr*rrOSErrornamefilename filename2errnoEINVALENOTSUP)fsrcfdstflagsinfdoutfderrr&r&r'_fastcopy_fcopyfile^s  r;c CsFz|}|}Wn,ty@}zt|WYd}~n d}~00ztt|jd}Wntynd}Yn0tj dkrt |d}d}zt ||||}Wnty(}zr|j |_ |j |_|jtjkrdat||jtjkr|d|dkrt|dtjdkrt||WYd}~qd}~00|dkr8qB||7}qdS)Niili@rF)r,r-r*maxosfstatst_sizer.sysmaxsizeminrr/r0r1r2ENOTSOCK_USE_CP_SENDFILEENOSPClseekSEEK_CUR)r5r6r8r9r: blocksizeoffsetsentr&r&r'_fastcopy_sendfilers8         rKc Cs|j}|j}tt|j}||}|s*qtq||krj|d|}||Wdqr1s^0Yq||qWdn1s0YdSr+)readintowrite memoryview bytearray)r5r6length fsrc_readinto fdst_writemvnsmvr&r&r'_copyfileobj_readintos*rVcCs0|st}|j}|j}||}|s"q,||qdSr+) COPY_BUFSIZEreadrM)r5r6rP fsrc_readrRbufr&r&r'r sr cCst|tjrHttjdrHztj|t|WStyFYdS0ttjdrzztj||WStyxYdS0tj tj |tj tj |kS)NsamestatFsamefile) isinstancer=DirEntryhasattrpathr[statr.r\normcaseabspathsrcdstr&r&r' _samefiles   rgcCst|tjr|St|Sr+)r]r=r^rafnr&r&r'_statsrjcCs t|tjr|Stj|Sr+)r]r=r^ is_symlinkr`islinkrhr&r&r'_islinksrmfollow_symlinksc Cs^td||t||r(td||d}t||gD]h\}}z t|}Wnty^Yq80t |j rt |t j r~|jn|}td|tr8|dkr8|j}q8|st|rt t ||nt|dx}zt|d}tr4z2t||tj|WWdWWdSty0Yn0ntrz.t|||WWdWWdSty|Yn0nDtr|dkrt||t|t|WdWWdSt ||Wdn1s0YWnHt!y8} z.t j"|s"t#d|| nWYd} ~ n d} ~ 00Wdn1sP0Y|S)Nzshutil.copyfilez{!r} and {!r} are the same filerz`%s` is a named piperbwbzDirectory does not exist: )$r@auditrgr!format enumeraterjr.raS_ISFIFOst_moder]r=r^r`r_WINDOWSr?rmsymlinkreadlinkopen_HAS_FCOPYFILEr;r_COPYFILE_DATAr*rDrKrVrBrWr IsADirectoryErrorexistsFileNotFoundError) rerfro file_sizeiristr5r6er&r&r'r sP       $ $".8r cCsptd|||sFt|rFtj|rFttdr@tjtj}}qRdSn t tj }}||}||t |j dS)Nzshutil.copymodelchmod)r@rrrmr=r`rlr_lstatrrjchmodraS_IMODErv)rerfro stat_func chmod_funcrr&r&r'r *s  r listxattrc Csztj||d}Wn>tyP}z&|jtjtjtjfvr:WYd}~dSd}~00|D]l}z&tj|||d}tj||||dWqVty}z(|jtj tjtjtjfvrWYd}~qVd}~00qVdSNrn) r=rr.r2r4ENODATAr3getxattrsetxattrEPERM)rerfronamesrr/valuer&r&r' _copyxattr@s rcOsdSr+r&)argskwargsr&r&r'rXsc s`td||ddddd|p6t|o4tj| }|rJfdd}n fdd}t|tjrp|j|d}n|d ||d}t |j }|d ||j |j f|dt |||dz|d |||dWntyYn0t|d r\z|d ||j|dWnXtyZ}z>dD]*}tt|r|jtt|krqFqWYd}~n d}~00dS)Nzshutil.copystat)nsrocWsdSr+r&)rrorr&r&r'_nopiszcopystat.._nopcs tt|Sr+)getattrr=r/rr&r'lookuppszcopystat..lookupcstt|}|tjvr|SSr+)rr=supports_follow_symlinks)r/rirr&r'rus  rnrautimerst_flagschflags) EOPNOTSUPPr4)r@rrrmr=r`rlr]r^rarrv st_atime_ns st_mtime_nsrNotImplementedErrorr_rr.r2r) rerfrofollowrrmodewhyr:r&rr'r [s4       r cCsBtj|r"tj|tj|}t|||dt|||d|Sr)r=r`isdirjoinbasenamer r rerfror&r&r'r s r cCsBtj|r"tj|tj|}t|||dt|||d|Sr)r=r`rrrr r rr&r&r'rs rcsfdd}|S)Ncs(g}D]}|t||qt|Sr+)extendfnmatchfilterset)r`r ignored_namespatternpatternsr&r'_ignore_patternssz)ignore_patterns.._ignore_patternsr&)rrr&rr'rs rc CsD|dur$|t|dd|D}nt}tj||dg} |tupJ|tu} |D]} | j|vrbqPtj|| 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 ||| WqPty}z| |jdWYd}~qPd}~0ty}z | | | t|fWYd}~qPd}~00qPzt||WnLty0}z2t|d ddur| ||t|fWYd}~n d}~00| r@t| |S) NcSsg|] }|jqSr&r).0xr&r&r' z_copytree..)exist_okrFrn) dirs_exist_okrwinerror)r=fspathrmakedirsrr r/r`rrkrast_reparse_tagIO_REPARSE_TAG_MOUNT_POINTryrxr r~is_dirrrrrr.appendstrr)entriesrerfsymlinksignore copy_functionignore_dangling_symlinksrrerrors use_srcentrysrcentrysrcnamedstnamesrcobjrkrlinktor:rr&r&r' _copytrees^            $,*rc CsXtd||t|}t|}Wdn1s60Yt||||||||dS)Nzshutil.copytree)rrerfrrrrr)r@rrr=scandirlistr) rerfrrrrritrrr&r&r'r s( & rst_file_attributescCsNz4|jdd}t|jo2|jtj@o0|jtjk WStyHYdS0dSNFrn)raS_ISDIRrvrFILE_ATTRIBUTE_REPARSE_POINTrrr.)entryrr&r&r' _rmtree_isdirAs     rcCsJz0t|}t|jp.|jtj@o.|jtjkWSt yDYdS0dS)NF) r=rraS_ISLNKrvrrrrr.)r`rr&r&r'_rmtree_islinkJs     rcCs(z|jddWSty"YdS0dSr)rr.)rr&r&r'rSs cCs tj|Sr+)r=r`rl)r`r&r&r'rYsc Cs2z6t|}t|}Wdn1s*0YWn(ty^|tj|tg}Yn0|D]}|j}t|rz|rtdWn*ty|tjj |tYqdYn0t ||qdzt |Wqdty|tj |tYqd0qdzt |Wn&ty,|tj |tYn0dS)N%Cannot call rmtree on a symbolic link) r=rrr.r@exc_infor`rrkrl_rmtree_unsafeunlinkrmdir)r`onerror scandir_itrrfullnamer&r&r'r]s0 *       rc Cs`z6t|}t|}Wdn1s*0YWn>tyt}z&||_|tj|tWYd}~dSd}~00|D]}tj||j }z|j dd}Wntyd}YnP0|rz|j dd} t | j }Wn*ty|tj|tYqzYn0|rztj|j tj|d} d} Wn&tyN|tj|tYn0ztj| t| rt| ||z"t| d} tj|j |dWn&ty|tj|tYn0n6z tdWn(ty|tjj|tYn0W| st| n| st| 0qzztj|j |dWqztyX|tj|tYqz0qzdS)NFrn)dir_fdTr)r=rrr.r0r@rr`rr/rrarrvrrzO_RDONLYr[r>_rmtree_safe_fdcloserrlr) topfdr`rrrr:rrrorig_stdirfd dirfd_closedr&r&r'r|s^ *         rc Cstd||rdd}n|dur*dd}trt|trDt|}zt|}Wn&tyx|tj|t YdS0zt |tj }d}Wn&ty|tj |t YdS0ztj |t|r"t|||zt|d}t|Wn&ty|tj|t Yn0n6z tdWn(tyV|tj j|t Yn0W|s~t|n|s|t|0nLzt|rtdWn*ty|tj j|t YdS0t||SdS)Nz shutil.rmtreecWsdSr+r&rr&r&r'rszrmtree..onerrorcWsdSr+r&rr&r&r'rsFTr)r@rr_use_fd_functionsr]bytesr=fsdecoderr-rrzrr`r[r>rrrr.rlrr)r` ignore_errorsrrfd fd_closedr&r&r'rsV            rcCs0t|}tjjtjjpd}tj||S)N)r=rr`sepaltseprrstrip)r`rr&r&r' _basenames rc CsRtd|||}tj|rbt||r8t||dStj|t|}tj |rbt d|zt||Wnt yLtj |rt |}t||t|ntj|r4t||rt d||ft|s t|tjst|rtjdkrtd||ft|||ddt|n|||t|Yn0|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@rrr=r`rrgrenamerrr~rr.rlryrxr _destinsrc _is_immutableaccessW_OKlistdirplatformPermissionErrorrr)rerfrreal_dstrr&r&r'rsL              rcCsVtj|}tj|}|tjjs2|tjj7}|tjjsL|tjj7}||Sr+)r=r`rcendswithr startswithrdr&r&r'rQs    rcCs(t|}tjtjg}t|do&|j|vS)Nr)rjra UF_IMMUTABLE SF_IMMUTABLEr_r)rerimmutable_statesr&r&r'rZs rcCsLtdus|durdSz t|}Wnty6d}Yn0|durH|dSdSN)rKeyErrorr/resultr&r&r'_get_gid_s   r cCsLtdus|durdSz t|}Wnty6d}Yn0|durH|dSdSr)rrrr&r&r'_get_uidks   r gzipcs(|durd}nDtr |dkr d}n2tr2|dkr2d}n trD|dkrDd}ntd|ddl} |rfd |nd} |d | } tj| } | rtj | s|dur| d | |st | |dur| d t t fd d} |s$| | d|}z|j|| dW|n |0| S)Nrr gzbzip2bz2xzzCbad value for 'compress', or compression format not supported : {0}r..tar creating %szCreating tar archivecs,dur|_|_dur(|_|_|Sr+)gidgnameuiduname)tarinforgroupownerrr&r' _set_uid_gidsz#_make_tarball.._set_uid_gidzw|%sr)_ZLIB_SUPPORTED_BZ2_SUPPORTED_LZMA_SUPPORTED ValueErrorrstarfiler=r`dirnamer~inforr r rzaddr) base_namebase_dircompressverbosedry_runrrloggertar_compressionr! compress_ext archive_name archive_dirrtarr&rr' _make_tarballws>         r0c Csddl}|d}tj|}|rNtj|sN|dur@|d||sNt||durd|d|||s|j|d|jd}tj |} | tj kr| | | |dur|d| t |D]\} } } t | D]:} tj tj| | } | | | |dur|d| q| D]L} tj tj| | } tj| r| | | |dur|d| qqWdn1sv0Y|S)Nr.ziprz#creating '%s' and adding '%s' to itw) compressionz adding '%s')zipfiler=r`r"r~r#rZipFile ZIP_DEFLATEDnormpathcurdirrMwalksortedrisfile)r%r&r(r)r*r4 zip_filenamer.zfr`dirpathdirnames filenamesr/r&r&r' _make_zipfilesF           2rAr/)r'Nzuncompressed tar file)r'r zgzip'ed tar-filegztarzZIP filezip)r'r zbzip2'ed tar-filebztar)r'rzxz'ed tar-filexztarcCsddtD}||S)NcSsg|]\}}||dfqS)rr&)rr/registryr&r&r'rrz'get_archive_formats..)_ARCHIVE_FORMATSitemssortformatsr&r&r'rs rrcCst|dur 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 TypeErrorr]tuplerlenrG)r/function extra_args descriptionelementr&r&r'rs   rcCs t|=dSr+)rGrr&r&r'rsrc  CsBtd||||t} |durP|dur6|d|tj|}|sPt||dur^tj}||d} z t |} Wn t yt d|dYn0| d} | dD]\} }|| | <q|dkr|| d<|| d <z@| ||fi| }W|dur>|dur|d | t| n,|dur<|dur2|d | t| 0|S) Nzshutil.make_archivezchanging into '%s')r)r*zunknown archive format '%s'rrCrrzchanging back to '%s') r@rrr=getcwddebugr`rcchdirr8rGrr )r%rsroot_dirr&r(r)rrr*save_cwdr format_infofuncargvalr0r&r&r'rs@              rcCsddtD}||S)NcSs"g|]\}}||d|dfqS)rr&)rr/r#r&r&r'rUrz&get_unpack_formats..)_UNPACK_FORMATSrHrIrJr&r&r'rOs rc Csji}tD]\}}|dD] }|||<qq |D]$}||vr0d}t||||fq0t|sftddS)Nrz!%s is already registered for "%s"z*The registered function must be a callable)r_rHr)rLrM) extensionsrPrQexisting_extensionsr/r#ext extensionmsgr&r&r'_check_unpack_optionsZs   recCs,|dur g}t|||||||ft|<dSr+)rer_)r/r`rPrQrRr&r&r'rls rcCs t|=dSr+)r_rr&r&r'rsrcCs&tj|}tj|s"t|dSr+)r=r`r"rr)r`r"r&r&r'_ensure_directorys  rfc Csddl}||std|||}z|D]}|j}|ds2d|vrPq2tjj |g| dR}|spq2t || ds2| |dD}t |d}t||Wdn1s0YWdq21s0Yq2W|n |0dS)Nrz%s is not a zip file/z..rrq)r4 is_zipfiler(r5infolistr0rr=r`rsplitrfrrzr r) r0 extract_dirr4rCr#r/ targetpathsourcetargetr&r&r'_unpack_zipfiles(     JrprcCsbddl}z||}Wn |jy6td|Yn0z|j||dW|n |0dS)Nrz/%s is not a compressed or uncompressed tar filer)r!rzTarErrorr( extractallr)r0rlrr!tarobjr&r&r'_unpack_tarfiles rtrr1)r/rCz.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzcCs:tD],\}}|dD]}||r|SqqdS)Nr)r_rHr)r0r/r#rcr&r&r'_find_unpack_formats   rucCstd||||dur t}t|}t|}|durBi}nd|i}|durz t|}Wn"tytd|dYn0|d}|||fit |d|nPt |}|durt d|t|d}t t|d|B}|||fi|dS)Nzshutil.unpack_archiverzUnknown unpack format '{0}'rTrzUnknown archive format '{0}') r@rrr=rUrr_rr rsdictrur()r0rlrsr filter_kwargsrZr[rr&r&r'rs*      rstatvfs disk_usageusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytescCs@t|}|j|j}|j|j}|j|j|j}t|||Sr+)r=rxf_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)r`rfreetotalusedr&r&r'ry s    cCs"t|\}}||}t|||Sr+)rZ _getdiskusager)r`rrrr&r&r'ryscCstd||||dur(|dur(td|}|}|dur>d}n(t|trft|}|durftd||durtd}n(t|tst |}|durtd|t |||dS)Nz shutil.chownzuser and/or group must be setzno such user: {!r}zno such group: {!r}) r@rrr r]rr  LookupErrorrsintr r=r)r`userr_user_groupr&r&r'r%s$  rPc Cszttjd}Wnttfy,d}Yn0zttjd}WnttfyZd}Yn0|dksl|dkrzttj}Wn"t tt fyt |}Yn0|dkr|j }|dkr|j }t ||fS)NCOLUMNSrLINES)rr=environrr r r@ __stdout__r,AttributeErrorr. terminal_sizecolumnslines)fallbackrrsizer&r&r'r Es$  r cCs&tj|o$t||o$tj| Sr+)r=r`r~rr)rirr&r&r' _access_checkvs rc stjrt|rSdStt}|durrtjdd}|durrztd}Wnt t fyptj }Yn0|szdS|rt |}| t tj}nt|}| tj}tjdkrRtj}|rt |}||vr|d|tdpt}dd| tjD}|rdd|D}tfd d |Dr>g}nfd d|D}ng}t}|D]X} tj| } | |vrb|| |D],} tj| | } t| |r| SqqbdS) NPATHCS_PATHwin32rPATHEXTcSsg|] }|r|qSr&r&rrbr&r&r'rrzwhich..cSsg|]}t|qSr&)r=fsencoderr&r&r'rrc3s |]}|VqdSr+)lowerrrcmdr&r' rzwhich..csg|] }|qSr&r&rrr&r'rr)r=r`r"rr]rrgetconfstrrr defpathrrkpathseprr@rr8insertgetenv_WIN_DEFAULT_PATHEXTanyrrbr$r) rrr` use_bytesr8pathext_sourcepathextfilesseendirnormdirthefiler/r&rr'r{sV              r)r)F)FN)r rrNNN)rrN)Nr)NNrrNNN)Nr)NN)NN)r)jr=r@rar collectionsr2zlibr ImportErrorrrlzmarpwdrgrprr/rwrrrWr_rrrDr{r__all__r.rr!rrr(r-r)r*r;rKrVr rgrjrmr r rr r rrrr stat_resultrrrrrzrrsupports_dir_fdr supports_fdrrravoids_symlink_attacksrrrrr r r0rArGrrrrrrerrrfrprtr_rurr namedtuplerr__doc__rrryrr rF_OKX_OKrr&r&r&r's<              @  @ B A 0 8   B B    A -   8       1       1