B
    18\|                 @   s  d dl Z d dlZd dlZejZdddddddd	d
ddddddddddgZdd Zdd ZdekrdZ	dZ
d dlT yd dlmZ ed W n ek
r   Y nX d dlZyd dlmZ W n ek
r   Y nX d dlZeee [ndekr~dZ	d Z
d dlT yd dlmZ ed W n ek
r2   Y nX d dlZd dlZeee [yd dlmZ W n ek
rz   Y nX ned!eejd"< d d#lmZmZmZmZmZmZmZmZ [ed$re Z d%d& Z!e" Z#e!d'd( e!d)d* e!d+d, e!d-d. e!d/d0 e!d1d2 e!d3d4 e!d5d6 e!d7d8 e!d9d: e!d;d< e!d=d> e!d?d@ e!dAdB e!dAdC e!dDd0 e#Z$e" Z#e!d'd( e#Z%e" Z#e!dEdF e!dGd* e!dHd, e!dIdJ e!dIdK e!dLdM e#&e e!dNdO e!dPd0 e!dQd0 e!dRdS edTr"edUr"e!dVdT e#Z'e" Z#e!d'd( e!d+d, e!d-d. e!dWdX e!dYd* edZrre!d[d, e!d1d2 e!d\d0 e!d]d. e!d-d. e!dDd0 e!d^d. e#Z([#[[ [!d Z)d_Z*d`Z+ddcddZ,dedf Z-dgdh Z.edddfdhg ddjdkZ/edk e0ehe$krDe1ehe'krDddbddmdndoZ2dpdq Z3edo ye4 W n e5k
rf   i Z4Y nX drds Z6dtdu Z7dvdw Z8dxdy Z9dzd{ Z:d|d} Z;edsdudwdyd{d}g dd~dZ<dddZ=d dl>m?Z? G dd de?Z@yeAZBW n e5k
r   dd ZBY nX dekred yeCZDW n e5k
r@   dd ZDY nX dekrVed dd ZEeE Z4[EdddZFe	dkZGed eGrdd ZHe@e4jIeHeJeHeJeBeDZK[HdddZLed dd ZMeM \ZNZO[MedrDedsDedrDd ZPd_ ZQZRedddg dd ZSdd ZTdd ZUdd ZVdd ZWeddddg edrldd ZXdd ZYeddg edrdd ZZdd Z[eddg dddZ\G dd dZ]dd Z^dd Z_edse_Z`de`_aG dd de jbZcdS )    NaltsepcurdirpardirseppathseplinesepdefpathnamepathdevnullSEEK_SETSEEK_CURSEEK_ENDfsencodefsdecodeget_exec_pathfdopenpopenextsepc             C   s
   | t  kS )N)globals)r	    r   F/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/os.py_exists%   s    r   c             C   s2   y
t | jS  tk
r,   dd t| D S X d S )Nc             S   s   g | ]}|d  dkr|qS )r   _r   ).0nr   r   r   
<listcomp>,   s    z%_get_exports_list.<locals>.<listcomp>)list__all__AttributeErrordir)moduler   r   r   _get_exports_list(   s    
r"   posix
)*)_exitr&   )_have_functionsntz
zno os specific module foundzos.path)r   r   r   r   r   r   r   r   r'   c             C   s"   |t kr| tkrtt |  d S )N)_globalsr'   _setadd)strfnr   r   r   _addd   s    r.   ZHAVE_FACCESSATaccessZHAVE_FCHMODATchmodZHAVE_FCHOWNATchownZHAVE_FSTATATstatZHAVE_FUTIMESATutimeZHAVE_LINKATlinkZHAVE_MKDIRATmkdirZHAVE_MKFIFOATmkfifoZHAVE_MKNODATmknodZHAVE_OPENATopenZHAVE_READLINKATreadlinkZHAVE_RENAMEATrenameZHAVE_SYMLINKATsymlinkZHAVE_UNLINKATunlinkrmdirZHAVE_UTIMENSATZHAVE_FCHDIRchdirZHAVE_FCHMODZHAVE_FCHOWNZHAVE_FDOPENDIRlistdirscandirZHAVE_FEXECVEexecveZHAVE_FTRUNCATEtruncateZHAVE_FUTIMENSZHAVE_FUTIMESZHAVE_FPATHCONFpathconfstatvfsfstatvfsZHAVE_FSTATVFSZHAVE_LCHFLAGSZchflagsZHAVE_LCHMODlchownZHAVE_LCHOWNZHAVE_LUTIMESZ
HAVE_LSTATZ
MS_WINDOWS        Fc             C   s   t | \}}|s t |\}}|r||r|t |s|yt||d W n tk
rV   Y nX t}t|trpttd}||kr|d S yt| | W n$ t	k
r   |rt 
| s Y nX d S )N)exist_okZASCII)r
   splitexistsmakedirsFileExistsErrorr   
