
    ds
                     8    d Z ddlZ G d d          Zd Z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                       e Zd ZddZd ZdS )PopenNc                 0    || _         || _        d | _        d S N)_cmd_env
returncode)selfcmdenvs      !lib/python3.11/_bootsubprocess.py__init__zPopen.__init__   s    		    c                    t          j                    }|dk    r	 | j        ,t          j        | j        d         | j        | j                   n%t          j        | j        d         | j                   t          j        d           nJ# t          j        d           w xY wt          j        |d          \  }}t          j        |          | _	        | j	        S )Nr      )
osforkr   execver   execv_exitwaitpidwaitstatus_to_exitcoder	   )r
   pid_statuss       r   waitz
Popen.wait   s    gii!889(IdilDItyAAAAHTYq\49555 
3**IAv 7??DOs   AB Br   )__name__
__module____qualname__r   r    r   r   r   r      s7           
    r   r   c                    g }dD ]W\  }}t          t          |          t          |          dz             D ]$}|                    t          |                     %X|                    d           d                    |          }t          | t          t          f          r| }nt          | t                    r| g}ndS |D ],}t          |t                    s dS |s dS |D ]
}||vr  dS -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args          r   
_check_cmdr8   $   s2   J; ' 'tE

CIIM22 	' 	'Bc"gg&&&&	'e$$J#t}%% 

	C		 U

u  #s## 	55 	55 	 	B##uuu $	 4r   c                    |rt          t          |                    t          |           st          d|           d}t	          | t
                    sd                    |           } |  d| } 	 t          j        |           }t          j	        |          }|rt          d| d|          	 t          |d          5 }|                                }d d d            n# 1 swxY w Y   n# t          $ r d}Y nw xY w	 t          j        |           n:# t          $ r Y n.w xY w# 	 t          j        |           w # t          $ r Y w w xY wxY w|S )	Nzunsupported command: zcheck_output.tmp z >zCommand z returned non-zero exit status rbr   )NotImplementedErrorreprr8   
ValueErrorr.   r1   r-   r   systemr   openreadFileNotFoundErrorunlinkOSError)r   kwargstmp_filenamer   exitcodefpstdouts          r   check_outputrJ   B   s    0!$v,,///c?? :888999%Lc3 hhsmm
"
"L
"
"C3,V44 	: 9 9 9,49 9 : : :	lD)) #R# # # # # # # # # # # # # # #  	 	 	FFF		Il#### 	 	 	D		Il#### 	 	 	D	 Ms   4?D) 4C1 C%C1 %C))C1 ,C)-C1 0D) 1D =D) ?D  D) D 
D&%D&)E+E ?E 
E
EEE)__doc__r   r   r8   rJ   r    r   r   <module>rL      sj    
 
			
       2  <    r   