a
    Rhcn                     @   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dd Z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0 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
0 d-d. Z#zdd/lm$Z$m%Z& W n" eyj   d0d1d2d3Z'Y n(0 e(fd4d5Z)e(fd6d7Z*d0d1d8d3Z'e+e	d9oe	, d: d;kZ-dAd<d=Z.d>d? Z/zdd@lm0Z1 W n ey   Y n0 dS )B...\;/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 d S )N   \/\/)
isinstancebytespath r6   ./opt/python-3.9.24/usr/lib/python3.9/ntpath.py_get_bothseps#   s    
r8   c                 C   s8   t | } t| tr$| dd S | dd S d S )N   /   \r   r   )osfspathr2   r3   replacelowersr6   r6   r7   r	   -   s    

r	   c                 C   sj   t | } t| tr,| dddrBdS n| dddrBdS t| d } t| d	koh| d	 t| v S )
Nr9   r:      \\?\Tr   r   \\?\   r   )	r;   r<   r2   r3   r=   
startswithr   lenr8   r?   r6   r6   r7   r
   >   s    

r
   c           
   
   G   sT  t | } t| tr"d}d}d}nd}d}d}z|sD| d d |  t| \}}tt j|D ]~}t|\}}	|	r|	d |v r|s|s|}|	}q\n*|r||kr| | kr|}|	}q\|}|r|d |vr|| }||	 }q\|r|d |vr|r|dd  |kr|| | W S || W S  ttt	fyN   t
jd	| g|R    Y n0 d S )
Nr:   r0      :r   r1   :r   r   )r;   r<   r2   r3   r   mapr>   	TypeErrorAttributeErrorBytesWarninggenericpath_check_arg_types)
r5   pathsr"   sepscolonresult_driveresult_pathpp_drivep_pathr6   r6   r7   r   N   sL    



r   c                 C   s  t | } t| dkrt| tr0d}d}d}nd}d}d}| ||}|dd |d kr|dd	 |kr||d}|d
kr| d d | fS |||d }||d kr| d d | fS |d
krt| }| d | | |d  fS |dd |kr| d d | dd  fS | d d | fS )N   r:   r9   rF   r   r   rG   r      rH   rC   )r;   r<   rE   r2   r3   r=   find)rT   r"   r%   rQ   normpindexindex2r6   r6   r7   r   }   s.    

$r   c                 C   sx   t | } t| }t| \}} t| }|rD| |d  |vrD|d8 }q&| d | | |d   }}||pj|}|| |fS NrC   )r;   r<   r8   r   rE   rstrip)rT   rP   diheadtailr6   r6   r7   r      s    

r   c                 C   s8   t | } t| tr$t| dddS t| dddS d S )Nr:   r9      .r   r   r   )r;   r<   r2   r3   rM   	_splitextrT   r6   r6   r7   r      s    

r   c                 C   s   t | d S r]   r   re   r6   r6   r7   r      s    r   c                 C   s   t | d S )Nr   rf   re   r6   r6   r7   r      s    r   c              
   C   s6   zt | }W n tttfy(   Y dS 0 t|jS )NF)r;   lstatOSError
ValueErrorrK   statS_ISLNKst_moder5   str6   r6   r7   r      s
    r   c              	   C   s,   zt | }W n ttfy&   Y dS 0 dS )NFT)r;   rg   rh   ri   rm   r6   r6   r7   r      s
    r   )_getvolumepathnamec                 C   st   t | } t| }t| } t| \}}|rD|d |v rD| pB||v S ||v rPdS trl| |t| |kS dS d S )Nr   TF)r;   r<   r8   r   r   ro   r^   )r5   rP   rootrestr6   r6   r7   r     s    
