a  ze"@sxddlZddlZddlZddlmZddlmZddlmZGdddejZ Gdd d ej Z Gd d d e ej Z dS) N) protocols) transports)loggercseZdZd0fdd 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 s&t| d|_||_||_d|_d|_d|_g|_t |_ i|_ d|_ |tjkr`d|j d<|tjkrtd|j d<|tjkrd|j d<z"|jf||||||d| Wn|Yn0|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 waiterextrakwargsZprogram __class__K/opt/bitninja-python-dojo/embedded/lib/python3.9/asyncio/base_subprocess.pyr sH            z BaseSubprocessTransport.__init__cCs|jjg}|jr|d|jdur6|d|j|jdurT|d|jn |jdurj|dn |d|jd}|dur|d|j|jd}|jd }|dur||ur|d |jn6|dur|d |j|dur |d |jd d |S)Nclosedzpid=z returncode=runningz not startedrzstdin=rrzstdout=stderr=zstdout=zstderr=z<{}> ) r.__name__rappendrrrgetpipeformatjoin)r'infor r r r/r/r0__repr__7s,           z BaseSubprocessTransport.__repr__cKstdSN)NotImplementedError)r'rr r r r r r,r/r/r0rTszBaseSubprocessTransport._startcCs ||_dSr<r)r'r)r/r/r0 set_protocolWsz$BaseSubprocessTransport.set_protocolcCs|jSr<r>r'r/r/r0 get_protocolZsz$BaseSubprocessTransport.get_protocolcCs|jSr<)rr@r/r/r0 is_closing]sz"BaseSubprocessTransport.is_closingcCs|jr dSd|_|jD]}|dur(q|jq|jdur|jdur|jdur|j rlt d|z|j Wnt yYn0dS)NTz$Close running child process: kill %r)rrvaluesr7rrrpollrr!rwarningkillProcessLookupError)r'protor/r/r0r`s$      zBaseSubprocessTransport.closecCs&|js"|d|t|d|dS)Nzunclosed transport )source)rResourceWarningr)r'_warnr/r/r0__del__{szBaseSubprocessTransport.__del__cCs|jSr<)rr@r/r/r0get_pidszBaseSubprocessTransport.get_pidcCs|jSr<)rr@r/r/r0get_returncodesz&BaseSubprocessTransport.get_returncodecCs||jvr|j|jSdSdSr<)rr7)r'fdr/r/r0get_pipe_transports  z*BaseSubprocessTransport.get_pipe_transportcCs|jdurtdSr<)rrGr@r/r/r0 _check_procs z#BaseSubprocessTransport._check_proccCs||j|dSr<)rQr send_signal)r'signalr/r/r0rRsz#BaseSubprocessTransport.send_signalcCs||jdSr<)rQr terminater@r/r/r0rTsz!BaseSubprocessTransport.terminatecCs||jdSr<)rQrrFr@r/r/r0rFszBaseSubprocessTransport.killc sbzj}j}|jdurB|fdd|jIdH\}}|jd<|jdurv|fdd|jIdH\}}|jd<|jdur|fdd|jIdH\}}|jd<|j j j D]\}}|j|g|Rqd_ WnZt t fyYnbty>}z*|dur*|s*||WYd}~n(d}~00|dur^|s^|ddS)Ncs tdS)Nr)WriteSubprocessPipeProtor/r@r/r0z8BaseSubprocessTransport._connect_pipes..rcs tdS)NrReadSubprocessPipeProtor/r@r/r0rVrWrcs tdS)NrrXr/r@r/r0rVrWr)rrr Zconnect_write_piperr Zconnect_read_piper call_soonrconnection_mader SystemExitKeyboardInterrupt BaseException cancelled set_exception set_result) r'r*procr(_r7callbackdataexcr/r@r0r&s@           z&BaseSubprocessTransport._connect_pipescGs4|jdur|j||fn|jj|g|RdSr<)rr5rrZ)r'cbrer/r/r0_calls zBaseSubprocessTransport._callcCs||jj|||dSr<)rhrZpipe_connection_lost _try_finish)r'rOrfr/r/r0_pipe_connection_lostsz-BaseSubprocessTransport._pipe_connection_lostcCs||jj||dSr<)rhrZpipe_data_received)r'rOrer/r/r0_pipe_data_receivedsz+BaseSubprocessTransport._pipe_data_receivedcCsp|jrtd||||_|jjdur2||j_||jj | |j D]}| sN| |qNd|_ dS)Nz%r exited with return code %r)rr!rr:rr returncoderhrZprocess_exitedrirr_ra)r'rlr*r/r/r0_process_exiteds    z'BaseSubprocessTransport._process_exitedcs0|jdur|jS|j}|j||IdHS)zdWait until the process exit and return the process return code. This method is a coroutine.N)rrZ create_futurerr5)r'r*r/r/r0_waits    zBaseSubprocessTransport._waitcCs>|jdurdStdd|jDr:d|_||jddS)Ncss|]}|duo|jVqdSr<) disconnected).0pr/r/r0 sz6BaseSubprocessTransport._try_finish..T)rallrrCrrh_call_connection_lostr@r/r/r0ris z#BaseSubprocessTransport._try_finishcCs<z"|j|Wd|_d|_d|_nd|_d|_d|_0dSr<)rconnection_lostrrr'rfr/r/r0rtsz-BaseSubprocessTransport._call_connection_lost)NN)r4 __module__ __qualname__rr;rr?rArBrwarningswarnrLrMrNrPrQrRrTrFr&rhrjrkrmrnrirt __classcell__r/r/r-r0r s0+&  rc@s<eZdZddZddZddZddZd d Zd d Zd S)rUcCs||_||_d|_d|_dS)NF)rbrOr7ro)r'rbrOr/r/r0rsz!WriteSubprocessPipeProto.__init__cCs ||_dSr<)r7)r'Z transportr/r/r0r[sz(WriteSubprocessPipeProto.connection_madecCs d|jjd|jd|jdS)N)r.r4rOr7r@r/r/r0r; sz!WriteSubprocessPipeProto.__repr__cCs d|_|j|j|d|_dS)NT)rorbrjrOrvr/r/r0ru sz(WriteSubprocessPipeProto.connection_lostcCs|jjdSr<)rbr pause_writingr@r/r/r0r~sz&WriteSubprocessPipeProto.pause_writingcCs|jjdSr<)rbrresume_writingr@r/r/r0rsz'WriteSubprocessPipeProto.resume_writingN) r4rwrxrr[r;rur~rr/r/r/r0rUs rUc@seZdZddZdS)rYcCs|j|j|dSr<)rbrkrO)r'rer/r/r0 data_receivedsz%ReadSubprocessPipeProto.data_receivedN)r4rwrxrr/r/r/r0rYsrY)rrryrrlogrZSubprocessTransportrZ BaseProtocolrUProtocolrYr/r/r/r0s   v