o
    DXht                     @   s  	 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d ZzddlmZmZmZ dd ZW n eyJ   dd ZY nw dd Zdd Zdd Zdd Zdd Zejje_dd Zdd Zdd  Z d!d" Z!zdd#l"m#Z# W n ey   dZ#Y nw d$d% Z$d&d' Z%d(d) Z&d*d+ Z'd,d- Z(zdd.l"m)Z) W n ey   e(Z*Y nw d/d0 Z*z
dd1l"m+Z+m,Z- W n ey   d2d3d4d5Z.Y nw e/fd6d7Z0e/fd8d9Z1d2d3d:d5Z.e2e	d;oe	3 d< d=kZ4dCd>d?Z5d@dA Z6z	ddBl"m7Z8 W dS  ey   Y dS w )D...\;/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
commonpathALLOW_MISSINGc                 C   s   t | trdS dS )N   \/\/)
isinstancebytespath r6   0/opt/python-3.10.19/usr/lib/python3.10/ntpath.py_get_bothseps$   s   
r8   )LCMapStringExLOCALE_NAME_INVARIANTLCMAP_LOWERCASEc                 C   sf   	 t | } | s
| S t| tr)t }| |ddd} tt	t
| } | |dS tt	t
| ddS )Nsurrogateescaper   r   )osfspathr2   r3   sysgetfilesystemencodingdecodereplace_LCMapStringEx_LOCALE_NAME_INVARIANT_LCMAP_LOWERCASEencode)sencodingr6   r6   r7   r	   4   s   


r	   c                 C   sB   	 t | } t| trt t | dd S | dd S )Nr   r   )r=   r>   r2   r3   fsencodefsdecoderB   lowerrG   r6   r6   r7   r	   G   s
   

c                 C   sl   	 t | } t| tr| dddrdS n| dddr"dS t| d } t| d	ko5| d	 t| v S )
N   /   \   \\?\Tr   r   \\?\   r   )	r=   r>   r2   r3   rB   
startswithr   lenr8   rL   r6   r6   r7   r
   X   s   

r
   c           
   
   G   s@  t | } t| trd}d}d}nd}d}d}zs|s"| d d |  t| \}}tt j|D ]>}t|\}}	|	rG|	d |v rG|sB|sD|}|	}q.|r\||kr\| | krZ|}|	}q.|}|rh|d |vrh|| }||	 }q.|r|d |vr|r|dd  |kr|| | W S || W S  ttt	fy   t
jd	| g|R    w )
NrN   r0      :r   r1   :r   r   )r=   r>   r2   r3   r   maprK   	TypeErrorAttributeErrorBytesWarninggenericpath_check_arg_types)
r5   pathsr"   sepscolonresult_driveresult_pathpp_drivep_pathr6   r6   r7   r   h   sL   



r   c                 C   s  	 t | } t| dkrt| trd}d}d}nd}d}d}| ||}|dd |d krr|dd	 |krr||d}|d
krH| d d | fS |||d }||d kr^| d d | fS |d
krft| }| d | | |d  fS |dd |kr| d d | dd  fS | d d | fS )N   rN   rM   rT   r   r   rU   r      rV   rQ   )r=   r>   rS   r2   r3   rB   find)rb   r"   r%   r_   normpindexindex2r6   r6   r7   r      s0   

$r   c                 C   s   	 t | } t| }t| \}} t| }|r,| |d  |vr,|d8 }|r,| |d  |vs| d | | |d  }}||p?|}|| |fS NrQ   )r=   r>   r8   r   rS   rstrip)rb   r^   diheadtailr6   r6   r7   r      s   
r   c                 C   s4   t | } t| trt| dddS t| dddS )NrN   rM      .r   r   r   )r=   r>   r2   r3   r[   	_splitextrb   r6   r6   r7   r      s   

r   c                 C      	 t | d S rk   r   rs   r6   r6   r7   r         r   c                 C   rt   )Nr   ru   rs   r6   r6   r7   r      rv   r   c              
   C   s8   	 zt | }W n tttfy   Y dS w t|jS )NF)r=   lstatOSError
