o [d"@sxddlZddlZddlZddlmZddlmZddlmZGdddejZ Gdd d ej Z Gd d d e ej Z dS) N) protocols) transports)loggercseZdZ d0fdd ZddZddZdd Zd d Zd d ZddZ e j fddZ ddZ ddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZZS)1BaseSubprocessTransportNc st| d|_||_||_d|_d|_d|_g|_t |_ i|_ d|_ |tjkr0d|j d<|tjkr:d|j d<|tjkrDd|j d<z|jd||||||d| Wn||jj|_|j|jd<|jrt|ttfrx|} 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_startclosepid_extra get_debug isinstancebytesstrrdebug create_task_connect_pipes) selfloopprotocolrr r r r r waiterextrakwargsprogram __class__r./usr/lib/python3.10/asyncio/base_subprocess.pyr sH            z BaseSubprocessTransport.__init__cCs|jjg}|jr |d|jdur|d|j|jdur*|d|jn|jdur5|dn|d|jd}|durM|d|j|jd}|jd }|durk||urk|d |jn|durx|d |j|dur|d |jd d |S)Nclosedzpid=z returncode=runningz not startedrzstdin=rrzstdout=stderr=zstdout=zstderr=z<{}> ) r2__name__rappendrrrgetpipeformatjoin)r*infor r r rrr3__repr__7s,          z BaseSubprocessTransport.__repr__cKstN)NotImplementedError)r*rr r r r r r/rrr3rTszBaseSubprocessTransport._startcC ||_dSr?r)r*r,rrr3 set_protocolW z$BaseSubprocessTransport.set_protocolcC|jSr?rBr*rrr3 get_protocolZz$BaseSubprocessTransport.get_protocolcCrEr?)rrFrrr3 is_closing]rHz"BaseSubprocessTransport.is_closingcCs|jrdSd|_|jD] }|durq |jq |jdurI|jdurK|jdurM|j r6t d|z|j WdSt yHYdSwdSdSdS)NTz$Close running child process: kill %r)rrvaluesr:r rrpollrr#rwarningkillProcessLookupError)r*protorrr3r `s(      zBaseSubprocessTransport.closecCs*|js|d|t|d|dSdS)Nzunclosed transport )source)rResourceWarningr )r*_warnrrr3__del__{s zBaseSubprocessTransport.__del__cCrEr?)rrFrrr3get_pidrHzBaseSubprocessTransport.get_pidcCrEr?)rrFrrr3get_returncoderHz&BaseSubprocessTransport.get_returncodecCs||jvr |j|jSdSr?)rr:)r*fdrrr3get_pipe_transports  z*BaseSubprocessTransport.get_pipe_transportcCs|jdurtdSr?)rrNrFrrr3 _check_procs z#BaseSubprocessTransport._check_proccCs||j|dSr?)rXr send_signal)r*signalrrr3rYsz#BaseSubprocessTransport.send_signalcC||jdSr?)rXr terminaterFrrr3r\z!BaseSubprocessTransport.terminatecCr[r?)rXrrMrFrrr3rMr]zBaseSubprocessTransport.killc szyj}j}|jdur"|fdd|jIdH\}}|jd<|jdur<|fdd|jIdH\}}|jd<|jdurV|fdd|jIdH\}}|jd<jdus]J| j j jD] \}}|j |g|Rqhd_Wn7t t fyty}z"|dur|s||WYd}~dSWYd}~dSWYd}~dSd}~ww|dur|s|ddSdSdS)Nc tdS)Nr)WriteSubprocessPipeProtorrFrr3 z8BaseSubprocessTransport._connect_pipes..rcr^)NrReadSubprocessPipeProtorrFrr3r`rarcr^)NrrbrrFrr3r`rar)rrr connect_write_piperr connect_read_piper r call_soonrconnection_made SystemExitKeyboardInterrupt BaseException cancelled set_exception set_result) r*r-procr+_r:callbackdataexcrrFr3r)sL          z&BaseSubprocessTransport._connect_pipescGs6|jdur|j||fdS|jj|g|RdSr?)rr8rrf)r*cbrqrrr3_calls zBaseSubprocessTransport._callcCs||jj|||dSr?)rtrpipe_connection_lost _try_finish)r*rVrrrrr3_pipe_connection_losts z-BaseSubprocessTransport._pipe_connection_lostcCs||jj||dSr?)rtrpipe_data_received)r*rVrqrrr3_pipe_data_receivedsz+BaseSubprocessTransport._pipe_data_receivedcCs|dusJ||jdusJ|j|jrtd||||_|jjdur+||j_||jj | |j D] }| sD| |q9d|_ dS)Nz%r exited with return code %r)rrr#rr=r returncodertrprocess_exitedrvrrkrm)r*rzr-rrr3_process_exiteds     z'BaseSubprocessTransport._process_exitedcs2|jdur |jS|j}|j||IdHS)zdWait until the process exit and return the process return code. This method is a coroutine.N)rr create_futurerr8)r*r-rrr3_waits     zBaseSubprocessTransport._waitcCsL|jrJ|jdur dStdd|jDr$d|_||jddSdS)Ncss|] }|duo |jVqdSr?) disconnected).0prrr3 sz6BaseSubprocessTransport._try_finish..T)rrallrrJrt_call_connection_lostrFrrr3rvs  z#BaseSubprocessTransport._try_finishcCs:z|j|Wd|_d|_d|_dSd|_d|_d|_wr?)rconnection_lostrrr*rrrrr3rs z-BaseSubprocessTransport._call_connection_lost)NN)r7 __module__ __qualname__rr>rrCrGrIr warningswarnrSrTrUrWrXrYr\rMr)rtrwryr|r~rvr __classcell__rrr1r3r s2+&  rc@s<eZdZddZddZddZddZd d Zd d Zd S)r_cCs||_||_d|_d|_dS)NF)rnrVr:r)r*rnrVrrr3rs z!WriteSubprocessPipeProto.__init__cCrAr?)r:)r* transportrrr3rgrDz(WriteSubprocessPipeProto.connection_madecCs d|jjd|jd|jdS)N)r2r7rVr:rFrrr3r> s z!WriteSubprocessPipeProto.__repr__cCs d|_|j|j|d|_dS)NT)rrnrwrVrrrr3r s z(WriteSubprocessPipeProto.connection_lostcC|jjdSr?)rnr pause_writingrFrrr3rz&WriteSubprocessPipeProto.pause_writingcCrr?)rnrresume_writingrFrrr3rrz'WriteSubprocessPipeProto.resume_writingN) r7rrrrgr>rrrrrrr3r_s r_c@seZdZddZdS)rccCs|j|j|dSr?)rnryrV)r*rqrrr3 data_receivedsz%ReadSubprocessPipeProto.data_receivedN)r7rrrrrrr3rcs rc)rrrrrlogrSubprocessTransportr BaseProtocolr_Protocolrcrrrr3s   v