a DOgVl@sdZdZdZdZdZdZdZdZddlZddl Z ddl Z ddl Z dd l Tgd Z d d Z d dZddZddZddZddZddZe jje_ddZddZddZdd Zzdd!lmZWneydZYn0d"d#Zd$d%Zd&d'Zd(d)Z d*d+Z!zdd,lm"Z"Wney*e!Z#Yn 0d-d.Z#zdd/lm$Z$m%Z&Wney`e#Z'Yn0d0d1Z(d2d3Z)d4d5Z'e*e d6oe +d7d8kZ,d>d9d:Z-d;d<Z.zdd=lm/Z0WneyYn0dS)?...\;/z.;C:\binnulN)*)&normcaseisabsjoin splitdrivesplitsplitextbasenamedirname commonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount expanduser expandvarsnormpathabspathcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefile sameopenfilesamestat commonpathcCst|trdSdSdS)N\/\/) isinstancebytespathr5/usr/lib64/python3.9/ntpath.py _get_bothseps"s r7cCs8t|}t|tr$|ddS|ddSdS)N/\rr)osfspathr1r2replacelowersr5r5r6r ,s  r cCsjt|}t|tr,|dddrBdSn|dddrBdSt|d}t|d koh|d t|vS) Nr8r9\\?\Trr\\?\r) r:r;r1r2r< startswithr lenr7r>r5r5r6r =s   r c GsTt|}t|tr"d}d}d}n d}d}d}z|sD|dd|t|\}}ttj|D]~}t|\}} | r| d|vr|s|s|}| }q\n*|r||kr||kr|}| }q\|}|r|d|vr||}|| }q\|r|d|vr|r|dd|kr|||WS||WSttt fyNt j d |g|RYn0dS) Nr9r/:rr0:rr ) r:r;r1r2r mapr= TypeErrorAttributeError BytesWarning genericpath_check_arg_types) r4pathsr"sepscolon result_drive result_pathpp_drivep_pathr5r5r6r MsL       r cCst|}t|dkrt|tr0d}d}d}n d}d}d}|||}|dd|dkr|dd |kr||d}|d kr|dd|fS|||d }||d kr|dd|fS|d krt|}|d|||dfS|d d|kr|dd|ddfS|dd|fS) Nr9r8rErrrFrrGrB)r:r;rDr1r2r<find)rSr"r%rPnormpindexindex2r5r5r6r |s.   $  r cCsxt|}t|}t|\}}t|}|rD||d|vrD|d8}q&|d|||d}}||pj|}|||fSNrB)r:r;r7r rDrstrip)rSrOdiheadtailr5r5r6r s   r cCs8t|}t|tr$t|dddSt|dddSdS)Nr9r8.rrr)r:r;r1r2rL _splitextrSr5r5r6rs  rcCs t|dSr\r rdr5r5r6rsrcCs t|dS)Nrrerdr5r5r6rsrc Cs6zt|}Wntttfy(YdS0t|jS)NF)r:lstatOSError ValueErrorrJstatS_ISLNKst_moder4str5r5r6rs rc Cs,zt|}Wnttfy&YdS0dS)NFT)r:rfrgrhrlr5r5r6rs r)_getvolumepathnamecCstt|}t|}t|}t|\}}|rD|d|vrD| pB||vS||vrPdStrl||t||kSdSdS)NrTF)r:r;r7rr rnr])r4rOrootrestr5r5r6rs  rcCst|}t|trd}nd}||s,|Sdt|}}||kr\||t|vr\|d7}q:dtjvrrtjd}nDdtjvr|Sztjd}Wntyd}Yn0t |tjd}t|trt |}|dkrt t ||d|}|||dS)N~~rB USERPROFILEHOMEPATH HOMEDRIVE) r:r;r1r2rCrDr7environKeyErrorr fsencoder)r4tilder_nuserhomedriver5r5r6r!s.           rcCs&t|}t|trhd|vr(d|vr(|Sddl}t|j|jdd}d}d}d}d}d}ttd d}nFd |vr|d |vr||Sddl}|j|jd}d }d }d }d}d }tj}|dd} d} t |} | | kr"|| | d} | |krV|| dd}t |} z&| | } | | |d| d7} Wn(t yP| | |7} | d} Yn0n| |krD|| d| d|kr| | 7} | d7} n|| dd}t |} z| |} Wn(t y| ||7} | d} Ynf0|d| } z.|dur t tjt | }n|| }Wn ty6|| |}Yn0| |7} n| |kr|| d| d|kr|| | 7} | d7} q|| d| d|krT|| dd}t |} z| |} Wn,t y| |||7} | d} Ynj0|d| } z.|durt tjt | }n|| }Wn$tyH||| |}Yn0| |7} n|dd} | d7} || | d} | r| |vr| | 7} | d7} || | d} qxz.|durt tjt | }n|| }Wnty|| }Yn0| |7} | r| d8} n| | 7} | d7} q| S)N$%rz_-ascii'{}environb$%'{}rBrV)r:r;r1r2string ascii_lettersdigitsgetattrrwrDrZrhryfsdecoderx)r4rvarcharsquotepercentbracerbracedollarrwresrZpathlencvarvaluer5r5r6rQs                         rc CsPt|}t|tr*d}d}d}d}d}nd}d}d}d }d }||rL|S|||}t|\}}||r||7}||}||}d }|t |kr,||r|||kr||=q|||kr"|d kr||d |kr||d |d =|d 8}n&|d kr| |r||=n|d 7}q|d 7}q|sB|sB| ||| |S) Nr9r8rb..)s\\.\r@rrrr)z\\.\rArrB) r:r;r1r2rCr<r lstripr rDendswithappendr ) r4r"r%r r!special_prefixesprefixcompsr_r5r5r6rsF             rcCs@t|}t|s8t|tr&t}nt}t||}t|SN) r:r;r r1r2getcwdbgetcwdr r)r4cwdr5r5r6_abspath_fallbacks    r)_getfullpathnamec Cs2ztt|WSttfy,t|YS0dSr)rrrgrhrr3r5r5r6r sr)_getfinalpathnamereadlinkc Csd}t}t||vr|t|z:|}t|}t|s\t|sJ|}Wqttt||}Wq t y}z$|j |vrWYd}~qWYd}~q d}~0t yYqYq 0q |S)N) rBrVrW 2CWi&i(i)) setr add _nt_readlinkr rrr rrgwinerrorrh)r4allowed_winerrorseenZold_pathexr5r5r6_readlink_deeps&     rc Csd}d}|rzt|}|r$t||n|WSty}z|j|vrDz4t|}||krv|rdt||n|WWYd}~SWntyYn0t|\}}|r|s||WYd}~S|rt||n|}WYd}~qd}~00q|S)N) rBrVrWrrrrrr{iirv)rr rgrrr )r4rrarnew_pathnamer5r5r6_getfinalpathname_nonstrictCs( $  *rc Csdt|}t|trBd}d}d}t}t|tttkrjdSn(d}d}d}t}t|ttkrjdS| |}|st |st ||}zt |}d }Wn2t y}z|j}t|}WYd}~n d}~00|s`| |r`| |r||t|d}n|t|d}zt ||kr&|}Wn6t y^}z|j|krJ|}WYd}~n d}~00|S) Nr@s\\?\UNC\s\\s\\.\NULrAz\\?\UNC\z\\z\\.\NULr)rr1r2r:rr ryr'rrCr r rrgrrrD) r4rZ unc_prefixZnew_unc_prefixrZ had_prefixZinitial_winerrorrZspathr5r5r6r(qsD      r(getwindowsversionrWrVc Csdt|}t|tr"d}d}d}n d}d}d}|dur:|}|sFtdt|}ztt|}tt|}t|\}}t|\} } t|t| krtd| |fd d | |D} d d | |D} d } t | | D]$\}}t|t|krq| d 7} q|gt | | | | d}|s(|WSt |WSt ttttfy^td||Yn0dS)Nr9rbrrrrzno path specifiedz&path is on mount %r, start on mount %rcSsg|] }|r|qSr5r5.0xr5r5r6 zrelpath..cSsg|] }|r|qSr5r5rr5r5r6rrrrBr*)r:r;r1r2rhrrr r r ziprDr rIrJrKDeprecationWarningrLrM)r4startr"r r! start_abspath_abs start_drive start_rest path_drive path_rest start_list path_listr_e1e2rel_listr5r5r6r*sH         r*c s|s tdtttj|}t|dtr8dddn dddz>fd d |D}fd d |D}ztfd d |D\}WntytddYn0ttdd |Ddkrtdt |d \}}| }fdd |D}fdd |D}t |}t |}t|D]*\} } | || kr(|d| }qdq(|dt|}|rr|n|} | |WSttfytjdg|RYn0dS)Nz%commonpath() arg is an empty sequencerr9r8rbrrrcs g|]}t|qSr5)r r<r=)rrS)r%r"r5r6rrzcommonpath..csg|]\}}|qSr5rerr^rSr"r5r6rrc3s"|]\}}|ddkVqdSr\r5rrr5r6 rzcommonpath..z%Can't mix absolute and relative pathscss|]\}}|VqdSrr5rr5r5r6rrrBzPaths don't have the same drivecsg|]}|r|kr|qSr5r5rrr r5r6rrcsg|]}fdd|DqS)csg|]}|r|kr|qSr5r5rrr5r6rrz)commonpath...r5)rr?rr5r6rrr.)rhtuplerHr:r;r1r2rrDr r<r minmax enumerater rIrJrLrM) rN drivesplits split_pathsr r}r4commons1s2r_rrr5)r%r r"r6r.sF    r.)_isdir)N)1r r!r&r"r#r%r$r'r:sysrirL__all__r7r r r r r rrc__doc__rrrrntrn ImportErrorrrrrrrrrrrr(rrhasattrrr)r*r.rrr5r5r5r6 sn /8    0q2  *.2  84