ValueErrorrY   statS_ISLNKst_moder5   str6   r6   r7   r      s   r   c              	   C   s,   	 zt | }W dS  ttfy   Y dS w )NFT)r=   rw   rx   ry   r}   r6   r6   r7   r     s   r   )_getvolumepathnamec                 C   sr   	 t | } t| }t| } t| \}}|r#|d |v r#| p"||v S ||v r)dS tr7| |t| |kS dS )Nr   TF)r=   r>   r8   r   r   r   rl   )r5   r^   rootrestr6   r6   r7   r   !  s   
r   c                 C   sL  	 t | } t| trd}nd}| |s| S dt| }}||k r:| | t| vr:|d7 }||k r:| | t| vs*dt jv rEt jd }n"dt jvrL| S zt jd }W n ty^   d}Y nw t	|t jd }|dkr| d| }t|tr{t 
|}t jd}||kr|t|kr| S t	t||}t| trt |}|| |d   S )	N   ~~rQ   USERPROFILEHOMEPATH	HOMEDRIVE USERNAME)r=   r>   r2   r3   rR   rS   r8   environKeyErrorr   rJ   getr   r   rI   )r5   tildern   nuserhomedrivetarget_usercurrent_userr6   r6   r7   r   <  sB   








r   c                 C   s2  	 t | } t| tr5d| vrd| vr| S dd l}t|j|j d d}d}d}d}d}d}tt d	d }n#d
| vr?d| vr?| S dd l}|j|j d }d}d}d}d}d
}t j}| d d }	d}
t	| }|
|k r| |
|
d  }||kr| |
d d  } t	| }z| 
|}
|	|| d |
d   7 }	W ny ty   |	||  7 }	|d }
Y nfw ||kr | |
d |
d  |kr|	|7 }	|
d7 }
nJ| |
d d  } t	| }z| 
|}
W n ty   |	||  7 }	|d }
Y n#w | d |
 }z|d u rt t jt | }n|| }W n ty   || | }Y nw |	|7 }	n||kr| |
d |
d  |kr;|	|7 }	|
d7 }
n| |
d |
d  |kr| |
d d  } t	| }z| 
|}
W n tyq   |	|| |  7 }	|d }
Y nw | d |
 }z|d u rt t jt | }n|| }W n ty   || | | }Y nw |	|7 }	nh| d d }|
d7 }
| |
|
d  }|r||v r||7 }|
d7 }
| |
|
d  }|r||v sz|d u rt t jt | }n|| }W n ty   || }Y nw |	|7 }	|r
|
d8 }
n|	|7 }	|
d7 }
|
|k si|	S )N   $   %r   z_-ascii   '   {   }environb$%'{}rQ   re   )r=   r>   r2   r3   stringascii_lettersdigitsgetattrr   rS   ri   ry   rI   rJ   r   )r5   r   varcharsquotepercentbracerbracedollarr   resri   pathlencvarvaluer6   r6   r7   r   y  s   











Lr   c           	      C   sP  	 t | } t| trd}d}d}d}d}n
d}d}d}d	}d
}| |r'| S | ||} t| \}} | |rA||7 }| |} | |}d}|t	|k r|| rX|| |kr\||= n6|| |kr|dkr|||d  |kr|||d |d = |d8 }n|dkr|
|r||= n	|d7 }n|d7 }|t	|k sN|s|s|| ||| S )NrN   rM   rq      ..)s   \\.\rO   r   r   r   r   )z\\.\rP   r   rQ   )r=   r>   r2   r3   rR   rB   r   lstripr   rS   endswithappendr   )	r5   r"   r%   r    r!   special_prefixesprefixcompsrn   r6   r6   r7   r     sJ   








r   c                 C   sB   	 t | } t| st| trt  }nt  }t|| } t| S N)	r=   r>   r
   r2   r3   getcwdbgetcwdr   r   )r5   cwdr6   r6   r7   _abspath_fallback  s   



r   )_getfullpathnamec              	   C   s0   	 zt t| W S  ttfy   t|  Y S w r   )r   r   rx   ry   r   r4   r6   r6   r7   r   4  s   r   )_getfinalpathnamereadlinkF)strictc                C   s   t | S r   )r   )r5   r   r6   r6   r7   r(   ?  s   r(   c              
   C   s   d}t  }t| |vrY|t|  z| }t| } t| s/t|s&|} W | S ttt|| } W n" |yI } z|j	|v rDW Y d }~| S  d }~w t
yR   Y | S w t| |vs| S )N)rQ   re   rf             2   C   W   i&  i(  i)  )setr	   add_nt_readlinkr
   r   r   r   r   winerrorry   )r5   ignored_errorallowed_winerrorseenZold_pathexr6   r6   r7   _readlink_deepB  s4   	

