B
    18\=              &   @   sZ  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 d	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.g&Zd/d0 Zd1d	 Zd2d
 Zd3d Zd4d Zd5d Zejje_d6d Zd7d Zd8d Zd9d 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!dAdB Z"e	j#dCkZ$dFdDd-Z%dEd. Z&dS )G.z../:z:/bin:/usr/binNz	/dev/null    )*normcaseisabsjoin
splitdrivesplitsplitextbasenamedirnamecommonprefixZgetsizeZgetmtimeZgetatimeZgetctimeislinkexistslexistsisdirisfileismount
expanduser
expandvarsnormpathabspathZsamefileZ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 r*   M/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/posixpath.py_get_sep)   s    
r,   c             C   s.   t | } t| ttfs*td| jj| S )Nz2normcase() argument must be str or bytes, not '{}')	osfspathr'   r(   str	TypeErrorformat	__class____name__)sr*   r*   r+   r   4   s
    
c             C   s   t | } t| }| |S )N)r-   r.   r,   
startswith)r4   r   r*   r*   r+   r   @   s    
c          
   G   s   t | } t| }| }yb|s,|d d |  xHtt j|D ]8}||rN|}q:|r\||rf||7 }q:||| 7 }q:W W n. tttfk
r   t	j
d| f|   Y nX |S )Nr   r   )r-   r.   r,   mapr5   endswithr0   AttributeErrorBytesWarninggenericpath_check_arg_types)apr   r)   br*   r*   r+   r   K   s     


