Ë
    òT•j9  ã                   ó2  — 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y))Ú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                  j                  «       | _        y )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.12/asyncio/subprocess.pyr   z!SubprocessStreamProtocol.__init__   sZ   ø€ Ü‰Ñ˜dÐÔ#ØˆŒØ15Ð5ˆŒ
Ð5�T”[ 4¤;ØˆŒØ$ˆÔØˆŒØ!ŸZ™Z×5Ñ5Ó7ˆÕó    c                 ól  — | j                   j                  g}| j                  �|j                  d| j                  ›�«       | j                  �|j                  d| j                  ›�«       | j
                  �|j                  d| j
                  ›�«       dj                  dj                  |«      «      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Ø�;‰;Ð"Ø�K‰K˜' $§+¡+ Ð1Ô2Ø�;‰;Ð"Ø�K‰K˜' $§+¡+ Ð1Ô2Ø�}‰}˜SŸX™X d›^Ó,Ð,r   c                 ón  — || _         |j                  d«      }|�ft        j                  | j                  | j
                  ¬«      | _        | j                  j                  |«       | j                  j                  d«       |j                  d«      }|�ft        j                  | j                  | j
                  ¬«      | _
        | j                  j                  |«       | j                  j                  d«       |j                  d«      }|�)t        j                  || d | j
                  ¬«      | _        y y )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±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                 óx   — |dk(  r| j                   }n|dk(  r| j                  }nd }|�|j                  |«       y y ©Nr   r*   )r   r   Ú	feed_data)r   ÚfdÚdatar,   s       r   Úpipe_data_receivedz+SubprocessStreamProtocol.pipe_data_received@   s@   € Ø�Š7Ø—[‘[‰FØ�1ŠWØ—[‘[‰FàˆFØÐØ×Ñ˜TÕ"ð r   c                 ó  — |dk(  rz| j                   }|�|j                  «        | j                  |«       |€| j                  j	                  d «       y | j                  j                  |«       d| j                  _        y |dk(  r| j                  }n|dk(  r| j                  }nd }|�$|€|j                  «        n|j                  |«       || j                  v r| j                  j                  |«       | j                  «        y )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è   € Ø�Š7Ø—:‘:ˆDØÐØ—
‘
”Ø× Ñ  Ô%Øˆ{Ø×"Ñ"×-Ñ-¨dÔ3ð ð	 ×"Ñ"×0Ñ0°Ô5ð 5:�×"Ñ"Ô1ØØ�Š7Ø—[‘[‰FØ�1ŠWØ—[‘[‰FàˆFØÐØˆ{Ø—‘Õ!à×$Ñ$ SÔ)à�—‘ÑØ�N‰N×!Ñ! "Ô%Ø×#Ñ#Õ%r   c                 ó2   — d| _         | j                  «        y )NT)r   rD   ©r   s    r   Úprocess_exitedz'SubprocessStreamProtocol.process_exitedh   s   € Ø#ˆÔØ×#Ñ#Õ%r   c                 ó’   — t        | j                  «      dk(  r/| j                  r"| j                  j	                  «        d | _        y y y )Nr   )Úlenr   r   r   r=   rI   s    r   rD   z/SubprocessStreamProtocol._maybe_close_transportl   s:   € Üˆt�~‰~Ó !Ò#¨×(<Ò(<Ø�O‰O×!Ñ!Ô#Ø"ˆD�Oð )=Ð#r   c                 ó8   — || j                   u r| j                  S y ©N)r   r   )r   Ústreams     r   Ú_get_close_waiterz*SubprocessStreamProtocol._get_close_waiterq   s   € Ø�T—Z‘ZÑØ×%Ñ%Ð%ð  r   )r"   Ú
__module__Ú__qualname__Ú__doc__r   r'   r5   r;   rG   rJ   rD   rP   Ú__classcell__)r   s   @r   r   r      s.   ø„ á:ô8ò-ò?ò0#ò&ò<&ò#ö
&r   r   c                   óZ   — 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y)ÚProcessc                 ó¾   — || _         || _        || _        |j                  | _        |j                  | _        |j
                  | _        |j                  «       | _        y rN   )r   Ú	_protocolr   r   r   r   Úget_pidÚpid)r   r1   r+   r   s       r   r   zProcess.__init__w   sH   € Ø#ˆŒØ!ˆŒØˆŒ
Ø—^‘^ˆŒ
Ø—o‘oˆŒØ—o‘oˆŒØ×$Ñ$Ó&ˆ�r   c                 óP   — d| j                   j                  › d| j                  › d�S )Nú<r!   ú>)r   r"   rZ   rI   s    r   r'   zProcess.__repr__€   s&   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯X©X¨J°aÐ8Ð8r   c                 ó6   — | j                   j                  «       S rN   )r   Úget_returncoderI   s    r   Ú
returncodezProcess.returncodeƒ   s   € à�‰×-Ñ-Ó/Ð/r   c              ƒ   óR   K  — | j                   j                  «       ƒ d{  –—† S 7 Œ­w)z?Wait until the process exit and return the process return code.N)r   Ú_waitrI   s    r   ÚwaitzProcess.wait‡   s   è ø€ à—_‘_×*Ñ*Ó,×,Ð,Ð,ús   ‚' %¡'c                 ó:   — | j                   j                  |«       y rN   )r   Úsend_signal)r   Úsignals     r   re   zProcess.send_signal‹   s   € Ø�‰×#Ñ# FÕ+r   c                 ó8   — | j                   j                  «        y rN   )r   Ú	terminaterI   s    r   rh   zProcess.terminateŽ   s   € Ø�‰×!Ñ!Õ#r   c                 ó8   — | j                   j                  «        y rN   )r   ÚkillrI   s    r   rj   zProcess.kill‘   s   € Ø�‰×ÑÕr   c              ƒ   óÖ  K  — | j                   j                  «       }	 |�=| j                  j                  |«       |r t	        j
                  d| t        |«      «       | j                  j                  «       ƒ d {  –—†  |rt	        j
                  d| «       | j                  j                  «        y 7 Œ7# t        t        f$ r#}|rt	        j
                  d| |«       Y d }~Œbd }~ww xY w­w)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À   è ø€ Ø—