r   c                 C   s   t | } t| trd}nd}| |s,| S dt|  }}||k r\| | t| vr\|d7 }q:dt jv rrt jd }nDdt jvr| S zt jd }W n ty   d}Y n0 t	|t jd }t| trt 
|}|dkrt	t|| d| }|| |d   S )N   ~~rC   USERPROFILEHOMEPATH	HOMEDRIVE )r;   r<   r2   r3   rD   rE   r8   environKeyErrorr   fsencoder   )r5   tilder`   nuserhomedriver6   r6   r7   r   "  s.    








r   c                 C   s&  t | } t| trhd| vr(d| vr(| S dd l}t|j|j d d}d}d}d}d}d}tt d	d }nFd
| 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rV| |
d d  } t	| }z&| 
|}
|	|| d |
d   7 }	W n( tyP   |	||  7 }	|d }
Y n0 n||krD| |
d |
d  |kr|	|7 }	|
d7 }
n| |
d d  } t	| }z| 
|}
W n( ty   |	||  7 }	|d }
Y nf0 | d |
 }z.|d u rt t jt | }n|| }W n  ty6   || | }Y n0 |	|7 }	n||kr| |
d |
d  |kr||	|7 }	|
d7 }
q| |
d |
d  |krT| |
d d  } t	| }z| 
|}
W n, ty   |	|| |  7 }	|d }
Y nj0 | d |
 }z.|d u rt t jt | }n|| }W n$ tyH   || | | }Y n0 |	|7 }	n| d d }|
d7 }
| |
|
d  }|r||v r||7 }|
d7 }
| |
|
d  }qxz.|d u rt t jt | }n|| }W n ty   || }Y n0 |	|7 }	|r|
d8 }
n|	|7 }	|
d7 }
q|	S )N   $   %r   z_-ascii   '   {   }environb$%'{}rC   rW   )r;   r<   r2   r3   stringascii_lettersdigitsgetattrrx   rE   r[   ri   rz   fsdecodery   )r5   r   varcharsquotepercentbracerbracedollarrx   resr[   pathlencvarvaluer6   r6   r7   r   R  s    













r   c           	      C   sP  t | } t| tr*d}d}d}d}d}nd}d}d}d	}d
}| |rL| S | ||} t| \}} | |r||7 }| |} | |}d}|t	|k r,|| r|| |kr||= q|| |kr"|dkr||d  |kr||d |d = |d8 }n&|dkr|
|r||= n|d7 }q|d7 }q|sB|sB|| ||| S )Nr:   r9   rc      ..)s   \\.\rA   r   r   r   r   )z\\.\rB   r   rC   )r;   r<   r2   r3   rD   r=   r   lstripr   rE   endswithappendr   )	r5   r"   r%   r    r!   special_prefixesprefixcompsr`   r6   r6   r7   r     sF    









r   c                 C   s@   t | } t| s8t| 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   s2   zt t| W S  ttfy,   t|  Y S 0 d S r   )r   r   rh   ri   r   r4   r6   r6   r7   r     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r|t|  z:| }t| } t| s\t|sJ|} W qttt|| } W q
 |y } z$|j	|v rW Y d }~q W Y d }~q
d }~0  t
y   Y qY q
0 q
| S )N)rC   rW   rX             2   C   W   i&  i(  i)  )setr	   add_nt_readlinkr
   r   r   r   r   winerrorri   )r5   ignored_errorallowed_winerrorseenZold_pathexr6   r6   r7   _readlink_deep  s&    
r   c                 C   s   d}d}| rzt | } |r$t| |n| W S  |y } z|j|vrD z8t| |d}|| krz|rht||n|W W  Y d }~S W n |y   Y n0 t| \} }| r|s| | W  Y d }~S |rt||n|}W Y d }~qd }~0 0 q|S )N)rC   rW   rX   r   r   r   r   r   r   {   i  i  rw   r   )r   r   r   r   r   )r5   r   r   rb   r   new_pathnamer6   r6   r7   _getfinalpathname_nonstrictE  s,    
$*r   c             
   C   s  t | } t| trBd}d}d}t }t| tttkrjdS n(d}d}d}t }t| ttkrjdS | 	|}|t