isinstancebytesr5   OSErrorisdir)r	   moderJ   headtailZcdirr   r   r   rM      s$    


rM   c             C   sl   t |  t| \}}|s(t|\}}x>|rf|rfyt | W n tk
rT   P Y nX t|\}}q*W d S )N)r=   r
   rK   rQ   )r	   rT   rU   r   r   r   
removedirs   s    
rV   c             C   sn   t |\}}|r(|r(t |s(t| t| | t | \}}|rj|rjyt| W n tk
rh   Y nX d S )N)r
   rK   rL   rM   r:   rV   rQ   )oldnewrT   rU   r   r   r   renames   s    
rY   Tc             c   s  t | } g }g }g }yt| }W n2 tk
rR } z|d k	rB|| d S d }~X Y nX |   xy(yt|}	W n tk
r   P Y nX W n2 tk
r } z|d k	r|| d S d }~X Y nX y|	 }
W n tk
r   d}
Y nX |
r||	j n||	j |s`|
r`|rd}n.y|	 }W n tk
r:   d}Y nX | }|r`||	j	 q`W W d Q R X |r| ||fV  t	j
t	j }}xn|D ]4}|| |}|s||st||||E d H  qW n0x"|D ]}t||||E d H  qW | ||fV  d S )NFT)fspathr@   rQ   nextStopIterationis_dirappendr	   
is_symlinkr
   islinkjoinwalk)toptopdownonerrorZfollowlinksdirsnondirsZ	walk_dirs
scandir_iterrorentryr]   Z	walk_intor_   r`   ra   dirnameZnew_pathr   r   r   rb     s`    :




rb   .)follow_symlinksdir_fdc            c   s   t | trt| dst| } |s.t| d|d}t| t|d}zB|s^t|j	r|t
|t|r|t|| t | t|||E d H  W d t| X d S )N	__index__F)rm   rn   )rn   )rO   inthasattrrZ   r2   r8   O_RDONLYstZS_ISDIRst_moder
   samestat_fwalkrP   close)rc   rd   re   rm   rn   orig_sttopfdr   r   r   fwalk  s    !rz   c             c   s  t | }g }g }|s|rd ng }	x|D ]}
|
j}|r<t|}y4|
 rd|| |	d k	rn|	|
 n
|| W q& tk
r   y|
 r|| W n tk
r   Y nX Y q&X q&W |r|||| fV  x|	d kr|nt||	D ]}yB|s|rt|| dd}n|\}}
|
jdd}t	|t
| d}W n8 tk
r^ } z|d k	rL|| wW d d }~X Y nX z@|szt|t|rt||}t||||||E d H  W d t| X qW |s|||| fV  d S )NF)rn   rm   )rm   )rn   )r@   r	   r   r]   r^   rQ   r_   zipr2   r8   rr   r
   ru   ra   rv   rw   )ry   ZtoppathZisbytesrd   re   rm   rh   rf   rg   Zentriesrj   r	   rx   ZdirfderrZdirpathr   r   r   rv     sT    


rv   c             G   s   t | | d S )N)execv)fileargsr   r   r   execl  s    r   c             G   s    |d }t | |d d | d S )N)rA   )r~   r   envr   r   r   execle  s    r   c             G   s   t | | d S )N)execvp)r~   r   r   r   r   execlp%  s    r   c             G   s    |d }t | |d d | d S )Nr   )execvpe)r~   r   r   r   r   r   execlpe,  s    r   c             C   s   t | | d S )N)_execvpe)r~   r   r   r   r   r   5  s    r   c             C   s   t | || d S )N)r   )r~   r   r   r   r   r   r   =  s    r   c             C   s  |d k	rt }||f}nt}|f}t}t| r@|| f|  d S d }t|}tdkrft| } tt|}x|D ]~}t	|| }y||f|  W ql t
tfk
r }	 z|	}
W d d }	~	X Y ql tk
r }	 z|	}
|d kr|	}W d d }	~	X Y qlX qlW |d k	r||
d S )Nr(   )rA   r}   environr
   rk   r   r	   r   mapra   FileNotFoundErrorNotADirectoryErrorrQ   )r~   r   r   Z	exec_funcZargrestZ	saved_exc	path_listr    fullnameeZlast_excr   r   r   r   H  s6    



r   c          
   C   s   dd l }| d krt} |  |dt y| d}W n tk