‘
×$Ñ$Ó&ˆð	HØÐ Ø—
‘
× Ñ  Ô'ÙÜ—L‘LØ?ÀÄsÈ5ÃzôSð —*‘*×"Ñ"Ó$×$Ð$ñ Ü�L‰LÐ6¸Ô=Ø�
‰
×ÑÕð %ùÜÔ!5Ð6ò 	Hñ Ü—‘Ð;¸TÀ3ÔGÿøð		HüsA   ‚C)žAB4 Á:B2Á;B4 Á?3C)Â2B4 Â4C&ÃC!ÃC)Ã!C&Ã&C)c              ƒ   ó   K  — y ­wrN   © rI   s    r   Ú_noopzProcess._noop¨   s	   è ø€ Øùs   ‚c              ƒ   óÊ  K  — | j                   j                  |«      }|dk(  r| j                  }n|dk(  sJ ‚| j                  }| j                  j                  «       r |dk(  rdnd}t        j                  d| |«       |j                  «       ƒ d {  –—† }| j                  j                  «       r |dk(  rdnd}t        j                  d| |«       |j                  «        |S 7 ŒP­w)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‘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¸4Ô@Ø�‰ÔØˆð %ús   ‚BC#ÂC!ÂAC#Nc              ƒ   ó¤  K  — | j                   �| j                  |«      }n| j                  «       }| j                  �| j	                  d«      }n| j                  «       }| j
                  �| j	                  d«      }n| j                  «       }t        j                  |||«      ƒ d {  –—† \  }}}| j                  «       ƒ d {  –—†  ||fS 7 Œ$7 Œ
­wr7   )	r   rs   rv   r   r{   r   r	   Úgatherrc   )r   rr   r   r   r   s        r   Úcommunicatez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�vØ�i‰i‹k×ÐØ˜ÐÐð !JøØús$   ‚B%CÂ'CÂ(CÃCÃ	CÃCrN   )r"   rQ   rR   r   r'   Úpropertyr`   rc   re   rh   rj   rs   rv   r{   r~   ru   r   r   rV   rV   v   sH   „ ò'ò9ð ñ0ó ð0ò-ò,ò$òòò(òô" r   rV   c              ‹   ó¦   ‡‡	K  — t        j                  «       Š	ˆˆ	fd„} ‰	j                  || f|||dœ|¤Žƒ d {  –—† \  }}t        ||‰	«      S 7 Œ­w)Nc                  ó   •— t        ‰ ‰¬«      S ©Nr)   ©r   r)   s   €€r   ú<lambda>z)create_subprocess_shell.<locals>.<lambda>Ñ   ó   ø€ Ô7¸eØ=Aô C€ r   ©r   r   r   )r   Úget_running_loopÚsubprocess_shellrV   )
Úcmdr   r   r   r   ÚkwdsÚprotocol_factoryr1   r+   r   s
       `    @r   r   r   Î   sm   ùè ø€ ä×"Ñ"Ó$€DôCÐà 5 × 5Ñ 5ØØð!à Øñ!ð ñ!÷ Ñ€Iˆxô �9˜h¨Ó-Ð-ð	ús   „6AºA»A)r   r   r   r   c             �   ó¬   ‡‡
K  — t        j                  «       Š
ˆˆ
fd„} ‰
j                  || g|¢­|||dœ|¤Žƒ d {  –—† \  }}	t        ||	‰
«      S 7 Œ­w)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   Ú   sy   ùè ø€ ô ×"Ñ"Ó$€DôCÐà 4 × 4Ñ 4ØØð!àñ!ð ˜FØñ	!ð ñ	!÷ Ñ€Iˆxô
 �9˜h¨Ó-Ð-ðús   „9A½A¾A)Ú__all__Ú
subprocessÚ r   r   r   r	   Úlogr
   ÚPIPEÚSTDOUTÚDEVNULLÚFlowControlMixinÚSubprocessProtocolr   rV   Ú_DEFAULT_LIMITr   r   ru   r   r   ú<module>r›      s–   ðØ
=€ã å Ý Ý Ý Ý ð ‡�€Ø	×	Ñ	€Ø
×
Ñ
€ôb&˜w×7Ñ7Ø(×;Ñ;ôb&÷JU ñ U ðp .2¸$ÀtØ(/×(>Ñ(>ó	.ð 8<ÀDØ(,°G×4JÑ4Jõ.r   