
    d                         d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ej	        Z	ej
        Z
ej        Z G d	 d
ej        ej                  Z G d d          Zdddej        fdZdddej        ddZdS ))create_subprocess_execcreate_subprocess_shell    N   )events)	protocols)streams)tasks)loggerc                   L     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
SubprocessStreamProtocolz0Like StreamReaderProtocol, but for a subprocess.c                     t                                          |           || _        d x| _        x| _        | _        d | _        d| _        g | _        | j	        
                                | _        d S )N)loopF)super__init___limitstdinstdoutstderr
_transport_process_exited	_pipe_fds_loopcreate_future_stdin_closed)selflimitr   	__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/subprocess.pyr   z!SubprocessStreamProtocol.__init__   sl    d###155
5T[4;$!Z5577    c                 D   | j         j        g}| j        |                    d| j                   | j        |                    d| j                   | j        |                    d| j                   d                    d                    |                    S )Nzstdin=zstdout=zstderr=z<{}> )r   __name__r   appendr   r   formatjoin)r   infos     r   __repr__z!SubprocessStreamProtocol.__repr__   s    '(:!KK///000;"KK1$+11222;"KK1$+11222}}SXXd^^,,,r   c                 J   || _         |                    d          }|Yt          j        | j        | j                  | _        | j                            |           | j        	                    d           |                    d          }|Yt          j        | j        | j                  | _
        | j
                            |           | j        	                    d           |                    d          }|$t          j        || d | j                  | _        d S d S )Nr   r   r      r   )protocolreaderr   )r   get_pipe_transportr   StreamReaderr   r   r   set_transportr   r#   r   StreamWriterr   )r   	transportstdout_transportstderr_transportstdin_transports        r   connection_madez(SubprocessStreamProtocol.connection_made(   s,   #$77::'!.T[48J@ @ @DKK%%&6777N!!!$$$$77::'!.T[48J@ @ @DKK%%&6777N!!!$$$#66q99& -o7;5937:? ? ?DJJJ '&r   c                 t    |dk    r| j         }n|dk    r| j        }nd }||                    |           d S d S Nr   r*   )r   r   	feed_data)r   fddatar,   s       r   pipe_data_receivedz+SubprocessStreamProtocol.pipe_data_received@   sS    77[FF1WW[FFFT""""" r   c                    |dk    rw| j         }||                                 |                     |           || j                            d            n&| j                            |           d| j        _        d S |dk    r| j        }n|dk    r| j        }nd }|,||	                                 n|                    |           || j
        v r| j
                            |           |                                  d S )Nr   Fr   r*   )r   closeconnection_lostr   
set_resultset_exception_log_tracebackr   r   feed_eofr   remove_maybe_close_transport)r   r9   excpiper,   s        r   pipe_connection_lostz-SubprocessStreamProtocol.pipe_connection_lostJ   s   77:D

  %%%{"--d3333"00555 5:"1F77[FF1WW[FFF{!!!!$$S)))N!!"%%%##%%%%%r   c                 <    d| _         |                                  d S )NT)r   rD   r   s    r   process_exitedz'SubprocessStreamProtocol.process_exitedh   s"    ###%%%%%r   c                     t          | j                  dk    r)| j        r$| j                                         d | _        d S d S d S )Nr   )lenr   r   r   r=   rI   s    r   rD   z/SubprocessStreamProtocol._maybe_close_transportl   sL    t~!##(<#O!!###"DOOO $###r   c                 &    || j         u r| j        S d S N)r   r   )r   streams     r   _get_close_waiterz*SubprocessStreamProtocol._get_close_waiterq   s     TZ%%  r   )r"   
__module____qualname____doc__r   r'   r5   r;   rG   rJ   rD   rP   __classcell__)r   s   @r   r   r      s        ::8 8 8 8 8- - -? ? ?0# # #& & &<& & &# # #
& & & & & & &r   r   c                   b    e Zd Zd Zd Zed             Zd Zd Zd Z	d Z
d Zd	 Zd
 ZddZdS )Processc                     || _         || _        || _        |j        | _        |j        | _        |j        | _        |                                | _        d S rN   )r   	_protocolr   r   r   r   get_pidpid)r   r1   r+   r   s       r   r   zProcess.__init__w   sI    #!
