
    F\h%                         S SK r S SKrS SKrS SKrS SKrS SKrSSKJr  SSKJr  SSK	J
r
   " S S\R                  5      r " S S	\R                  5      r " S
 S\\R                  5      rg)    N   )	protocols)
transports)loggerc                      ^  \ rS rSr SU 4S jjrS rS rS rS rS r	S r
\R                  4S	 jrS
 rS rS rS r\R&                  S:X  a
  S rS rS rO	S rS rS rS rS rS rS rS rS rS rS rSrU =r $ )BaseSubprocessTransport   c           
        > [         TU ]  U
5        SU l        X l        Xl        S U l        S U l        S U l        / U l        [        R                  " 5       U l        0 U l        SU l        U[        R                  :X  a  S U R                  S'   U[        R                  :X  a  S U R                  S'   U[        R                  :X  a  S U R                  S'    U R                   " SX4XVXxS.UD6  U R
                  R$                  U l        U R
                  U R&                  S'   U R                  R)                  5       (       aD  [+        U[,        [.        45      (       a  UnOUS   n[0        R2                  " SXR                  5        U R                  R5                  U R7                  U	5      5        g !   U R#                  5         e = f)	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                ./usr/lib/python3.13/asyncio/base_subprocess.pyr    BaseSubprocessTransport.__init__   sp    	!

	)//1JOO#!DKKNZ__$!DKKNZ__$!DKKN	KK BTe%B:@B JJNN	$(JJL!::!!$--q'LL5 ))- 	

