Your IP : 3.138.137.244


Current Path : /opt/alt/python35/lib64/python3.5/asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/asyncio/__pycache__/subprocess.cpython-35.opt-1.pyc



��Yf��
@s ddgZddlZddlmZddlmZddlmZddlmZdd	lmZdd
l	m
Z
ejZejZej
Z
Gdd�dejej�ZGd
d�d�Zeddddejdd��Zedddddddddejdd��ZdS)�create_subprocess_exec�create_subprocess_shell�N�)�events)�	protocols)�streams)�tasks)�	coroutine)�loggercspeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�S)�SubprocessStreamProtocolz0Like StreamReaderProtocol, but for a subprocess.csRt�jd|�||_d|_|_|_d|_d|_g|_dS)N�loopF)	�super�__init__�_limit�stdin�stdout�stderr�
_transport�_process_exited�	_pipe_fds)�self�limitr)�	__class__��7/opt/alt/python35/lib64/python3.5/asyncio/subprocess.pyrs			z!SubprocessStreamProtocol.__init__cCs�|jjg}|jdk	r2|jd|j�|jdk	rU|jd|j�|jdk	rx|jd|j�ddj|�S)Nzstdin=%rz	stdout=%rz	stderr=%rz<%s>� )r�__name__r�appendrr�join)r�inforrr�__repr__sz!SubprocessStreamProtocol.__repr__cCs||_|jd�}|dk	retjd|jd|j�|_|jj|�|jj	d�|jd�}|dk	r�tjd|jd|j�|_
|j
j|�|jj	d�|jd�}|dk	rtj|d|ddd|j�|_dS)Nrrr�r�protocol�reader)
r�get_pipe_transportr�StreamReaderr�_looprZ
set_transportrrr�StreamWriterr)r�	transportZstdout_transportZstderr_transportZstdin_transportrrr�connection_made(s&	z(SubprocessStreamProtocol.connection_madecCsS|dkr|j}n|dkr0|j}nd}|dk	rO|j|�dS)Nrr!)rrZ	feed_data)r�fd�datar#rrr�pipe_data_received@sz+SubprocessStreamProtocol.pipe_data_receivedcCs�|dkr<|j}|dk	r+|j�|j|�dS|dkrT|j}n|dkrl|j}nd}|dkr�|dkr�|j�n
|j|�||jkr�|jj|�|j	�dS)Nrrr!)
r�closeZconnection_lostrrZfeed_eofZ
set_exceptionr�remove�_maybe_close_transport)rr*�exc�piper#rrr�pipe_connection_lostJs$	



z-SubprocessStreamProtocol.pipe_connection_lostcCsd|_|j�dS)NT)rr/)rrrr�process_exitedas	z'SubprocessStreamProtocol.process_exitedcCs8t|j�dkr4|jr4|jj�d|_dS)Nr)�lenrrrr-)rrrrr/es
z/SubprocessStreamProtocol._maybe_close_transport)r�
__module__�__qualname__�__doc__rr r)r,r2r3r/rr)rrrs

rc@s�eZdZdd�Zdd�Zedd��Zedd��Zd	d
�Z	dd�Z
d
d�Zedd��Zedd��Z
edd��Zeddd��ZdS)�ProcesscCsR||_||_||_|j|_|j|_|j|_|j�|_dS)N)rZ	_protocolr&rrrZget_pid�pid)rr(r"rrrrrls			zProcess.__init__cCsd|jj|jfS)Nz<%s %s>)rrr9)rrrrr uszProcess.__repr__cCs
|jj�S)N)rZget_returncode)rrrr�
returncodexszProcess.returncodeccs|jj�EdHS)zdWait until the process exit and return the process return code.

        This method is a coroutine.N)rZ_wait)rrrr�wait|szProcess.waitcCs|jj|�dS)N)r�send_signal)r�signalrrrr<�szProcess.send_signalcCs|jj�dS)N)r�	terminate)rrrrr>�szProcess.terminatecCs|jj�dS)N)r�kill)rrrrr?�szProcess.killccs�|jj�}|jj|�|r>tjd|t|��y|jj�EdHWnDtt	fk
r�}z|r�tjd||�WYdd}~XnX|r�tjd|�|jj
�dS)Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin)r&�	get_debugr�writer
�debugr4Zdrain�BrokenPipeError�ConnectionResetErrorr-)r�inputrBr0rrr�_feed_stdin�s	&zProcess._feed_stdincCsdS)Nr)rrrr�_noop�sz
Process._noopccs�|jj|�}|dkr*|j}n	|j}|jj�rm|dkrTdnd}tjd||�|j�EdH}|jj�r�|dkr�dnd}tjd||�|j	�|S)Nr!rrrz%r communicate: read %sz%r communicate: close %s)
rr$rrr&r@r
rB�readr-)rr*r(�stream�name�outputrrr�_read_stream�s	
zProcess._read_streamNccs�|dk	r|j|�}n|j�}|jdk	rK|jd�}n|j�}|jdk	rx|jd�}n|j�}tj|||d|j�EdH\}}}|j�EdH||fS)Nrr!r)	rFrGrrLrrZgatherr&r;)rrErrrrrr�communicate�szProcess.communicate)rr5r6rr �propertyr:r	r;r<r>r?rFrGrLrMrrrrr8ks	r8c

+so�dkrtj����fdd�}�j||d|d|d||�EdH\}}	t||	��S)Ncstd�d��S)Nrr)rr)rrrr�<lambda>�sz)create_subprocess_shell.<locals>.<lambda>rrr)r�get_event_loopZsubprocess_shellr8)
�cmdrrrrr�kwds�protocol_factoryr(r"r)rrrr�srrrrrc/sr�dkrtj����fdd�}�j|||d|d|d||�EdH\}	}
t|	|
��S)Ncstd�d��S)Nrr)rr)rrrrrO�sz(create_subprocess_exec.<locals>.<lambda>rrr)rrPZsubprocess_execr8)Zprogramrrrrr�argsrRrSr(r"r)rrrr�s	)�__all__�
subprocess�rrrrZ
coroutinesr	�logr
�PIPEZSTDOUTZDEVNULLZFlowControlMixinZSubprocessProtocolrr8Z_DEFAULT_LIMITrrrrrr�<module>s(			X]	

?>