
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a‹"  ã                   @   sx   d dl Z d dlZd dlZddlmZ ddlmZ ddlmZ G dd„ dejƒZ	G dd	„ d	ej
ƒZG d
d„ deejƒZdS )é    Né   )Ú	protocols)Ú
transports)Úloggerc                       sÔ   e Zd Zd0‡ fdd„	Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	e
jfdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z‡  ZS )1ÚBaseSubprocessTransportNc              	      s&  t ƒ  |
¡ d| _|| _|| _d | _d | _d | _g | _t	 
¡ | _i | _d| _|tjkr`d | jd< |tjkrtd | jd< |tjkrˆd | jd< z"| jf ||||||dœ|—Ž W n   |  ¡  ‚ Y nX | jj| _| j| jd< | j ¡ �rt|ttfƒrø|}n|d }t d|| j¡ | j |  |	¡¡ d S )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ÚpidZ_extraÚ	get_debugÚ
isinstanceÚbytesÚstrr   ÚdebugZcreate_taskÚ_connect_pipes)ÚselfÚloopÚprotocolr   r	   r
   r   r   r   ÚwaiterZextraÚkwargsZprogram©Ú	__class__© ú</opt/alt/python38/lib64/python3.8/asyncio/base_subprocess.pyr      sL    






 ÿÿ

 ÿz BaseSubprocessTransport.__init__c                 C   s  | j jg}| jr| d¡ | jd k	r6| d| j› �¡ | jd k	rT| d| j› �¡ n | jd k	rj| d¡ n
| d¡ | j d¡}|d k	rš| d|j› �¡ | j d¡}| j d	¡}|d k	rÖ||krÖ| d
|j› �¡ n6|d k	rð| d|j› �¡ |d k	�r| d|j› �¡ d 	d 
|¡¡S )NÚclosedzpid=zreturncode=Zrunningznot startedr   zstdin=r   r   zstdout=stderr=zstdout=zstderr=z<{}>ú )r-   Ú__name__r   Úappendr   r   r   ÚgetÚpipeÚformatÚjoin)r'   Úinfor
   r   r   r.   r.   r/   Ú__repr__7   s,    






z BaseSubprocessTransport.__repr__c                 K   s   t ‚d S ©N)ÚNotImplementedError)r'   r   r	   r
   r   r   r   r+   r.   r.   r/   r   T   s    zBaseSubprocessTransport._startc                 C   s
   || _ d S r:   ©r   )r'   r)   r.   r.   r/   Úset_protocolW   s    z$BaseSubprocessTransport.set_protocolc                 C   s   | j S r:   r<   ©r'   r.   r.   r/   Úget_protocolZ   s    z$BaseSubprocessTransport.get_protocolc                 C   s   | j S r:   )r   r>   r.   r.   r/   Ú
is_closing]   s    z"BaseSubprocessTransport.is_closingc                 C   s”   | j r
d S d| _ | j ¡ D ]}|d kr(q|j ¡  q| jd k	r�| jd kr�| j ¡ d kr�| j 	¡ rlt
 d| ¡ z| j ¡  W n tk
rŽ   Y nX d S )NTz$Close running child process: kill %r)r   r   Úvaluesr5   r   r   r   Zpollr   r!   r   ZwarningÚkillÚProcessLookupError)r'   Úprotor.   r.   r/   r   `   s$    
þû
zBaseSubprocessTransport.closec                 C   s&   | j s"|d| ›�t| d� |  ¡  d S )Nzunclosed transport )Úsource)r   ÚResourceWarningr   )r'   Z_warnr.   r.   r/   Ú__del__{   s    zBaseSubprocessTransport.__del__c                 C   s   | j S r:   )r   r>   r.   r.   r/   Úget_pid€   s    zBaseSubprocessTransport.get_pidc                 C   s   | j S r:   )r   r>   r.   r.   r/   Úget_returncodeƒ   s    z&BaseSubprocessTransport.get_returncodec                 C   s   || j kr| j | jS d S d S r:   )r   r5   )r'   Úfdr.   r.   r/   Úget_pipe_transport†   s    
z*BaseSubprocessTransport.get_pipe_transportc                 C   s   | j d krtƒ ‚d S r:   )r   rC   r>   r.   r.   r/   Ú_check_procŒ   s    
z#BaseSubprocessTransport._check_procc                 C   s   |   ¡  | j |¡ d S r:   )rL   r   Úsend_signal)r'   Úsignalr.   r.   r/   rM   �   s    z#BaseSubprocessTransport.send_signalc                 C   s   |   ¡  | j ¡  d S r:   )rL   r   Ú	terminater>   r.   r.   r/   rO   ”   s    z!BaseSubprocessTransport.terminatec                 C   s   |   ¡  | j ¡  d S r:   )rL   r   rB   r>   r.   r.   r/   rB   ˜   s    zBaseSubprocessTransport.killc           	   
   ƒ   s`  zâˆ j }ˆ j}|jd k	rB| ‡ fdd„|j¡I d H \}}|ˆ jd< |jd k	rv| ‡ fdd„|j¡I d H \}}|ˆ jd< |jd k	rª| ‡ fdd„|j¡I d H \}}|ˆ jd< | ˆ j	j
ˆ ¡ ˆ jD ]\}}|j|f|žŽ  qÀd ˆ _W nZ ttfk
rü   ‚ Y n` tk
�r< } z"|d k	�r,| ¡ �s,| |¡ W 5 d }~X Y n X |d k	�r\| ¡ �s\| d ¡ d S )Nc                      s
   t ˆ dƒS )Nr   )ÚWriteSubprocessPipeProtor.   r>   r.   r/   Ú<lambda>£   ó    z8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>r   c                      s
   t ˆ dƒS )Nr   ©ÚReadSubprocessPipeProtor.   r>   r.   r/   rQ   ©   rR   r   c                      s
   t ˆ dƒS )Nr   rS   r.   r>   r.   r/   rQ   ¯   rR   r   )r   r   r
   Zconnect_write_piper   r   Zconnect_read_piper   Ú	call_soonr   Úconnection_mader   Ú
