o
    …9js
  ã                   @   s.   d Z ddlZG dd„ dƒZdd„ Zdd„ ZdS )	zÔ
Basic subprocess implementation for POSIX which only uses os functions. Only
implement features required by setup.py to build C extension modules when
subprocess is unavailable. setup.py is not used on Windows.
é    Nc                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPopenNc                 C   s   || _ || _d | _d S ©N)Ú_cmdÚ_envÚ
returncode)ÚselfÚcmdÚenv© r
   ú&/usr/lib/python3.10/_bootsubprocess.pyÚ__init__   s   
zPopen.__init__c              	   C   sœ   t  ¡ }|dkr=z.| jd urt  | jd | j| j¡ nt  | jd | j¡ W t  d¡ | j	S W t  d¡ | j	S t  d¡ w t  |d¡\}}t  |¡| _	| j	S )Nr   é   )
ÚosÚforkr   Úexecver   ÚexecvÚ_exitÚwaitpidÚwaitstatus_to_exitcoder   )r   ÚpidÚ_Ústatusr
   r
   r   Úwait   s   

ö
úz
Popen.waitr   )Ú__name__Ú
__module__Ú__qualname__r   r   r
   r
   r
   r   r      s    
r   c                 C   s¼   g }dD ]\}}t t|ƒt|ƒd ƒD ]	}| t|ƒ¡ qq| d¡ d |¡}t| ttfƒr2| }nt| tƒr;| g}ndS |D ]}t|tƒsI dS |sN dS |D ]
}||vrZ  dS qPq?dS )N))ÚaÚz)ÚAÚZ)Ú0Ú9r   z./-Ú FT)	ÚrangeÚordÚappendÚchrÚjoinÚ
isinstanceÚtupleÚlistÚstr)r   Ú
safe_charsÚfirstÚlastÚchÚ
check_strsÚargr
   r
   r   Ú
_check_cmd$   s.   ÿ



ÿÿr2   c                 K   s  |rt t|ƒƒ‚t| ƒstd| ›�ƒ‚d}t| tƒsd | ¡} | › d|› �} zQt | ¡}t 	|¡}|r=td| ›d|›�ƒ‚zt
|dƒ�}| ¡ }W d   ƒ n1 sRw   Y  W n tyc   d}Y nw W zt |¡ W |S  tyw   Y |S w zt |¡ W w  tyˆ   Y w w )	Nzunsupported command: zcheck_output.tmpú z >zCommand z returned non-zero exit status Úrbó    )ÚNotImplementedErrorÚreprr2   Ú
ValueErrorr(   r+   r'   r   Úsystemr   ÚopenÚreadÚFileNotFoundErrorÚunlinkÚOSError)r   ÚkwargsÚtmp_filenamer   ÚexitcodeÚfpÚstdoutr
   r
   r   Úcheck_outputB   sH   




ÿ
ÿ€ÿ€ýýþÿrD   )Ú__doc__r   r   r2   rD   r
   r
   r
   r   Ú<module>   s
    