
    =Ogv                     X   	 d Z dZd ZdZdZdZdZdZddlZddl	Z	ddl
Z
ddlZdd	lT g d
Zd Z	 ddlmZmZmZ d Zn# e$ r d ZY nw xY wd Zd Zd Zd Zd Zej        j        e_        d Zd Zd Z d Z!	 ddl"m#Z# n# e$ r dZ#Y nw xY wd Z$d Z%d Z&	 ddl"m'Z' d Z(n# e$ r d Z(Y nw xY wd Z)	 dd l"m*Z* d! Z+n# e$ r e)Z+Y nw xY w	 dd"l"m,Z,m-Z. d# Z/d$ Z0d%d&d'Z1n# e$ r e+Z1Y nw xY w e2e	d(          o e	j3                    d)         d*k    Z4d.d+Z5d, Z6	 dd-l"m7Z8 dS # e$ r Y dS w xY w)/...\;/z.;C:\binnul    N)*)&normcaseisabsjoin
splitdrivesplitsplitextbasenamedirnamecommonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount
expanduser
expandvarsnormpathabspathcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefilesameopenfilesamestat
commonpathc                 4    t          | t                    rdS dS )N   \/\/)
isinstancebytespaths    /usr/lib64/python3.11/ntpath.py_get_bothsepsr8   #   s    $ vu    )LCMapStringExLOCALE_NAME_INVARIANTLCMAP_LOWERCASEc                    	 t          j        |           } | s| S t          | t                    rnt	          j                    }|                     |d                              dd          } t          t          t          |           } |                     |d          S t          t          t          |                     dd                    S )Nsurrogateescaper   r   )osfspathr3   r4   sysgetfilesystemencodingdecodereplace_LCMapStringEx_LOCALE_NAME_INVARIANT_LCMAP_LOWERCASEencode)sencodings     r7   r
   r
   3   s    	 IaLL 	Ha 		8022H#455==c4HHA5/4 4A88H&7888!"8"2"#))C"6"68 8 8r9   c                 >   	 t          j        |           } t          | t                    rLt          j        t          j        |                               dd                                                    S |                     dd                                          S )Nr   r   )r?   r@   r3   r4   fsencodefsdecoderD   lower)rI   s    r7   r
   r
   F   s}    	 IaLLa 	J;r{1~~55c4@@FFHHIIIyyd##))+++r9   c                 
   	 t          j        |           } t          | t                    rd}d}d}nd}d}d}| d d                             ||          } |                     |          s|                     |d          rd	S d