SystemExitÚKeyboardInterruptÚBaseExceptionÚ	cancelledZset_exceptionÚ
set_result)	r'   r*   Úprocr(   Ú_r5   ÚcallbackÚdataÚexcr.   r>   r/   r&   œ   s@    

þ


þ


þ

z&BaseSubprocessTransport._connect_pipesc                 G   s2   | j d k	r| j  ||f¡ n| jj|f|žŽ  d S r:   )r   r3   r   rU   )r'   Úcbr_   r.   r.   r/   Ú_callÂ   s    
zBaseSubprocessTransport._callc                 C   s   |   | jj||¡ |  ¡  d S r:   )rb   r   Zpipe_connection_lostÚ_try_finish)r'   rJ   r`   r.   r.   r/   Ú_pipe_connection_lostÈ   s    z-BaseSubprocessTransport._pipe_connection_lostc                 C   s   |   | jj||¡ d S r:   )rb   r   Zpipe_data_received)r'   rJ   r_   r.   r.   r/   Ú_pipe_data_receivedÌ   s    z+BaseSubprocessTransport._pipe_data_receivedc                 C   sp   | j  ¡ rt d| |¡ || _| jjd kr2|| j_|  | jj	¡ |  
¡  | jD ]}| ¡ sN| |¡ qNd | _d S )Nz%r exited with return code %r)r   r!   r   r8   r   r   Ú
returncoderb   r   Zprocess_exitedrc   r   rZ   r[   )r'   rf   r*   r.   r.   r/   Ú_process_exitedÏ   s    

z'BaseSubprocessTransport._process_exitedc                 Ã   s0   | j dk	r| j S | j ¡ }| j |¡ |I dH S )zdWait until the process exit and return the process return code.

        This method is a coroutine.N)r   r   Zcreate_futurer   r3   )r'   r*   r.   r.   r/   Ú_waitâ   s
    

zBaseSubprocessTransport._waitc                 C   s>   | j d krd S tdd„ | j ¡ D ƒƒr:d| _|  | jd ¡ d S )Nc                 s   s   | ]}|d k	o|j V  qd S r:   )Údisconnected)Ú.0Úpr.   r.   r/   Ú	<genexpr>ñ   s   ÿz6BaseSubprocessTransport._try_finish.<locals>.<genexpr>T)r   Úallr   rA   r   rb   Ú_call_connection_lostr>   r.   r.   r/   rc   í   s    
ÿz#BaseSubprocessTransport._try_finishc                 C   s*   z| j |¡ W 5 d | _ d | _d | _X d S r:   )r   r   r   Úconnection_lost©r'   r`   r.   r.   r/   rn   ö   s
    z-BaseSubprocessTransport._call_connection_lost)NN)r2   Ú
__module__Ú__qualname__r   r9   r   r=   r?   r@   r   ÚwarningsÚwarnrG   rH   rI   rK   rL   rM   rO   rB   r&   rb   rd   re   rg   rh   rc   rn   Ú__classcell__r.   r.   r,   r/   r   
   s2      þ+&	r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )rP   c                 C   s   || _ || _d | _d| _d S )NF)r\   rJ   r5   ri   )r'   r\   rJ   r.   r.   r/   r     s    z!WriteSubprocessPipeProto.__init__c                 C   s
   || _ d S r:   )r5   )r'   Z	transportr.   r.   r/   rV     s    z(WriteSubprocessPipeProto.connection_madec                 C   s    d| j j› d| j› d| j›d�S )Nú<z fd=z pipe=ú>)r-   r2   rJ   r5   r>   r.   r.   r/   r9   
  s    z!WriteSubprocessPipeProto.__repr__c                 C   s    d| _ | j | j|¡ d | _d S )NT)ri   r\   rd   rJ   rp   r.   r.   r/   ro     s    z(WriteSubprocessPipeProto.connection_lostc                 C   s   | j j ¡  d S r:   )r\   r   Úpause_writingr>   r.   r.   r/   rx     s    z&WriteSubprocessPipeProto.pause_writingc                 C   s   | j j ¡  d S r:   )r\   r   Úresume_writingr>   r.   r.   r/   ry     s    z'WriteSubprocessPipeProto.resume_writingN)	r2   rq   rr   r   rV   r9   ro   rx   ry   r.   r.   r.   r/   rP   ÿ   s   rP   c                   @   s   e Zd Zdd„ ZdS )rT   c                 C   s   | j  | j|¡ d S r:   )r\   re   rJ   )r'   r_   r.   r.   r/   Údata_received  s    z%ReadSubprocessPipeProto.data_receivedN)r2   rq   rr   rz   r.   r.   r.   r/   rT     s   rT   )r   r   rs   Ú r   r   Úlogr   ZSubprocessTransportr   ZBaseProtocolrP   ZProtocolrT   r.   r.   r.   r/   Ú<module>   s    vÿ