o
    >c                     @   sf  	 d dl Z d dlZd dlZd dlmZ eee Z	ej
Zg dZdd Zdd Zdev rndZd	Zd d
lT zd dlmZ ed W n	 eyJ   Y nw d dlZzd dlmZ W n	 ey`   Y nw d dlZeee [nIdev rdZdZd d
lT zd dlmZ ed W n	 ey   Y nw d dlZd dlZeee [zd dlmZ W n ey   Y nw 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d e'd d! e'd"d# e'd$d% e'd&d' e'd(d) e'd*d+ e'd,d- e'd.d/ e'd0d1 e'd0d2 e'd3d e)Z*e( Z)e'dd e)Z+e( Z)e'd4d5 e'd6d e'd7d e'd8d9 e'd8d: e'd;d< e),e e'd=d> e'd?d e'd@d e'dAdB edCredDre'dEdC e)Z-e( Z)e'dd e'dd e'dd e'dFdG e'dHd edIre'dJd e'd d! e'dKd e'dLd e'dd e'd3d e'dMd e)Z.[)[[&['d Z/dNZ0dOZ1ddRdSZ2dTdU Z3dVdW Z4eg dX ddZd[Z5d\d] Z6ed[ e7ehe*kre8ehe-krddQdd_d`daZ9dbdc Z:eda ddde Z;dfdg Z<dhdi Z=djdk Z>dldm Z?dndo Z@eg dp ddqdrZAddsdtZBd dulmCZCmDZD G dvdw dweCZEdxdy ZFeF ZG[Fddzd{ZHedkZIed| eIrd}d~ ZJeEeGjKeJeLeJeLZM[JdddZNed dd ZOeO \ZPZQ[Oedredsedrd ZRdN ZSZTeg d dd ZUdd ZVdd ZWdd ZXdd ZYeg d edrdd ZZdd Z[eddg edrdd Z\dd Z]eddg ej^dkrdddZ_G dd dZ`ed dddZadd ZbedsebZcdec_dG dd de jeZfedkr1G dd dZgdd ZhdS dS )    N)_check_methods)altsepcurdirpardirseppathseplinesepdefpathnamepathdevnullSEEK_SETSEEK_CURSEEK_ENDfsencodefsdecodeget_exec_pathfdopenextsepc                 C   s
   | t  v S N)globals)r
    r   V/Volumes/Data/workspace/med-macos-weekly/build/ExtProjs/pyncpp/python/source/Lib/os.py_exists)      
r   c                 C   s2   zt | jW S  ty   dd t| D  Y S w )Nc                 S   s   g | ]
}|d  dkr|qS )r   _r   ).0nr   r   r   
<listcomp>0   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 v r| tv rtt |  d S d S d S r   )_globalsr)   _setadd)strfnr   r   r   _addh   s   r0   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_LCHFLAGSchflagsZHAVE_LCHMODlchownZHAVE_LCHOWNZHAVE_LUTIMESZ
HAVE_LSTATZ
MS_WINDOWS        Fc                 C   s   	 t | \}}|st |\}}|r>|r>t |s>zt||d W n	 ty+   Y nw t}t|tr8ttd}||kr>d S zt| | W d S  t	yX   |rTt 
| sU Y d S w )N)exist_okZASCII)r   splitexistsmakedirsFileExistsErrorr   
isinstancebytesr7   OSErrorisdir)r
   moderM   headtailZcdirr   r   r   rP      s,   	

rP   c                 C   sz   	 t |  t| \}}|st|\}}|r7|r9zt | W n
 ty)   Y d S w t|\}}|r;|sd S d S d S d S r   )r?   r   rN   rT   )r
   rW   rX   r   r   r   
removedirs   s   
rY   c                 C   sv   	 t |\}}|r|rt |st| t| | t | \}}|r7|r9zt| W d S  ty6   Y d S w d S d S r   )r   rN   rO   rP   r<   rY   rT   )oldnewrW   rX   r   r   r   renames   s   
r\   )rP   rY   r\   Tc                 C   s&   	 t d| ||| tt| |||S )Nzos.walk)sysaudit_walkfspath)toptopdownonerrorfollowlinksr   r   r   walk  s   ;re   c                 c   s   g }g }g }zt | }W n ty( } z|d ur|| W Y d }~d S d }~ww | 	 zzt|}	W n
 ty>   Y W nlw W n! tya } z|d urP|| W Y d }~W d    d S d }~ww z|	 }
W n tys   d}
Y nw |
r}||	j n||	j |s|
r|rd}nz|	 }W n ty   d}Y nw | }|r||	j q-W d    n1 sw   Y  |r| ||fV  tj	tj
}}|D ]}|| |}|s||st||||E d H  qd S |D ]}t||||E d H  q| ||fV  d S )NTF)rB   rT   nextStopIterationis_dirappendr
   
is_symlinkr   islinkjoinr_   )ra   rb   rc   rd   dirsnondirsZ	walk_dirs
scandir_iterrorentryrh   Z	walk_intorj   rk   rl   dirnameZnew_pathr   r   r   r_   Y  s|   
+

r_   .follow_symlinksdir_fdc                c   s    	 t d| |||| t| trt| dst| } |s#t| d|d}t| t|d}z4|s;t	
|jrQt|t|rXt|| t| t|||E d H  W t| d S W t| d S W t| d S t| w )Nzos.fwalk	__index__Frt   rv   )r]   r^   rR   inthasattrr`   r4   r:   O_RDONLYstZS_ISDIRst_moder   samestat_fwalkrS   close)ra   rb   rc   ru   rv   orig_sttopfdr   r   r   fwalk  s(    r   c                 c   s   t | }g }g }|s|rd ng }	|D ]C}
|
j}|rt|}z|
 r2|| |	d ur1|	|
 n|| W q tyV   z|
 rI|| W n	 tyS   Y nw Y qw |r`|||| fV  |	d u rf|nt||	D ]c}z|s|rzt|| dd}n
|\}}
|
jdd}t	|t
| d}W n ty } z|d ur|| W Y d }~qkd }~ww z"|st|t|rt||}t||||||E d H  W t| qkt| w |s|||| fV  d S d S )NF)rv   ru   )ru   rx   )rB   r
   r   rh   ri   rT   rj   zipr4   r:   r{   r   r~   rl   r   r   )r   ZtoppathZisbytesrb   rc   ru   ro   rm   rn   Zentriesrq   r
   r   Zdirfderrdirpathr   r   r   r     sl   




r   c                 G      	 t | | d S r   )execvfileargsr   r   r   execl     r   c                 G   "   	 |d }t | |d d | d S N)rC   r   r   envr   r   r   execle!  s   r   c                 G   r   r   )execvpr   r   r   r   execlp)  r   r   c                 G   r   r   )execvper   r   r   r   execlpe0  s   r   c                 C   r   r   _execvper   r   r   r   r   9  s   r   c                 C   s   	 t | || d S r   r   r   r   r   r   r   A     r   )r   r   r   r   r   r   c                 C   s   |d urt }||f}nt}|f}t}t| r!|| g|R   d S d }t|}tdkr4t| } tt|}|D ]A}t	|| }z
||g|R   W q6 t
tfy^ }	 z|	}
W Y d }	~	q6d }	~	w tyw }	 z|	}
|d u rm|	}W Y d }	~	q6d }	~	ww |d ur~||
)Nr*   )rC   r   environr   rr   r   r
   r   maprl   FileNotFoundErrorNotADirectoryErrorrT   )r   r   r   Z	exec_funcZargrestZ	saved_exc	path_listr"   fullnameeZlast_excr   r   r   r   L  s<   


r   c              
   C   s   	 dd l }| d u rt} | L |dt z| d}W n ty(   d }Y nw trTz| d }W n ttfy<   Y nw |d urEt	d|}|d urTt
|trTt|}W d    n1 s^w   Y  |d u rit}|tS )Nr   ignoreZPATHs   PATHz*env cannot contain 'PATH' and b'PATH' keys)warningsr   catch_warningssimplefilterBytesWarningget	TypeErrorsupports_bytes_environKeyError
ValueErrorrR   rS   r   r	   rN   r   )r   r   r   Z
path_listbr   r   r   r   l  s:   	

r   )MutableMappingMappingc                   @   sl   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d Zdd Zdd ZdS )_Environc                 C   s"   || _ || _|| _|| _|| _d S r   )	encodekey	decodekeyencodevaluedecodevalue_data)selfdatar   r   r   r   r   r   r   __init__  s
   
z_Environ.__init__c                 C   s8   z
| j | | }W n ty   t|d w | |S r   )r   r   r   r   r   keyvaluer   r   r   __getitem__  s   

z_Environ.__getitem__c                 C   s,   |  |}| |}t|| || j|< d S r   )r   r   putenvr   r   r   r   r   __setitem__  s   


z_Environ.__setitem__c                 C   s:   |  |}t| z| j|= W d S  ty   t|d w r   )r   unsetenvr   r   )r   r   Z
encodedkeyr   r   r   __delitem__  s   

z_Environ.__delitem__c                 c   s&    t | j}|D ]}| |V  qd S r   )r   r   r   )r   keysr   r   r   r   __iter__  s
   
z_Environ.__iter__c                 C   
   t | jS r   )lenr   r   r   r   r   __len__  r   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   rl   r   itemsr   r   r   r   __repr__  s
   
z_Environ.__repr__c                 C   s   t | S r   )dictr   r   r   r   copy  s   z_Environ.copyc                 C   s   || vr|| |< | | S r   r   r   r   r   r   
setdefault  s   z_Environ.setdefaultc                 C   s   |  | | S r   )update)r   otherr   r   r   __ior__  s   
z_Environ.__ior__c                 C   s$   t |tstS t| }|| |S r   rR   r   NotImplementedr   r   r   r   r[   r   r   r   __or__  
   

z_Environ.__or__c                 C   s$   t |tstS t|}||  |S r   r   r   r   r   r   __ror__  r   z_Environ.__ror__N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    	r   c                     s   t dkr$dd } |  t} fdd}i }t D ]
\}}||||< qnt fdd fdd	} }t}t||| |S )
Nr*   c                 S       t | tstdt| j | S )Nstr expected, not %s)rR   r.   r   typer   r   r   r   r   	check_str     
z!_createenviron.<locals>.check_strc                    s    |   S r   )upper)r   )encoder   r   r        z!_createenviron.<locals>.encodekeyc                    s(   t | tstdt| j |  dS )Nr   surrogateescape)rR   r.   r   r   r   r   r   encodingr   r   r     s   
z_createenviron.<locals>.encodec                    s   |   dS )Nr   )decoder   r   r   r   r     r   z_createenviron.<locals>.decode)r
   r.   r   r   r]   getfilesystemencodingr   )r   r   r   r   r   r   r   )r   r   r   _createenviron  s$   r   c                 C      	 t | |S r   )r   r   r   defaultr   r   r   getenv     r   )r   r   c                 C   r   )Nzbytes expected, not %s)rR   rS   r   r   r   r   r   r   r   _check_bytes  r   r   c                 C   r   r   )environbr   r   r   r   r   getenvb  r   r   )r   r   c                     s4   t   t   fdd}  fdd}| |fS )Nc                    $   	 t | } t| tr|  S | S r   )r`   rR   r.   r   filenamer   errorsr   r   r   %  
   
