
    d"                         d dl Z d dlZd dlZddlmZ ddlmZ ddlmZ  G d dej                  Z	 G d d	ej
                  Z G d
 deej                  ZdS )    N   )	protocols)
transports)loggerc                        e Zd Z	 d fd	Zd Zd Zd Zd Zd Zd Z	e
j        fd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )BaseSubprocessTransportNc           
      D   t                                          |
           d| _        || _        || _        d | _        d | _        d | _        g | _        t          j
                    | _        i | _        d| _        |t          j        k    r
d | j        d<   |t          j        k    r
d | j        d<   |t          j        k    r
d | j        d<   	  | j        d||||||d| n#  |                                   xY w| j        j        | _        | j        | j        d<   | j                                        rBt+          |t,          t.          f          r|}n|d         }t1          j        d|| j                   | j                            |                     |	                     d S )	NFr   r      )argsshellstdinstdoutstderrbufsize
subprocesszprocess %r created: pid %s )super__init___closed	_protocol_loop_proc_pid_returncode_exit_waiterscollectionsdeque_pending_calls_pipes	_finishedr   PIPE_startclosepid_extra	get_debug
isinstancebytesstrr   debugcreate_task_connect_pipes)selfloopprotocolr   r   r   r   r   r   waiterextrakwargsprogram	__class__s                )  /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/asyncio/base_subprocess.pyr   z BaseSubprocessTransport.__init__   s    	!

	)/11JO##!DKNZ_$$!DKNZ_$$!DKN	DK BTeF%wB B:@B B B B	JJLLLJN	$(JL!:!! 	-$-- "q'L5 $)- - - 	
