
    F\h9                     6   S r SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \R                  r	\R                  r
\R                  r " S	 S
\R                  \R                  5      r " S S5      rSSS\R                   4S jrSSS\R                   S.S jrg))create_subprocess_execcreate_subprocess_shell    N   )events)	protocols)streams)tasks)loggerc                   V   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rSrU =r$ )SubprocessStreamProtocol   z0Like StreamReaderProtocol, but for a subprocess.c                    > [         TU ]  US9  Xl        S =U l        =U l        U l        S U l        SU l        / U l        U R                  R                  5       U l        g )N)loopF)super__init___limitstdinstdoutstderr
_transport_process_exited	_pipe_fds_loopcreate_future_stdin_closed)selflimitr   	__class__s      )/usr/lib/python3.13/asyncio/subprocess.pyr   !SubprocessStreamProtocol.__init__   sX    d#155
5T[4;$!ZZ557    c                 x   U R                   R                  /nU R                  b  UR                  SU R                  < 35        U R                  b  UR                  SU R                  < 35        U R
                  b  UR                  SU R
                  < 35        SR                  SR                  U5      5      $ )Nzstdin=zstdout=zstderr=z<{}> )r   __name__r   appendr   r   formatjoin)r   infos     r   __repr__!SubprocessStreamProtocol.__repr__   s    ''(::!KK&/0;;"KK'$++12;;"KK'$++12}}SXXd^,,r!   c                 f   Xl         UR                  S5      nUbd  [        R                  " U R                  U R
                  S9U l        U R                  R                  U5        U R                  R                  S5        UR                  S5      nUbd  [        R                  " U R                  U R
                  S9U l
        U R                  R                  U5        U R                  R                  S5        UR                  S5      nUb'  [        R                  " UU S U R
                  S9U l        g g )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_made(SubprocessStreamProtocol.connection_made(   s    #$77:'!..T[[48JJ@DKKK%%&67NN!!!$$77:'!..T[[48JJ@DKKK%%&67NN!!!$#66q9& --o7;5937::?DJ 'r!   c                 ~    US:X  a  U R                   nOUS:X  a  U R                  nOS nUb  UR                  U5        g g Nr   r-   )r   r   	feed_data)r   fddatar/   s       r   pipe_data_received+SubprocessStreamProtocol.pipe_data_received@   s@    7[[F1W[[FFT" r!   c                    US:X  a|  U R                   nUb  UR                  5         U R                  U5        Uc  U R                  R	                  S 5        g U R                  R                  U5        SU R                  l        g US:X  a  U R                  nOUS:X  a  U R                  nOS nUb%  Uc  UR                  5         OUR                  U5        XR                  ;   a  U R                  R                  U5        U R                  5         g )Nr   Fr   r-   )r   closeconnection_lostr   
set_resultset_exception_log_tracebackr   r   feed_eofr   remove_maybe_close_transport)r   r=   excpiper/   s        r   pipe_connection_lost-SubprocessStreamProtocol.pipe_connection_lostJ   s    7::D

  %{""--d3 	 ""005 5:""17[[F1W[[FF{!$$S)NN!!"%##%r!   c                 2    SU l         U R                  5         g )NT)r   rI   r   s    r   process_exited'SubprocessStreamProtocol.process_exitedh   s    ###%r!   c                     [        U R                  5      S:X  a4  U R                  (       a"  U R                  R	                  5         S U l        g g g )Nr   )lenr   r   r   rB   rO   s    r   rI   /SubprocessStreamProtocol._maybe_close_transportl   s:    t~~!#(<(<OO!!#"DO )=#r!   c                 8    XR                   L a  U R                  $ g N)r   r   )r   streams     r   _get_close_waiter*SubprocessStreamProtocol._get_close_waiterq   s    ZZ%%%  r!   )r   r   r   r   r   r   r   r   )r$   
__module____qualname____firstlineno____doc__r   r)   r8   r?   rL   rP   rI   rX   __static_attributes____classcell__)r   s   @r   r   r      s3    :8-?0#&<&#
& &r!   r   c                   d    \ rS rSrS rS r\S 5       rS rS r	S r
S rS	 rS
 rS rSS jrSrg)Processv   c                     Xl         X l        X0l        UR                  U l        UR                  U l        UR
                  U l        UR                  5       U l        g rV   )r   	_protocolr   r   r   r   get_pidpid)r   r4   r.   r   s       r   r   Process.__init__w   sB    #!
