o ht@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-Wneyd2d3d4d5Z.Ynwe/fd6d7Z0e/fd8d9Z1d2d3d:d5Z.e2e d;oe 3d<d=kZ4dCd>d?Z5d@dAZ6z ddBl"m7Z8WdSey YdSw)D...\;/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              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$%'{}rPr`)r<r=r1r2stringZ ascii_lettersZdigitsgetattrr~rRrcrrrHrIr)r4rZvarcharsZquoteZpercentZbraceZrbraceZdollarr~resrcZpathlencvarvaluer5r5r6rys                       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) NrMrLrj..)s\\.\rNrrrr)z\\.\rOrrP) r<r=r1r2rQrAr lstripr rRendswithappendr ) 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)rrrqrrrr3r5r5r6r4s  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_deepBs4      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_pathnamer5r5r6_getfinalpathname_nonstrictls6    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'sj        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!r5r6r&s zcommonpath..csg|] \}}|qSr5rnrrfr_r!r5r6r'sc3s$|] \}}|ddkVqdSrdr5rrr5r6 *s"zcommonpath..z%Can't mix absolute and relative pathscss|]\}}|VqdSrr5rr5r5r6r1srPzPaths don't have the same drivecg|] }|r|kr|qSr5r5rrrr5r6r6csg|] }fdd|DqS)crr5r5rrr5r6r8rz)commonpath...r5)rrFrr5r6r8sr-)rrtuplerVr<r=r1r2rrRr rAr minmax enumerater rWrXrZr[) r\Z drivesplits split_pathsr rr4commons1s2rgrrr5)r$rr!r6r-sN     r-)_isdirr)9rr r%r!r"r$r#r&r<r>rsrZ__all__r7Z_winapir8rBr9rCr:rDr ImportErrorr r r r r rk__doc__rrrrntrxrrrrrrrrrrr'rqrrhasattrrr(r)r-rrr5r5r5r6s      /8   =q2    *2 < 84