t226::;;;;;s   	C C5c                 8   | j         j        g}| j        r|                    d           | j        |                    d| j                    | j        |                    d| j                    n2| j        |                    d           n|                    d           | j                            d          }||                    d|j                    | j                            d          }| j                            d	          }|"||u r|                    d
|j                    n>||                    d|j                    ||                    d|j                    d	                    d
                    |                    S )Nclosedzpid=zreturncode=runningznot startedr   zstdin=r   r
   zstdout=stderr=zstdout=zstderr=z<{}> )r4   __name__r   appendr   r   r   getpipeformatjoin)r-   infor   r   r   s        r5   __repr__z BaseSubprocessTransport.__repr__7   s   '(< 	"KK!!!9 KK*ty**+++'KK8d&6889999Y"KK	""""KK&&&""KK---...####&F"2"2KK6667777!3fk33444!3fk33444}}SXXd^^,,,    c                     t           N)NotImplementedError)r-   r   r   r   r   r   r   r2   s           r5   r"   zBaseSubprocessTransport._startT   s    !!rB   c                     || _         d S rD   r   )r-   r/   s     r5   set_protocolz$BaseSubprocessTransport.set_protocolW   s    !rB   c                     | j         S rD   rG   r-   s    r5   get_protocolz$BaseSubprocessTransport.get_protocolZ   s
    ~rB   c                     | j         S rD   )r   rJ   s    r5   
is_closingz"BaseSubprocessTransport.is_closing]   s
    |rB   c                    | j         rd S d| _         | j                                        D ]}||j                                         | j        {| j        v| j                                        _| j        	                                rt          j        d|            	 | j                                         d S # t          $ r Y d S w xY wd S d S d S )NTz$Close running child process: kill %r)r   r   valuesr=   r#   r   r   pollr   r&   r   warningkillProcessLookupError)r-   protos     r5   r#   zBaseSubprocessTransport.close`   s    < 	F['')) 	 	E}JJ" ( 
!!)z##%% MEtLLL
!!!!!%    #"(( *)s   B: :
CCc                 l    | j         s, |d| t          |            |                                  d S d S )Nzunclosed transport )source)r   ResourceWarningr#   )r-   _warns     r5   __del__zBaseSubprocessTransport.__del__{   sG    | 	E000/$OOOOJJLLLLL	 	rB   c                     | j         S rD   )r   rJ   s    r5   get_pidzBaseSubprocessTransport.get_pid   s
    yrB   c                     | j         S rD   )r   rJ   s    r5   get_returncodez&BaseSubprocessTransport.get_returncode   s    rB   c                 <    || j         v r| j         |         j        S d S rD   )r   r=   )r-   fds     r5   get_pipe_transportz*BaseSubprocessTransport.get_pipe_transport   s#    ;r?''4rB   c                 0    | j         t                      d S rD   )r   rS   rJ   s    r5   _check_procz#BaseSubprocessTransport._check_proc   s    :$&&& rB   c                 b    |                                   | j                            |           d S rD   )rb   r   send_signal)r-   signals     r5   rd   z#BaseSubprocessTransport.send_signal   s0    
v&&&&&rB   c                 `    |                                   | j                                         d S rD   )rb   r   	terminaterJ   s    r5   rg   z!BaseSubprocessTransport.terminate   s.    
rB   c                 `    |                                   | j                                         d S rD   )rb   r   rR   rJ   s    r5   rR   zBaseSubprocessTransport.kill   s,    
rB   c                 .   K   	  j         } j        }|j        1|                     fd|j                   d {V \  }}| j        d<   |j        1|                     fd|j                   d {V \  }}| j        d<   |j        1|                     fd|j                   d {V \  }}| j        d<    j        J |	                     j
        j                     j        D ]\  }} |j	        |g|R   d  _        |+|                                s|                    d            d S d S d S # t          t          f$ r  t           $ rB}|/|                                s!|                    |           Y d }~d S Y d }~d S Y d }~d S d }~ww xY w)Nc                  $    t           d          S )Nr   )WriteSubprocessPipeProtorJ   s   r5   <lambda>z8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>   s    4T1== rB   r   c                  $    t           d          S )Nr   ReadSubprocessPipeProtorJ   s   r5   rl   z8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>       3D!<< rB   r   c                  $    t           d          S )Nr
   rn   rJ   s   r5   rl   z8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>   rp   rB   r
   )r   r   r   connect_write_piper   r   connect_read_piper   r   	call_soonr   connection_made	cancelled
set_result
SystemExitKeyboardInterruptBaseExceptionset_exception)	r-   r0   procr.   _r=   callbackdataexcs	   `        r5   r,   z&BaseSubprocessTransport._connect_pipes   st     #	(:D:Dz% $ 7 7====J!  !             4 "&A{& $ 6 6<<<<K!! !! ! ! ! ! ! !4 "&A{& $ 6 6<<<<K!! !! ! ! ! ! ! !4 "&A&222NN4>94@@@"&"5 0 0$x/$/////"&D !&*:*:*<*<!!!$''''' "!!! -. 	 	 	 	* 	* 	*!&*:*:*<*<!$$S))))))))) "!!!!!!!!!!!	*s   DD7 7F+FFc                 v    | j         | j                             ||f           d S  | j        j        |g|R   d S rD   )r   r;   r   rt   )r-   cbr   s      r5   _callzBaseSubprocessTransport._call   sO    *&&Dz22222 DJ +d++++++rB   c                 p    |                      | j        j        ||           |                                  d S rD   )r   r   pipe_connection_lost_try_finish)r-   r_   r   s      r5   _pipe_connection_lostz-BaseSubprocessTransport._pipe_connection_lost   s5    

4>6C@@@rB   c                 H    |                      | j        j        ||           d S rD   )r   r   pipe_data_received)r-   r_   r   s      r5   _pipe_data_receivedz+BaseSubprocessTransport._pipe_data_received   s#    

4>4b$?????rB   c                 L   |
J |            | j         J | j                     | j                                        rt          j        d| |           || _         | j        j        || j        _        |                     | j        j	                   | 
                                 d S )Nz%r exited with return code %r)r   r   r&   r   r@   r   
returncoder   r   process_exitedr   )r-   r   s     r5   _process_exitedz'BaseSubprocessTransport._process_exited   s    %%z%%%'')9''':!! 	KK7zJJJ%: ( %/DJ!

4>0111rB   c                    K   | j         | j         S | j                                        }| j                            |           | d{V S )zdWait until the process exit and return the process return code.

        This method is a coroutine.N)r   r   create_futurer   r;   )r-   r0   s     r5   _waitzBaseSubprocessTransport._wait   sV       '##))++!!&)))||||||rB   c                     | j         rJ | j        d S t          d | j                                        D                       r$d| _         |                     | j        d            d S d S )Nc              3   ,   K   | ]}|d uo|j         V  d S rD   )disconnected).0ps     r5   	<genexpr>z6BaseSubprocessTransport._try_finish.<locals>.<genexpr>   sA       . . }/ . . . . . .rB   T)r    r   allr   rO   r   _call_connection_lostrJ   s    r5   r   z#BaseSubprocessTransport._try_finish   s    >!!!#F . .**,,. . . . . 	9!DNJJt1488888	9 	9rB   c                    	 | j                             |           | j        D ]0}|                                s|                    | j                   1d | _        d | _        d | _        d | _         d S # | j        D ]0}|                                s|                    | j                   1d | _        d | _        d | _        d | _         w xY wrD   )r   connection_lostr   rv   rw   r   r   r   )r-   r   r0   s      r5   r   z-BaseSubprocessTransport._call_connection_lost   s    
	"N**3/// , 8 8'')) 8%%d&6777!%DDJDJ!DNNN , 8 8'')) 8%%d&6777!%DDJDJ!DN!!!!s   A2 2AC)NN)r:   
__module____qualname__r   rA   r"   rH   rK   rM   r#   warningswarnrY   r[   r]   r`   rb   rd   rg   rR   r,   r   r   r   r   r   r   r   __classcell__)r4   s   @r5   r   r   
   s        %))< )< )< )< )< )<V- - -:" " "" " "      6 %M    
         ' ' '' ' '    $( $( $(L, , ,  @ @ @  	 	 	9 9 9" " " " " " "rB   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )rk   c                 >    || _         || _        d | _        d| _        d S )NF)r|   r_   r=   r   )r-   r|   r_   s      r5   r   z!WriteSubprocessPipeProto.__init__  s%    		!rB   c                     || _         d S rD   )r=   )r-   	transports     r5   ru   z(WriteSubprocessPipeProto.connection_made  s    			rB   c                 B    d| j         j         d| j         d| j        dS )N<z fd=z pipe=>)r4   r:   r_   r=   rJ   s    r5   rA   z!WriteSubprocessPipeProto.__repr__
  s,    M4>*MMMMtyMMMMrB   c                 b    d| _         | j                            | j        |           d | _        d S )NT)r   r|   r   r_   )r-   r   s     r5   r   z(WriteSubprocessPipeProto.connection_lost  s/     	''555			rB   c                 B    | j         j                                         d S rD   )r|   r   pause_writingrJ   s    r5   r   z&WriteSubprocessPipeProto.pause_writing  s    	))+++++rB   c                 B    | j         j                                         d S rD   )r|   r   resume_writingrJ   s    r5   r   z'WriteSubprocessPipeProto.resume_writing  s    	**,,,,,rB   N)	r:   r   r   r   ru   rA   r   r   r   r   rB   r5   rk   rk      sq        " " "  N N N  
, , ,- - - - -rB   rk   c                       e Zd Zd ZdS )ro   c                 F    | j                             | j        |           d S rD   )r|   r   r_   )r-   r   s     r5   data_receivedz%ReadSubprocessPipeProto.data_received  s"    	%%dgt44444rB   N)r:   r   r   r   r   rB   r5   ro   ro     s#        5 5 5 5 5rB   ro   )r   r   r    r   r   logr   SubprocessTransportr   BaseProtocolrk   Protocolro   r   rB   r5   <module>r      s                              r" r" r" r" r"j< r" r" r"j- - - - -y5 - - -45 5 5 5 56'05 5 5 5 5rB   