o 0ixm@s& dZdZdZdZdZdZdZdZddlZddl Z ddl Z ddl Z dd l Tgd Z d d Z zdd lmZmZmZddZWn eyJddZYnwddZddZddZddZddZe jje_ddZddZdd Z d!d"Z!zdd#l"m#Z#Wn eydZ#Ynwd$d%Z$d&d'Z%d(Z&da'da(d)d*Z)d+d,Z*d-d.Z+zdd/l"m,Z,Wn eye+Z-Ynwd0d1Z-z dd2l"m.Z.m/Z0Wneyd3d4d5d6Z1Ynwe2fd7d8Z3e2fd9d:Z4d3d4d;d6Z1e5e d<oe 6d=d>kZ7dDd?d@Z8dAdBZ9z ddCl"m:Z;WdSeyYdSw)E...\;/z.;C:\binZnulN)*)'normcaseisabsjoin splitdrivesplitsplitextbasenamedirname commonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount expanduser expandvarsnormpathabspathcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefile sameopenfilesamestat commonpath ALLOW_MISSINGcCst|trdSdS)N\/\/) isinstancebytespathr5-/opt/alt/python310/lib64/python3.10/ntpath.py _get_bothseps$s r7) LCMapStringExLOCALE_NAME_INVARIANTLCMAP_LOWERCASEcCsf t|}|s |St|tr)t}||ddd}tt t |}| |dStt t |ddS)Nsurrogateescaperr) osfspathr1r2sysgetfilesystemencodingdecodereplace_LCMapStringEx_LOCALE_NAME_INVARIANT_LCMAP_LOWERCASEencode)sencodingr5r5r6r4s    rcCsB t|}t|trtt|ddS|ddS)Nrr)r<r=r1r2fsencodefsdecoderAlowerrFr5r5r6rGs   cCsl t|}t|tr|dddrdSn |dddr"dSt|d}t|d ko5|d t|vS) N/\\\?\Trr\\?\r) r<r=r1r2rA startswithr lenr7rKr5r5r6r Xs   r c Gs@t|}t|trd}d}d}nd}d}d}zs|s"|dd|t|\}}ttj|D]>}t|\}} | rG| d|vrG|sB|sD|}| }q.|r\||kr\||krZ|}| }q.|}|rh|d|vrh||}|| }q.|r|d|vr|r|dd|kr|||WS||WSttt fyt j d |g|Rw) NrMr/:rr0:rr ) r<r=r1r2r maprJ TypeErrorAttributeError BytesWarning genericpath_check_arg_types) r4pathsr!sepscolonZ result_driveZ result_pathpZp_driveZp_pathr5r5r6r hsL       r cCs t|}t|dkrt|trd}d}d}nd}d}d}|||}|dd|dkrr|dd |krr||d}|d krH|dd|fS|||d }||d kr^|dd|fS|d krft|}|d|||dfS|d d|kr|dd|ddfS|dd|fS) NrMrLrSrrrTrrUrP)r<r=rRr1r2rAfind)r_r!r$r^ZnormpindexZindex2r5r5r6r s0    $  r cCs t|}t|}t|\}}t|}|r,||d|vr,|d8}|r,||d|vs|d|||d}}||p?|}|||fSNrP)r<r=r7r rRrstrip)r_r]diheadtailr5r5r6r s   r cCs4t|}t|trt|dddSt|dddS)NrMrL.rrr)r<r=r1r2rZ _splitextr_r5r5r6r s  r cC t|dSrdr rlr5r5r6r rcCrm)Nrrnrlr5r5r6rrorc Cs8 zt|}Wn tttfyYdSwt|jS)NF)r<lstatOSError ValueErrorrXstatS_ISLNKst_moder4str5r5r6rs rc Cs, zt|}WdSttfyYdSw)NFT)r<rprqrrrvr5r5r6r s r)_getvolumepathnamecCsr t|}t|}t|}t|\}}|r#|d|vr#| p"||vS||vr)dStr7||t||kSdS)NrTF)r<r=r7rr rxre)r4r]rootrestr5r5r6r!s  rcCsL t|}t|trd}nd}||s|Sdt|}}||kr:||t|vr:|d7}||kr:||t|vs*dtjvrEtjd}n"dtjvrL|Sztjd}Wn ty^d}Ynwt |tjd}|dkr|d|}t|tr{t |}tj d}||kr|t |kr|St t ||}t|trt|}|||dS) N~~rPZ USERPROFILEZHOMEPATHZ HOMEDRIVEZUSERNAME)r<r=r1r2rQrRr7environKeyErrorr rIgetrrrH)r4tildergnuserhomedriveZ target_userZ current_userr5r5r6r<sB              rz.'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)cs t|}t|tr6d|vrd|vr|Sts%ddl}|t|j j at}ddddt tddn%d|vr@d|vr@|St sNddl}|t|j j a t }dd d dtj fd d }|||S) N$%r{}environb$%{}cs|j}|dur |dS||}|dkr)|kr|S|s"|dS|dd}n|kr/|S|rC|s=|dS|dd}zdurTttjt|WS|WStye|dYSw)NrrPrU) lastindexendswithrQr<rHr~rIr)mrnameZbraceZdollarr~ZpercentZrbracer5r6repls.       zexpandvars..repl)r<r=r1r2_varsubbrecompile _varpatternrEASCIIsubgetattr_varsubr~)r4rrrr5rr6r}s6   rc CsP t|}t|trd}d}d}d}d}n d}d}d}d }d }||r'|S|||}t|\}}||rA||7}||}||}d }|t |kr||rX|||kr\||=n6|||kr|d kr|||d |kr|||d |d =|d 8}n|d kr| |r||=n |d 7}n|d 7}|t |ksN|s|s| ||| |S) NrMrLrj..)s\\.\rNrrrr)z\\.\rOrrP) r<r=r1r2rQrAr lstripr rRrappendr ) r4r!r$rr Zspecial_prefixesprefixcompsrgr5r5r6rsJ              rcCsB t|}t|st|trt}nt}t||}t|SN) r<r=r r1r2getcwdbgetcwdr r)r4cwdr5r5r6_abspath_fallbacks    r)_getfullpathnamec Cs0 ztt|WSttfyt|YSwr)rrrqrrrr3r5r5r6rs  r)_getfinalpathnamereadlinkF)strictcCst|Sr)r)r4rr5r5r6r'sr'c Csd}t}t||vrY|t|z|}t|}t|s/t|s&|}W|Sttt||}Wn"|yI}z |j |vrDWYd}~|Sd}~wt yRY|Swt||vs |S)N) rPr`ra 2CWi&i(i)) setradd _nt_readlinkr rrr rwinerrorrr)r4 ignored_errorallowed_winerrorseenZold_pathexr5r5r6_readlink_deeps4      rc Csd}d}|rszt|}|rt||WS|WS|yp}zO|j|vr#zt||d}||kr>|r5t||n|WWYd}~SWn |yHYnwt|\}}|r]|s]||WYd}~S|rdt||n|}WYd}~nd}~ww|s|S)N)rPr`rarrrr5Arr{iir}r)rr rrr )r4rrrirnew_pathrr5r5r6_getfinalpathname_nonstrict@s6    rc Cst|}t|tr!d}d}d}t}t|tttkr dSnd}d}d}t}t|ttkr5dS| |}|t urCt }d }n|rHd }nt }|sUt |sUt||}zt|}d }Wn|yx} z| j}t||d }WYd} ~ nd} ~ ww|s| |r| |r||t|d} n|t|d} zt| |kr| }W|SW|St y} z| j|kr| }WYd} ~ |SWYd} ~ |Sd} ~ ww|S) NrNs\\?\UNC\s\\s\\.\NULrOz\\?\UNC\z\\z\\.\NULTr5rr)rr1r2r<rrrHr&rrQr.FileNotFoundErrorrqr r rrrrR) r4rrZ unc_prefixZnew_unc_prefixrZ had_prefixrZinitial_winerrorrZspathr5r5r6r'rsj        getwindowsversionrar`c CsZ t|}t|trd}d}d}nd}d}d}|dur|}|s$tdt|}zott|}tt|}t|\}}t|\} } t|t| krRtd| |fd d | |D} d d | |D} d } t | | D]\}}t|t|kr{n| d 7} qm|gt | | | | d}|s|WSt |WSt ttttfytd||w)NrMrjrrrrzno path specifiedz&path is on mount %r, start on mount %rcSg|]}|r|qSr5r5.0xr5r5r6 zrelpath..cSrr5r5rr5r5r6rrrrPr))r<r=r1r2rrrrr rr ziprRr rWrXrYDeprecationWarningrZr[)r4startr!rr Z start_absZpath_absZ start_driveZ start_restZ path_driveZ path_rest start_list path_listrgZe1Ze2rel_listr5r5r6r)sL         r)c s |stdtttj|}t|dtrdddndddzfd d |D}fd d |D}ztfd d |D\}Wn tyQtddwttdd |Ddkrctdt |d \}}| }fdd |D}fdd |D}t |}t |}t|D]\} } | || kr|d| }n q|dt|}|r|n|} | |WSttfytjdg|Rw)Nz%commonpath() arg is an empty sequencerrMrLrjrrrcs g|] }t|qSr5)r rArJ)rr_)r$r!r5r6rs zcommonpath..csg|] \}}|qSr5rnrrfr_r!r5r6rsc3s$|] \}}|ddkVqdSrdr5rrr5r6 s"zcommonpath..z%Can't mix absolute and relative pathscss|]\}}|VqdSrr5rr5r5r6rsrPzPaths don't have the same drivecg|] }|r|kr|qSr5r5rcrr5r6r csg|] }fdd|DqS)crr5r5rrr5r6r rz)commonpath...r5)rrFrr5r6r sr-)rrtuplerVr<r=r1r2rrRr rAr minmax enumerater rWrXrZr[) r\Z drivesplits split_pathsr rr4commons1s2rgrrr5)r$rr!r6r-sN     r-)_isdirr)rsrZ__all__r7Z_winapir8rBr9rCr:rDr ImportErrorr r r r r rk__doc__rrrrntrxrrrrrrrrrrrrrr'rqrrhasattrrr(r)r-rrr5r5r5r6s      /8   =A2    *2 < 84