c             C   s`   t | } t| }| |d }| d | | |d   }}|rX||t| krX||}||fS )N   )r-   r.   r,   rfindlenrstrip)r=   r   iheadtailr*   r*   r+   r
   h   s    

c             C   s6   t | } t| trd}d}nd}d}t| |d |S )Nr&      .r   r   )r-   r.   r'   r(   r:   	_splitext)r=   r   r    r*   r*   r+   r   y   s    

c             C   s   t | } | d d | fS )Nr   )r-   r.   )r=   r*   r*   r+   r	      s    
c             C   s,   t | } t| }| |d }| |d  S )Nr?   )r-   r.   r,   r@   )r=   r   rC   r*   r*   r+   r      s    
c             C   sN   t | } t| }| |d }| d | }|rJ||t| krJ||}|S )Nr?   )r-   r.   r,   r@   rA   rB   )r=   r   rC   rD   r*   r*   r+   r      s    

c          	   C   s4   yt | }W n ttfk
r&   dS X t|jS )NF)r-   lstatOSErrorr8   statS_ISLNKst_mode)r)   str*   r*   r+   r      s
    c             C   s(   yt |  W n tk
r"   dS X dS )NFT)r-   rH   rI   )r)   r*   r*   r+   r      s
    c             C   s   yt | }W n tk
r"   dS X t|jr4dS t| trJt| d}n
t| d}t	|}yt |}W n tk
r~   dS X |j
}|j
}||krdS |j}|j}||krdS dS )NFs   ..z..T)r-   rH   rI   rJ   rK   rL   r'   r(   r   r"   st_devst_ino)r)   s1parents2Zdev1Zdev2Zino1Zino2r*   r*   r+   r      s.    

c       	      C   s4  t | } t| trd}nd}| |s,| S t| }| |d}|dk rPt| }|dkrdt jkrdd l	}y|
t  j}W q tk
r   | S X qt jd }nRdd l	}| d| }t|trt|d}y||}W n tk
r   | S X |j}t| trt |}d}nd}||}|| |d   p2|S )	N   ~~r?   r   ZHOMEASCIIr&   r   )r-   r.   r'   r(   r5   r,   findrA   environpwdZgetpwuidgetuidZpw_dirKeyErrorr/   ZgetpwnamfsencoderB   )	r)   Ztilder   rC   rX   ZuserhomenameZpwentZrootr*   r*   r+   r      sB    







c             C   s\  t | } t| trVd| kr | S ts:dd l}|d|jatj}d}d}t	t dd }n:d| krb| S t
s|dd l}|d|ja
t
j}d	}d
}t j}d}x|| |}|sP |d\}}|d}	|	|r|	|r|	dd }	y.|d krt t jt |	 }
n||	 }
W n tk
r&   |}Y qX | |d  }| d | |
 } t| }| |7 } qW | S )N   $r   s   \$(\w+|\{[^}]*\})   {   }environb$z\$(\w+|\{[^}]*\}){}r?   )r-   r.   r'   r(   	_varprogbrecompilerU   searchgetattr_varprogrW   ZspanZgroupr5   r7   r[   fsdecoderZ   rA   )r)   rf   rh   startendrW   rC   mjr\   valuerE   r*   r*   r+   r     sP    





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 }xR|D ]J}|||fkrq||ks|s|r|r|d |kr|| q|r|  qW |}||} |r|| |  } | p|S )Nr&       rF   s   ..r    r   z..      rd   )	r-   r.   r'   r(   r5   r
   appendpopr   )	r)   r   ZemptydotZdotdotZinitial_slashesZcompsZ	new_compsZcompr*   r*   r+   r   R  s>    





c             C   s@   t | } t| s8t| tr&t  }nt  }t|| } t| S )N)	r-   r.   r   r'   r(   getcwdbgetcwdr   r   )r)   Zcwdr*   r*   r+   r   x  s    



c             C   s*   t | } t| d d | i \}}t|S )Nr   )r-   r.   _joinrealpathr   )filenamer)   okr*   r*   r+   r"     s    
c       
      C   s  t | trd}d}d}nd}d}d}t|r<|dd  }|} x|r||\}}}|r>||krbq>||kr| rt| \} }||krt| ||} q>|} q>t| |}t|s|} q>||kr|| } | d k	rq>t||dfS d ||< t| t	||\} }	|	st| |dfS | ||< q>W | d	fS )
Nr&   rF   s   ..r   r   z..r?   FT)
r'   r(   r   	partitionr
   r   r   rz   r-   readlink)
r)   restseenr   r   r   r\   _Znewpathr|   r*   r*   r+   rz     sH    

rz   darwinc       	      C   s   | st dt| } t| tr.d}d}d}nd}d}d}|d krH|}n
t|}yndd	 t||D }d
d	 t| |D }tt||g}|gt||  ||d   }|s|S t	| S  t
tttfk
r   td| |  Y nX d S )Nzno path specifiedrF   r&   s   ..r   r   z..c             S   s   g | ]}|r|qS r*   r*   ).0xr*   r*   r+   
<listcomp>  s    zrelpath.<locals>.<listcomp>c             S   s   g | ]}|r|qS r*   r*   )r   r   r*   r*   r+   r     s    r$   )
ValueErrorr-   r.   r'   r(   r   r
   rA   r   r   r0   r8   r9   DeprecationWarningr:   r;   )	r)   rl   r   r   r   Z
start_list	path_listrC   Zrel_listr*   r*   r+   r$     s0    


c       	   	      s2  | st dtttj| } t| d tr4dd ndd yƇfdd| D }ytfd	d
| D \}W n t k
r   t dd Y nX  fdd|D }t|}t	|}|}x.t
|D ]"\}}||| kr|d | }P qW |rn
d d }|| S  ttfk
r,   tjd|    Y nX d S )Nz%commonpath() arg is an empty sequencer   r&   rF   r   r   c                s   g | ]}|  qS r*   )r
   )r   r)   )r   r*   r+   r     s    zcommonpath.<locals>.<listcomp>c             3   s   | ]}|d d  kV  qd S )Nr?   r*   )r   r=   )r   r*   r+   	<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 r*   r*   )r   c)r   r*   r+   r     s    z)commonpath.<locals>.<listcomp>.<listcomp>r*   )r   r4   )r   r*   r+   r     s    r%   )r%   )r   tupler6   r-   r.   r'   r(   setminmax	enumerater   r0   r8   r:   r;   )	pathsZsplit_pathsr   rP   rR   ZcommonrC   r   prefixr*   )r   r   r+   r%     s6    )N)'r   r   r    r   r   r   r   r!   r-   sysrJ   r:   __all__r,   r   r   r   r
   r   rG   __doc__r	   r   r   r   r   r   r   rj   re   r   r   r   r"   rz   platformr#   r$   r%   r*   r*   r*   r+   <module>   sX   

	
	

*25&	3

)