B n*U@sxddlZddlZddlZddlmZddlmZddlmZGdddejZ Gdd d ej Z Gd d d e ej Z dS) N) protocols) transports)loggercseZdZd0fdd ZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZZS)1BaseSubprocessTransportNc s&t| d|_||_||_d|_d|_d|_g|_t |_ i|_ d|_ |tjkr`d|j d<|tjkrtd|j d<|tjkrd|j d<y"|jf||||||d| Wn|YnX|jj|_|j|jd<|jrt|ttfr|} n|d} td| |j|j|| dS)NFrr)argsshellstdinstdoutstderrbufsize subprocesszprocess %r created: pid %s)super__init___closed _protocol_loop_proc_pid _returncode _exit_waiters collectionsdeque_pending_calls_pipes _finishedrPIPE_startclosepidZ_extra get_debug isinstancebytesstrrdebugZ create_task_connect_pipes) selfloopprotocolrr r r r r waiterZextrakwargsZprogram) __class__:/opt/alt/python37/lib/python3.7/asyncio/base_subprocess.pyr s@            z BaseSubprocessTransport.__init__cCs|jjg}|jr|d|jdk r6|d|j|jdk rT|d|jn |jdk rj|dn |d|jd}|dk r|d|j|jd}|jd }|dk r||kr|d |jn6|dk r|d |j|dk r |d |jd d |S)Nclosedzpid=z returncode=Zrunningz not startedrzstdin=rrzstdout=stderr=zstdout=zstderr=z<{}> ) r,__name__rappendrrrgetpipeformatjoin)r'infor r r r-r-r.__repr__7s,           z BaseSubprocessTransport.__repr__cKstdS)N)NotImplementedError)r'rr r r r r r+r-r-r.rTszBaseSubprocessTransport._startcCs ||_dS)N)r)r'r)r-r-r. set_protocolWsz$BaseSubprocessTransport.set_protocolcCs|jS)N)r)r'r-r-r. get_protocolZsz$BaseSubprocessTransport.get_protocolcCs|jS)N)r)r'r-r-r. is_closing]sz"BaseSubprocessTransport.is_closingcCs|jr dSd|_x&|jD]}|dkr*q|jqW|jdk r|jdkr|jdkr|j rpt d|y|j Wnt k rYnXdS)NTz$Close running child process: kill %r)rrvaluesr4rrrZpollrr!rZwarningkillProcessLookupError)r'protor-r-r.r`s     zBaseSubprocessTransport.closecCs(|js$tjd|t|d|dS)Nzunclosed transport )source)rwarningswarnResourceWarningr)r'r-r-r.__del__{szBaseSubprocessTransport.__del__cCs|jS)N)r)r'r-r-r.get_pidszBaseSubprocessTransport.get_pidcCs|jS)N)r)r'r-r-r.get_returncodesz&BaseSubprocessTransport.get_returncodecCs||jkr|j|jSdSdS)N)rr4)r'fdr-r-r.get_pipe_transports  z*BaseSubprocessTransport.get_pipe_transportcCs|jdkrtdS)N)rr?)r'r-r-r. _check_procs z#BaseSubprocessTransport._check_proccCs||j|dS)N)rJr send_signal)r'signalr-r-r.rKsz#BaseSubprocessTransport.send_signalcCs||jdS)N)rJr terminate)r'r-r-r.rMsz!BaseSubprocessTransport.terminatecCs||jdS)N)rJrr>)r'r-r-r.r>szBaseSubprocessTransport.killc sLyj}j}|jdk rB|fdd|jIdH\}}|jd<|jdk rv|fdd|jIdH\}}|jd<|jdk r|fdd|jIdH\}}|jd<|j j x"j D]\}}|j|f|qWd_ WnBt k r(}z"|dk r| s||Wdd}~XYn X|dk rH| sH|ddS)Ncs tdS)Nr)WriteSubprocessPipeProtor-)r'r-r.z8BaseSubprocessTransport._connect_pipes..rcs tdS)Nr)ReadSubprocessPipeProtor-)r'r-r.rOrPrcs tdS)Nr)rQr-)r'r-r.rOrPr)rrr Zconnect_write_piperr Zconnect_read_piper call_soonrconnection_mader Exception cancelledZ set_exception set_result) r'r*procr(_r4callbackdataexcr-)r'r.r&s6          z&BaseSubprocessTransport._connect_pipescGs2|jdk r|j||fn|jj|f|dS)N)rr2rrR)r'cbrZr-r-r._calls zBaseSubprocessTransport._callcCs||jj|||dS)N)r]rZpipe_connection_lost _try_finish)r'rHr[r-r-r._pipe_connection_lostsz-BaseSubprocessTransport._pipe_connection_lostcCs||jj||dS)N)r]rZpipe_data_received)r'rHrZr-r-r._pipe_data_receivedsz+BaseSubprocessTransport._pipe_data_receivedcCst|jrtd||||_|jjdkr2||j_||jj | x |j D]}| sP| |qPWd|_ dS)Nz%r exited with return code %r)rr!rr7rr returncoder]rZprocess_exitedr^rrUrV)r'rar*r-r-r._process_exiteds   z'BaseSubprocessTransport._process_exitedcs0|jdk r|jS|j}|j||IdHS)zdWait until the process exit and return the process return code. This method is a coroutine.N)rrZ create_futurerr2)r'r*r-r-r._waits    zBaseSubprocessTransport._waitcCs>|jdkrdStdd|jDr:d|_||jddS)Ncss|]}|dk o|jVqdS)N) disconnected).0pr-r-r. sz6BaseSubprocessTransport._try_finish..T)rallrr=rr]_call_connection_lost)r'r-r-r.r^s  z#BaseSubprocessTransport._try_finishcCs*z|j|Wdd|_d|_d|_XdS)N)rconnection_lostrr)r'r[r-r-r.ris z-BaseSubprocessTransport._call_connection_lost)NN)r1 __module__ __qualname__rr8rr:r;r<rrErFrGrIrJrKrMr>r&r]r_r`rbrcr^ri __classcell__r-r-)r,r.r s.)$  rc@s<eZdZddZddZddZddZd d Zd d Zd S)rNcCs||_||_d|_d|_dS)NF)rWrHr4rd)r'rWrHr-r-r.rsz!WriteSubprocessPipeProto.__init__cCs ||_dS)N)r4)r'Z transportr-r-r.rSsz(WriteSubprocessPipeProto.connection_madecCs d|jjd|jd|jdS)N)r,r1rHr4)r'r-r-r.r8 sz!WriteSubprocessPipeProto.__repr__cCs d|_|j|j|d|_dS)NT)rdrWr_rH)r'r[r-r-r.rj sz(WriteSubprocessPipeProto.connection_lostcCs|jjdS)N)rWr pause_writing)r'r-r-r.rpsz&WriteSubprocessPipeProto.pause_writingcCs|jjdS)N)rWrresume_writing)r'r-r-r.rqsz'WriteSubprocessPipeProto.resume_writingN) r1rkrlrrSr8rjrprqr-r-r-r.rNs rNc@seZdZddZdS)rQcCs|j|j|dS)N)rWr`rH)r'rZr-r-r. data_receivedsz%ReadSubprocessPipeProto.data_receivedN)r1rkrlrrr-r-r-r.rQsrQ)rrrBrrlogrZSubprocessTransportrZ BaseProtocolrNZProtocolrQr-r-r-r.s   u