a
    Ifs
                     @   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	    lib/python3.9/_bootsubprocess.py__init__   s    zPopen.__init__c              	   C   s   t  }|dkrfzF| jd ur6t | jd | j| j nt | jd | j W t d qt d 0 nt |d\}}t || _	| j	S )Nr      )
osforkr   execver   execv_exitwaitpidwaitstatus_to_exitcoder   )r   pid_statusr	   r	   r
   wait   s    
z
Popen.wait)N)__name__
__module____qualname__r   r   r	   r	   r	   r
   r      s   
r   c                 C   s   g }dD ]2\}}t t|t|d D ]}|t| q&q|d d|}t| ttfrd| }nt| trv| g}ndS |D ]8}t|ts dS |s dS |D ]}||vr  dS qq~dS )N))az)AZ)09r   z./- FT)	rangeordappendchrjoin
isinstancetupleliststr)r   Z
safe_charsfirstZlastZchZ
check_strsargr	   r	   r
   
_check_cmd$   s(    



r-   c                 K   s  |rt t|t| s&td| d}t| ts>d| } |  d| } zt| }t	|}|rztd| d|z6t
|d}| }W d    n1 s0    Y  W n ty   d}Y n0 W zt| W n ty   Y n0 n&zt| W n ty   Y n0 0 |S )	Nzunsupported command: zcheck_output.tmp z >zCommand z returned non-zero exit status rb    )NotImplementedErrorreprr-   
ValueErrorr'   r*   r&   r   systemr   openreadFileNotFoundErrorunlinkOSError)r   kwargsZtmp_filenamer   Zexitcodefpstdoutr	   r	   r
   check_outputB   s:    




*r=   )__doc__r   r   r-   r=   r	   r	   r	   r
   <module>   s   