S )N   \   /s   :\r   r   z:\      TF)r?   r@   r3   r4   rD   
startswith)rI   r#   r&   	colon_seps       r7   r   r   W   s    )
	!A!U 				"1"fc""A 	||C ALLA66 t5r9   c                    t          j        |           } t          | t                    rd}d}d}nd}d}d}	 |s| d d         |z    t	          |           \  }}t          t           j        |          D ]x}t	          |          \  }}	|	r|	d         |v r	|s|s|}|	})|r7||k    r1|                                |                                k    r|}|	}`|}|r|d         |vr||z   }||	z   }y|r"|d         |vr|r|dd          |k    r||z   |z   S ||z   S # t          t          t          f$ r t          j        d	| g|R    w xY w)
NrP   r1      :r   r2   :r   r   )r?   r@   r3   r4   r   maprN   	TypeErrorAttributeErrorBytesWarninggenericpath_check_arg_types)
r6   pathsr#   sepscolonresult_driveresult_pathpp_drivep_paths
             r7   r   r   k   s   9T??D$  	!HsNN$.t$4$4!kRY&& 	/ 	/A(mmOGV '&)t++ +, +#*L$ 'W44==??l&8&8&:&:::#*L"(K& 0{2d::)C/%.KK 	4KN$66 7)"##.%77#%33k))~|4   $VT:E::::s   CD D ,Ec                 ^   	 t          j        |           } t          |           dk    rt          | t                    r	d}d}d}d}nd}d}d}d	}|                     ||          }|d
d         |dz  k    r|d d                                         |k    rdnd}|                    ||          }|dk    r| | d d
         fS |                    ||dz             }|dk    r| | d d
         fS | d |         | |d          fS |dd         |k    r| d d         | dd          fS | d d
         | fS )N   rP   rQ   rW      \\?\UNC\r   r   rX   \\?\UNC\r      rY   rS   )r?   r@   lenr3   r4   rD   upperfind)	re   r#   r&   rb   
unc_prefixnormpstartindexindex2s	            r7   r   r      si   $ 		!A
1vv{{a 		(CFE(JJCFE'J		&#&&1:q   rr**j88AAaEJJsE**E{{!BQB%xZZUQY//F||!BQB%xWfW:qz))1:RaR5!ABB%<RaR5!8Or9   c                 6   	 t          j        |           } t          |           }t          |           \  }} t	          |           }|r!| |dz
           |vr|dz  }|r| |dz
           |v| d |         | |d          }}|                    |          p|}||z   |fS NrS   )r?   r@   r8   r   rm   rstrip)re   ra   diheadtails         r7   r   r      s    ! 		!ADa==DAqAA
 !A#d""	Q  !A#d""2A2!""$D;;t$Dt8T>r9   c                     t          j        |           } t          | t                    rt	          j        | ddd          S t	          j        | ddd          S )NrP   rQ      .r   r   r   )r?   r@   r3   r4   r^   	_splitextre   s    r7   r   r      sO    
	!A!U 8$QtT:::$Qc3777r9   c                 .    	 t          |           d         S rv   r   r   s    r7   r   r      s    388A;r9   c                 .    	 t          |           d         S )Nr   r   r   s    r7   r   r      s    788A;r9   c                     	 	 t          j        |           }n# t          t          t          f$ r Y dS w xY wt          j        |j                  S )NF)r?   lstatOSError
ValueErrorr\   statS_ISLNKst_moder6   sts     r7   r   r      sV    Xd^^Z0   uu<
###s    33c                 d    	 	 t          j        |           }n# t          t          f$ r Y dS w xY wdS )NFT)r?   r   r   r   r   s     r7   r   r     sE    MXd^^Z    uu4s    --)_getvolumepathnamec                    	 t          j        |           } t          |           }t          |           } t	          |           \  }}|r|d         |v r| p||v S |r||v rdS t
          ra|                     |          }t          |                               |          }|                                |                                k    S dS )Nr   TF)r?   r@   r8   r    r   r   rw   casefold)r6   ra   rootrestxys         r7   r   r   "  s    #9T??DD4==DD!!JD$ ,Q4+ddl+ t KKd##**400zz||qzz||++ur9   c                    	 t          j        |           } t          | t                    rd}nd}|                     |          s| S dt          |           }}||k     r9| |         t          |           vr"|dz  }||k     r| |         t          |           v"dt           j        v rt           j        d         }nVdt           j        vr| S 	 t           j        d         }n# t          $ r d}Y nw xY wt          |t           j        d                   }|dk    r| d|         }t          |t                    rt          j
        |          }t           j                            d          }||k    r2|t          |          k    r| S t          t          |          |          }t          | t                    rt          j        |          }|| |d          z   S )	N   ~~rS   USERPROFILEHOMEPATH	HOMEDRIVE USERNAME)r?   r@   r3   r4   rT   rm   r8   environKeyErrorr   rM   getr   r   rL   )r6   tildery   nuserhomedrivetarget_usercurrent_users           r7   r   r   ?  s   0 9T??D$ ??5!! c$iiqA
a%%DG=#6#666	Q a%%DG=#6#666 
"":m,2:%%	J{+EE 	 	 	EEE	rz*566Avv1Q3ik5)) 	3+k22Kz~~j11,&& x1111GH--{;;H$ );x((d122hs   	C C+*C+c                    	 t          j        |           } t          | t                    rOd| vrd| vr| S dd l}t          |j        |j        z   dz   d          }d}d}d}d}d}t          t           d	d           }n6d
| vrd| vr| S dd l}|j        |j        z   dz   }d}d}d}d}d
}t           j        }| d d         }	d}
t          |           }|
|k     r
| |
|
dz            }||k    re| |
dz   d          } t          |           }	 | 
                    |          }
|	|| d |
dz            z   z  }	n# t          $ r |	|| z   z  }	|dz
  }
Y nw xY w||k    r| |
dz   |
dz            |k    r|	|z  }	|
dz  }
n`| |
dz   d          } t          |           }	 | 
                    |          }