^^
oooo$$&r!   c                 P    SU R                   R                   SU R                   S3$ )N<r#   >)r   r$   rf   rO   s    r   r)   Process.__repr__   s&    4>>**+1TXXJa88r!   c                 6    U R                   R                  5       $ rV   )r   get_returncoderO   s    r   
returncodeProcess.returncode   s    --//r!   c                 R   #    U R                   R                  5       I Sh  vN $  N7f)z?Wait until the process exit and return the process return code.N)r   _waitrO   s    r   waitProcess.wait   s     __**,,,,s   '%'c                 :    U R                   R                  U5        g rV   )r   send_signal)r   signals     r   ru   Process.send_signal   s    ##F+r!   c                 8    U R                   R                  5         g rV   )r   	terminaterO   s    r   ry   Process.terminate   s    !!#r!   c                 8    U R                   R                  5         g rV   )r   killrO   s    r   r|   Process.kill   s    r!   c                   #    U R                   R                  5       n UbC  U R                  R                  U5        U(       a!  [        R
                  " SU [        U5      5        U R                  R                  5       I S h  vN   U(       a  [        R
                  " SU 5        U R                  R                  5         g  N=! [        [        4 a(  nU(       a  [        R
                  " SX5         S nANnS nAff = f7f)Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin)r   	get_debugr   writer
   debugrS   drainBrokenPipeErrorConnectionResetErrorrB   )r   inputr   rJ   s       r   _feed_stdinProcess._feed_stdin   s     

$$&	H 

  'LL?s5zS **""$$$ LL6=

 %!56 	H ;TG		HsA   C<A#C B?C 9C<?C C9C4/C<4C99C<c                    #    g 7frV    rO   s    r   _noopProcess._noop   s     s   c                   #    U R                   R                  U5      nUS:X  a  U R                  nOUS:X  d   eU R                  nU R                  R                  5       (       a!  US:X  a  SOSn[        R                  " SX5        UR                  5       I S h  vN nU R                  R                  5       (       a!  US:X  a  SOSn[        R                  " SX5        UR                  5         U$  NV7f)Nr-   r   r   r   z%r communicate: read %sz%r communicate: close %s)
r   r0   r   r   r   r   r
   r   readrB   )r   r=   r4   rW   nameoutputs         r   _read_streamProcess._read_stream   s     OO66r:	7[[F7N7[[F::!!!Qw8HDLL2D?{{}$::!!!Qw8HDLL3T@ %s   BC1C/AC1Nc                   #    U R                   b  U R                  U5      nOU R                  5       nU R                  b  U R	                  S5      nOU R                  5       nU R
                  b  U R	                  S5      nOU R                  5       n[        R                  " X#U5      I S h  vN u  p#nU R                  5       I S h  vN   X44$  N" N	7fr;   )	r   r   r   r   r   r   r	   gatherrr   )r   r   r   r   r   s        r   communicateProcess.communicate   s     ::!$$U+EJJLE;;"&&q)FZZ\F;;"&&q)FZZ\F&+ll5&&I Iviik !Js$   B(C*C+CCCC)r   rd   r   rf   r   r   r   rV   )r$   rZ   r[   r\   r   r)   propertyrn   rr   ru   ry   r|   r   r   r   r   r^   r   r!   r   ra   ra   v   sH    '9 0 0-,$(" r!   ra   c                    ^^	#    [         R                  " 5       m	UU	4S jnT	R                  " UU 4XUS.UD6I S h  vN u  px[        XxT	5      $  N7f)Nc                     > [        T TS9$ Nr,   r   r,   s   r   <lambda>)create_subprocess_shell.<locals>.<lambda>       7e=A Cr!   r   r   r   )r   get_running_loopsubprocess_shellra   )
cmdr   r   r   r   kwdsprotocol_factoryr4   r.   r   s
       `    @r   r   r      sd     ""$DC $ 5 5!! ! I 9--	s   7AAA)r   r   r   r   c                   ^^
#    [         R                  " 5       m
UU
4S jnT
R                  " UU /UQ7XUS.UD6I S h  vN u  p[        XT
5      $  N7f)Nc                     > [        T TS9$ r   r   r,   s   r   r   (create_subprocess_exec.<locals>.<lambda>   r   r!   r   )r   r   subprocess_execra   )programr   r   r   r   argsr   r   r4   r.   r   s       `     @r   r   r      sp      ""$DC $ 4 4!! 	! 	! I
 9--s   :AAA)__all__
subprocess r   r   r   r	   logr
   PIPESTDOUTDEVNULLFlowControlMixinSubprocessProtocolr   ra   _DEFAULT_LIMITr   r   r   r!   r   <module>r      s   
=       			


b&w77(;;b&JU  U p .2$t(/(>(>	. 8<D(,G4J4J.r!   