ó ïRec@sÆddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZddlmZddlmZddlmZmZerdd lmZmZmZmZmZd efd „ƒYZnd „Zd „Zd„Z e d„ƒZ!e ddddƒZ"erte"d„ƒZ#ne"ej#ƒZ#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*dS(iÿÿÿÿN(tcontextmanager(tNamedTemporaryFile(tretry(tPY2(t get_path_uid(t format_size(tMYPY_CHECK_RUNNINGtcast(tAnytBinaryIOtIteratortListtUniontNamedTemporaryFileResultcBseZed„ƒZRS(cCsdS(N((tself((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytfiles(t__name__t __module__tpropertyR(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyR scCsÚtjdksttdƒ r#tStjj|ƒs;t‚d}x’||krÕtjj |ƒr¹tj ƒdkr£yt |ƒ}Wnt k r˜t SX|dkStj|tjƒSqD|tjj|ƒ}}qDWt S(Ntwin32tgeteuidi(tsystplatformthasattrtostTruetpathtisabstAssertionErrortNonetlexistsRRtOSErrortFalsetaccesstW_OKtdirname(Rtprevioustpath_uid((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytcheck_path_owners  cCs”ytj||ƒWnyttfk rx\||gD]N}yt|ƒ}Wntk r`q7X|r7tjdjtƒƒ‚q7q7W‚nXdS(s“Wrap shutil.copy2() but map errors copying socket files to SpecialFileError as expected. See also https://bugs.python.org/issue37700. s`{f}` is a socketN(tshutiltcopy2RtIOErrort is_sockettSpecialFileErrortformattlocals(tsrctdesttftis_socket_file((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyt copy2_fixed;s cCstjtj|ƒjƒS(N(tstattS_ISSOCKRtlstattst_mode(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyR*Tsc ksˆtdtdtjj|ƒdtjj|ƒdd|F}td|ƒ}z |VWd|jjƒtj |jj ƒƒXWdQXdS(s%Return a file-like object pointing to a tmp file next to path. The file is created securely and is ensured to be written to disk after the context reaches its end. kwargs will be passed to tempfile.NamedTemporaryFile to control the way the temporary file will be opened. tdeletetdirtprefixtsuffixs.tmpR N( RR RRR#tbasenameRRtflushtfsynctfileno(RtkwargsR0tresult((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytadjacent_tmp_fileYs    tstop_max_delayièt wait_fixediúcCsIytj||ƒWn.tk rDtj|ƒtj||ƒnXdS(N(RtrenameRtremove(R.R/((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytreplacevs   cCsmx>tjj|ƒs@tjj|ƒ}||kr7Pn|}qWtjdkrctj|tjƒSt|ƒS(sgCheck if a directory is writable. Uses os.access() on POSIX, tries creating files on Windows. tposix(RRtisdirR#tnameR!R"t_test_writable_dir_win(Rtparent((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyttest_writable_dir…s  csd}d‰xðtdƒD]â}|dj‡fd†tdƒDƒƒ}tjj||ƒ}y'tj|tjtjBtjBƒ}WnVtk rÜ}|j t j kr®qn|j t j ksÒ|j t j krÖt S‚qXtj|ƒtj|ƒtSqWtdƒ‚dS(Nt(accesstest_deleteme_fishfingers_custard_t$abcdefghijklmnopqrstuvwxyz0123456789i tc3s|]}tjˆƒVqdS(N(trandomtchoice(t.0t_(talphabet(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pys Ÿsis3Unexpected condition testing for writable directory(trangetjoinRRtopentO_RDWRtO_CREATtO_EXCLRterrnotEEXISTtEPERMtEACCESR tclosetunlinkRtEnvironmentError(RR;RSRIRtfdte((RTs/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyRJ˜s$)'$  cs\g}xOtj|ƒD]>\‰}}tj||ƒ}|j‡fd†|DƒƒqW|S(s†Returns a list of absolute paths of files beneath path, recursively, with filenames which match the UNIX-style shell glob pattern.c3s$|]}tjjˆ|ƒVqdS(N(RRRV(RRR0(troot(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pys Ãs(Rtwalktfnmatchtfiltertextend(RtpatternR@RStfilestmatches((Rds/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyt find_files¼s !cCs&tjj|ƒrdStjj|ƒS(Ni(RRtislinktgetsize(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyt file_sizeÇscCstt|ƒƒS(N(RRo(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytformat_file_sizeÏscCscd}xVtj|ƒD]E\}}}x3|D]+}tjj||ƒ}|t|ƒ7}q,WqW|S(Ng(RReRRVRo(RtsizeRdt_dirsRjtfilenamet file_path((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytdirectory_sizeÔs  cCstt|ƒƒS(N(RRu(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pytformat_directory_sizeÞs(+R[RfRtos.pathRPR'R3Rt contextlibRttempfileRtpip._vendor.retryingRtpip._vendor.sixRtpip._internal.utils.compatRtpip._internal.utils.miscRtpip._internal.utils.typingRRttypingRR R R R R R&R2R*RAt_replace_retryRFRLRJRlRoRpRuRv(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyts@        (      $