| d |
         }	 |7t          j        t           j        t          j        |                             }n||         }n# t          $ r ||z   |z   }Y nw xY w|	|z  }	n# t          $ r |	|| z   z  }	|dz
  }
Y nw xY w||k    r| |
dz   |
dz            |k    r|	|z  }	|
dz  }
n}| |
dz   |
dz            |k    r| |
dz   d          } t          |           }	 | 
                    |          }
| d |
         }	 |7t          j        t           j        t          j        |                             }n||         }n# t          $ r ||z   |z   |z   }Y nw xY w|	|z  }	n# t          $ r |	||z   | z   z  }	|dz
  }
Y nw xY w| d d         }|
dz  }
| |
|
dz            }|r!||v r||z  }|
dz  }
| |
|
dz            }|r||v 	 |7t          j        t           j        t          j        |                             }n||         }n# t          $ r ||z   }Y nw xY w|	|z  }	|r|
dz  }
n|	|z  }	|
dz  }
|
|k     
|	S )N   $   %r   z_-ascii   '   {   }environb$%'{}rS   ri   )r?   r@   r3   r4   stringascii_lettersdigitsgetattrr   rm   rs   r   rL   rM   r   )r6   r   varcharsquotepercentbracerbracedollarr   resrs   pathlencvarvalues                  r7   r   r   |  s)   - 9T??D$ tD 0 0K-=DgNN"j$//d??s$K'&-7$>*
rr(CE$iiG
'//uQw::	

#D$iiG$

1q4

+++ $ $ $q4x!$ '\\EAIeai'(G33q
E!GHH~d))! JJw//E
 vv,C8"?$&K
2;s;K;K0L$M$MEE$+CLE# 8 8 8 '# 785LCC " ( ( (7T>)C#aKEEE( &[[EAIeai'(F22q
eai	)*e33E!GHH~d))! JJv..E
 vv,C>"?$&K
2;s;K;K0L$M$MEE$+CLE# > > > & 4v =>5LCC " ( ( (6E>D00C#aKEEE( 2A2h
uqy) .AMM1HCQJEU519_-A  .AMM) "BJr{37G7G,H I I ' ) ) )"SLEEE)u QJE1HC
W '//X Jso   (D, ,EEH -AG/ /HHH)(H)L $AK& &K>=K>L$#L$'AN) )N;:N;)_path_normpathc                     	 t          j        |           } t          | t                    r5t          j        t          t          j        |                               pdS t          |           pdS )Nr}   r   )r?   r@   r3   r4   rL   r   rM   r5   s    r7   r   r     s_    >ydE"" 	J;~bk$.?.?@@AAITId##*s*r9   c                    	 t          j        |           } t          | t                    r	d}d}d}d}nd}d}d}d}|                     ||          } t          |           \  }} |                     |          r||z  }|                     |          } |                     |          }d	}|t          |          k     r||         r||         |k    r||= n\||         |k    rK|d	k    r ||d
z
           |k    r||d
z
  |d
z   = |d
z  }n*|d	k    r|
                    |          r||= n|d
z  }n|d
z  }|t          |          k     |s|s|                    |           ||                    |          z   S )NrP   rQ   r}      ..r   r   r   r   r   rS   )r?   r@   r3   r4   rD   r   rT   lstripr   rm   endswithappendr   )r6   r#   r&   r!   r"   prefixcompsry   s           r7   r   r     s   >ydE"" 		CFFFFCFFF||FC((!$'' ??3 	$cMF;;s##D

