a XC?h@s2ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZmZmZmZmZddlmZdZgdZd Zd Z d Z!e e eefZ"ee e!fZ#d d Z$ddZ%Gddde&Z'Gddde'Z(Gddde'Z)e(Z*e)Z+GdddZ,Gddde,Z-e-Z.ddZ/e0edrbe1e/Z/GdddZ2Gdd d Z3Gd!d"d"e2Z4Gd#d$d$e2Z5Gd%d&d&e2Z6Gd'd(d(e Z7Gd)d*d*e&Z8ej9:e8Gd+d,d,e8Z;Gd-d.d.e8ZGd3d4d4e=e<Z?dS)5N)Sequence)EINVALENOENTENOTDIREBADFELOOP) attrgetter)S_ISDIRS_ISLNKS_ISREGS_ISSOCKS_ISBLKS_ISCHRS_ISFIFO)quote_from_bytesT)PurePath PurePosixPathPureWindowsPathPath PosixPath WindowsPath{icCs t|ddtvpt|ddtvS)Nerrnowinerror)getattr_IGNORED_ERROS_IGNORED_WINERRORS)Z exceptionr,/opt/alt/python39/lib64/python3.9/pathlib.py _ignore_error(sr cCsd|vpd|vpd|vS)N*?[r)patrrr_is_wildcard_pattern-sr%c@s$eZdZddZddZddZdS)_FlavourcCs|jj|_dSN)sepjoinselfrrr__init__7sz_Flavour.__init__c Csg}|j}|j}d}}t|}|D]}|s.q$|r>|||}||\}}} || vrt| |D] } | rd| dkrd|t| qdn| r| dkr|t| |s|r$|s|D]0}|sq|r|||}||d}|rqqqq$|s|r|||| |||fS)N.r) r(altsepreversedreplace splitrootsplitappendsysinternreverse) r+partsZparsedr(r/drvrootitpartZrelxrrr parse_parts:s@     z_Flavour.parse_partscCsz|r*|sp|rp||||g|ddfSnF|rb||ksJ||||krp||||ddfSn||||fS|||fSN)casefold)r+r9r:r8Zdrv2Zroot2Zparts2rrrjoin_parsed_parts`sz_Flavour.join_parsed_partsN)__name__ __module__ __qualname__r,r>rBrrrrr&3s&r&c@seZdZdZdZdZeZej dkZ e dZ dZ hddd d DBd d d DBZefd d ZddZddZddZe fddZddZddZddZdS)_WindowsFlavour\/TntZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\>ZPRNZCONZAUXzCONOUT$ZNULzCONIN$cCsh|] }d|qS)zCOM%sr.0crrr z_WindowsFlavour.u123456789¹²³cCsh|] }d|qS)zLPT%srrJrrrrMrNc Cs\|dd}|dd}||krP||krP||\}}|dd}|dd}nd}|dd}||kr||kr||kr||d}|dkr|||d}||dkr|dkrt|}|r||d||||ddfS|d||||ddfSd} } |dkr6||jvr6|dd} |dd}|}||krN|} ||}|| | |fS)Nrr@r-:)_split_extended_pathfindlen drive_letterslstrip) r+r<r(firstsecondprefixZthirdindexZindex2r9r:rrrr2s6      "    z_WindowsFlavour.splitrootcCs|Sr'lowerr+srrrrAsz_WindowsFlavour.casefoldcCsdd|DS)NcSsg|] }|qSrr\)rKprrr rNz2_WindowsFlavour.casefold_parts..rr+r8rrrcasefold_partssz_WindowsFlavour.casefold_partscCstt|tjjSr')recompilefnmatch translate IGNORECASE fullmatchr+patternrrrcompile_patternsz_WindowsFlavour.compile_patterncCsXd}||rP|dd}|dd}|drP||dd7}d|dd}||fS)Nr-zUNC\rPrG) startswith)r+r_Z ext_prefixrZrrrrSs    z$_WindowsFlavour._split_extended_pathcCsJ|sdS|ddrdS|dddddd}||jvS)NFrz\\rQr.rR )rn partitionrstripupperreserved_names)r+r8namerrr is_reserveds "z_WindowsFlavour.is_reservedcCsd|j}t|dkrJ|ddkrJ|ddd}d|t|dfSdt|dSdS)NrOr@rRrHz file:///%s/%szutf-8zfile:)driverUas_posixrWurlquote_from_bytesencode)r+pathrvrestrrrmake_urisz_WindowsFlavour.make_uricCsdtjvrtjd}nHdtjvrVztjd}WntyDd}Yn0|tjd}ntd|rtjd|kr||f\}}}|dtjdkrtd|||d<|s|r||||d d}n ||}|S) NZ USERPROFILEZHOMEPATHZ HOMEDRIVEr-zCan't determine home directoryZUSERNAMErQ%Can't determine home directory for %rr@)osenvironKeyError RuntimeErrorr>r))r+usernameuserhomer9r:r8rrr gethomedirs*      z_WindowsFlavour.gethomedirN)rCrDrEr(r/has_drvntpathpathmodr~rt is_supportedsetrVZext_namespace_prefixrsr2rArcrlrSrur|rrrrrrFrs*    '   rFc@sbeZdZdZdZdZeZej dkZ efddZ ddZ d d Z d d Zd dZddZddZdS) _PosixFlavourrHr-FrIcCsV|rH|d|krH||}t|t|dkrz tjdWSty:ddl}|tjYS0n6ddl}z||jWStyrtd|Yn0dS)NHOMErr}) r~rrpwdgetpwuidgetuidpw_dirgetpwnamr)r+rrrrrr.s   z_PosixFlavour.gethomedirN)rCrDrEr(r/r posixpathrr~rtrr2rArcrlrur|rrrrrrs  rc@s eZdZdS) _AccessorN)rCrDrErrrrrBsrc@seZdZejZejZejZejZejZej Z e edr>ej Z nddZ ej Z ej Z e edrdejZn eddZejZejZejZe edrejZn dd d ZejZd d Zd dZddZejZeejjZeejjZdS)_NormalAccessorlchmodcCs tddS)Nz%lchmod() not available on this systemNotImplementedError)r+ZpathobjmoderrrrXsz_NormalAccessor.lchmodlinkcCs tddS)Nz&os.link() not available on this systemrr+targetrrrlink_tobsz_NormalAccessor.link_tosymlinkFcCs tddS)Nz)os.symlink() not available on this systemr)r+srcZdsttarget_is_directoryrrrrosz_NormalAccessor.symlinkcCs t|Sr')r~readlinkr+rzrrrrusz_NormalAccessor.readlinkcCs>zddl}|||jjWSty8tdYn0dS)Nrz*Path.owner() is unsupported on this system)rrstatst_uidZpw_name ImportErrorr)r+rzrrrrownerxs  z_NormalAccessor.ownercCs>zddl}|||jjWSty8tdYn0dS)Nrz*Path.group() is unsupported on this system)grpZgetgrgidrst_gidZgr_namerr)r+rzrrrrgroups  z_NormalAccessor.groupN)F)rCrDrEr~rlstatopenlistdirscandirchmodhasattrrmkdirunlinkrr staticmethodrmdirrenamer1rutimerrrgetcwdrz expanduserrealpathrrrrrGs8      rcCsR|d}|dd}|dkr"t}n$d|vr4tdnt|rBt}nt}||||S)Nrr@**z:Invalid pattern: '**' can only be an entire path component)_RecursiveWildcardSelector ValueErrorr%_WildcardSelector_PreciseSelector) pattern_partsflavourr$ child_partsclsrrr_make_selectors  r lru_cachec@seZdZddZddZdS) _SelectorcCs0||_|rt|||_d|_nt|_d|_dSNTF)rr successordironly_TerminatingSelector)r+rrrrrr,s  z_Selector.__init__cCs<t|}|j}|j}|jj}||s,tgS|||||Sr')typeis_direxists _accessorriter _select_from)r+ parent_pathZpath_clsrrrrrr select_fromsz_Selector.select_fromN)rCrDrEr,rrrrrrs rc@seZdZddZdS)rccs |VdSr'r)r+rrrrrrrrsz!_TerminatingSelector._select_fromN)rCrDrErrrrrrsrc@seZdZddZddZdS)rcCs||_t|||dSr')rtrr,)r+rtrrrrrr,sz_PreciseSelector.__init__ccsZz@||j}|jr|n||r>|j||||D] }|Vq2WntyTYdS0dSr')_make_child_relpathrtrrrPermissionError)r+rrrrrzr`rrrrs   z_PreciseSelector._select_fromNrCrDrEr,rrrrrrsrc@seZdZddZddZdS)rcCs|||_t|||dSr')rlmatchrr,r+r$rrrrrr,s z_WildcardSelector.__init__c csz||}t|}Wdn1s(0Y|D]}|jrz|sNWq6Wn:ty}z"t|sjWYd}~q6WYd}~n d}~00|j} || r6|| } |j | |||D] } | Vqq6Wnt yYdS0dSr') listrrOSErrorr rtrrrrr) r+rrrr scandir_itentriesentryertrzr`rrrrs& &"   z_WildcardSelector._select_fromNrrrrrrsrc@s$eZdZddZddZddZdS)rcCst|||dSr')rr,rrrrr,sz#_RecursiveWildcardSelector.__init__c cs|Vz||}t|}Wdn1s.0Y|D]v}d}z |}Wn.ty~}zt|sjWYd}~n d}~00|r<|s<||j} || ||D] } | Vqq)formatrrCr*rrr__repr__7sz_PathParents.__repr__N)rCrDrE __slots__r,rrrrrrrrs rc@seZdZdZddZddZeddZed[d d Zed\d d Z ed dZ ddZ ddZ ddZ ddZddZddZddZddZedd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zeed/d0d1Zeed2d3d1Zed4d5Zed6d7Z ed8d9Z!ed:d;Z"edd?Z$d@dAZ%dBdCZ&dDdEZ'dFdGZ(edHdIZ)dJdKZ*dLdMZ+dNdOZ,edPdQZ-edRdSZ.dTdUZ/dVdWZ0dXdYZ1dZS)]r)rrr_str_hash_pparts_cached_cpartscGs$|turtjdkrtnt}||S)NrI)rr~rtrr _from_parts)rargsrrr__new__IszPurePath.__new__cCs|jt|jfSr') __class__tuplerr*rrr __reduce__SszPurePath.__reduce__cCsdg}|D]N}t|tr"||j7}qt|}t|trF|t|qtdt|q|j |S)NzNargument should be a str object or an os.PathLike object returning str, not %r) isinstancerrr~fspathstrr4 TypeErrorr_flavourr>)rrr8arrr _parse_argsXs    zPurePath._parse_argsTcCs<t|}||\}}}||_||_||_|r8||Sr')objectrrrrr_init)rrinitr+r9r:r8rrrrls zPurePath._from_partscCs,t|}||_||_||_|r(||Sr')rrrrrr)rr9r:r8rr+rrrrys zPurePath._from_parsed_partscCs4|s|r$|||j|ddS|j|SdSr?)rr))rr9r:r8rrr_format_parsed_partsszPurePath._format_parsed_partscCsdSr'rr*rrrrszPurePath._initcCs@||\}}}|j|j|j|j|||\}}}||||Sr')rrrBrrrr)r+rr9r:r8rrr _make_childs  zPurePath._make_childcCs@z|jWSty:||j|j|jp,d|_|jYS0dS)Nr.)rAttributeErrorrrrrr*rrr__str__s  zPurePath.__str__cCst|Sr')rr*rrr __fspath__szPurePath.__fspath__cCs|j}t||jdS)NrH)rrr1r(r+frrrrwszPurePath.as_posixcCs t|Sr')r~fsencoder*rrr __bytes__szPurePath.__bytes__cCsd|jj|S)Nz{}({!r}))rrrCrwr*rrrrszPurePath.__repr__cCs|std|j|S)Nz.relative path can't be expressed as a file URI) is_absoluterrr|r*rrras_uriszPurePath.as_uricCs6z|jWSty0|j|j|_|jYS0dSr')rrrrcrr*rrr_cpartss  zPurePath._cpartscCs&t|tstS|j|jko$|j|juSr')rrNotImplementedr rr+otherrrr__eq__s zPurePath.__eq__cCs6z|jWSty0tt|j|_|jYS0dSr')rrhashrr r*rrr__hash__s  zPurePath.__hash__cCs&t|tr|j|jurtS|j|jkSr'rrrr r rrrr__lt__szPurePath.__lt__cCs&t|tr|j|jurtS|j|jkSr'rrrrr__le__szPurePath.__le__cCs&t|tr|j|jurtS|j|jkSr'rrrrr__gt__szPurePath.__gt__cCs&t|tr|j|jurtS|j|jkSr'rrrrr__ge__szPurePath.__ge__cCs|Sr'r)rrrrr__class_getitem__szPurePath.__class_getitem__rz.The drive prefix (letter or UNC path), if any.)docrzThe root of the path, if any.cCs|j|j}|Sr')rr)r+anchorrrrrs zPurePath.anchorcCs.|j}t||js|jrdndkr&dS|dS)Nr@rr-rQ)rrUrrrbrrrrtsz PurePath.namecCsD|j}|d}d|kr,t|dkr.r@)rtendswithrWr3r+rtrrrsuffixess   zPurePath.suffixescCsD|j}|d}d|kr,t|dkrr(r/rUrrrr)r+rtr9r:r8rrr with_names   zPurePath.with_namecCs|||jSr')r%r)r+r#rrr with_stem%szPurePath.with_stemcCs|j}|j|vs |jr.|j|vr.td|f|r<|drD|dkrPtd||j}|shtd|f|j}|s|||}n|dt| |}||j |j |j dd|gS)NzInvalid suffix %rr.r$rQ) rr(r/rrnrtrrUrrrr)r+rrrtZ old_suffixrrr with_suffix)s   zPurePath.with_suffixc Gs|s td|j}|j}|j}|r8||g|dd}n|}||\}}}|rf||g|dd} n|} t| } |jj} | dkr|s|rn| |d| | | kr||||} t d t |t | | d| dkr|nd|| dS)Nzneed at least one argumentr@rzU{!r} is not in the subpath of {!r} OR one path is relative and the other is absolute.r-) rrrrrrUrrcrrrrr) r+rr8r9r:Z abs_partsZto_drvZto_rootZto_partsZ to_abs_partsncfZ formattedrrr relative_to>s, *  zPurePath.relative_tocGs*z|j|WdSty$YdS0dSr)r*rrrrris_relative_to_s   zPurePath.is_relative_tocCs2z|jWSty,t|j|_|jYS0dSr')rrrrr*rrrr8hs   zPurePath.partscGs ||Sr')r)r+rrrrjoinpathtszPurePath.joinpathcCs*z||fWSty$tYS0dSr')rrr r+keyrrr __truediv__|s zPurePath.__truediv__cCs0z||g|jWSty*tYS0dSr')rrrr r-rrr __rtruediv__s zPurePath.__rtruediv__cCs@|j}|j}|j}t|dkr*|s&|r*|S||||ddS)Nr@rQ)rrrrUr)r+r9r:r8rrrparents zPurePath.parentcCst|Sr')rr*rrrparentsszPurePath.parentscCs|js dS|jj pt|jSr)rrrboolrr*rrrr szPurePath.is_absolutecCs|j|jSr')rrurr*rrrruszPurePath.is_reservedc Cs|jj}||}|j|f\}}}|s0td|rF|||jkrFdS|r\|||jkr\dS|j}|sj|rt|t|kr~dS|dd}nt|t|krdStt |t |D]\}}t ||sdSqdS)Nz empty patternFr@T) rrAr>rrrr rUzipr0rfZ fnmatchcase) r+Z path_patternr)r9r:Z pat_partsr8r<r$rrrrs( zPurePath.matchN)T)T)2rCrDrErrr classmethodrrrrrrrrrwr rr propertyr rrrrrrrrrvr:rrtrr"r#r%r&r'r*r+r8r,r/r0r1r2r rurrrrrr;sz              !    rc@seZdZeZdZdS)rrN)rCrDrE_posix_flavourrrrrrrrsrc@seZdZeZdZdS)rrN)rCrDrE_windows_flavourrrrrrrrsrc@seZdZdZddZdcddZddZd d Zd d ZddddZ deddZ e ddZ e ddZ ddZddZddZddZdd Zdfd"d#Zd$d%Zd&d'Zd(d)Zdgd,d-Zd.d/Zdhd0d1Zd2d3Zdid4d5Zd6d7Zdjd9d:Zdkd;d<Zd=d>Zd?d@Z dldAdBZ!dCdDZ"dEdFZ#dGdHZ$dIdJZ%dmdKdLZ&dMdNZ'dOdPZ(dQdRZ)dSdTZ*dUdVZ+dWdXZ,dYdZZ-d[d\Z.d]d^Z/d_d`Z0dadbZ1dS)nr)rcOsL|turtjdkrtnt}|j|dd}|jjs@td|j f| |S)NrIFrz$cannot instantiate %r on your system) rr~rtrrrrrrrCr)rrkwargsr+rrrrsz Path.__new__NcCs|dur|j|_nt|_dSr')r_normal_accessor)r+templaterrrrs z Path._initcCs|j|g}||j|j|Sr')rrrr)r+r<r8rrrrs zPath._make_child_relpathcCs|Sr'rr*rrr __enter__szPath.__enter__cCsdSr'r)r+tvtbrrr__exit__s z Path.__exit__cCs|j|||Sr'rr)r+rtflagsrrrr_opener sz Path._openercCs|j|||Sr'rC)r+rDrrrr _raw_openszPath._raw_opencCs |tSr')r~rrrrrcwdszPath.cwdcCs||jdSr')rrrHrrrhome sz Path.homecCsB|}z |}Wnty2|j|}Yn0tj||Sr')rrrr~rzsamestat)r+Z other_pathstZother_strrrsamefile's   z Path.samefileccs,|j|D]}|dvrq ||Vq dS)N>r.z..)rrrr!rrriterdir2sz Path.iterdirccsntd|||s td||j|f\}}}|s<|rDtdtt||j}| |D] }|Vq^dS)Nzpathlib.Path.globzUnacceptable pattern: {!r}%Non-relative patterns are unsupported) r5auditrrrr>rrrrr+rkr9r:rZselectorr`rrrglob<sz Path.globccs`td|||j|f\}}}|s*|r2tdtdt||j}||D] }|VqPdS)Nzpathlib.Path.rglobrO)r)r5rPrr>rrrrrQrrrrglobJsz Path.rglobcCs6|r |S|jtg|jdd}|j|d|SNFr9)r<)r rr~rrr)r+objrrrabsoluteWs  z Path.absoluteFc Csdd}z|jj||d}Wn.tyJ}z||WYd}~n d}~00||f}|sz |Wn,ty}z||WYd}~n d}~00|S)NcSs0t|dd}|jtks|tkr,td|jdS)NrrzSymlink loop from %r)rrr_WINERROR_CANT_RESOLVE_FILENAMErfilename)rrrrr check_eloopns z!Path.resolve..check_eloop)strict)rrrrr)r+rZrYr_rr`rrrresolvegs  z Path.resolvecCs |j|Sr')rrr*rrrrsz Path.statcCs |j|Sr')rrr*rrrrsz Path.ownercCs |j|Sr')rrr*rrrrsz Path.grouprrQc Cstj|||||||jdS)N)Zopener)iorrE)r+r bufferingencodingerrorsnewlinerrrrsz Path.opencCs8|jdd}|WdS1s*0YdS)Nrbrrreadrrrr read_bytesszPath.read_bytescCs<|jd||d}|WdS1s.0YdS)Nr\rr_r`rd)r+r_r`rrrr read_textszPath.read_textcCsBt|}|jdd}||WdS1s40YdS)Nwbrc) memoryviewrwrite)r+dataZviewrrrr write_bytesszPath.write_bytescCsXt|tstd|jj|jd||d}||WdS1sJ0YdS)Nzdata must be str, not %swrg)rrrrrCrrk)r+rlr_r`rrrr write_texts  zPath.write_textcCs,|j|}|j|fdd}|j|d|SrT)rrrr)r+rzrUrrrrs  z Path.readlinkTcCsb|r.z|j|dWnty(Yn0dStjtjB}|sH|tjO}|||}t|dSr') rrrr~O_CREATO_WRONLYO_EXCLrGclose)r+rexist_okrDfdrrrtouchs    z Path.touchcCsxz|j||Wn`tyT|r.|j|kr0|jjddd|j|d|dYn tyr|rl|snYn0dS)NT)r2rtF)rrFileNotFoundErrorr1rr)r+rr2rtrrrrs   z Path.mkdircCs|j||dSr')rrr+rrrrrsz Path.chmodcCs|j||dSr')rrrxrrrrsz Path.lchmodcCs.z|j|Wnty(|s$Yn0dSr')rrrw)r+Z missing_okrrrrs  z Path.unlinkcCs|j|dSr')rrr*rrrrsz Path.rmdircCs |j|Sr')rrr*rrrr sz Path.lstatcCs|j||||Sr')rrrrrrrrs z Path.renamecCs|j||||Sr')rr1rrrrrr1!s z Path.replacecCs|j|||dSr')rr)r+rrrrr symlink_to.szPath.symlink_tocCs|j||dSr')rrrrrrr5s z Path.link_toc CsTz |WnBty<}zt|s&WYd}~dSd}~0tyNYdS0dSNFT)rrr rr+rrrrrCs  z Path.existsc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rst_moderr rr{rrrrRs z Path.is_dirc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rr|rr rr{rrris_filebs z Path.is_filecCsn|r|sdSz|jj}Wnty8YdS0|j}||krPdS|j}|jj}||kSrz)rrr1rst_devrst_ino)r+Z parent_devZdevZinoZ parent_inorrris_mountss    z Path.is_mountc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rr|rr rr{rrrrs zPath.is_symlinkc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rr|rr rr{rrris_block_devices zPath.is_block_devicec CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)rrr|rr rr{rrris_char_devices zPath.is_char_devicec CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)rrr|rr rr{rrris_fifos z Path.is_fifoc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rr|rr rr{rrr is_sockets zPath.is_socketcCs`|js\|js\|jr\|jddddkr\|j|jddd}||g|jddS|S)Nrr@~)rrrrrr)r+Zhomedirrrrrs zPath.expanduser)N)rB)rF)F)r\rQNNN)NN)NN)rBT)rFFF)F)F)2rCrDrErrrrr=rArErGr5rIrJrMrNrRrSrVr[rrrrrfrhrmrorrvrrrrrrrr1ryrrrr}rrrrrrrrrrrrsf                  rc@seZdZdZdS)rrN)rCrDrErrrrrrsrc@seZdZdZddZdS)rrcCs tddS)Nz-Path.is_mount() is unsupported on this systemrr*rrrrszWindowsPath.is_mountN)rCrDrErrrrrrrsr)@rf functoolsr]rr~rrdr5_collections_abcrrrrrrroperatorrrr r r r r rrZ urllib.parserrxZsupports_symlinks__all__Z_WINERROR_NOT_READYZ_WINERROR_INVALID_NAMErWrrr r%rr&rFrr8r7rrr;rrrrrrrrrrPathLikeregisterrrrrrrrrrsp  $   ?9F  ,