z_fscodec.<locals>.fsencodec                    r   r   )r`   rR   rS   r   r   r   r   r   r   1  r   z_fscodec.<locals>.fsdecode)r]   r   getfilesystemencodeerrors)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 }|s;z|d u r%||| n	|||| W d S W d S    td Y d S | tkrA|S 	 t|d\}}t	|rNqAt
|S )Nzargv must be a tuple or a listr   z"argv first element cannot be empty   )rR   tupler   r   r   r   r(   r   waitpid
WIFSTOPPEDwaitstatus_to_exitcode)rV   r   r   r   funcZpidZwpidZstsr   r   r   	_spawnvefN  s(   r  c                 C      	 t | ||d tS r   )r  r   rV   r   r   r   r   r   r   i  r   c                 C      	 t | |||tS r   )r  rC   rV   r   r   r   r   r   r   spawnver     r  c                 C   r  r   )r  r   r  r   r   r   spawnvp~  r  r	  c                 C   r  r   )r  r   r  r   r   r   spawnvpe  r  r
  )r   r  r	  r
  c                 G      	 t | ||S r   )r   r  r   r   r   spawnl  s   r  c                 G       	 |d }t | ||d d |S r   )r  r  r   r   r   spawnle     r  c                 G   r  r   )r	  r  r   r   r   spawnlp  s   r  c                 G   r  r   )r
  r  r   r   r   spawnlpe  r  r  vxworksrr   c                 C   s   t | tstdt|  |dvrtd| |dks|d u r#tddd l}dd l}|dkr@|j| dd|j|d}t	|j
|S |j| dd|j|d	}t	|j|S )
Nz&invalid cmd type (%s, expected string))r  wzinvalid mode %rr   z+popen() does not support unbuffered streamsr  T)shelltextstdoutbufsize)r  r  stdinr  )rR   r.   r   r   r   
subprocessioZPopenZPIPE_wrap_closer  r  )ZcmdrV   	bufferingr  r  procr   r   r   popen  s(   
r  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 r   )_stream_proc)r   streamr  r   r   r   r     s   
z_wrap_close.__init__c                 C   s4   | j   | j }|dkrd S tdkr|S |d> S )Nr   r*      )r   r   r!  waitr
   )r   Z
returncoder   r   r   r     s   

z_wrap_close.closec                 C      | S r   r   r   r   r   r   	__enter__     z_wrap_close.__enter__c                 G      |    d S r   r   r   r   r   r   r   __exit__  r   z_wrap_close.__exit__c                 C   s   t | j|S r   )getattrr   )r   r
   r   r   r   __getattr__  r   z_wrap_close.__getattr__c                 C   r   r   )iterr   r   r   r   r   r     r   z_wrap_close.__iter__N)	r   r   r   r   r   r&  r+  r-  r   r   r   r   r   r    s    	r  c                 O   sR   t | tstdt|  dd l}d|vr||}|j| |||g|R i |S )Nz&invalid fd type (%s, expected integer)r   b)rR   ry   r   r   r  text_encodingr:   )fdrV   r  r   r   kwargsr  r   r   r   r      s   

r   c                 C   s~   	 t | ttfr
| S t| }z|| }W n ty)   t|dr" td|j w t |ttfr3|S td	|jt|j)N
__fspath__z/expected str, bytes or os.PathLike object, not z7expected {}.__fspath__() to return str or bytes, not {})
rR   r.   rS   r   r3  r!   rz   r   r   r   )r   Z	path_typeZ	path_reprr   r   r   _fspath  s(   
r4  r`   c                   @   s0   e Zd Z	 ejdd Zedd ZeeZ	dS )PathLikec                 C   s   	 t r   )NotImplementedErrorr   r   r   r   r3  3  s   zPathLike.__fspath__c                 C   s   | t u r	t|dS tS )Nr3  )r5  r   r   )clssubclassr   r   r   __subclasshook__8  s   
zPathLike.__subclasshook__N)
r   r   r   abcabstractmethodr3  classmethodr9  GenericAlias__class_getitem__r   r   r   r   r5  /  s    