t226:;	JJLs   F* *F=c                 v   U R                   R                  /nU R                  (       a  UR                  S5        U R                  b  UR                  SU R                   35        U R
                  b  UR                  SU R
                   35        O0U R                  b  UR                  S5        OUR                  S5        U R                  R                  S5      nUb  UR                  SUR                   35        U R                  R                  S5      nU R                  R                  S	5      nUb#  XCL a  UR                  S
UR                   35        OBUb  UR                  SUR                   35        Ub  UR                  SUR                   35        SR                  SR                  U5      5      $ )Nclosedzpid=zreturncode=runningznot startedr   zstdin=r   r   zstdout=stderr=zstdout=zstderr=z<{}> )r5   __name__r   appendr   r   r    getpipeformatjoin)r.   infor   r   r   s        r6   __repr__ BaseSubprocessTransport.__repr__:   sV   ''(<<KK!99 KK$tyyk*+'KK+d&6&6%789YY"KK	"KK&"KK&-.##&"2KK.67!gfkk]34!gfkk]34}}SXXd^,,    c                     [         eN)NotImplementedError)r.   r   r   r   r   r   r   r3   s           r6   r#   BaseSubprocessTransport._startW   s    !!rE   c                     Xl         g rG   r   )r.   r0   s     r6   set_protocol$BaseSubprocessTransport.set_protocolZ   s    !rE   c                     U R                   $ rG   rK   r.   s    r6   get_protocol$BaseSubprocessTransport.get_protocol]   s    ~~rE   c                     U R                   $ rG   )r   rO   s    r6   
is_closing"BaseSubprocessTransport.is_closing`   s    ||rE   c                 \   U R                   (       a  g SU l         U R                  R                  5        HV  nUc  M  U R                  (       d  M  U R                  R	                  5       (       a  M<  UR
                  R                  5         MX     U R                  b|  U R                  cn  U R                  R                  5       cR  U R                  R                  5       (       a  [        R                  " SU 5         U R                  R                  5         g g g g ! [        [        4 a     g f = f)NTz$Close running child process: kill %r)r   r    valuesr   	is_closedr?   r$   r   r   pollr'   r   warningkillProcessLookupErrorPermissionError)r.   protos     r6   r$   BaseSubprocessTransport.closec   s    <<[['')E}
 zzz$**"6"6"8"8

  " * JJ"  ( 

!)zz##%%EtL

! * ) # '8 s   :D D+*D+c                 h    U R                   (       d!  U" SU < 3[        U S9  U R                  5         g g )Nzunclosed transport )source)r   ResourceWarningr$   )r.   _warns     r6   __del__BaseSubprocessTransport.__del__   s+    ||'x0/$OJJL rE   c                     U R                   $ rG   )r   rO   s    r6   get_pidBaseSubprocessTransport.get_pid   s    yyrE   c                     U R                   $ rG   )r   rO   s    r6   get_returncode&BaseSubprocessTransport.get_returncode   s    rE   c                 T    XR                   ;   a  U R                   U   R                  $ g rG   )r    r?   )r.   fds     r6   get_pipe_transport*BaseSubprocessTransport.get_pipe_transport   s#    ;;r?'''rE   c                 2    U R                   c
  [        5       eg rG   )r   r[   rO   s    r6   _check_proc#BaseSubprocessTransport._check_proc   s    ::$&& rE   win32c                 Z    U R                  5         U R                  R                  U5        g rG   )rp   r   send_signalr.   signals     r6   rt   #BaseSubprocessTransport.send_signal   s     JJ""6*rE   c                 X    U R                  5         U R                  R                  5         g rG   )rp   r   	terminaterO   s    r6   ry   !BaseSubprocessTransport.terminate   s    JJ  "rE   c                 X    U R                  5         U R                  R                  5         g rG   )rp   r   rZ   rO   s    r6   rZ   BaseSubprocessTransport.kill   s    JJOOrE   c                     U R                  5          [        R                  " U R                  R                  U5        g ! [
         a     g f = frG   )rp   osrZ   r   r%   r[   ru   s     r6   rt   rw      s;    

/% s   +> 
A
Ac                 B    U R                  [        R                  5        g rG   )rt   rv   SIGTERMrO   s    r6   ry   rz          V^^,rE   c                 B    U R                  [        R                  5        g rG   )rt   rv   SIGKILLrO   s    r6   rZ   r|      r   rE   c                   ^ #     T R                   nT R                  nUR                  b9  UR                  U 4S jUR                  5      I S h  vN u  pEUT R                  S'   UR
                  b9  UR                  U 4S jUR
                  5      I S h  vN u  pEUT R                  S'   UR                  b9  UR                  U 4S jUR                  5      I S h  vN u  pEUT R                  S'   T R                  c   eUR                  T R                  R                  T 5        T R                   H  u  pgUR                  " U/UQ76   M     S T l        Ub(  UR                  5       (       d  UR                  S 5        g g g  GN2 N N! [        [        4 a    e [          a=  nUb0  UR                  5       (       d  UR#                  U5         S nAg  S nAg  S nAg S nAff = f7f)Nc                     > [        T S5      $ )Nr   )WriteSubprocessPipeProtorO   s   r6   <lambda>8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>   s    4T1=rE   r   c                     > [        T S5      $ )Nr   ReadSubprocessPipeProtorO   s   r6   r   r          3D!<rE   r   c                     > [        T S5      $ )Nr   r   rO   s   r6   r   r      r   rE   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.   r1   procr/   _r?   callbackdataexcs	   `        r6   r-   &BaseSubprocessTransport._connect_pipes   s    #	(::D::Dzz% $ 7 7=JJ!    "&A{{& $ 6 6<KK!! ! "&A{{& $ 6 6<KK!! ! "&A&&222NN4>>994@"&"5"5x/$/ #6"&D !&*:*:*<*<!!$' +=!; !! -. 	 	*!&*:*:*<*<$$S)) +=!	*sh   G AF E?AF FAF FA9F ,G ?F F F G )G	G GG c                     U R                   b  U R                   R                  X45        g U R                  R                  " U/UQ76   g rG   )r   r=   r   r   )r.   cbr   s      r6   _callBaseSubprocessTransport._call   s;    *&&z2JJ  +d+rE   c                 p    U R                  U R                  R                  X5        U R                  5         g rG   )r   r   pipe_connection_lost_try_finish)r.   rl   r   s      r6   _pipe_connection_lost-BaseSubprocessTransport._pipe_connection_lost   s&    

4>>66@rE   c                 P    U R                  U R                  R                  X5        g rG   )r   r   pipe_data_received)r.   rl   r   s      r6   _pipe_data_received+BaseSubprocessTransport._pipe_data_received   s    

4>>44b?rE   c                    Uc   U5       eU R                   b   U R                   5       eU R                  R                  5       (       a  [        R                  " SX5        Xl         U R
                  R                  c  XR
                  l        U R                  U R                  R                  5        U R                  5         g )Nz%r exited with return code %r)r   r   r'   r   rB   r   
returncoder   r   process_exitedr   )r.   r   s     r6   _process_exited'BaseSubprocessTransport._process_exited   s    %1z1%'9)9)99'::!!KK7J%::  ( %/JJ!

