a
    "hi=                     @   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ejje_dd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zdadad$d% Zd&d' Zd(d) Z d*d+ Z!d,d- Z"e	j#d.kZ$d3d/d0Z%d1d2 Z&dS )4.../:z/bin:/usr/binNz	/dev/null    )*)&normcaseisabsjoin
splitdrivesplitsplitextbasenamedirnamecommonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount
expanduser
expandvarsnormpathabspathsamefilesameopenfilesamestatcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpath
commonpathc                 C   s   t | trdS dS d S )N   /r   )
isinstancebytespath r2   1/opt/python-3.9.21/usr/lib/python3.9/posixpath.py_get_sep)   s    
r4   c                 C   s
   t | S Nosfspath)sr2   r2   r3   r   4   s    r   c                 C   s   t | } t| }| |S r5   )r7   r8   r4   
startswith)r9   r#   r2   r2   r3   r   <   s    
r   c              
   G   s   t | } t| }| }z^|s,|d d |  tt j|D ]8}||rL|}q8|rZ||rd||7 }q8||| 7 }q8W n. tttfy   t	j
d| g|R    Y n0 |S )Nr   r	   )r7   r8   r4   mapr:   endswith	TypeErrorAttributeErrorBytesWarninggenericpath_check_arg_types)apr#   r1   br2   r2   r3   r	   G   s     


r	   c                 C   s`   t | } t| }| |d }| d | | |d   }}|rX||t| krX||}||fS N   r7   r8   r4   rfindlenrstrip)rC   r#   iheadtailr2   r2   r3   r   d   s    

r   c                 C   s6   t | } t| trd}d}nd}d}t| |d |S )Nr-      .r   r   )r7   r8   r.   r/   r@   	_splitext)rC   r#   r'   r2   r2   r3   r   u   s    

r   c                 C   s   t | } | d d | fS Nr   r6   )rC   r2   r2   r3   r
      s    
r
   c                 C   s,   t | } t| }| |d }| |d  S rE   )r7   r8   r4   rH   )rC   r#   rK   r2   r2   r3   r      s    
r   c                 C   sN   t | } t| }| |d }| d | }|rJ||t| krJ||}|S rE   rG   )rC   r#   rK   rL   r2   r2   r3   r      s    

r   c              
   C   s6   zt | }W n tttfy(   Y dS 0 t|jS )NF)r7   lstatOSError
ValueErrorr>   statS_ISLNKst_mode)r1   str2   r2   r3   r      s
    r   c              	   C   s,   zt |  W n ttfy&   Y dS 0 dS )NFT)r7   rQ   rR   rS   r0   r2   r2   r3   r      s
    r   c              	   C   s   zt | }W n ttfy&   Y dS 0 t|jr8dS t| trNt	| d}n
t	| d}t
|}zt |}W n ttfy   Y dS 0 |j}|j}||krdS |j}|j}||krdS dS )NF   ..r   T)r7   rQ   rR   rS   rT   rU   rV   r.   r/   r	   r)   st_devst_ino)r1   s1parents2dev1dev2ino1ino2r2   r2   r3   r      s.    

r   c           	      C   s8  t | } t| trd}nd}| |s,| S t| }| |d}|dk rPt| }|dkrdt jvrdd l	}z|
t  j}W q ty   |  Y S 0 n
t jd }nTdd l	}| d| }t|trt|d}z||}W n ty   |  Y S 0 |j}t| trt |}d}nd}||}|| |d   p6|S )	N   ~~rF   r   HOMEASCIIr-   r   )r7   r8   r.   r/   r:   r4   findrI   environpwdgetpwuidgetuidpw_dirKeyErrorstrgetpwnamfsencoderJ   )	r1   tilder#   rK   rh   userhomenamepwentrootr2   r2   r3   r      sB    








r   c                 C   sX  t | } t| trVd| vr | S ts:dd l}|d|jatj}d}d}t	t dd }n:d| vrb| S t
s|dd l}|d|ja
t
j}d	}d
}t j}d}|| |}|sqT|d\}}|d}	|	|r|	|r|	dd }	z.|d u rt t jt |	 }
n||	 }
W n ty$   |}Y q0 | |d  }| d | |
 } t| }| |7 } q| S )N   $r   s   \$(\w+|\{[^}]*\})   {   }environb$z\$(\w+|\{[^}]*\}){}rF   )r7   r8   r.   r/   	_varprogbrecompilere   searchgetattr_varprogrg   spangroupr:   r<   ro   fsdecoderl   rI   )r1   r~   r   startendrg   rK   mjrr   valuerM   r2   r2   r3   r     sN    






r   c           	      C   s   t | } t| tr&d}d}d}d}nd}d}d}d}| |krB|S | |}|rp| |d	 rp| |d
 spd	}| |}g }|D ]J}|||fv rq||ks|s|r|r|d |kr|| q|r|  q|}||} |r|| |  } | p|S )Nr-       rN   rX   r    r   r         r|   )	r7   r8   r.   r/   r:   r   appendpopr	   )	r1   r#   emptydotdotdotinitial_slashescomps	new_compscompr2   r2   r3   r   N  sJ    






r   c                 C   s@   t | } t| s8t| tr&t  }nt  }t|| } t| S r5   )	r7   r8   r   r.   r/   getcwdbgetcwdr	   r   )r1   cwdr2   r2   r3   r   u  s    



r   c                 C   s*   t | } t| d d | i \}}t|S rP   )r7   r8   _joinrealpathr   )filenamer1   okr2   r2   r3   r)     s    
r)   c           
      C   s  t | trd}d}d}nd}d}d}t|r<|dd  }|} |r||\}}}|r<||kr`q<||kr| rt| \} }||krt| ||} q<|} q<t| |}t|s|} q<||v r|| } | d urq<t||dfS d ||< t| t	||\} }	|	st| |dfS | ||< q<| d	fS )
