o
     JAf                     @   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   /usr/lib/python3.10/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_okASCII)r   splitexistsmakedirsFileExistsErrorr   
isinstancebytesr7   OSErrorisdir)r
   moderM   headtailcdirr   r   r   rQ      s,   	

rQ   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   rO   rU   )r
   rX   rY   r   r   r   
removedirs   s   
r[   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   rO   rP   rQ   r<   r[   rU   )oldnewrX   rY   r   r   r   renames   s   
r^   )rQ   r[   r^   Tc                 C   s&   	 t d| ||| tt| |||S )Nzos.walk)sysaudit_walkfspath)toptopdownonerrorfollowlinksr   r   r   walk  s   ;rg   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   rU   nextStopIterationis_dirappendr
   
is_symlinkr   islinkjoinra   )rc   rd   re   rf   dirsnondirs	walk_dirs
scandir_iterrorentryrj   	walk_intorl   rm   rn   dirnamenew_pathr   r   r   ra   Y  s|   
+

ra   .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__Fry   r{   )r_   r`   rS   inthasattrrb   r4   r:   O_RDONLYstS_ISDIRst_moder   samestat_fwalkrT   close)rc   rd   re   rz   r{   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)r{   rz   )rz   r}   )rB   r
   r   rj   rk   rU   rl   zipr4   r:   r   r   r   rn   r   r   )r   toppathisbytesrd   re   rz   rr   ro   rp   entriesrt   r
   r   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   rv   r   r
   r   maprn   FileNotFoundErrorNotADirectoryErrorrU   )r   r   r   	exec_funcargrest	saved_exc	path_listr"   fullnamee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   ignorePATHs   PATHz*env cannot contain 'PATH' and b'PATH' keys)warningsr   catch_warningssimplefilterBytesWarningget	TypeErrorsupports_bytes_environKeyError
ValueErrorrS   rT   r   r	   rO   r   )r   r   r   
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   
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   rn   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   rS   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)rS   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)rS   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)rS   rT   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   )rb   rS   r.   r   filenamer   errorsr   r   r   %  
   
z_fscodec.<locals>.fsencodec                    r   r   )rb   rS   rT   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   )rS   tupler   r   r   r  r(   r  waitpid
WIFSTOPPEDwaitstatus_to_exitcode)rW   r   r   r   funcpidwpidstsr   r   r   	_spawnvefN  s(   r  c                 C      	 t | ||d tS r   )r  r   rW   r   r   r   r   r   r	  i  r   c                 C      	 t | |||tS r   )r  rC   rW   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,  )rS   r.   r   r   r   
subprocessioPopenPIPE_wrap_closer+  r-  )cmdrW   	bufferingr.  r/  procr   r   r   popen  s(   
r6  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 )r2  c                 C   s   || _ || _d S r   )_stream_proc)r   streamr5  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*      )r7  r   r8  waitr
   )r   
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   )getattrr7  )r   r
   r   r   r   __getattr__  r   z_wrap_close.__getattr__c                 C   r   r   )iterr7  r   r   r   r   r     r   z_wrap_close.__iter__N)	r   r   r   r   r   r>  rC  rE  r   r   r   r   r   r2    s    	r2  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)rS   r~   r   r   r/  text_encodingr:   )fdrW   r4  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 {})
rS   r.   rT   r   rK  r!   r   r   r   r   )r   	path_type	path_reprr   r   r   _fspath  s(   
rN  rb   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   rK  3  s   zPathLike.__fspath__c                 C   s   | t u r	t|dS tS )NrK  )rO  r   r   )clssubclassr   r   r   __subclasshook__8  s   
zPathLike.__subclasshook__N)
r   r   r   abcabstractmethodrK  classmethodrS  GenericAlias__class_getitem__r   r   r   r   rO  /  s    

rO  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   )r[  rZ  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   rA  rB  r   r   r   rC  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>  rC  r   r   r   r   r   rY  B  s    rY  c                 C   s"   	 dd l }|| }t| ||jS )Nr   )r*   Z_add_dll_directoryrY  r[  )r   r*   r\  r   r   r   add_dll_directoryS  s   	
r]  )rL   F)TNF)rx   TNr   )r'  r   )r'  r   N)irT  r_   r4   r   _collections_abcr   r   r   r~   rW  builtin_module_namesZ_namesr    r   r$   r
   r   r%   r(   rk   ImportError	posixpathr   r)   extendr*   ntpathmodulesZos.pathr   r   r   r   r	   r   r   r   r   r+   r0   setr,   supports_dir_fdsupports_effective_idsr-   supports_fdsupports_follow_symlinksr   r   r   rQ   r[   r^   rg   ra   r:   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rT   r   r   r  r   r   r
  r  r  r  r	  r  r  r  r   r"  r$  r%  platformr6  r2  r   rN  rb   r   ABCrO  rY  r]  r   r   r   r   <module>   sr   
(











































 
?
R1
8		

 -G




	

	