3#e**nn8 uQx611!HHqV##q55U1Q3Z611ac!A#gFAA!VV 4 4VaFAAQ #e**nn  	!e 	!LL   ''r9   c                     	 t          j        |           } t          |           sLt          | t                    rt          j                    }nt          j                    }t          ||           } t          |           S N)	r?   r@   r   r3   r4   getcwdbgetcwdr   r   )r6   cwds     r7   _abspath_fallbackr   "  sg     9T??D;; dE"" 	*,,CC)++CCD>>r9   )_getfullpathnamec                     	 	 t          t          |                     S # t          t          f$ r t	          |           cY S w xY wr   )r   r   r   r   r   r5   s    r7   r    r    :  sR    4	+#HTNN333$ 	+ 	+ 	+$T*****	+s     AA)_getfinalpathnamereadlinkc                    d}t                      }t          |           |vr|                    t          |                      	 | }t          |           } t	          |           s<t          |          s|} nht          t          t          |          |                     } n,# t          $ r}|j
        |v rY d }~n% d }~wt          $ r Y nw xY wt          |           |v| S )N)rS   ri   rR             2   C   W   i&  i(  i)  )setr
   add_nt_readlinkr   r   r   r   r   r   winerrorr   )r6   allowed_winerrorseenold_pathexs        r7   _readlink_deepr   G  s    LuutnnD((HHXd^^$$$#D)) T{{ C "(++ '#D):):D$A$ABBD   ;"222EEEE   ' tnnD((, s*   1B" 7*B" "
C,	B;:B;;C
Cc                    d}| d d         }| r	 t          |           } |rt          | |          n| S # t          $ r}|j        |vr 	 t	          |           }|| k    r|rt          ||          n|cY d }~S n# t          $ r Y nw xY wt          |           \  } }| r|s
| |z   cY d }~S |rt          ||          n|}Y d }~nd }~ww xY w| |S )N)rS   ri   rR   r   r   r   r   5   A   r   r   {      i  i  r   )r   r   r   r   r   r   )r6   r   r{   r   new_pathnames         r7   _getfinalpathname_nonstrictr   q  sZ   $ X BQBx 	::(..+/9tD$'''T9 : : :;&666	  .d33H4''7;ItHd333IIIIII (   D #4[[
d  ' '$;&&&&&&+/9tD$'''T':	  	:0 sJ   "3 
C
C (A70C6C 7
BC BC !C'C  CF)strictc                <   t          |           } t          | t                    rSd}d}d}t          j                    }t          |           t          t          j        t                              k    rdS n@d}d}d}t          j                    }t          |           t          t                    k    rdS | 	                    |          }|st          |           st          ||           } 	 t          |           } d	}np# t          $ r8}|rt          t          |                    d t          |           } Y d }~n3d }~wt          $ r#}|r |j        }t#          |           } Y d }~nd }~ww xY w|s| 	                    |          r| 	                    |          r|| t%          |          d          z   }	n| t%          |          d          }		 t          |	          | k    r|	} n6# t          $ r
}Y d }~n'd }~wt          $ r}|j        |k    r|	} Y d }~nd }~ww xY w| S )
Ns   \\?\rj   s   \\s   \\.\NULz\\?\rk   z\\z\\.\NULr   )r   r3   r4   r?   r   r
   rL   r(   r   rT   r   r   r   r   r   strr   r   rm   )
r6   r   r   rp   new_unc_prefixr   
had_prefixinitial_winerrorr   spaths
             r7   r)   r)     sh   ~~dE"" 	$F(J$N*,,C~~"+g*>*>!?!???$} @ F'J#N)++C~~'!2!222#|__V,,
 	#%++ 	#T??D	5$T**D  	" 	" 	"
  1c"gg&&D0D>>DDDDDD 	5 	5 	5 !{.t44DDDDDD		5  	!doof55 	! z** +&c*oo.>.>)??S[[\\*!$U++t33 D     ! ! ! ;"222 D	!
 sB   /D 
E..D>>E.E))E.G& &
H5HHHgetwindowsversionrR   ri   c                    	 t          j        |           } t          | t                    rd}d}d}nd}d}d}||}| st	          d          t          j        |          }	 t          t          |                    }t          t          |                     }t          |          \  }}t          |          \  }	}
t          |          t          |	          k    rt	          d|	d	|          d
 |	                    |          D             }d |
	                    |          D             }d}t          ||          D ],\  }}t          |          t          |          k    r n|dz  }-|gt          |          |z
  z  ||d          z   }|s|S t          | S # t          t          t          t          t           f$ r t#          j        d| |            w xY w)NrP   r}   r   r   r   r   zno path specifiedzpath is on mount z, start on mount c                     g | ]}||S  r   .0r   s     r7   
<listcomp>zrelpath.<locals>.<listcomp>  s    <<<A!<a<<<r9   c                     g | ]}||S r   r   r   s     r7   r   zrelpath.<locals>.<listcomp>  s    :::1:Q:::r9   r   rS   r+   )r?   r@   r3   r4   r   r    r   r   r
   r   ziprm   r   r[   r\   r]   DeprecationWarningr^   r_   )r6   rr   r#   r!   r"   	start_abspath_absstart_drive