^
oo$$&&r   c                 2    d| j         j         d| j         dS )N<r!   >)r   r"   rZ   rI   s    r   r'   zProcess.__repr__   s"    84>*88TX8888r   c                 4    | j                                         S rN   )r   get_returncoderI   s    r   
returncodezProcess.returncode   s    --///r   c                 D   K   | j                                          d{V S )z?Wait until the process exit and return the process return code.N)r   _waitrI   s    r   waitzProcess.wait   s,      _**,,,,,,,,,r   c                 :    | j                             |           d S rN   )r   send_signal)r   signals     r   re   zProcess.send_signal   s    ##F+++++r   c                 8    | j                                          d S rN   )r   	terminaterI   s    r   rh   zProcess.terminate   s    !!#####r   c                 8    | j                                          d S rN   )r   killrI   s    r   rj   zProcess.kill   s    r   c                   K   | j                                         }| j                            |           |r#t	          j        d| t          |                     	 | j                                         d {V  n6# t          t          f$ r"}|rt	          j        d| |           Y d }~nd }~ww xY w|rt	          j        d|            | j        
                                 d S )Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin)r   	get_debugr   writer
   debugrL   drainBrokenPipeErrorConnectionResetErrorr=   )r   inputrn   rE   s       r   _feed_stdinzProcess._feed_stdin   s     
$$&&
 	KL7s5zzK K K	H*""$$$$$$$$$$!56 	H 	H 	H H;T3GGG	H
  	>L6===
s   A< <B/B**B/c                 
   K   d S rN    rI   s    r   _noopzProcess._noop   s      tr   c                   K   | j                             |          }|dk    r| j        }n|dk    sJ | j        }| j                                        r |dk    rdnd}t          j        d| |           |                                 d {V }| j                                        r |dk    rdnd}t          j        d| |           |	                                 |S )Nr*   r   r   r   z%r communicate: read %sz%r communicate: close %s)
r   r-   r   r   r   rl   r
   rn   readr=   )r   r9   r1   rO   nameoutputs         r   _read_streamzProcess._read_stream   s      O66r::	77[FF7777[F:!! 	@!Qww88HDL2D$???{{}}$$$$$$:!! 	A!Qww88HDL3T4@@@r   Nc                   K   ||                      |          }n|                                 }| j        |                     d          }n|                                 }| j        |                     d          }n|                                 }t          j        |||           d {V \  }}}|                                  d {V  ||fS r7   )rs   rv   r   r{   r   r	   gatherrc   )r   rr   r   r   r   s        r   communicatezProcess.communicate   s      $$U++EEJJLLE;"&&q))FFZZ\\F;"&&q))FFZZ\\F&+l5&&&I&I I I I I I Ivviikkr   rN   )r"   rQ   rR   r   r'   propertyr`   rc   re   rh   rj   rs   rv   r{   r~   ru   r   r   rV   rV   v   s        ' ' '9 9 9 0 0 X0- - -, , ,$ $ $    "    "           r   rV   c                    	K   t          j                    		fd} 	j        || f|||d| d {V \  }}t          ||	          S )Nc                  &    t                     S Nr)   r   r)   s   r   <lambda>z)create_subprocess_shell.<locals>.<lambda>       7e=A C  C  C r   r   r   r   )r   get_running_loopsubprocess_shellrV   )
cmdr   r   r   r   kwdsprotocol_factoryr1   r+   r   s
       `    @r   r   r      s      "$$DC C C C C 5 5!! ! ! !      Ix 9h---r   )r   r   r   r   c                   
K   t          j                    

fd} 
j        || g|R |||d| d {V \  }}	t          ||	
          S )Nc                  &    t                     S r   r   r)   s   r   r   z(create_subprocess_exec.<locals>.<lambda>   r   r   r   )r   r   subprocess_execrV   )programr   r   r   r   argsr   r   r1   r+   r   s       `     @r   r   r      s       "$$DC C C C C 4 4!! ! F	! ! 	! !      Ix
 9h---r   )__all__
subprocess r   r   r   r	   logr
   PIPESTDOUTDEVNULLFlowControlMixinSubprocessProtocolr   rV   _DEFAULT_LIMITr   r   ru   r   r   <module>r      sK  
=                                   		

b& b& b& b& b&w7(;b& b& b&JR  R  R  R  R  R  R  R j .2$t(/(>	. 	. 	. 	. 8<D(,G4J. . . . . . .r   