rP   d }Y nX try| d }W n ttfk
rz   Y nX |d k	rt	d|}|d k	rt
|trt|}W d Q R X |d krt}|tS )Nr   ignoreZPATHs   PATHz*env cannot contain 'PATH' and b'PATH' keys)warningsr   Zcatch_warningsZsimplefilterBytesWarningget	TypeErrorsupports_bytes_environKeyError
ValueErrorrO   rP   r   r   rK   r   )r   r   r   Z
path_listbr   r   r   r   h  s.    


)MutableMappingc               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )_Environc             C   s.   || _ || _|| _|| _|| _|| _|| _d S )N)	encodekey	decodekeyencodevaluedecodevalueputenvunsetenv_data)selfdatar   r   r   r   r   r   r   r   r   __init__  s    z_Environ.__init__c             C   s>   y| j | | }W n tk
r2   t|d Y nX | |S )N)r   r   r   r   )r   keyvaluer   r   r   __getitem__  s
    z_Environ.__getitem__c             C   s.   |  |}| |}| || || j|< d S )N)r   r   r   r   )r   r   r   r   r   r   __setitem__  s    

z_Environ.__setitem__c             C   sD   |  |}| | y| j|= W n tk
r>   t|d Y nX d S )N)r   r   r   r   )r   r   Z
encodedkeyr   r   r   __delitem__  s    

z_Environ.__delitem__c             c   s(   t | j}x|D ]}| |V  qW d S )N)r   r   r   )r   keysr   r   r   r   __iter__  s    

z_Environ.__iter__c             C   s
   t | jS )N)lenr   )r   r   r   r   __len__  s    z_Environ.__len__c                s$   d d fdd j D S )Nzenviron({{{}}})z, c             3   s*   | ]"\}}d   | |V  qdS )z
{!r}: {!r}N)formatr   r   )r   r   r   )r   r   r   	<genexpr>  s   z$_Environ.__repr__.<locals>.<genexpr>)r   ra   r   items)r   r   )r   r   __repr__  s    
z_Environ.__repr__c             C   s   t | S )N)dict)r   r   r   r   copy  s    z_Environ.copyc             C   s   || kr|| |< | | S )Nr   )r   r   r   r   r   r   
setdefault  s    z_Environ.setdefaultN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   		r   c             C   s   d S )Nr   )r   r   r   r   r   <lambda>      r   r   c             C   s
   t | dS )N )_putenv)r   r   r   r   r     r   r   c                 s   t dkrLdd } |  t} fdd}i }xJt D ]\}}||||< q2W n(t fdd fdd	} }t}t||| |ttS )
Nr(   c             S   s    t | tstdt| j | S )Nzstr expected, not %s)rO   r,   r   typer   )r   r   r   r   	check_str  s    
z!_createenviron.<locals>.check_strc                s    |   S )N)upper)r   )encoder   r   r     s    z!_createenviron.<locals>.encodekeyc                s(   t | tstdt| j |  dS )Nzstr expected, not %ssurrogateescape)rO   r,   r   r   r   r   )r   )encodingr   r   r     s    
z_createenviron.<locals>.encodec                s   |   dS )Nr   )decode)r   )r   r   r   r     s    z_createenviron.<locals>.decode)	r	   r,   r   r   sysgetfilesystemencodingr   r   	_unsetenv)r   r   r   r   r   r   r   )r   r   r   _createenviron  s"    r   c             C   s   t | |S )N)r   r   )r   defaultr   r   r   getenv  s    r   )r   r   c             C   s    t | tstdt| j | S )Nzbytes expected, not %s)rO   rP   r   r   r   )r   r   r   r   _check_bytes  s    
r   c             C   s   t | |S )N)environbr   )r   r   r   r   r   getenvb  s    r   )r   r   c                 s4   t   t   fdd}  fdd}| |fS )Nc                s&   t | } t| tr|  S | S d S )N)rZ   rO   r,   r   )filename)r   errorsr   r   r   #  s    
z_fscodec.<locals>.fsencodec                s&   t | } t| tr|  S | S d S )N)rZ   rO   rP   r   )r   )r   r   r   r   r   /  s    
z_fscodec.<locals>.fsdecode)r   r   getfilesystemencodeerrors)r   r   r   )r   r   r   _fscodec  s
    r   forkspawnvr}   P_WAITP_NOWAIT	P_NOWAITOc             C   s   t |ttfstd|r"|d s*tdt }|spy$|d krJ||| n|||| W q   td Y qX nV| tkr||S xHt|d\}}t	|rq~q~t