4>>001rE   c                    #    U R                   b  U R                   $ U R                  R                  5       nU R                  R	                  U5        UI Sh  vN $  N7f)z\Wait until the process exit and return the process return code.

This method is a coroutine.N)r   r   create_futurer   r=   )r.   r1   s     r6   _waitBaseSubprocessTransport._wait   sO      '###))+!!&)||s   AAAAc                     U R                   (       a   eU R                  c  g [        S U R                  R	                  5        5       5      (       a$  SU l         U R                  U R                  S 5        g g )Nc              3   P   #    U  H  nUS L=(       a    UR                   v   M     g 7frG   )disconnected).0ps     r6   	<genexpr>6BaseSubprocessTransport._try_finish.<locals>.<genexpr>  s'      .,1 }//,s   $&T)r!   r   allr    rV   r   _call_connection_lostrO   s    r6   r   #BaseSubprocessTransport._try_finish   se    >>!!# .**,. . .!DNJJt1148.rE   c                     U R                   R                  U5        U R                   H5  nUR                  5       (       a  M  UR	                  U R
                  5        M7     S U l        S U l        S U l        S U l         g ! U R                   H5  nUR                  5       (       a  M  UR	                  U R
                  5        M7     S U l        S U l        S U l        S U l         f = frG   )r   connection_lostr   r   r   r   r   r   )r.   r   r1   s      r6   r   -BaseSubprocessTransport._call_connection_lost  s    
	"NN**3/ ,,''))%%d&6&67 - "&DDJDJ!DN ,,''))%%d&6&67 - "&DDJDJ!DNs   A? ?#C"&<C")
r   r   r!   r   r   r   r    r   r   r   )NN)!r<   
__module____qualname____firstlineno__r   rC   r#   rL   rP   rS   r$   warningswarnrc   rf   ri   rm   rp   sysplatformrt   ry   rZ   r-   r   r   r   r   r   r   r   __static_attributes____classcell__)r5   s   @r6   r   r      s     %))<V-:""B %MM 
 ' ||w	+	#			-	-$(L,@	9" "rE   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
r   i  c                 8    Xl         X l        S U l        SU l        g )NF)r   rl   r?   r   )r.   r   rl   s      r6   r   !WriteSubprocessPipeProto.__init__  s    		!rE   c                     Xl         g rG   )r?   )r.   	transports     r6   r   (WriteSubprocessPipeProto.connection_made  s    	rE   c                 l    SU R                   R                   SU R                   SU R                  < S3$ )N<z fd=z pipe=>)r5   r<   rl   r?   rO   s    r6   rC   !WriteSubprocessPipeProto.__repr__!  s0    4>>**+4ytyym1MMrE   c                 l    SU l         U R                  R                  U R                  U5        S U l        g )NT)r   r   r   rl   )r.   r   s     r6   r   (WriteSubprocessPipeProto.connection_lost$  s)     		''5	rE   c                 L    U R                   R                  R                  5         g rG   )r   r   pause_writingrO   s    r6   r   &WriteSubprocessPipeProto.pause_writing)  s    		))+rE   c                 L    U R                   R                  R                  5         g rG   )r   r   resume_writingrO   s    r6   r   'WriteSubprocessPipeProto.resume_writing,  s    		**,rE   )r   rl   r?   r   N)r<   r   r   r   r   r   rC   r   r   r   r   r   rE   r6   r   r     s!    "N
,-rE   r   c                       \ rS rSrS rSrg)r   i0  c                 P    U R                   R                  U R                  U5        g rG   )r   r   rl   )r.   r   s     r6   data_received%ReadSubprocessPipeProto.data_received3  s    		%%dggt4rE   r   N)r<   r   r   r   r   r   r   rE   r6   r   r   0  s    5rE   r   )r   r   r   r~   rv   r    r   r   logr   SubprocessTransportr   BaseProtocolr   Protocolr   r   rE   r6   <module>r      s]       	  
   F"j<< F"R-y55 -456'005rE   