3 2a\A@sddlZddlZddlZddlZddlZddlZyddlZ[dZWnek rZdZYnXyddl Z [ dZ Wnek rdZ YnXyddl Z [ dZ Wnek rdZ YnXyddl mZWnek rdZYnXyddlmZWnek rdZYnXdddd d d d d dddddddddddddddddgZGdddeZGd ddeZGd!ddeZGd"ddeZGd#d$d$eZGd%d&d&eZdd)dZd*d+Zdd,d-dZdd,d.dZeed/rdd,d0d1Znd2d1Zdd,d3d Z dd,d4d Z!dd,d5d Z"d6dZ#dde"dfd7d Z$d8d9Z%d:d;Z&ej'ejej(ej)hej*kozej+ej,kozejej-kZ.ddZ1e"fd?d Z2d@dAZ3dBdCZ4dDdEZ5ddGdHZ6ddIdJZ7dKe6dgdMfiZ8ere6dgdNfe8dO<e7gdPfe8dQ<e re6dgdSfe8dT<e r,e6dgdVfe8dW<dXdZ9ddZdZ:d[dZ;dd\dZdd`dZ?dadZ@dbdcZAdddeZBdfdgZCdhgeCgdMfdigeBgdPfdjZDerdkdlgeCgdNfeDdO<e rdmdngeCgdSfeDdT<e rdodpgeCgdVfeDdW<dqdrZEddsdZFeedtrLejGduejHdvdwZIdxeIjJ_KdyeIjL_KdzeIjM_Kd{duZNn2ejOd|kr~ddlPZPejGduejHdvdwZId}duZNdd~dZQdddZRejSejTBdfddZUdS)NTF)getpwnam)getgrnam copyfileobjcopyfilecopymodecopystatcopycopy2copytreemovermtreeErrorSpecialFileError ExecError make_archiveget_archive_formatsregister_archive_formatunregister_archive_formatget_unpack_formatsregister_unpack_formatunregister_unpack_formatunpack_archiveignore_patternschownwhichget_terminal_size SameFileErrorc@s eZdZdS)r N)__name__ __module__ __qualname__r r +/opt/alt/python36/lib64/python3.6/shutil.pyr 7sc@s eZdZdS)rN)rrrr r r r!r:sc@s eZdZdS)rN)rrrr r r r!r=sc@s eZdZdS)rN)rrrr r r r!rAsc@s eZdZdS) ReadErrorN)rrrr r r r!r"Dsr"c@s eZdZdS) RegistryErrorN)rrrr r r r!r#Gsr#icCs$x|j|}|sP|j|qWdS)N)readwrite)fsrcfdstZlengthbufr r r!rLs  c CsXttjdr0ytjj||Stk r.dSXtjjtjj|tjjtjj|kS)NsamefileF)hasattrospathr*OSErrornormcaseabspath)srcdstr r r! _samefileTs r3)follow_symlinkscCst||rtdj||xL||gD]@}ytj|}Wntk rJYq$Xtj|jr$td|q$W| rtj j |rtj tj ||n6t |d&}t |d}t||WdQRXWdQRX|S)Nz{!r} and {!r} are the same filez`%s` is a named piperbwb)r3rformatr,statr.S_ISFIFOst_moderr-islinksymlinkreadlinkopenr)r1r2r4fnstr'r(r r r!r`s    cCsz| r>tjj|r>tjj|r>ttdr8tjtj}}q\dSnttdrXtjtj}}ndS||}||tj|j dS)Nlchmodchmod) r,r-r;r+lstatrAr8rBS_IMODEr:)r1r2r4Z stat_funcZ chmod_funcr@r r r!r}s   listxattrcCsytj||d}Wn4tk rF}z|jtjtjfkr8dSd}~XnXxn|D]f}y&tj|||d}tj||||dWqNtk r}z|jtjtjtjfkrWYdd}~XqNXqNWdS)N)r4) r,rEr.errnoENOTSUPZENODATAgetxattrsetxattrZEPERM)r1r2r4namesenamevaluer r r! _copyxattrs  rNcOsdS)Nr )argskwargsr r r!rNsc s6ddddd|p,tjj|o*tjj| }|r@fdd}n fdd}|d||d}tj|j}|d ||j|jf|dy|d |||dWntk rYnXt |d r$y|d ||j |dWnPt k r"}z2x*dD] }t t |r|j t t |krPqWWYdd}~XnXt|||ddS)N)nsr4cWsdS)Nr )rQr4rOr r r!_nopszcopystat.._nopcs tt|S)N)getattrr,)rL)rRr r!lookupszcopystat..lookupcstt|}|tjkr|SS)N)rSr,supports_follow_symlinks)rLr?)rRr r!rTs  r8)r4utimerBst_flagsZchflags EOPNOTSUPPrG)rXrG)r,r-r;r8rDr: st_atime_ns st_mtime_nsNotImplementedErrorr+rWr.rFrSrN) r1r2r4ZfollowrTr@modewhyerrr )rRr!rs,      cCsBtjj|r"tjj|tjj|}t|||dt|||d|S)N)r4)r,r-isdirjoinbasenamerr)r1r2r4r r r!rs cCsBtjj|r"tjj|tjj|}t|||dt|||d|S)N)r4)r,r-r_r`rarr)r1r2r4r r r!r s csfdd}|S)Ncs,g}xD]}|jtj||q Wt|S)N)extendfnmatchfilterset)r-rJ ignored_namespattern)patternsr r!_ignore_patternss z)ignore_patterns.._ignore_patternsr )rhrir )rhr!r s cCstj|}|dk r|||}nt}tj|g}xB|D]8} | |krJq:tjj|| } tjj|| } ytjj| rtj| } |rtj| | t | | | dnO_RDONLYsamestatfstat_rmtree_safe_fdryr;closerx) topfdr-rzrJr^rLr{orig_str\dirfdr r r!rsD$     rc!Cs^|rdd}n|dkrdd}trPt|tr8tj|}ytj|}Wn&tk rl|tj|tjdSXytj |tj }Wn&tk r|tj|tjdSXztj j |tj |rt|||ytj|Wn(tk r|tj|tjYnXn8y tdWn*tk r<|tj j|tjYnXWdtj|Xn t||SdS)NcWsdS)Nr )rOr r r!rzszrmtree..onerrorcWsdS)Nr )rOr r r!rzsz%Cannot call rmtree on a symbolic link)_use_fd_functions isinstancebytesr,fsdecoderC Exceptionrtrur>r~r-rrrryr.r;rrw)r- ignore_errorsrzrfdr r r!r s<      cCs&tjjtjjpd}tjj|j|S)N)r,r-sepaltseprarstrip)r-rr r r! _basenamesrc Cs|}tjj|rTt||r*tj||dStjj|t|}tjj|rTtd|ytj||Wnt k rtjj |rtj |}tj ||tj |nTtjj|rt||rtd||ft|||ddt|n|||tj |YnX|S)Nz$Destination path '%s' already existsz.Cannot move a directory '%s' into itself '%s'.T)rqro)r,r-r_r3renamer`rrlr r.r;r=r<rx _destinsrcr r )r1r2rqZreal_dstrsr r r!r s2              cCsVtjj|}tjj|}|jtjjs2|tjj7}|jtjjsL|tjj7}|j|S)N)r,r-r0endswithr startswith)r1r2r r r!r8s    rc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)N)rKeyError)rLresultr r r!_get_gidAs  rc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)Nr)rr)rLrr r r!_get_uidMs  rgzipc s"|dkrd}nDtr |dkr d}n2tr2|dkr2d}n trD|dkrDd}ntdj|ddl} |rfd |nd} |d | } tjj| } | rtjj |  r|dk r|j d | |stj | |dk r|j d t t fd d} |s| j| d|}z|j|| dWd|jX| S)NrrZgzbzip2bz2xzzCbad value for 'compress', or compression format not supported : {0}r.z.tarz creating %szCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r! _set_uid_gidsz#_make_tarball.._set_uid_gidzw|%s)rd)_ZLIB_SUPPORTED_BZ2_SUPPORTED_LZMA_SUPPORTED ValueErrorr7tarfiler,r-dirnamerlinforkrrr>addr) base_namebase_dircompressverbosedry_runrrloggerZtar_compressionrZ compress_extZ archive_name archive_dirrtarr )rrrrr! _make_tarballYs<          rc Cs|ddl}|d}tjj|}|rPtjj| rP|dk rB|jd||sPtj||dk rf|jd|||sx|j|d|jd}tjj |} | tj kr|j | | |dk r|jd| xtj |D]\} } } xFt | D]:} tjj tjj| | } |j | | |dk r|jd| qWxT| D]L} tjj tjj| | } tjj| r|j | | |dk r|jd| qWqWWdQRX|S)Nrz.zipz creating %sz#creating '%s' and adding '%s' to itw)Z compressionz adding '%s')zipfiler,r-rrlrrkZipFileZ ZIP_DEFLATEDnormpathcurdirr&walksortedr`isfile)rrrrrrZ zip_filenamerZzfr-dirpathZdirnames filenamesrLr r r! _make_zipfiles@             rrrzuncompressed tar filezgzip'ed tar-fileZgztarzZIP fileziprzbzip2'ed tar-fileZbztarrzxz'ed tar-fileZxztarcCsddtjD}|j|S)NcSsg|]\}}||dfqS)rr ).0rLregistryr r r! sz'get_archive_formats..)_ARCHIVE_FORMATSitemssort)formatsr r r!rs rcCsz|dkr g}t|s td|t|ttfs6tdx0|D](}t|ttf s\t|dkr|dk r$|jd|tjj|}|s>tj||dkrLtj}||d} y t|} Wn tk rt d|YnX| d} x| dD]\} }|| | <qW|dkr|| d<|| d<z| ||f| }Wd|dk r|dk r|jd | tj| X|S) Nzchanging into '%s')rrzunknown archive format '%s'rrrrzchanging back to '%s') r,getcwddebugr-r0chdirrrrr)rr7Zroot_dirrrrrrrZsave_cwdrP format_infofuncargvalr}r r r!rs6        cCsddtjD}|j|S)NcSs"g|]\}}||d|dfqS)rr )rrLrr r r!r6sz&get_unpack_formats..)_UNPACK_FORMATSrr)rr r r!r0s c Csvi}x.tjD]"\}}x|dD] }|||<q WqWx,|D]$}||kr:d}t||||fq:Wt|srtddS)Nrz!%s is already registered for "%s"z*The registered function must be a callable)rrr#rr) extensionsrrZexisting_extensionsrLrext extensionmsgr r r!_check_unpack_options;s rcCs,|dkr g}t|||||||ft|<dS)N)rr)rLrrrrr r r!rMs cCs t|=dS)N)r)rLr r r!rcscCs&tjj|}tjj|s"tj|dS)N)r,r-rr_rk)r-rr r r!_ensure_directorygs  rc Csddl}|j|std||j|}zx|jD]}|j}|jds4d|krRq4tjj |f|j d}|spq4t ||j ds4|j |j}t|d}z|j|Wd|j~Xq4WWd|jXdS)Nrz%s is not a zip file/z..r6)rZ is_zipfiler"rZinfolistr}rr,r-r`splitrrr%r>r&r) r} extract_dirrrrrLtargetdatafr r r!_unpack_zipfilems*       rcCsXddl}y|j|}Wn"|jk r8td|YnXz|j|Wd|jXdS)Nrz/%s is not a compressed or uncompressed tar file)rr>ZTarErrorr"Z extractallr)r}rrZtarobjr r r!_unpack_tarfilesrz.tarz.zip)rrz.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzcCs:x4tjD](\}}x|dD]}|j|r|SqWq WdS)Nr)rrr)r}rLrrr r r!_find_unpack_formats   rc Cs|dkrtj}|dk rhy t|}Wn"tk rFtdj|YnX|d}|||ft|dnHt|}|dkrtdj|t|d}tt|d}|||f|dS)NzUnknown unpack format '{0}'rrzUnknown archive format '{0}') r,rrrrr7dictrr")r}rr7rrrPr r r!rs  statvfs disk_usageusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytescCs@tj|}|j|j}|j|j}|j|j|j}t|||S)N)r,rf_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)r-r@freetotalusedr r r!rs    ntcCs"tj|\}}||}t|||S)N)rZ _getdiskusager)r-rrrr r r!rscCs|dkr|dkrtd|}|}|dkr.d}n(t|trVt|}|dkrVtdj||dkrdd}n(t|tst|}|dkrtdj|tj |||dS)Nzuser and/or group must be setrzno such user: {!r}zno such group: {!r}r) rrrnr LookupErrorr7intrr,r)r-userrZ_user_groupr r r!rs"  PcCsyttjd}Wnttfk r.d}YnXyttjd}Wnttfk r^d}YnX|dksp|dkrytjtjj}Wn$t tt fk rtj |}YnX|dkr|j }|dkr|j }tj ||fS)NCOLUMNSrZLINES)rr,environrrrrt __stdout__filenoAttributeErrorr. terminal_sizecolumnslines)fallbackrrsizer r r!rs$  c s"dd}tjjr&||r"SdS|dkr>tjjdtj}|sFdS|jtj}tj dkrtj |krt|j dtj tjjddjtj}t fdd |Drg}q‡fd d |D}ng}t }xT|D]L}tjj|}||kr|j|x(|D] } tjj|| } || |r| SqWqWdS) NcSs&tjj|o$tj||o$tjj| S)N)r,r-rlaccessr_)r?r\r r r! _access_checkXszwhich.._access_checkPATHwin32rZPATHEXTrc3s |]}jj|jVqdS)N)lowerr)rr)cmdr r! uszwhich..csg|] }|qSr r )rr)rr r!rxszwhich..)r,r-rrgetdefpathrpathseprtplatformrinsertanyrer/rr`) rr\r-r ZpathextfilesseendirZnormdirZthefilerLr )rr!rKs8            @)r)FN)rrrNNN)rrN)rN)rr)rr)rr)Nr)NNrrNNN)Nr)NN)NNrr)r)Vr,rtr8rc collectionsrFzlibr ImportErrorrrZlzmarpwdrZgrpr__all__r.r rrrr"rr#rr3rrr+rNrrr rr rwrr>rxrysupports_dir_fdrj supports_fdrUrr Zavoids_symlink_attacksrr rrrrrrrrrrrrrrrrrrrrrm namedtuplerr__doc__rrrrLrrrF_OKX_OKrr r r r!s          :  Y!,   5 8    @ -     6  "        %        -