|rt| S t|rt|S tdq~W d S )Nzargv must be a tuple or a listr   z"argv first element cannot be empty   z"Not stopped, signaled or exited???)rO   tupler   r   r   r   r&   r   waitpid
WIFSTOPPEDWIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUSrQ   )rS   r~   r   r   ZfuncZpidZwpidZstsr   r   r   	_spawnvefL  s.    
r   c             C   s   t | ||d tS )N)r   r}   )rS   r~   r   r   r   r   r   k  s    c             C   s   t | |||tS )N)r   rA   )rS   r~   r   r   r   r   r   spawnvet  s    r   c             C   s   t | ||d tS )N)r   r   )rS   r~   r   r   r   r   spawnvp  s    r   c             C   s   t | |||tS )N)r   r   )rS   r~   r   r   r   r   r   spawnvpe  s    r   c             G   s   t | ||S )N)r   )rS   r~   r   r   r   r   spawnl  s    r   c             G   s   |d }t | ||d d |S )Nr   )r   )rS   r~   r   r   r   r   r   spawnle  s    r   c             G   s   t | ||S )N)r   )rS   r~   r   r   r   r   spawnlp  s    r   c             G   s   |d }t | ||d d |S )Nr   )r   )rS   r~   r   r   r   r   r   spawnlpe  s    r   rr   c             C   s   t | tstdt|  |dkr.td| |dks>|d krFtddd l}dd l}|dkr|j| d|j|d}t	|
|j|S |j| d|j|d	}t	|
|j|S d S )
Nz&invalid cmd type (%s, expected string))r   wzinvalid mode %rr   z+popen() does not support unbuffered streamsr   T)shellstdoutbufsize)r   stdinr   )rO   r,   r   r   r   
subprocessioZPopenZPIPE_wrap_closeTextIOWrapperr   r   )ZcmdrS   	bufferingr   r   procr   r   r   r     s$    
c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )r   c             C   s   || _ || _d S )N)_stream_proc)r   streamr   r   r   r   r     s    z_wrap_close.__init__c             C   s8   | j   | j }|dkr d S tdkr,|S |d> S d S )Nr   r(      )r   rw   r   waitr	   )r   Z
returncoder   r   r   rw     s    

z_wrap_close.closec             C   s   | S )Nr   )r   r   r   r   	__enter__  s    z_wrap_close.__enter__c             G   s   |    d S )N)rw   )r   r   r   r   r   __exit__  s    z_wrap_close.__exit__c             C   s   t | j|S )N)getattrr   )r   r	   r   r   r   __getattr__  s    z_wrap_close.__getattr__c             C   s
   t | jS )N)iterr   )r   r   r   r   r     s    z_wrap_close.__iter__N)	r   r   r   r   rw   r   r   r   r   r   r   r   r   r     s   	r   c             O   s4   t | tstdt|  dd l}|j| f||S )Nz&invalid fd type (%s, expected integer)r   )rO   rp   r   r   r   r8   )fdr   kwargsr   r   r   r   r     s    
c             C   s   t | ttfr| S t| }y|| }W n0 tk
rX   t|drF ntd|j Y nX t |ttfrl|S td	|jt|jd S )N
__fspath__z/expected str, bytes or os.PathLike object, not z7expected {}.__fspath__() to return str or bytes, not {})
rO   r,   rP   r   r   r   rq   r   r   r   )r
   Z	path_typeZ	path_reprr   r   r   _fspath  s    
r   rZ   c               @   s&   e Zd Zejdd Zedd ZdS )PathLikec             C   s   t d S )N)NotImplementedError)r   r   r   r   r   /  s    zPathLike.__fspath__c             C   s
   t |dS )Nr   )rq   )clssubclassr   r   r   __subclasshook__4  s    zPathLike.__subclasshook__N)r   r   r   abcabstractmethodr   classmethodr  r   r   r   r   r   +  s   r   )rI   F)TNF)rl   TN)N)N)N)N)r   r   )dr  r   r2   rs   builtin_module_namesZ_namesr   r   r"   r	   r   r#   r&   r^   ImportErrorZ	posixpathr
   r'   extendr(   ZntpathmodulesZos.pathr   r   r   r   r   r   r   r   r   r)   r.   setr*   Zsupports_dir_fdZsupports_effective_idsr+   Zsupports_fdZsupports_follow_symlinksr   r   r   rM   rV   rY   rb   r8   r@   rz   rv   r   	NameErrorr   r   r   r   r   r   r   r   Z_collections_abcr   r   r   r   r   r   r   r   r   r   r   rP   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   ABCr   r   r   r   r   <module>   s|  


(











































 
 
08

		
 
-7








	

	


	
