Edit File: base_subprocess.cpython-36.pyc
3 � \�#������������������@���s����d�dl�Z�d�dlZd�dlZddlmZ�ddlmZ�ddlmZ�ddlmZ�ddl m Z �G�dd ��d ej�ZG�d d��dej �ZG�dd ��d eej�ZdS�)�����N����)�compat)� protocols)� transports)� coroutine)�loggerc�������������������s����e�Zd�Zd0��fdd� Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z e jrTdd��Zdd��Z dd��Zdd��Zdd��Zdd��Zdd��Zdd��Zed d!���Zd"d#��Zd$d%��Zd&d'��Zd(d)��Zed*d+���Zd,d-��Zd.d/��Z���ZS�)1�BaseSubprocessTransportNc������� ���������s&��t���j| ��d|�_||�_||�_d�|�_d�|�_d�|�_g�|�_t j ��|�_i�|�_d|�_ |tjkr`d�|�jd<�|tjkrtd�|�jd<�|tjkr�d�|�jd<�y"|�jf�||||||d�|���W�n���|�j�����Y�nX�|�jj|�_|�j|�jd<�|�jj���rt|ttf�r�|}n|d�}tjd||�j��|�jj|�j| ���d�S�)NFr���r�������)�args�shell�stdin�stdout�stderr�bufsize� subprocesszprocess %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����debugZcreate_task�_connect_pipes) �self�loop�protocolr ���r���r���r ���r���r����waiterZextra�kwargsZprogram)� __class__���//usr/lib64/python3.6/asyncio/base_subprocess.pyr������s@���� z BaseSubprocessTransport.__init__c�������������C���s��|�j�jg}|�jr|jd��|�jd�k r4|jd|�j���|�jd�k rP|jd|�j���n |�jd�k rf|jd��n |jd��|�jjd�}|d�k r�|jd|j���|�jjd�}|�jjd �}|d�k r�||kr�|jd |j���n0|d�k r�|jd|j���|d�k r�|jd|j���d dj |��S�)N�closedzpid=%sz returncode=%sZrunningznot startedr���zstdin=%sr���r ���zstdout=stderr=%sz stdout=%sz stderr=%sz<%s>� ) r.����__name__r����appendr���r���r����get�pipe�join)r)����infor���r ���r���r/���r/���r0����__repr__9���s,���� z BaseSubprocessTransport.__repr__c�������������K���s���t��d�S�)N)�NotImplementedError)r)���r ���r���r���r ���r���r���r-���r/���r/���r0���r ���V���s����zBaseSubprocessTransport._startc�������������C���s ���||�_�d�S�)N)r���)r)���r+���r/���r/���r0����set_protocolY���s����z$BaseSubprocessTransport.set_protocolc�������������C���s���|�j�S�)N)r���)r)���r/���r/���r0����get_protocol\���s����z$BaseSubprocessTransport.get_protocolc�������������C���s���|�j�S�)N)r���)r)���r/���r/���r0���� is_closing_���s����z"BaseSubprocessTransport.is_closingc�������������C���s����|�j�r d�S�d|�_�x&|�jj��D�]}|d�kr*q|jj���qW�|�jd�k r�|�jd�kr�|�jj��d�kr�|�jj ��rpt jd|���y|�jj���W�n�t k r����Y�nX�d�S�)NTz$Close running child process: kill %r)r���r����valuesr6���r!���r���r���Zpollr���r#���r���Zwarning�kill�ProcessLookupError)r)����protor/���r/���r0���r!���b���s ���� zBaseSubprocessTransport.closec�������������C���s&���|�j�s"tjd|��t|�d��|�j���d�S�)Nzunclosed transport %r)�source)r����warnings�warn�ResourceWarningr!���)r)���r/���r/���r0����__del__����s����zBaseSubprocessTransport.__del__c�������������C���s���|�j�S�)N)r���)r)���r/���r/���r0����get_pid����s����zBaseSubprocessTransport.get_pidc�������������C���s���|�j�S�)N)r���)r)���r/���r/���r0����get_returncode����s����z&BaseSubprocessTransport.get_returncodec�������������C���s���||�j�kr|�j�|�jS�d�S�d�S�)N)r���r6���)r)����fdr/���r/���r0����get_pipe_transport����s���� z*BaseSubprocessTransport.get_pipe_transportc�������������C���s���|�j�d�krt���d�S�)N)r���r@���)r)���r/���r/���r0����_check_proc����s���� z#BaseSubprocessTransport._check_procc�������������C���s���|�j����|�jj|��d�S�)N)rK���r����send_signal)r)����signalr/���r/���r0���rL�������s����z#BaseSubprocessTransport.send_signalc�������������C���s���|�j����|�jj���d�S�)N)rK���r���� terminate)r)���r/���r/���r0���rN�������s����z!BaseSubprocessTransport.terminatec�������������C���s���|�j����|�jj���d�S�)N)rK���r���r?���)r)���r/���r/���r0���r?�������s����zBaseSubprocessTransport.killc������� ������#���s^��y��j�}��j}|jd�k rB|j��fdd�|j�E�d�H�\}}|��jd<�|jd�k rv|j��fdd�|j�E�d�H�\}}|��jd<�|jd�k r�|j��fdd�|j�E�d�H�\}}|��jd<���jd�k s�t �|j ��jj����x"��jD�]\}}|j |f|����q�W�d���_W�nD�t k �r8�}�z&|d�k �r(|j����r(|j|��W�Y�d�d�}~X�n"X�|d�k �rZ|j����rZ|jd���d�S�)Nc������������������s ���t���d�S�)Nr���)�WriteSubprocessPipeProtor/���)r)���r/���r0����<lambda>����s����z8BaseSubprocessTransport._connect_pipes.<locals>.<lambda>r���c������������������s ���t���d�S�)Nr���)�ReadSubprocessPipeProtor/���)r)���r/���r0���rP�������s����r���c������������������s ���t���d�S�)Nr ���)rQ���r/���)r)���r/���r0���rP�������s����r ���)r���r���r���Zconnect_write_piper���r ���Zconnect_read_piper���r����AssertionError� call_soonr����connection_made� Exception� cancelledZ set_exception� set_result) r)���r,����procr*����_r6����callback�data�excr/���)r)���r0���r(�������s8���� z&BaseSubprocessTransport._connect_pipesc�������������G���s2���|�j�d�k r|�j�j||f��n|�jj|f|����d�S�)N)r���r4���r���rS���)r)����cbr[���r/���r/���r0����_call����s���� zBaseSubprocessTransport._callc�������������C���s���|�j�|�jj||��|�j���d�S�)N)r^���r���Zpipe_connection_lost�_try_finish)r)���rI���r\���r/���r/���r0����_pipe_connection_lost����s����z-BaseSubprocessTransport._pipe_connection_lostc�������������C���s���|�j�|�jj||��d�S�)N)r^���r���Zpipe_data_received)r)���rI���r[���r/���r/���r0����_pipe_data_received����s����z+BaseSubprocessTransport._pipe_data_receivedc�������������C���s����|d�k st�|��|�jd�ks$t�|�j��|�jj��r<tjd|�|��||�_|�jjd�krV||�j_|�j|�j j ��|�j���x |�jD�]}|j ��st|j|��qtW�d�|�_d�S�)Nz%r exited with return code %r)rR���r���r���r#���r���r8���r���� returncoder^���r���Zprocess_exitedr_���r���rV���rW���)r)���rb���r,���r/���r/���r0����_process_exited����s���� z'BaseSubprocessTransport._process_exitedc�������������c���s0���|�j�dk r|�j�S�|�jj��}|�jj|��|E�dH�S�)zdWait until the process exit and return the process return code. This method is a coroutine.N)r���r���Z create_futurer���r4���)r)���r,���r/���r/���r0����_wait����s ���� zBaseSubprocessTransport._waitc�������������C���sJ���|�j��st�|�jd�krd�S�tdd��|�jj��D���rFd|�_�|�j|�jd���d�S�)Nc�������������s���s���|�]}|d�k o|j�V��qd�S�)N)�disconnected)�.0�pr/���r/���r0���� <genexpr>����s���z6BaseSubprocessTransport._try_finish.<locals>.<genexpr>T)r���rR���r����allr���r>���r^����_call_connection_lost)r)���r/���r/���r0���r_�������s���� z#BaseSubprocessTransport._try_finishc�������������C���s*���z|�j�j|��W�d�d�|�_d�|�_d�|�_�X�d�S�)N)r����connection_lostr���r���)r)���r\���r/���r/���r0���rj�������s ����z-BaseSubprocessTransport._call_connection_lost)NN)r3���� __module__�__qualname__r���r9���r ���r;���r<���r=���r!���r���ZPY34rF���rG���rH���rJ���rK���rL���rN���r?���r���r(���r^���r`���ra���rc���rd���r_���rj���� __classcell__r/���r/���)r.���r0���r������s0���)% r���c���������������@���s<���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd S�)rO���c�������������C���s���||�_�||�_d�|�_d|�_d�S�)NF)rX���rI���r6���re���)r)���rX���rI���r/���r/���r0���r�����s����z!WriteSubprocessPipeProto.__init__c�������������C���s ���||�_�d�S�)N)r6���)r)���Z transportr/���r/���r0���rT�����s����z(WriteSubprocessPipeProto.connection_madec�������������C���s���d|�j�j|�j|�jf�S�)Nz<%s fd=%s pipe=%r>)r.���r3���rI���r6���)r)���r/���r/���r0���r9�����s����z!WriteSubprocessPipeProto.__repr__c�������������C���s ���d|�_�|�jj|�j|��d�|�_d�S�)NT)re���rX���r`���rI���)r)���r\���r/���r/���r0���rk�����s����z(WriteSubprocessPipeProto.connection_lostc�������������C���s���|�j�jj���d�S�)N)rX���r���� pause_writing)r)���r/���r/���r0���ro�����s����z&WriteSubprocessPipeProto.pause_writingc�������������C���s���|�j�jj���d�S�)N)rX���r����resume_writing)r)���r/���r/���r0���rp�����s����z'WriteSubprocessPipeProto.resume_writingN) r3���rl���rm���r���rT���r9���rk���ro���rp���r/���r/���r/���r0���rO�����s���rO���c���������������@���s���e�Zd�Zdd��ZdS�)rQ���c�������������C���s���|�j�j|�j|��d�S�)N)rX���ra���rI���)r)���r[���r/���r/���r0���� data_received$��s����z%ReadSubprocessPipeProto.data_receivedN)r3���rl���rm���rq���r/���r/���r/���r0���rQ���!��s���rQ���)r���r���rC�����r���r���r���Z coroutinesr����logr���ZSubprocessTransportr���ZBaseProtocolrO���ZProtocolrQ���r/���r/���r/���r0����<module>���s����{