§
    (¶Õií  ã                   óú   — 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      €ú)/usr/lib/python3.11/asyncio/subprocess.pyr   z!SubprocessStreamProtocol.__init__   sl   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØˆŒØ15Ð5ˆŒ
Ð5�T”[ 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š   € Ø”Ô'Ð(ˆØŒ:Ð!Ø�KŠKÐ/ ¤Ð/Ð/Ñ0Ô0Ð0ØŒ;Ð"Ø�KŠKÐ1 $¤+Ð1Ð1Ñ2Ô2Ð2ØŒ;Ð"Ø�KŠKÐ1 $¤+Ð1Ð1Ñ2Ô2Ð2Ø�}Š}˜SŸXšX d™^œ^Ñ,Ô,Ð,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´[Ø48´Jð@ñ @ô @ˆDŒKàŒK×%Ò%Ð&6Ñ7Ô7Ð7ØŒN×!Ò! !Ñ$Ô$Ð$à$×7Ò7¸Ñ:Ô:ÐØÐ'Ý!Ô.°T´[Ø48´Jð@ñ @ô @ˆDŒKàŒK×%Ò%Ð&6Ñ7Ô7Ð7ØŒN×!Ò! !Ñ$Ô$Ð$à#×6Ò6°qÑ9Ô9ˆØÐ&Ý Ô-¨oØ7;Ø59Ø37´:ð?ñ ?ô ?ˆDŒJˆJˆJð 'Ð&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   € Ø�Š7ˆ7Ø”[ˆFˆFØ�1ŠWˆWØ”[ˆFˆFàˆFØÐØ×Ò˜TÑ"Ô"Ð"Ð"Ð"ð Ðr   c                 óî  — |dk    rk| j         }|�|                     ¦   «          |                      |¦  «         |€| j                             d ¦  «         n| j                             |¦  «         d S |dk    r| j        }n|dk    r| j        }nd }|�,|€|                     ¦   «          n|                     |¦  «         || j	        v r| j	         
                    |¦  «         |                      ¦   «          d S )Nr   r   r*   )r   ÚcloseÚconnection_lostr   Ú
set_resultÚset_exceptionr   r   Úfeed_eofr   ÚremoveÚ_maybe_close_transport)r   r9   ÚexcÚpiper,   s        r   Úpipe_connection_lostz-SubprocessStreamProtocol.pipe_connection_lostJ   s
  € Ø�Š7ˆ7Ø”:ˆDØÐØ—
’
‘”�Ø× Ò  Ñ%Ô%Ð%Øˆ{ØÔ"×-Ò-¨dÑ3Ô3Ð3Ð3àÔ"×0Ò0°Ñ5Ô5Ð5ØˆFØ�Š7ˆ7Ø”[ˆFˆFØ�1ŠWˆWØ”[ˆFˆFàˆFØÐØˆ{Ø—’Ñ!Ô!Ð!Ð!à×$Ò$ SÑ)Ô)Ð)à�”ÐÐØŒN×!Ò! "Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c                 ó<   — d| _         |                      ¦   «          d S )NT)r   rC   ©r   s    r   Úprocess_exitedz'SubprocessStreamProtocol.process_exitede   s"   € Ø#ˆÔØ×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c                 óŒ   — t          | j        ¦  «        dk    r)| j        r$| j                             ¦   «          d | _        d S d S d S )Nr   )Úlenr   r   r   r=   rH   s    r   rC   z/SubprocessStreamProtocol._maybe_close_transporti   sL   € ÝˆtŒ~ÑÔ !Ò#Ð#¨Ô(<Ð#ØŒO×!Ò!Ñ#Ô#Ð#Ø"ˆDŒOˆOˆOð $Ð#Ð#Ð#r   c                 ó&   — || j         u r| j        S d S ©N)r   r   )r   Ústreams     r   Ú_get_close_waiterz*SubprocessStreamProtocol._get_close_waitern   s    € Ø�T”ZÐÐØÔ%Ð%ð  Ðr   )r"   Ú
__module__Ú__qualname__Ú__doc__r   r'   r5   r;   rF   rI   rC   rO   Ú__classcell__)r   s   @r   r   r      s§   ø€ € € € € à:Ð:ð8ð 8ð 8ð 8ð 8ð-ð -ð -ð?ð ?ð ?ð0#ð #ð #ð&ð &ð &ð6&ð &ð &ð#ð #ð #ð
&ð &ð &ð &ð &ð &ð &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 rM   )r   Ú	_protocolr   r   r   r   Úget_pidÚpid)r   r1   r+   r   s       r   r   zProcess.__init__t   sI   € Ø#ˆŒØ!ˆŒØˆŒ
Ø”^ˆŒ
Ø”oˆŒØ”oˆŒØ×$Ò$Ñ&Ô&ˆŒˆˆr   c                 ó2   — d| j         j        › d| j        › d�S )Nú<r!   ú>)r   r"   rY   rH   s    r   r'   zProcess.__repr__}   s"   € Ø8�4”>Ô*Ð8Ð8¨T¬XÐ8Ð8Ð8Ð8r   c                 ó4   — | j                              ¦   «         S rM   )r   Úget_returncoderH   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   Ú_waitrH   s    r   ÚwaitzProcess.wait„   s,   è è € à”_×*Ò*Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r   c                 ó:   — | j                              |¦  «         d S rM   )r   Úsend_signal)r   Úsignals     r   rd   zProcess.send_signalˆ   s   € ØŒ×#Ò# FÑ+Ô+Ð+Ð+Ð+r   c                 ó8   — | j                              ¦   «          d S rM   )r   Ú	terminaterH   s    r   rg   zProcess.terminate‹   s   € ØŒ×!Ò!Ñ#Ô#Ð#Ð#Ð#r   c                 ó8   — | j                              ¦   «          d S rM   )r   ÚkillrH   s    r   ri   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
   ÚdebugrK   ÚdrainÚBrokenPipeErrorÚConnectionResetErrorr=   )r   Úinputrm   rD   s       r   Ú_feed_stdinzProcess._feed_stdin‘   s  è è € Ø”