start_rest
path_drive	path_rest
start_list	path_listry   e1e2rel_lists                    r7   r+   r+     s   -9T??D$ } .,---IeEHUOO,,	8D>>**",Y"7"7Z *8 4 4
IK  HZ$8$888*

KK) * * * =<!1!1#!6!6<<<
::	 4 4:::	*i00 	 	FB||x||++FAA8s:q01IabbMA 	MXz><AST   $Ye<<<s   "D2F F ;Gc                    	 | st          d          t          t          t          j        |                     } t          | d         t                    rdddnddd	 fd	| D             }fd
|D             }	 t          fd|D                       \  }n# t           $ r t          d          d w xY wt          t          d |D                                 dk    rt          d          t          | d         
                                        \  }}|                              }fd|D             }fd|D             }t          |          }t          |          }t          |          D ]\  }	}
|
||	         k    r|d |	         } n|d t          |                   }|r|z   n|}|                    |          z   S # t           t"          f$ r t%          j        dg| R    w xY w)Nz%commonpath() arg is an empty sequencer   rP   rQ   r}   r   r   r   c                 z    g | ]7}t          |                                                                        8S r   )r   rD   rN   )r   re   r&   r#   s     r7   r   zcommonpath.<locals>.<listcomp>.  s;    QQQaz!))FC"8"8">">"@"@AAQQQr9   c                 @    g | ]\  }}|                               S r   r   r   rx   re   r#   s      r7   r   zcommonpath.<locals>.<listcomp>/  s'    <<<1qwws||<<<r9   c              3   :   K   | ]\  }}|d d         k    V  d S rv   r   r  s      r7   	<genexpr>zcommonpath.<locals>.<genexpr>2  s3      >>$!Q2A2#>>>>>>r9   z%Can't mix absolute and relative pathsc              3       K   | ]	\  }}|V  
d S r   r   )r   rx   re   s      r7   r  zcommonpath.<locals>.<genexpr>9  s&      --A1------r9   rS   zPaths don't have the same drivec                 $    g | ]}||k    
|S r   r   r   r   r!   s     r7   r   zcommonpath.<locals>.<listcomp>>  s#    999q9Q&[[![[[r9   c                 ,    g | ]}fd |D             S )c                 $    g | ]}||k    
|S r   r   r  s     r7   r   z)commonpath.<locals>.<listcomp>.<listcomp>@  s#    :::a:a6kkkkkr9   r   )r   rI   r!   s     r7   r   zcommonpath.<locals>.<listcomp>@  s.    PPPq::::1:::PPPr9   r/   )r   tuplerZ   r?   r@   r3   r4   r   rm   r   rD   r   minmax	enumerater   r[   r\   r^   r_   )r`   drivesplitssplit_pathsr   r   r6   commons1s2ry   r   r   r&   r!   r#   s               @@@r7   r/   r/     sx   N B@AAA#bi''((E%(E"" !QQQQQ5QQQ<<<<<<<	P>>>>+>>>>>FEE 	P 	P 	PDEE4O	P s-------..!33>??? q!1!1&#!>!>??tC9999V999PPPPKPPPbMM 	& 	&DAqBqEzz  HSWWH%F %05((((~&   $\:E::::s%   &G B" !G "B==DG %G>)_isdirr   )9r!   r"   r'   r#   r$   r&   r%   r(   r?   rA   r   r^   __all__r8   _winapir:   rE   r;   rF   r<   rG   r
   ImportErrorr   r   r   r   r   r~   __doc__r   r   r   r   ntr   r   r   r   r   r   r   r   r    r   r   r   r   r   r)   hasattrr   r*   r+   r/   r  r   r   r9   r7   <module>r#     s   
		

	

 				 



         A A A  !,- - - - - - - - - -
8 8 8 8$  	, 	, 	,, , , , ,	,$  () ) )^. . .l  .8 8 8 (0 
    $ $ $  $%%%%%%%     :- - -zj j j`3+!!!!!!Z+ + + +W  (( (( (('( '( '( '( '(((f  "+######+ + + +	       GGG ]>>>>>>>>
( ( (T/ / /b "' < < < < < <    HHH~ &gc+>?? >3c355a8A= + + + +p1 1 1h	
 #""""""" 	 	 	DD	si   < AA7A> >BBB B*)B*1B; ;CC	C C('C(D   D)(D)