a i@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) exceptionr/usr/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,partsparsedr)r0drvrootitpartrelxrrr parse_parts:s@     z_Flavour.parse_partscCsz|r*|sp|rp||||g|ddfSnF|rb||ksJ||||krp||||ddfSn||||fS|||fSN)casefold)r,r;r<r9drv2root2parts2rrr join_parsed_parts`sz_Flavour.join_parsed_partsN)__name__ __module__ __qualname__r-rArHrrrr r'3s&r'c@seZdZdZdZdZeZej dkZ e dZ dZ hddd d DBd d d DBZefd d ZddZddZddZe fddZddZddZddZdS)_WindowsFlavour\/TntZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\>PRNCONzCONIN$AUXzCONOUT$NULcCsh|] }d|qS)zCOM%sr.0crrr z_WindowsFlavour.u123456789¹²³cCsh|] }d|qS)zLPT%srrTrrr rWrXc 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)NrrCr.:)_split_extended_pathfindlen drive_letterslstrip) r,r>r)firstsecondprefixthirdindexindex2r;r<rrr r3s6      "    z_WindowsFlavour.splitrootcCs|Sr(lowerr,srrr rDsz_WindowsFlavour.casefoldcCsdd|DS)NcSsg|] }|qSrrh)rUprrr rXz2_WindowsFlavour.casefold_parts..rr,r9rrr casefold_partssz_WindowsFlavour.casefold_partscCstt|tjjSr()recompilefnmatch translate IGNORECASE fullmatchr,patternrrr compile_patternsz_WindowsFlavour.compile_patterncCsXd}||rP|dd}|dd}|drP||dd7}d|dd}||fS)Nr.zUNC\rZrM) startswith)r,rk ext_prefixrdrrr r]s    z$_WindowsFlavour._split_extended_pathcCsJ|sdS|ddrdS|dddddd}||jvS)NFrz\\r[r/r\ )rz partitionrstripupperreserved_names)r,r9namerrr is_reserveds "z_WindowsFlavour.is_reservedcCsd|j}t|dkrJ|ddkrJ|ddd}d|t|dfSdt|dSdS)NrYrCr\rNz file:///%s/%szutf-8zfile:)driver_as_posixraurlquote_from_bytesencode)r,pathrrestrrr make_urisz_WindowsFlavour.make_uricCsdtjvrtjd}nHdtjvrVztjd}WntyDd}Yn0|tjd}ntd|rtjd|kr||f\}}}|dtjdkrtd|||d<|s|r||||d d}n ||}|S) N USERPROFILEHOMEPATH HOMEDRIVEr.zCan't determine home directoryUSERNAMEr[%Can't determine home directory for %rrC)osenvironKeyError RuntimeErrorrAr*)r,usernameuserhomer;r<r9rrr gethomedirs*      z_WindowsFlavour.gethomedirN)rIrJrKr)r0has_drvntpathpathmodrr is_supportedsetr`ext_namespace_prefixrr3rDrorxr]rrrrrrr rLrs*    '   rLc@sbeZdZdZdZdZeZej dkZ efddZ ddZ d d Z d d Zd dZddZddZdS) _PosixFlavourrNr.FrOcCsV|rH|d|krH||}t|t|dkrr) stripped_partrrr r3 s   z_PosixFlavour.splitrootcCs|Sr(rrjrrr rDsz_PosixFlavour.casefoldcCs|Sr(rrnrrr rosz_PosixFlavour.casefold_partscCstt|jSr()rprqrrrsrurvrrr rx"sz_PosixFlavour.compile_patterncCsdSNFrrnrrr r%sz_PosixFlavour.is_reservedcCst|}dt|S)Nzfile://)bytesr)r,rbpathrrr r(sz_PosixFlavour.make_uricCsx|s>z tjdWSty:ddl}|tjYS0n6ddl}z||jWStyrtd|Yn0dS)NHOMErr) rrrpwdgetpwuidgetuidpw_dirgetpwnamr)r,rrrrr r.s   z_PosixFlavour.gethomedirN)rIrJrKr)r0r posixpathrrrrr3rDrorxrrrrrrr rs  rc@s eZdZdS) _AccessorN)rIrJrKrrrr rBsrc@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,pathobjmoderrr rXsz_NormalAccessor.lchmodlinkcCs tddS)Nz&os.link() not available on this systemrr,targetrrr link_tobsz_NormalAccessor.link_tosymlinkFcCs tddS)Nz)os.symlink() not available on this systemr)r,srcdsttarget_is_directoryrrr rosz_NormalAccessor.symlinkcCs t|Sr()rreadlinkr,rrrr rusz_NormalAccessor.readlinkcCs>zddl}|||jjWSty8tdYn0dS)Nrz*Path.owner() is unsupported on this system)rrstatst_uidpw_name ImportErrorr)r,rrrrr ownerxs  z_NormalAccessor.ownercCs>zddl}|||jjWSty8tdYn0dS)Nrz*Path.group() is unsupported on this system)grpgetgrgidrst_gidgr_namerr)r,rrrrr groups  z_NormalAccessor.groupN)F)rIrJrKrrlstatopenlistdirscandirchmodhasattrrmkdirunlinkrr staticmethodrmdirrenamer2rutimerrrgetcwdr expanduserrealpathrrrr rGs8      rcCsR|d}|dd}|dkr"t}n$d|vr4tdnt|rBt}nt}||||S)NrrC**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,rrrrr r-s  z_Selector.__init__cCs<t|}|j}|j}|jj}||s,tgS|||||Sr()typeis_direxists _accessorriter _select_from)r, parent_pathpath_clsrrrrrr select_fromsz_Selector.select_fromN)rIrJrKr-rrrrr rs rc@seZdZddZdS)rccs |VdSr(r)r,rrrrrrr rsz!_TerminatingSelector._select_fromN)rIrJrKrrrrr rsrc@seZdZddZddZdS)rcCs||_t|||dSr()rrr-)r,rrrrrr r-sz_PreciseSelector.__init__ccsZz@||j}|jr|n||r>|j||||D] }|Vq2WntyTYdS0dSr()_make_child_relpathrrrrPermissionError)r,rrrrrrlrrr rs   z_PreciseSelector._select_fromNrIrJrKr-rrrrr rsrc@seZdZddZddZdS)rcCs|||_t|||dSr()rxmatchrr-r,r%rrrrr r-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!rrrrrr) r,rrrr scandir_itentriesentryerrrlrrr rs& &"   z_WildcardSelector._select_fromNrrrrr rsrc@s$eZdZddZddZddZdS)rcCst|||dSr()rr-rrrr r-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)formatrrIr+rrr __repr__7sz_PathParents.__repr__N)rIrJrK __slots__r-rrr rrrr rs 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)NrO)rrrrr _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) isinstancerrrfspathstrr5 TypeErrorr_flavourrA)rrr9arrr _parse_argsXs    zPurePath._parse_argsTcCs<t|}||\}}}||_||_||_|r8||Sr()objectrrrrr_init)rrinitr,r;r<r9rrr rls zPurePath._from_partscCs,t|}||_||_||_|r(||Sr()rrrrrr)rr;r<r9rr,rrr rys zPurePath._from_parsed_partscCs4|s|r$|||j|ddS|j|SdSrB)rr*)rr;r<r9rrr _format_parsed_partsszPurePath._format_parsed_partscCsdSr(rr+rrr rszPurePath._initcCs@||\}}}|j|j|j|j|||\}}}||||Sr()rrrHrrrr)r,rr;r<r9rrr _make_childs  zPurePath._make_childcCs@z|jWSty:||j|j|jp,d|_|jYS0dS)Nr/)r AttributeErrorrrrrr+rrr __str__s  zPurePath.__str__cCst|Sr()rr+rrr __fspath__szPurePath.__fspath__cCs|j}t||jdS)NrN)rrr2r)r,frrr rszPurePath.as_posixcCs t|Sr()rfsencoder+rrr __bytes__szPurePath.__bytes__cCsd|jj|S)Nz{}({!r}))rrrIrr+rrr r szPurePath.__repr__cCs|std|j|S)Nz.relative path can't be expressed as a file URI) is_absoluterrrr+rrr as_uriszPurePath.as_uricCs6z|jWSty0|j|j|_|jYS0dSr()rr!rrorr+rrr _cpartss  zPurePath._cpartscCs&t|tstS|j|jko$|j|juSr()rrNotImplementedr*rr,otherrrr __eq__s zPurePath.__eq__cCs6z|jWSty0tt|j|_|jYS0dSr()r r!hashrr*r+rrr __hash__s  zPurePath.__hash__cCs&t|tr|j|jurtS|j|jkSr(rrrr+r*r,rrr __lt__szPurePath.__lt__cCs&t|tr|j|jurtS|j|jkSr(r1r,rrr __le__szPurePath.__le__cCs&t|tr|j|jurtS|j|jkSr(r1r,rrr __gt__szPurePath.__gt__cCs&t|tr|j|jurtS|j|jkSr(r1r,rrr __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,anchorrrr r8s zPurePath.anchorcCs.|j}t||js|jrdndkr&dS|dS)NrCrr.r[)rr_rrrnrrr rsz PurePath.namecCsD|j}|d}d|kr,t|dkr.rC)rendswithrar4r,rrrr suffixess   zPurePath.suffixescCsD|j}|d}d|kr,t|dkrs, *  zPurePath.relative_tocGs*z|j|WdSty$YdS0dSr)rOrr,rrr is_relative_to_s   zPurePath.is_relative_tocCs2z|jWSty,t|j|_|jYS0dSr()r r!rrr+rrr r9hs   zPurePath.partscGs ||Sr()r )r,rrrr joinpathtszPurePath.joinpathcCs*z||fWSty$tYS0dSr()r rr+r,keyrrr __truediv__|s zPurePath.__truediv__cCs0z||g|jWSty*tYS0dSr()rrrr+rRrrr __rtruediv__s zPurePath.__rtruediv__cCs@|j}|j}|j}t|dkr*|s&|r*|S||||ddS)NrCr[)rrrr_r)r,r;r<r9rrr parents zPurePath.parentcCst|Sr()rr+rrr parentsszPurePath.parentscCs|js dS|jj pt|jSr)rrrboolrr+rrr r(szPurePath.is_absolutecCs|j|jSr()rrrr+rrr rszPurePath.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 patternFrCT) rrDrArrrr*r_zipr1rr fnmatchcase) r, path_patternrMr;r< pat_partsr9r>r%rrr rs( zPurePath.matchN)T)T)2rIrJrKr rr classmethodrrrrrr r"r#rr'r r)propertyr*r.r0r2r3r4r5r6rrr<r8rr=r@rArCrDrFrOrPr9rQrTrUrVrWr(rrrrrr r;sz              !    rc@seZdZeZdZdS)rrN)rIrJrK_posix_flavourrr rrrr rsrc@seZdZeZdZdS)rrN)rIrJrK_windows_flavourrr rrrr rsrc@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)NrOFrz$cannot instantiate %r on your system) rrrrrrrrrrIr)rrkwargsr,rrr rsz Path.__new__NcCs|dur|j|_nt|_dSr()r_normal_accessor)r,templaterrr rs z Path._initcCs|j|g}||j|j|Sr()rrrr)r,r>r9rrr rs zPath._make_child_relpathcCs|Sr(rr+rrr __enter__szPath.__enter__cCsdSr(r)r,tvtbrrr __exit__s z Path.__exit__cCs|j|||Sr(rr)r,rflagsrrrr _opener sz Path._openercCs|j|||Sr(rk)r,rlrrrr _raw_openszPath._raw_opencCs |tSr()rrrrrr cwdszPath.cwdcCs||jdSr()rrrprrr home sz Path.homecCsB|}z |}Wnty2|j|}Yn0tj||Sr()rr!rrrsamestat)r, other_pathstother_strrr samefile's   z Path.samefileccs,|j|D]}|dvrq ||Vq dS)N>r/z..)rrrr?rrr iterdir2sz Path.iterdirccsntd|||s td||j|f\}}}|s<|rDtdtt||j}| |D] }|Vq^dS)Nzpathlib.Path.globzUnacceptable pattern: {!r}%Non-relative patterns are unsupported) r6auditrrrrArrrrr,rwr;r<rselectorrlrrr glob<sz Path.globccs`td|||j|f\}}}|s*|r2tdtdt||j}||D] }|VqPdS)Nzpathlib.Path.rglobry)r)r6rzrrArrrrr{rrr rglobJsz Path.rglobcCs6|r |S|jtg|jdd}|j|d|SNFra)rd)r(rrrrr)r,objrrr absoluteWs  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,rrrkrrlrrr resolvegs  z Path.resolvecCs |j|Sr()rrr+rrr rsz Path.statcCs |j|Sr()rrr+rrr rsz Path.ownercCs |j|Sr()rrr+rrr rsz Path.grouprr[c Cstj|||||||jdS)N)opener)iorrm)r,r bufferingencodingerrorsnewlinerrr rsz Path.opencCs8|jdd}|WdS1s*0YdS)Nrbrrreadr$rrr read_bytesszPath.read_bytescCs<|jd||d}|WdS1s.0YdS)Nrrrrr)r,rrr%rrr read_textszPath.read_textcCsBt|}|jdd}||WdS1s40YdS)Nwbr) memoryviewrwrite)r,dataviewr%rrr write_bytesszPath.write_bytescCsXt|tstd|jj|jd||d}||WdS1sJ0YdS)Nzdata must be str, not %swr)rrrrrIrr)r,rrrr%rrr write_texts  zPath.write_textcCs,|j|}|j|fdd}|j|d|Sr)rrrr)r,rrrrr rs  z Path.readlinkTcCsb|r.z|j|dWnty(Yn0dStjtjB}|sH|tjO}|||}t|dSr() rrrrO_CREATO_WRONLYO_EXCLroclose)r,rexist_okrlfdrrr touchs    z Path.touchcCsxz|j||Wn`tyT|r.|j|kr0|jjddd|j|d|dYn tyr|rl|snYn0dS)NT)rWrF)rrFileNotFoundErrorrVrr)r,rrWrrrr rs   z Path.mkdircCs|j||dSr()rrr,rrrr rsz Path.chmodcCs|j||dSr()rrrrrr rsz Path.lchmodcCs.z|j|Wnty(|s$Yn0dSr()rrr)r, missing_okrrr rs  z Path.unlinkcCs|j|dSr()rrr+rrr rsz Path.rmdircCs |j|Sr()rrr+rrr r sz Path.lstatcCs|j||||Sr()rrrrrrr rs z Path.renamecCs|j||||Sr()rr2rrrrr r2!s z Path.replacecCs|j|||dSr()rr)r,rrrrr symlink_to.szPath.symlink_tocCs|j||dSr()rrrrrr r5s z Path.link_toc CsTz |WnBty<}zt|s&WYd}~dSd}~0tyNYdS0dSNFT)rrr!rr,rrrr rCs  z Path.existsc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rst_moderr!rrrrr rRs z Path.is_dirc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rrrr!rrrrr is_filebs z Path.is_filecCsn|r|sdSz|jj}Wnty8YdS0|j}||krPdS|j}|jj}||kSr)rrrVrst_devrst_ino)r, parent_devdevino parent_inorrr is_mountss    z Path.is_mountc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rrrr!rrrrr rs zPath.is_symlinkc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rrrr!rrrrr is_block_devices zPath.is_block_devicec CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)rrrrr!rrrrr is_char_devices zPath.is_char_devicec CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)rrrrr!rrrrr is_fifos z Path.is_fifoc CsXzt|jWSty@}zt|s*WYd}~dSd}~0tyRYdS0dSr)r rrrr!rrrrr is_sockets zPath.is_socketcCs`|js\|js\|jr\|jddddkr\|j|jddd}||g|jddS|S)NrrC~)rrrrrr)r,homedirrrr rs zPath.expanduser)N)rj)rn)F)rr[NNN)NN)NN)rjT)rnFF)F)F)2rIrJrKr rrrrerirmror]rqrrrwrxr}r~rrrrrrrrrrrrrrrrrrrr2rrrrrrrrrrrrrrrr rsf                  rc@seZdZdZdS)rrN)rIrJrKr rrrr rsrc@seZdZdZddZdS)rrcCs tddS)Nz-Path.is_mount() is unsupported on this systemrr+rrr rszWindowsPath.is_mountN)rIrJrKr rrrrr rsr)@rr functoolsrrrrrpr6_collections_abcrrrrrrroperatorrrr r r r r rr urllib.parserrsupports_symlinks__all___WINERROR_NOT_READY_WINERROR_INVALID_NAMErrrr!r&rr'rLrr`r_rrrcrrrrrrrrrrPathLikeregisterrrrrrrrrr sp  $   ?9F  ,