Nr-   rN   rX   r   r   r   rF   FT)
r.   r/   r   	partitionr   r	   r   r   r7   readlink)
r1   restseenr#   r!   r"   rr   _newpathr   r2   r2   r3   r     sH    


r   darwinc           	      C   s   | st dt| } t| tr.d}d}d}nd}d}d}|d u rH|}n
t|}zrdd	 t||D }d
d	 t| |D }tt||g}|gt||  ||d   }|s|W S t	| W S  t
tttfy   td| |  Y n0 d S )Nzno path specifiedrN   r-   rX   r   r   r   c                 S   s   g | ]}|r|qS r2   r2   .0xr2   r2   r3   
<listcomp>  r   zrelpath.<locals>.<listcomp>c                 S   s   g | ]}|r|qS r2   r2   r   r2   r2   r3   r     r   r+   )rS   r7   r8   r.   r/   r   r   rI   r   r	   r=   r>   r?   DeprecationWarningr@   rA   )	r1   r   r!   r#   r"   
start_list	path_listrK   rel_listr2   r2   r3   r+     s0    



r+   c           	   	      s2  | st dtttj| } t| d tr4dd ndd zćfdd| D }ztfd	d
| D \}W n t y   t dd Y n0  fdd|D }t|}t	|}|}t
|D ]$\}}||| kr|d | } qq|rn
d d }|| W S  ttfy,   tjdg| R    Y n0 d S )Nz%commonpath() arg is an empty sequencer   r-   rN   r   r   c                    s   g | ]}|  qS r2   )r   )r   r1   r#   r2   r3   r     r   zcommonpath.<locals>.<listcomp>c                 3   s   | ]}|d d  kV  qd S rE   r2   )r   rC   r   r2   r3   	<genexpr>  r   zcommonpath.<locals>.<genexpr>z%Can't mix absolute and relative pathsc                    s   g | ]} fd d|D qS )c                    s   g | ]}|r| kr|qS r2   r2   )r   cr!   r2   r3   r     r   z)commonpath.<locals>.<listcomp>.<listcomp>r2   )r   r9   r   r2   r3   r     r   r,   )rS   tupler;   r7   r8   r.   r/   setminmax	enumerater	   r=   r>   r@   rA   )	pathssplit_pathsr   r[   r]   commonrK   r   prefixr2   )r!   r#   r3   r,     s6    r,   )N)'r!   r"   r'   r#   r$   r%   r&   r(   r7   sysrT   r@   __all__r4   r   r   r	   r   r   rO   __doc__r
   r   r   r   r   r   r   r   r}   r   r   r   r)   r   platformr*   r+   r,   r2   r2   r2   r3   <module>   sJ   
	
	

*25'	3

)