u rt}d	}n|rd
}nt}|st| st|| } zt| } d}W n6 |y }	 z|	j}t| |d} W Y d }	~	n
d }	~	0 0 |s| 	|r| 	|r&|| t|d   }
n| t|d  }
zt|
| krJ|
} W n6 ty }	 z|	j|krn|
} W Y d }	~	n
d }	~	0 0 | S )NrA   s   \\?\UNC\s   \\s   \\.\NULrB   z\\?\UNC\z\\z\\.\NULTr6   r   r   )r   r2   r3   r;   r   r	   rz   r'   r   rD   r/   FileNotFoundErrorrh   r
   r   r   r   r   rE   )r5   r   r   Z
unc_prefixZnew_unc_prefixr   Z
had_prefixr   Zinitial_winerrorr   Zspathr6   r6   r7   r(   t  sT    


getwindowsversionrX   rW   c                 C   sd  t | } t| tr"d}d}d}nd}d}d}|d u r:|}| sFtdt |}ztt|}tt| }t|\}}t|\}	}
t|t|	krtd|	|f d	d
 |	|D }dd
 |
	|D }d}t
||D ]$\}}t|t|kr q|d7 }q|gt||  ||d   }|s(|W S t| W S  tttttfy^   td| |  Y n0 d S )Nr:   rc   r   r   r   r   zno path specifiedz&path is on mount %r, start on mount %rc                 S   s   g | ]}|r|qS r6   r6   .0xr6   r6   r7   
<listcomp>      zrelpath.<locals>.<listcomp>c                 S   s   g | ]}|r|qS r6   r6   r   r6   r6   r7   r     r   r   rC   r*   )r;   r<   r2   r3   ri   r   r   r   r	   r   ziprE   r   rJ   rK   rL   DeprecationWarningrM   rN   )r5   startr"   r    r!   	start_abspath_absstart_drive
start_rest
path_drive	path_rest
start_list	path_listr`   e1e2rel_listr6   r6   r7   r*     sH    




r*   c              	      s  | st dtttj| } t| d tr8dd dndd dz> fd	d
| D }fdd
|D }ztfdd|D \}W n t y   t dd Y n0 ttdd |D dkrt dt	| d 
 \}}|}fdd
|D }fdd
|D }t|}t|}t|D ]*\}	}
|
||	 kr(|d |	 } qdq(|d t| }|rr| n|}|| W S  ttfy   tjdg| R    Y n0 d S )Nz%commonpath() arg is an empty sequencer   r:   r9   rc   r   r   r   c                    s    g | ]}t |  qS r6   )r   r=   r>   )r   rT   )r%   r"   r6   r7   r     r   zcommonpath.<locals>.<listcomp>c                    s   g | ]\}}|  qS r6   rf   r   r_   rT   r"   r6   r7   r     r   c                 3   s"   | ]\}}|d d  kV  qd S r]   r6   r   r   r6   r7   	<genexpr>   r   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     r   rC   zPaths don't have the same drivec                    s   g | ]}|r| kr|qS r6   r6   r   r   r    r6   r7   r     r   c                    s   g | ]} fd d|D qS )c                    s   g | ]}|r| kr|qS r6   r6   r   r   r6   r7   r     r   z)commonpath.<locals>.<listcomp>.<listcomp>r6   )r   r@   r   r6   r7   r     r   r.   )ri   tuplerI   r;   r<   r2   r3   r   rE   r   r=   r   minmax	enumerater   rJ   rK   rM   rN   )rO   drivesplitssplit_pathsr
   r~   r5   commons1s2r`   r   r   r6   )r%   r    r"   r7   r.     sF    

r.   )_isdir)N)2r    r!   r&   r"   r#   r%   r$   r'   r;   sysrj   rM   __all__r8   r	   r
   r   r   r   r   rd   __doc__r   r   r   r   ntro   ImportErrorr   r   r   r   r   r   r   r   r   r   r(   rh   r   r   hasattrr   r)   r*   r.   r   r   r6   r6   r6   r7   <module>   sn   	
/8

0q2
*/<
84