U e5d@sjddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZmZmZmZmZddlmZdZejdkrddlZe dd d krdd lm!Z!qd ZdZ!ndZd dddddgZ"e e eefZ#dZ$ddZ%ddZ&Gddde'Z(Gddde(Z)Gddde(Z*e)Z+e*Z,GdddZ-Gd d!d!e-Z.e.Z/d"d#Z0e1ed$re2e0Z0Gd%d&d&Z3Gd'd(d(Z4Gd)d*d*e3Z5Gd+d,d,e3Z6Gd-d.d.e3Z7Gd/d0d0e Z8Gd1d d e'Z9ej:;e9Gd2dde9ZGd5dde>e<Z?Gd6dde>e=Z@dS)7N)Sequence)EINVALENOENTENOTDIREBADFELOOP) attrgetter)S_ISDIRS_ISLNKS_ISREGS_ISSOCKS_ISBLKS_ISCHRS_ISFIFO)quote_from_bytesTnt)r)_getfinalpathnameFPurePath PurePosixPathPureWindowsPathPath PosixPath WindowsPath){icCs t|ddtkpt|ddtkS)NerrnoZwinerror)getattr_IGNORED_ERROS_IGNORED_WINERRORS)Z exceptionr!/usr/lib64/python3.8/pathlib.py _ignore_error.sr#cCsd|kpd|kpd|kS)N*?[r!)patr!r!r"_is_wildcard_pattern3sr(c@s$eZdZddZddZddZdS)_FlavourcCs|jj|_dSN)sepjoinselfr!r!r"__init__=sz_Flavour.__init__c Csg}|j}|j}d}}t|}|D]}|s.q$|r>|||}||\}}} || krt| |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+r2drvrootitpartZrelxr!r!r" parse_parts@s@     z_Flavour.parse_partscCsz|r*|sp|rp||||g|ddfSnF|rb||ksJ||||krp||||ddfSn||||fS|||fSN)casefold)r.r<r=r;Zdrv2Zroot2Zparts2r!r!r"join_parsed_partsfsz_Flavour.join_parsed_partsN)__name__ __module__ __qualname__r/rArEr!r!r!r"r)9s&r)c@seZdZdZdZdZeZej dkZ e dZ dZ ddd d hd d ed dDBdd ed dDBZefddZddZddZddZd&ddZe fddZddZdd Zd!d"Zd#d$Zd%S)'_WindowsFlavour\/TrZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\ZCONZPRNZAUXZNULcCsh|] }d|qS)zCOM%dr!.0ir!r!r" sz_WindowsFlavour.rC cCsh|] }d|qS)zLPT%dr!rLr!r!r"rOsc Cs\|dd}|dd}||krP||krP||\}}|dd}|dd}nd}|dd}||kr||kr||kr||d}|dkr|||d}||dkr|dkrt|}|r||d||||ddfS|d||||ddfSd} } |dkr6||jkr6|dd} |dd}|}||krN|} ||}|| | |fS)NrrCrr0:)_split_extended_pathfindlen drive_letterslstrip) r.r?r+firstsecondprefixZthirdindexZindex2r<r=r!r!r"r5s6      "    z_WindowsFlavour.splitrootcCs|Sr*lowerr.sr!r!r"rDsz_WindowsFlavour.casefoldcCsdd|DS)NcSsg|] }|qSr!r])rMpr!r!r" sz2_WindowsFlavour.casefold_parts..r!r.r;r!r!r"casefold_partssz_WindowsFlavour.casefold_partscCstt|tjjSr*)recompilefnmatch translate IGNORECASE fullmatchr.patternr!r!r"compile_patternsz_WindowsFlavour.compile_patternFcCst|}|stSd}tdk r|r2|t|Sg}z|t|}WnBtk r|}tj|\}}||||kr|YSYq6Xtjj |ft |Sq6dSr*) strosgetcwdr_ext_to_normalFileNotFoundErrorpathr6r7r,r3)r.rsstrictr`Z previous_sZ tail_partstailr!r!r"resolves$ z_WindowsFlavour.resolvecCsXd}||rP|dd}|dd}|drP||dd7}d|dd}||fS)Nr0zUNC\rQrJ) startswith)r.r`Z ext_prefixr[r!r!r"rTs    z$_WindowsFlavour._split_extended_pathcCs||dSrB)rTr_r!r!r"rqsz_WindowsFlavour._ext_to_normalcCs6|sdS|ddrdS|ddd|jkS)NFrz\\rRr1)rx partitionupperreserved_namesrcr!r!r" is_reserveds z_WindowsFlavour.is_reservedcCsd|j}t|dkrJ|ddkrJ|ddd}d|t|dfSdt|dSdS)NrrCrSrKz file:///%s/%szutf-8zfile:)driverVas_posixrXurlquote_from_bytesencode)r.rsr}restr!r!r"make_uris z_WindowsFlavour.make_uricCsdtjkrtjd}nJdtjkrXztjd}Wntk rFd}YnX|tjd}ntd|rtjd|kr||f\}}}|dtjdkrtd|||d<|s|r||||d d}n ||}|S) NZ USERPROFILEZHOMEPATHZ HOMEDRIVEr0zCan't determine home directoryZUSERNAMErR%Can't determine home directory for %rrC)roenvironKeyError RuntimeErrorrAr,)r.usernameuserhomer<r=r;r!r!r" gethomedirs*     z_WindowsFlavour.gethomedirN)F)rFrGrHr+r2has_drvntpathpathmodroname is_supportedsetrWZext_namespace_prefixranger{r5rDrdrmrvrTrqr|rrr!r!r!r"rIxs.   '    rIc@sleZdZdZdZdZeZej dkZ efddZ ddZ d d Z d d Zdd dZddZddZddZdS) _PosixFlavourrKr0FrcCsV|rH|d|krH||}t|t|dkr._resolver0)r+ _accessor is_absoluterorprn)r.rsrtbaser!rr"rv=s )z_PosixFlavour.resolvecCsdSNFr!rcr!r!r"r|msz_PosixFlavour.is_reservedcCst|}dt|S)Nzfile://)bytesr)r.rsZbpathr!r!r"rpsz_PosixFlavour.make_uricCs||s@z tjdWStk r<ddl}|tjYSXn8ddl}z||jWStk rvtd|YnXdS)NHOMErr) rorrpwdgetpwuidgetuidpw_dirgetpwnamr)r.rrr!r!r"rvs z_PosixFlavour.gethomedirN)F)rFrGrHr+r2r posixpathrrorrr5rDrdrmrvr|rrr!r!r!r"rs   0rc@s eZdZdS) _AccessorN)rFrGrHr!r!r!r"rsrc@seZdZejZejZejZejZejZej Z e edr>ej Z nddZ ej Z ej Z e edrdejZn eddZejZejZejZererejZqddZn ed dZejZd d Zd S) _NormalAccessorlchmodcCs tddS)Nz%lchmod() not available on this systemNotImplementedError)r.Zpathobjmoder!r!r"rsz_NormalAccessor.lchmodlinkcCs tddS)Nz&os.link() not available on this systemrr.rr!r!r"link_tosz_NormalAccessor.link_tocCs tddS)Nz&symlink() not available on this systemrabtarget_is_directoryr!r!r"symlinksz_NormalAccessor.symlinkcCs t||Sr*)rorrr!r!r"rscCs t|Sr*)rorr.rsr!r!r"rsz_NormalAccessor.readlinkN)rFrGrHrostatlstatopenlistdirscandirchmodhasattrrmkdirunlinkrr staticmethodrmdirrenamer4rsupports_symlinksrutimerr!r!r!r"rs4     rcCsR|d}|dd}|dkr"t}n$d|kr4tdnt|rBt}nt}||||S)NrrC**z:Invalid pattern: '**' can only be an entire path component)_RecursiveWildcardSelector ValueErrorr(_WildcardSelector_PreciseSelector) pattern_partsflavourr' child_partsclsr!r!r"_make_selectors  r lru_cachec@seZdZddZddZdS) _SelectorcCs0||_|rt|||_d|_nt|_d|_dS)NTF)rr successordironly_TerminatingSelector)r.rrr!r!r"r/s  z_Selector.__init__cCs<t|}|j}|j}|jj}||s,tgS|||||Sr*)typeis_direxistsrriter _select_from)r. parent_pathZpath_clsrrrr!r!r" select_fromsz_Selector.select_fromN)rFrGrHr/rr!r!r!r"rs rc@seZdZddZdS)rccs |VdSr*r!)r.rrrrr!r!r"rsz!_TerminatingSelector._select_fromN)rFrGrHrr!r!r!r"rsrc@seZdZddZddZdS)rcCs||_t|||dSr*)rrr/)r.rrrr!r!r"r/sz_PreciseSelector.__init__ccs\z@||j}|jr|n||r>|j||||D] }|Vq2Wntk rVYdSXdSr*)_make_child_relpathrrrrPermissionError)r.rrrrrsrar!r!r"rs  z_PreciseSelector._select_fromNrFrGrHr/rr!r!r!r"rsrc@seZdZddZddZdS)rcCs|||_t|||dSr*)rmmatchrr/r.r'rrr!r!r"r/s z_WildcardSelector.__init__c csz||}t|}W5QRX|D]}|jrrz|s:Wq"Wn4tk rp}zt|sXWYq"W5d}~XYnX|j} || r"|| } |j | |||D] } | Vqq"Wnt k rYdSXdSr*) listrrrr#rrrrrr) r.rrrr scandir_itentriesentryrrrsrar!r!r"rs&   z_WildcardSelector._select_fromNrr!r!r!r"rsrc@s$eZdZddZddZddZdS)rcCst|||dSr*)rr/rr!r!r"r//sz#_RecursiveWildcardSelector.__init__c cs|Vz||}t|}W5QRX|D]t}d}z |}Wn,tk rh}zt|sXW5d}~XYnX|r(|s(||j} || ||D] } | Vqq(Wntk rYdSXdSr) rrrr# is_symlinkrr_iterate_directoriesr) r.rrrrrrZ entry_is_dirrrsrar!r!r"r2s"    z/_RecursiveWildcardSelector._iterate_directoriesc cs~zbt}zL|jj}||||D]0}|||||D]}||kr2|V||q2q W5|XWntk rxYdSXdSr*)rclearrrraddr) r.rrrrZyieldedZsuccessor_selectZstarting_pointrar!r!r"rEsz'_RecursiveWildcardSelector._select_fromN)rFrGrHr/rrr!r!r!r"r-src@s0eZdZdZddZddZddZdd Zd S) _PathParents)_pathcls_drv_root_partscCs&t||_|j|_|j|_|j|_dSr*)rrrrrrr!r!r"r/^s z_PathParents.__init__cCs(|js |jrt|jdSt|jSdSrB)rrrVrr-r!r!r"__len__es z_PathParents.__len__cCs@|dks|t|krt||j|j|j|jd| dS)NrrC)rV IndexErrorr_from_parsed_partsrrr)r.idxr!r!r" __getitem__ks z_PathParents.__getitem__cCsd|jjS)Nz <{}.parents>)formatrrFr-r!r!r"__repr__qsz_PathParents.__repr__N)rFrGrH __slots__r/rrrr!r!r!r"rYs rc@seZdZdZddZddZeddZedUd d ZedVd d Z ed dZ ddZ ddZ ddZ ddZddZddZddZddZedd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zeed-d.d/Zeed0d1d/Zed2d3Zed4d5Zed6d7Z ed8d9Z!ed:d;Z"dd?Z$d@dAZ%edBdCZ&dDdEZ'dFdGZ(dHdIZ)edJdKZ*edLdMZ+dNdOZ,dPdQZ-dRdSZ.dTS)Wr)rrr_str_hash_pparts_cached_cpartscGs$|tkrtjdkrtnt}||S)Nr)rrorrr _from_parts)rargsr!r!r"__new__szPurePath.__new__cCs|jt|jfSr*) __class__tuplerr-r!r!r" __reduce__szPurePath.__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) isinstancerrrofspathrnr7 TypeErrorr_flavourrA)rrr;rr!r!r" _parse_argss    zPurePath._parse_argsTcCs<t|}||\}}}||_||_||_|r8||Sr*)objectrrrrr_init)rrinitr.r<r=r;r!r!r"rs zPurePath._from_partscCs,t|}||_||_||_|r(||Sr*)rrrrrr)rr<r=r;rr.r!r!r"rs zPurePath._from_parsed_partscCs4|s|r$|||j|ddS|j|SdSrB)rr,)rr<r=r;r!r!r"_format_parsed_partsszPurePath._format_parsed_partscCsdSr*r!r-r!r!r"rszPurePath._initcCs@||\}}}|j|j|j|j|||\}}}||||Sr*)rrrErrrr)r.rr<r=r;r!r!r" _make_childs zPurePath._make_childcCsBz|jWStk r<||j|j|jp.d|_|jYSXdS)Nr1)rAttributeErrorr rrrr-r!r!r"__str__s zPurePath.__str__cCst|Sr*)rnr-r!r!r" __fspath__szPurePath.__fspath__cCs|j}t||jdS)NrK)rrnr4r+r.fr!r!r"r~szPurePath.as_posixcCs t|Sr*)rofsencoder-r!r!r" __bytes__szPurePath.__bytes__cCsd|jj|S)Nz{}({!r}))rrrFr~r-r!r!r"rszPurePath.__repr__cCs|std|j|S)Nz.relative path can't be expressed as a file URI)rrrrr-r!r!r"as_uriszPurePath.as_uricCs8z|jWStk r2|j|j|_|jYSXdSr*)rr rrdrr-r!r!r"_cpartss zPurePath._cpartscCs&t|tstS|j|jko$|j|jkSr*)rrNotImplementedrrr.otherr!r!r"__eq__s zPurePath.__eq__cCs8z|jWStk r2tt|j|_|jYSXdSr*)rr hashrrr-r!r!r"__hash__s zPurePath.__hash__cCs&t|tr|j|jk rtS|j|jkSr*rrrrrrr!r!r"__lt__szPurePath.__lt__cCs&t|tr|j|jk rtS|j|jkSr*rrr!r!r"__le__ szPurePath.__le__cCs&t|tr|j|jk rtS|j|jkSr*rrr!r!r"__gt__szPurePath.__gt__cCs&t|tr|j|jk rtS|j|jkSr*rrr!r!r"__ge__szPurePath.__ge__rz.The drive prefix (letter or UNC path), if any.)docrzThe root of the path, if any.cCs|j|j}|Sr*)rr)r.anchorr!r!r"r s zPurePath.anchorcCs.|j}t||js|jrdndkr&dS|dS)NrCrr0rR)rrVrrrcr!r!r"r$sz PurePath.namecCsD|j}|d}d|kr,t|dkr.rC)rrrXr6r.rr!r!r"suffixes:s   zPurePath.suffixescCsD|j}|d}d|kr,t|dkrZd?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)r_closedcOsL|tkrtjdkrtnt}|j|dd}|jjs@td|j f| |S)NrFrz$cannot instantiate %r on your system) rrorrrrrrrrFr)rrkwargsr.r!r!r"rsz Path.__new__NcCs"d|_|dk r|j|_nt|_dSr)r;r_normal_accessor)r.templater!r!r"rs z Path._initcCs|j|g}||j|j|Sr*)rrrr)r.r?r;r!r!r"r#s zPath._make_child_relpathcCs|jr||Sr*)r; _raise_closedr-r!r!r" __enter__)szPath.__enter__cCs d|_dS)NT)r;)r.tvtbr!r!r"__exit__.sz Path.__exit__cCs tddS)NzI/O operation on closed path)rr-r!r!r"r@1szPath._raise_closedcCs|j|||Sr*)rr)r.rflagsrr!r!r"_opener4sz Path._openercCs|jr||j|||Sr*)r;r@rr)r.rGrr!r!r" _raw_open8szPath._raw_opencCs |tSr*)rorprr!r!r"cwdCszPath.cwdcCs||jdSr*)rrrKr!r!r"homeJsz Path.homecCsB|}z |}Wntk r2t|}YnXtj||Sr*)rr rorssamestat)r.Z other_pathstZother_str!r!r"samefileQs  z Path.samefileccsH|jr||j|D](}|dkr(q||V|jr|qdS)N>r1r)r;r@rrrr%r!r!r"iterdir\s z Path.iterdirccs`|std||j|f\}}}|s.|r6tdtt||j}||D] }|VqPdS)NzUnacceptable pattern: {!r}%Non-relative patterns are unsupported)rrrrArrrrr.rlr<r=rZselectorrar!r!r"globjsz Path.globccsR|j|f\}}}|s|r$tdtdt||j}||D] }|VqBdS)NrR)r)rrArrrrrSr!r!r"rglobws z Path.rglobcCsD|jr||r|S|jtg|jdd}|j|d|S)NFr<r?)r;r@rrrorprr)r.objr!r!r"absolutes z Path.absoluteFcCsh|jr||jj||d}|dkr:|t|}|jj|}|j |fdd}|j |d|S)N)rtFr<rV) r;r@rrvrrnrXrnormpathrr)r.rtr`ZnormedrWr!r!r"rvs  z Path.resolvecCs |j|Sr*)rrr-r!r!r"rsz Path.statcCsddl}||jjSNr)rrrst_uidZpw_name)r.rr!r!r"ownersz Path.ownercCsddl}||jjSrZ)grpZgetgrgidrst_gidZgr_name)r.r]r!r!r"groupsz Path.grouprrRc Cs(|jr|tj|||||||jdS)N)Zopener)r;r@iorrH)r.r bufferingencodingerrorsnewliner!r!r"rs z Path.openc Cs,|jdd}|W5QRSQRXdS)Nrbrrreadrr!r!r" read_bytesszPath.read_bytesc Cs0|jd||d}|W5QRSQRXdS)Nr`rrcrdrh)r.rcrdrr!r!r" read_textszPath.read_textc Cs6t|}|jdd}||W5QRSQRXdS)Nwbrg) memoryviewrwrite)r.dataZviewrr!r!r" write_bytesszPath.write_bytesc CsLt|tstd|jj|jd||d}||W5QRSQRXdS)Nzdata must be str, not %swrk)rrnrrrFrro)r.rprcrdrr!r!r" write_texts  zPath.write_textTcCsr|jr||r>z|j|dWntk r8YnXdStjtjB}|sX|tjO}| ||}t |dSr*) r;r@rrrroO_CREATO_WRONLYO_EXCLrJclose)r.rexist_okrGfdr!r!r"touchs   z Path.touchcCs|jr|z|j||Wndtk rd|r>|j|kr@|jjddd|j|d|dYn"tk r|r~|sYnXdS)NT)r4rxF)r;r@rrrrr3rr)r.rr4rxr!r!r"rs z Path.mkdircCs |jr||j||dSr*)r;r@rrr.rr!r!r"rsz Path.chmodcCs |jr||j||dSr*)r;r@rrr{r!r!r"rsz Path.lchmodcCs>|jr|z|j|Wntk r8|s4YnXdSr*)r;r@rrrr)r.Z missing_okr!r!r"r%sz Path.unlinkcCs|jr||j|dSr*)r;r@rrr-r!r!r"r2sz Path.rmdircCs|jr||j|Sr*)r;r@rrr-r!r!r"r:sz Path.lstatcCs&|jr||j||||Sr*)r;r@rrrrr!r!r"rCs z Path.renamecCs&|jr||j||||Sr*)r;r@rr4rrr!r!r"r4Rs z Path.replacecCs"|jr||j|||dSr*)r;r@rr)r.rrr!r!r" symlink_toaszPath.symlink_tocCs |jr||j||dSr*)r;r@rrrr!r!r"rjs z Path.link_toc CsXz |WnFtk r>}zt|s(WYdSd}~XYntk rRYdSXdSNFT)rrr#rr.rr!r!r"rzs z Path.existsc Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)r rst_moderr#rr~r!r!r"rsz Path.is_dirc Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)r rrrr#rr~r!r!r"is_filesz Path.is_filecCsv|r|sdSt|j}z|j}Wntk rBYdSX|j}||krZdS|j}|j}||kSr})rrrr3rst_devrst_ino)r.r3Z parent_devZdevZinoZ parent_inor!r!r"is_mounts    z Path.is_mountc Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)r rrrr#rr~r!r!r"rszPath.is_symlinkc Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)r rrrr#rr~r!r!r"is_block_deviceszPath.is_block_devicec Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)rrrrr#rr~r!r!r"is_char_deviceszPath.is_char_devicec Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)rrrrr#rr~r!r!r"is_fifosz Path.is_fifoc Cs\zt|jWStk rB}zt|s,WYdSd}~XYntk rVYdSXdSr)r rrrr#rr~r!r!r" is_socketszPath.is_socketcCs`|js\|js\|jr\|jddddkr\|j|jddd}||g|jddS|S)NrrC~)rrrrrr)r.Zhomedirr!r!r" expandusers zPath.expanduser)N)rF)rI)F)r`rRNNN)NN)NN)rFT)rIFF)F)F)2rFrGrHrrrrrArEr@rHrJr7rLrMrPrQrTrUrXrvrr\r_rrjrlrqrsrzrrrrrrrr4r|rrrrrrrrrrrr!r!r!r"rsh                 c@seZdZdZdS)rr!N)rFrGrHrr!r!r!r"rsc@s(eZdZdZddZddZddZdS) rr!cCs tddS)Nz*Path.owner() is unsupported on this systemrr-r!r!r"r\(szWindowsPath.ownercCs tddS)Nz*Path.group() is unsupported on this systemrr-r!r!r"r_+szWindowsPath.groupcCs tddS)Nz-Path.is_mount() is unsupported on this systemrr-r!r!r"r.szWindowsPath.is_mountN)rFrGrHrr\r_rr!r!r!r"r!s)Arg functoolsrarrorrer8_collections_abcrrrrrrroperatorrrr r r r r rrZ urllib.parserrrrrZgetwindowsversionr__all__rr r#r(rr)rIrr:r9rrr>rrrrrrrrrrPathLikeregisterrrrrrr!r!r!r"s|  $   ?&i8  ,t