r   c                 C   s   d}d}| rszt | } |rt| |W S | W S  |yp } zO|j|vr# zt| |d}|| kr>|r5t||n|W W  Y d }~S W n	 |yH   Y nw t| \} }| r]|s]| | W  Y d }~S |rdt||n|}W Y d }~nd }~ww | s|S )N)rQ   re   rf   r   r   r   r   5   A   r   r   {      i  i  r   r   )r   r   r   r   r   )r5   r   r   rp   r   new_pathnamer6   r6   r7   _getfinalpathname_nonstrictl  s6   
 r   c             
   C   s  t | } t| tr!d}d}d}t }t| tttkr dS nd}d}d}t }t| ttkr5dS | 	|}|t
u rCt}d	}n|rHd
}nt}|sUt| sUt|| } zt| } d}W n |yx }	 z|	j}t| |d} W Y d }	~	nd }	~	ww |s| 	|r| 	|r|| t|d   }
n| t|d  }
zt|
| kr|
} W | S W | S  ty }	 z|	j|kr|
} W Y d }	~	| S W Y d }	~	| S d }	~	ww | S )NrO   s   \\?\UNC\s   \\s   \\.\NULrP   z\\?\UNC\z\\z\\.\NULTr6   r   r   )r   r2   r3   r=   r   r	   rI   r'   r   rR   r/   FileNotFoundErrorrx   r
   r   r   r   r   rS   )r5   r   r   Z
unc_prefixZnew_unc_prefixr   Z
had_prefixr   Zinitial_winerrorr   Zspathr6   r6   r7   r(     sj   





getwindowsversionrf   re   c                 C   sZ  	 t | } t| trd}d}d}nd}d}d}|d u r|}| s$tdt |}zott|}tt| }t|\}}t|\}	}
t|t|	krRtd|	|f d	d
 |	|D }dd
 |
	|D }d}t
||D ]\}}t|t|kr{ n|d7 }qm|gt||  ||d   }|s|W S t| W S  tttttfy   td| |  w )NrN   rq   r   r   r   r   zno path specifiedz&path is on mount %r, start on mount %rc                 S      g | ]}|r|qS r6   r6   .0xr6   r6   r7   
<listcomp>      zrelpath.<locals>.<listcomp>c                 S   r   r6   r6   r   r6   r6   r7   r     r   r   rQ   r*   )r=   r>   r2   r3   ry   r   r   r   r	   r   ziprS   r   rX   rY   rZ   DeprecationWarningr[   r\   )r5   startr"   r    r!   	start_abspath_absstart_drive
start_rest
path_drive	path_rest
start_list	path_listrn   e1e2rel_listr6   r6   r7   r*     sL   




r*   c              	      s  	 | st dtttj| } t| d trdd dndd dz fd	d
| D }fdd
|D }ztfdd|D \}W n t yQ   t dd w ttdd |D dkrct dt	| d 
 \}}|}fdd
|D }fdd
|D }t|}t|}t|D ]\}	}
|
||	 kr|d |	 } n	q|d t| }|r| n|}|| W S  ttfy   tjdg| R    w )Nz%commonpath() arg is an empty sequencer   rN   rM   rq   r   r   r   c                    s    g | ]}t |  qS r6   )r   rB   rK   )r   rb   )r%   r"   r6   r7   r   &  s     zcommonpath.<locals>.<listcomp>c                    s   g | ]	\}}|  qS r6   ru   r   rm   rb   r"   r6   r7   r   '  s    c                 3   s$    | ]\}}|d d  kV  qd S rk   r6   r   r   r6   r7   	<genexpr>*  s   " zcommonpath.<locals>.<genexpr>z%Can't mix absolute and relative pathsc                 s   s    | ]\}}|V  qd S r   r6   r   r6   r6   r7   r   1  s    rQ   zPaths don't have the same drivec                       g | ]
}|r| kr|qS r6   r6   r   r   r    r6   r7   r   6      c                    s   g | ]} fd d|D qS )c                    r   r6   r6   r   r   r6   r7   r   8  r   z)commonpath.<locals>.<listcomp>.<listcomp>r6   )r   rG   r   r6   r7   r   8  s    r.   )ry   tuplerW   r=   r>   r2   r3   r   rS   r   rB   r   minmax	enumerater   rX   rY   r[   r\   )r]   drivesplitssplit_pathsr
   r   r5   commons1s2rn   r   r   r6   )r%   r    r"   r7   r.     sN   

r.   )_isdirr   )9r    r!   r&   r"   r#   r%   r$   r'   r=   r?   rz   r[   __all__r8   _winapir9   rC   r:   rD   r;   rE   r	   ImportErrorr
   r   r   r   r   rr   __doc__r   r   r   r   ntr   r   r   r   r   r   r   r   r   r   r   r(   rx   r   r   hasattrr   r)   r*   r.   r   r   r6   r6   r6   r7   <module>   s   		
/8
=q2*2
<
84