o !Qd)s@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(d)Z&d*d+Z'd,d-Z(zdd.l"m)Z)Wn eye(Z*Ynwd/d0Z*z dd1l"m+Z+m,Z-Wn eye*Z.Ynwd2d3Z/d4d5Z0d6d7d8d9Z.e1e d:oe 2d;dZ4d?d@Z5z ddAl"m6Z7WdSeyYdSw)C...\;/z.;C:\binZnulN)*)&normcaseisabsjoin splitdrivesplitsplitextbasenamedirname commonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount expanduser expandvarsnormpathabspathcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefile sameopenfilesamestat commonpathcCst|trdSdS)N\/\/) isinstancebytespathr4-/opt/alt/python310/lib64/python3.10/ntpath.py _get_bothseps#s r6) LCMapStringExLOCALE_NAME_INVARIANTLCMAP_LOWERCASEcCsf t|}|s |St|tr)t}||ddd}tt t |}| |dStt t |ddS)Nsurrogateescaperr) osfspathr0r1sysgetfilesystemencodingdecodereplace_LCMapStringEx_LOCALE_NAME_INVARIANT_LCMAP_LOWERCASEencode)sencodingr4r4r5r3s    rcCsB t|}t|trtt|ddS|ddS)Nrr)r;r<r0r1fsencodefsdecoder@lowerrEr4r4r5rFs   cCsl t|}t|tr|dddrdSn |dddr"dSt|d}t|d ko5|d t|vS) N/\\\?\Trr\\?\r) r;r<r0r1r@ startswithr lenr6rJr4r4r5r Ws   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) NrLr.:rr/:rr ) r;r<r0r1r maprI TypeErrorAttributeError BytesWarning genericpath_check_arg_types) r3pathsr!sepscolonZ result_driveZ result_pathpZp_driveZp_pathr4r4r5r gsL       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) NrLrKrRrrrSrrTrO)r;r<rQr0r1r@find)r^r!r$r]ZnormpindexZindex2r4r4r5r s0    $  r cCs t|}t|}t|\}}t|}|r,||d|vr,|d8}|r,||d|vs|d|||d}}||p?|}|||fSNrO)r;r<r6r rQrstrip)r^r\diheadtailr4r4r5r s   r cCs4t|}t|trt|dddSt|dddS)NrLrK.rrr)r;r<r0r1rY _splitextr^r4r4r5r s  r cC t|dSrcr rkr4r4r5r rcCrl)Nrrmrkr4r4r5rrnrc Cs8 zt|}Wn tttfyYdSwt|jS)NF)r;lstatOSError ValueErrorrWstatS_ISLNKst_moder3str4r4r5rs rc Cs, zt|}WdSttfyYdSw)NFT)r;rorprqrur4r4r5r s r)_getvolumepathnamecCsr t|}t|}t|}t|\}}|r#|d|vr#| p"||vS||vr)dStr7||t||kSdS)NrTF)r;r<r6rr rwrd)r3r\rootrestr4r4r5r 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~~rOZ USERPROFILEZHOMEPATHZ HOMEDRIVEZUSERNAME)r;r<r0r1rPrQr6environKeyErrorr rHgetrrrG)r3tilderfnuserhomedriveZ target_userZ current_userr4r4r5r;sB              rcCs2 t|}t|tr5d|vrd|vr|Sddl}t|j|jdd}d}d}d}d}d}ttd d}n#d |vr?d |vr?|Sddl}|j|jd}d }d }d }d}d }tj}|dd} d} t |} | | kr|| | d} | |kr|| dd}t |} z| | } | | |d| d7} Wnyt y| | |7} | d} Ynfw| |kr || d| d|kr| | 7} | d7} nJ|| dd}t |} z| |} Wnt y| ||7} | d} Yn#w|d| } z|durt tjt | }n|| }Wnty|| |}Ynw| |7} n| |kr || d| d|kr;| | 7} | d7} n|| d| d|kr|| dd}t |} z| |} Wnt yq| |||7} | d} Ynw|d| } z|durt tjt | }n|| }Wnty||| |}Ynw| |7} nh|dd} | d7} || | d} | r| |vr| | 7} | d7} || | d} | r| |vsz|durt tjt | }n|| }Wnty|| }Ynw| |7} | r | d8} n| | 7} | d7} | | ksi| S)N$%rz_-ascii'{}environb$%'{}rOr_)r;r<r0r1stringZ ascii_lettersZdigitsgetattrr}rQrbrqrGrHr~)r3rZvarcharsZquoteZpercentZbraceZrbraceZdollarr}resrbZpathlencvarvaluer4r4r5rxs                       Lrc 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) NrLrKri..)s\\.\rMrrrr)z\\.\rNrrO) r;r<r0r1rPr@r lstripr rQendswithappendr ) r3r!r$rr Zspecial_prefixesprefixcompsrfr4r4r5rsJ              rcCsB t|}t|st|trt}nt}t||}t|SN) r;r<r r0r1getcwdbgetcwdr r)r3cwdr4r4r5_abspath_fallbacks    r)_getfullpathnamec Cs0 ztt|WSttfyt|YSwr)rrrprqrr2r4r4r5r3s  r)_getfinalpathnamereadlinkc Csd}t}t||vrY|t|z|}t|}t|s/t|s&|}W|Sttt||}Wn"t yI}z |j |vrDWYd}~|Sd}~wt yRY|Swt||vs |S)N) rOr_r` 2CWi&i(i)) setradd _nt_readlinkr rrr rrpwinerrorrq)r3allowed_winerrorseenZold_pathexr4r4r5_readlink_deep@s4      rc Csd}d}|rqzt|}|rt||WS|WStyn}zM|j|vr#zt|}||kr<|r3t||n|WWYd}~SWn tyFYnwt|\}}|r[|s[||WYd}~S|rbt||n|}WYd}~nd}~ww|s|S)N)rOr_r`rrrr5Arr{iir|)rr rprrr )r3rrhrnew_pathnamer4r4r5_getfinalpathname_nonstrictjs2    rF)strictc Csvt|}t|tr!d}d}d}t}t|tttkr dSnd}d}d}t}t|ttkr5dS| |}|sEt |sEt ||}zt |}d }Wnt yi}z|rX|j}t|}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) NrMs\\?\UNC\s\\s\\.\NULrNz\\?\UNC\z\\z\\.\NULr)rr0r1r;rrrGr&rrPr r rrprrrQ) r3rrZ unc_prefixZnew_unc_prefixrZ had_prefixZinitial_winerrorrZspathr4r4r5r's^        r'getwindowsversionr`r_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)NrLrirrrrzno path specifiedz&path is on mount %r, start on mount %rcSg|]}|r|qSr4r4.0xr4r4r5 zrelpath..cSrr4r4rr4r4r5rrrrOr))r;r<r0r1rqrrr rr ziprQr rVrWrXDeprecationWarningrYrZ)r3startr!rr Z start_absZpath_absZ start_driveZ start_restZ path_driveZ path_rest start_list path_listrfZe1Ze2rel_listr4r4r5r)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 sequencerrLrKrirrrcs g|] }t|qSr4)r r@rI)rr^)r$r!r4r5rs zcommonpath..csg|] \}}|qSr4rmrrer^r!r4r5rsc3s$|] \}}|ddkVqdSrcr4rrr4r5 s"zcommonpath..z%Can't mix absolute and relative pathscss|]\}}|VqdSrr4rr4r4r5r&srOzPaths don't have the same drivecg|] }|r|kr|qSr4r4rrrr4r5r+csg|] }fdd|DqS)crr4r4rrr4r5r-rz)commonpath...r4)rrErr4r5r-sr-)rqtuplerUr;r<r0r1rrQr r@r minmax enumerater rVrWrYrZ) r[Z drivesplits split_pathsr rr3commons1s2rfrrr4)r$rr!r5r- sN     r-)_isdirr)8rr r%r!r"r$r#r&r;r=rrrY__all__r6Z_winapir7rAr8rBr9rCr ImportErrorr r r r r rj__doc__rrrrntrwrrrrrrrrrrr'rrhasattrrr(r)r-rrr4r4r4r5s     /8   =q2  *1 4 84