r5  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )_AddedDllDirectoryc                 C   s   || _ || _|| _d S r   )r   _cookie_remove_dll_directory)r   r   cookieZremove_dll_directoryr   r   r   r   C  s   
z_AddedDllDirectory.__init__c                 C   s   |  | j d | _d S r   )rA  r@  r   r   r   r   r   r   G  s   
z_AddedDllDirectory.closec                 C   r%  r   r   r   r   r   r   r&  J  r'  z_AddedDllDirectory.__enter__c                 G   r(  r   r)  r*  r   r   r   r+  L  r   z_AddedDllDirectory.__exit__c                 C   s   | j r	d| j S dS )Nz<AddedDllDirectory({!r})>z<AddedDllDirectory()>)r   r   r   r   r   r   r   N  s   z_AddedDllDirectory.__repr__N)r   r   r   r   r   r&  r+  r   r   r   r   r   r?  B  s    r?  c                 C   s"   	 dd l }|| }t| ||jS )Nr   )r*   Z_add_dll_directoryr?  rA  )r   r*   rB  r   r   r   add_dll_directoryS  s   	
rC  )rL   F)TNF)rs   TNr   )r  r   )r  r   N)ir:  r]   r4   r|   Z_collections_abcr   r   r   ry   r=  builtin_module_namesZ_namesr    r   r$   r
   r   r%   r(   ri   ImportErrorZ	posixpathr   r)   extendr*   ZntpathmodulesZos.pathr   r   r   r   r	   r   r   r   r   r+   r0   setr,   Zsupports_dir_fdZsupports_effective_idsr-   Zsupports_fdZsupports_follow_symlinksr   r   r   rP   rY   r\   re   r_   r:   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   r  r   r  r	  r
  r  r  r  r  platformr  r  r   r4  r`   r   ABCr5  r?  rC  r   r   r   r   <module>   sr   
(











































 
?
R1
8		

 -G




	

	






