o 0i @ s d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ej Z ej Z ejZG d d d ejej ZG dd dZdddejfd dZdddejdddZdS ))create_subprocess_execcreate_subprocess_shell N )events) protocols)streams)tasks)loggerc sV e Zd Z fddZdd Zdd Zdd Zd d Zdd Zd d Z dd Z ZS )SubprocessStreamProtocolc sH t j|d || _d | _ | _| _d | _d| _g | _| j | _d S )N)loopF)super__init___limitstdinstdoutstderr _transport_process_exited _pipe_fds_loopZ create_future _stdin_closed)selflimitr __class__ 9/opt/alt/python310/lib64/python3.10/asyncio/subprocess.pyr s z!SubprocessStreamProtocol.__init__c C sn | j jg}| jd ur|d| j | jd ur!|d| j | jd ur/|d| j dd|S )Nzstdin=zstdout=zstderr=z<{}> )r __name__r appendr r formatjoin)r infor r r __repr__ s z!SubprocessStreamProtocol.__repr__c C s || _ |d}|d ur"tj| j| jd| _| j| | j d |d}|d urAtj| j| jd| _ | j | | j d |d}|d urWtj|| d | jd| _d S d S )Nr r r r )protocolreaderr ) r get_pipe_transportr StreamReaderr r r Z set_transportr r r StreamWriterr )r transportZstdout_transportZstderr_transportZstdin_transportr r r connection_made( s. z(SubprocessStreamProtocol.connection_madec C s> |dkr| j }n |dkr| j}nd }|d ur|| d S d S Nr r% )r r Z feed_data)r fddatar' r r r pipe_data_received@ s z+SubprocessStreamProtocol.pipe_data_receivedc C s |dkr(| j }|d ur| | | |d u r | jd d S | j| d S |dkr0| j}n |dkr8| j}nd }|d urL|d u rG| n|| || j v rW| j | | d S )Nr r r% )r closeZconnection_lostr Z set_resultZ set_exceptionr r Zfeed_eofr remove_maybe_close_transport)r r. excpiper' r r r pipe_connection_lostJ s, z-SubprocessStreamProtocol.pipe_connection_lostc C s d| _ | d S )NT)r r3 r r r r process_exitede s z'SubprocessStreamProtocol.process_exitedc C s0 t | jdkr| jr| j d | _d S d S d S )Nr )lenr r r r1 r7 r r r r3 i s z/SubprocessStreamProtocol._maybe_close_transportc C s || j u r| jS d S N)r r )r streamr r r _get_close_waitern s z*SubprocessStreamProtocol._get_close_waiter)r __module____qualname__r r# r, r0 r6 r8 r3 r<