ó
    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ˆŒ
Ð5�T”[ 4¤;ØˆŒØ$ˆÔØˆŒØ!ŸZ™Z×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Ž   € Ø—‘×'Ñ'Ð(ˆØ�:‰:Ñ!Ø�K‰K˜& §¡¡Ð/Ô0Ø�;‰;Ñ"Ø�K‰K˜' $§+¡+¡Ð1Ô2Ø�;‰;Ñ"Ø�K‰K˜' $§+¡+¡Ð1Ô2Ø�}‰}˜SŸX™X d›^Ó,Ð,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·[±[Ø48·J±Jñ@ˆDŒKà�K‰K×%Ñ%Ð&6Ô7Ø�N‰N×!Ñ! !Ô$à$×7Ñ7¸Ó:ÐØÑ'Ü!×.Ò.°T·[±[Ø48·J±Jñ@ˆDŒKà�K‰K×%Ñ%Ð&6Ô7Ø�N‰N×!Ñ! !Ô$à#×6Ñ6°qÓ9ˆØÑ&Ü ×-Ò-¨oØ7;Ø59Ø37·:±:ñ?ˆD�Jð '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Ø�1‹WØ—[‘[‰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Ø�1‹WØ—[‘[‰FàˆFØÑØ‰{Ø—‘Õ!à×$Ñ$ SÔ)à—‘ÓØ�N‰N×!Ñ! "Ô%Ø×#Ñ#Õ%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�~‰~Ó !Ó#¨×(<×(<Ø�O‰O×!Ñ!Ô#Ø"ˆD�Oð )=Ð#r!   c                 ó8   • XR                   L a  U R                  $ g ©N)r   r   )r   Ústreams     r   Ú_get_close_waiterÚ*SubprocessStreamProtocol._get_close_waiterq   s   € Ø—Z‘ZÒØ×%Ñ%Ð%ð  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)ÚProcessév   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   € Ø#ŒØ!ŒØŒ
Ø—^‘^ˆŒ
Ø—o‘oˆŒØ—o‘oˆŒØ×$Ñ$Ó&ˆ�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—>‘>×*Ñ*Ð+¨1¨T¯X©X¨J°aÐ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ØÑ Ø—
‘
× Ñ  Ô'ÞÜ—L’LØ?ÀÄsÈ5ÃzôSð —*‘*×"Ñ"Ó$×$Ð$ö Ü�LŠLÐ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½   é € Ø—O‘O×6Ñ6°rÓ:ˆ	Ø�‹7Ø—[‘[‰Fà˜“7ˆN�7Ø—[‘[ˆFØ�:‰:×Ñ×!Ñ!Ø! Q›w‘8¨HˆDÜ�LŠLÐ2°DÔ?Ø—{‘{“}×$ˆØ�:‰:×Ñ×!Ñ!Ø! Q›w‘8¨HˆDÜ�LŠLÐ3°TÔ@Ø�‰ÔØˆñ %ù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à—J‘J“LˆEØ�;‰;Ñ"Ø×&Ñ& qÓ)‰Fà—Z‘Z“\ˆFØ�;‰;Ñ"Ø×&Ñ& qÓ)‰Fà—Z‘Z“\ˆFÜ&+§l¢l°5À&Ó&I× IÑˆ�vØ�i‰i‹k×ÐØÐÐñ !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>Ñ   ó   ø€ Ô7¸eØ=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‰[        X‰T
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Ø(,°G×4JÑ4Jö.r!   