×$Ò$Ñ&Ô&ˆØŒ
×Ò˜ÑÔÐØð 	KÝŒLØ7¸½sÀ5¹z¼zñKô Kð Kð	HØ”*×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$øÝÕ!5Ð6ð 	Hð 	Hð 	Hàð HÝ”Ð;¸TÀ3ÑGÔGÐGøøøøøøøøøð	Høøøð
 ð 	>ÝŒLÐ6¸Ñ=Ô=Ð=ØŒ
×ÒÑÔÐÐÐs   ÁA< Á<B/ÂB*Â*B/c              ƒ   ó
   K  — d S rM   © rH   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   rk   r
   rm   Úreadr=   )r   r9   r1   rN   ÚnameÚoutputs         r   Ú_read_streamzProcess._read_stream¥   sï   è è € Ø”O×6Ò6°rÑ:Ô:ˆ	Ø�Š7ˆ7Ø”[ˆFˆFà˜’7�7�7�7Ø”[ˆFØŒ:×ÒÑ!Ô!ð 	@Ø! Qšw˜w�8�8¨HˆDÝŒLÐ2°D¸$Ñ?Ô?Ð?Ø—{’{‘}”}Ð$Ð$Ð$Ð$Ð$Ð$ˆØŒ:×ÒÑ!Ô!ð 	AØ! Qšw˜w�8�8¨HˆDÝŒLÐ3°T¸4Ñ@Ô@Ð@Ø�ŠÑÔÐØˆr   Nc              ƒ   óž  K  — |�|                       |¦  «        }n|                      ¦   «         }| j        �|                      d¦  «        }n|                      ¦   «         }| j        �|                      d¦  «        }n|                      ¦   «         }t          j        |||¦  «        ƒ d {V —†\  }}}|                      ¦   «         ƒ d {V —† ||fS r7   )rr   ru   r   rz   r   r	   Úgatherrb   )r   rq   r   r   r   s        r   ÚcommunicatezProcess.communicate¶   sÙ   è è € ØÐØ×$Ò$ UÑ+Ô+ˆEˆEà—J’J‘L”LˆEØŒ;Ð"Ø×&Ò& qÑ)Ô)ˆFˆFà—Z’Z‘\”\ˆFØŒ;Ð"Ø×&Ò& qÑ)Ô)ˆFˆFà—Z’Z‘\”\ˆFÝ&+¤l°5¸&À&Ñ&IÔ&IÐ IÐ IÐ IÐ IÐ IÐ IÑˆˆv�vØ�iŠi‰kŒkÐÐÐÐÐÐÐØ˜ÐÐr   rM   )r"   rP   rQ   r   r'   Úpropertyr_   rb   rd   rg   ri   rr   ru   rz   r}   rt   r   r   rU   rU   s   sÊ   € € € € € ð'ð 'ð 'ð9ð 9ð 9ð ð0ð 0ñ „Xð0ð-ð -ð -ð,ð ,ð ,ð$ð $ð $ðð ð ðð ð ð"ð ð ðð ð ð" ð  ð  ð  ð  ð  r   rU   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>Ë   ó   ø€ Õ7¸eØ=Að Cñ  Cô  C€ r   ©r   r   r   )r   Úget_running_loopÚsubprocess_shellrU   )
Úcmdr   r   r   r   ÚkwdsÚprotocol_factoryr1   r+   r   s
       `    @r   r   r   È   s¤   øøè è € åÔ"Ñ$Ô$€DðCð Cð Cð Cð CÐà 5 Ô 5ØØð!à Øð!ð !ð ð!ð !ð ð ð ð ð ð Ñ€Iˆxõ �9˜h¨Ñ-Ô-Ð-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_execrU   )Úprogramr   r   r   r   Úargsr‰   rŠ   r1   r+   r   s       `     @r   r   r   Ô   sµ   øøè è € õ Ô"Ñ$Ô$€DðCð Cð Cð Cð CÐà 4 Ô 4ØØð!àð!ð !ð ˜FØð	!ð !ð ð	!ð !ð ð ð ð ð ð Ñ€Iˆxõ
 �9˜h¨Ñ-Ô-Ð-r   )Ú__all__Ú
subprocessÚ r   r   r   r	   Úlogr
   ÚPIPEÚSTDOUTÚDEVNULLÚFlowControlMixinÚSubprocessProtocolr   rU   Ú_DEFAULT_LIMITr   r   rt   r   r   ú<module>rš      sK  ðØ
=€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð „€Ø	Ô	€Ø
Ô
€ð_&ð _&ð _&ð _&ð _&˜wÔ7Ø(Ô;ñ_&ô _&ð _&ðDR ð R ð R ð R ð R ñ R ô R ð R ðj .2¸$ÀtØ(/Ô(>ð	.ð 	.ð 	.ð 	.ð 8<ÀDØ(,°GÔ4Jð.ð .ð .ð .ð .ð .ð .r   