o
     JAf_?                     @   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+d,d-Z!d.d/ Z"e	j#d0kZ$d5d1d2Z%d3d4 Z&dS )6.../: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 )N   /r   )
isinstancebytespath r2    /usr/lib/python3.10/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| }| }z0|s|d d |  tt j|D ]}||r'|}q|r.||r3||7 }q||| 7 }qW |S  tttfyQ   t	j
d| g|R    w )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   sb   	 t | } t| }| |d }| d | | |d  }}|r-||t| kr-||}||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   sP   	 t | } t| }| |d }| d | }|r&||t| kr&||}|S rE   rG   )rC   r#   rK   rL   r2   r2   r3   r      s   

r   c              
   C   s8   	 zt | }W n tttfy   Y dS w 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 dS  ttfy   Y dS w )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 w t|jrdS t| tr(t	| d}nt	| d}t
|}zt |}W n ttfyD   Y dS w |j}|j}||krQdS |j}|j}||kr]d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      s4   

r   c           	      C   sJ  	 t | } t| trd}nd}| |s| S t| }| |d}|dk r)t| }|dkrRdt jvrLdd l	}z
|
t  j}W n; tyK   |  Y S w t jd }n*dd l	}| d| }t|trft|d}z||}W n tyx   |  Y S w |j}|d u rtjdkr| S t| trt |}d}nd	}||}|| |d   p|S )
N   ~~rF   r   HOMEASCIIvxworksr-   r   )r7   r8   r.   r/   r:   r4   findrI   environpwdgetpwuidgetuidpw_dirKeyErrorstrgetpwnamsysplatformfsencoderJ   )	r1   tilder#   rK   ri   userhomenamepwentrootr2   r2   r3   r      sL   








r   c                 C   sV  	 t | } t| tr,d| vr| S tsdd l}|d|jatj}d}d}t	t dd }nd| vr2| S t
s?dd l}|d|ja
t
j}d	}d
}t j}d}	 || |}|sV	 | S |d\}}|d}	|	|rr|	|rr|	dd }	z|d u rt t jt |	 }
n||	 }
W n ty   |}Y nw | |d  }| d | |
 } t| }| |7 } qL)N   $r   s   \$(\w+|\{[^}]*\})   {   }environb$z\$(\w+|\{[^}]*\}){}TrF   )r7   r8   r.   r/   	_varprogbrecompilere   searchgetattr_varprogrh   spangroupr:   r<   rr   fsdecoderm   rI   )r1   r   r   startendrh   rK   mjru   valuerM   r2   r2   r3   r     sX   



r   c           	      C   s   	 t | } t| trd}d}d}d}nd}d}d}d}| |kr"|S | |}|r9| |d	 r9| |d
 s9d	}| |}g }|D ]%}|||fv rKqB||ks[|sS|r[|ra|d |kra|| qB|rg|  qB|}||} |rw|| |  } | pz|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   Q  sL   




r   c                 C   sB   	 t | } t| st| trt  }nt  }t|| } t| S r5   )	r7   r8   r   r.   r/   getcwdbgetcwdr	   r   )r1   cwdr2   r2   r3   r   x  s   



r   F)strictc                C   s.   	 t | } t| d d | |i \}}t|S rP   )r7   r8   _joinrealpathr   )filenamer   r1   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rI| rFt| \} }||krEt| ||} n|} qt| |}	zt|	}
W n tyc   |r_ d}Y nw t	
|
j}|so|	} q|	|v r||	 } | d ur|q|rt	|	 nt|	|dfS d ||	< t| t|	||\} }|st| |dfS | ||	< |s | d	fS )
Nr-   rN   rX   r   r   r   rF   FT)r.   r/   r   	partitionr   r	   r7   rQ   rR   rT   rU   rV   r   readlink)r1   restr   seenr#   r!   r"   ru   _newpathrW   is_linkr   r2   r2   r3   r     s`   

.r   darwinc           	      C   s   	 | st dt| } t| trd}d}d}nd}d}d}|d u r%|}nt|}z9dd	 t||D }d
d	 t| |D }tt||g}|gt||  ||d   }|s_|W S t	| W S  t
tttfyv   td| |  w )Nzno path specifiedrN   r-   rX   r   r   r   c                 S      g | ]}|r|qS r2   r2   .0xr2   r2   r3   
<listcomp>      zrelpath.<locals>.<listcomp>c                 S   r   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+     s4   



r+   c           	   	      s&  	 | st dtttj| } t| d trdd ndd z`fdd| D }ztfd	d
| D \}W n t yC   t dd w  fdd|D }t|}t	|}|}t
|D ]\}}||| krm|d | } nq[|rrnd d }|| W S  ttfy   tjdg| R    w )Nz%commonpath() arg is an empty sequencer   r-   rN   r   r   c                    s   g | ]}|  qS r2   )r   )r   r1   r#   r2   r3   r   	  s    zcommonpath.<locals>.<listcomp>c                 3   s     | ]}|d d  kV  qd S rE   r2   )r   rC   r   r2   r3   	<genexpr>  s    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     s    z)commonpath.<locals>.<listcomp>.<listcomp>r2   )r   r9   r   r2   r3   r     s    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,     s>   
r,   r5   )'r!   r"   r'   r#   r$   r%   r&   r(   r7   rp   rT   r@   __all__r4   r   r   r	   r   r   rO   __doc__r
   r   r   r   r   r   r   r   r   r   r   r   r)   r   rq   r*   r+   r,   r2   r2   r2   r3   <module>   sN    

		

*55'	
?
)