f"ddlZddlZddlZddlmZddlmZddlmZGddejZ Gdd ejZ Gd d e ejZ y) N) protocols) transports)loggerceZdZ dfd ZdZdZdZdZdZdZ e jfdZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZxZS)BaseSubprocessTransportc nt || d|_||_||_d|_d|_d|_g|_tj|_ i|_ d|_ |tjk(rd|jd<|tjk(rd|jd<|tjk(rd|jd< |j d||||||d| |j j$|_|j |j&d<|jj)r?t+|t,t.fr|} n|d} t1j2d| |j |jj5|j7| y#|j#xYw) 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)selfloopprotocolr r r rrrwaiterextrakwargsprogram __class__s ./usr/lib/python3.12/asyncio/base_subprocess.pyrz BaseSubprocessTransport.__init__ sx  !   )//1  JOO #!DKKN Z__ $!DKKN Z__ $!DKKN  DKK BTeF%w B:@ B JJNN $(JJ L! ::   !$ -q' LL5 $)) - t226:;  JJL s F!!F4c^|jjg}|jr|jd|j|jd|j|j |jd|j n/|j|jdn|jd|j jd}||jd|j|j jd}|j jd }|#||ur|jd |jn@||jd |j||jd |jd jdj|S)Nclosedzpid=z returncode=runningz not startedrzstdin=rr zstdout=stderr=zstdout=zstderr=z<{}> ) r4__name__rappendrrrgetpipeformatjoin)r-infor rrs r5__repr__z BaseSubprocessTransport.__repr__7sX''( << KK ! 99 KK$tyyk* +    ' KK+d&6&6%78 9 YY " KK " KK & "   KK& - .##  &F"2 KK. 6 7! gfkk]34! gfkk]34}}SXXd^,,c tN)NotImplementedError)r-r r r rrrr2s r5r"zBaseSubprocessTransport._startTs!!rBc||_yrDr)r-r/s r5 set_protocolz$BaseSubprocessTransport.set_protocolWs !rBc|jSrDrGr-s r5 get_protocolz$BaseSubprocessTransport.get_protocolZs ~~rBc|jSrD)rrJs r5 is_closingz"BaseSubprocessTransport.is_closing]s ||rBc|jryd|_|jjD]}||jj !|j t|j g|j jL|jjrtjd| |j jyyyy#t$rYywxYw)NTz$Close running child process: kill %r)rrvaluesr=r#rrpollrr&rwarningkillProcessLookupError)r-protos r5r#zBaseSubprocessTransport.close`s <<  [['') E} JJ     JJ "  ( !)zz##%EtL  ! *) #&  s4C CCcb|js#|d|t||jyy)Nzunclosed transport )source)rResourceWarningr#)r-_warns r5__del__zBaseSubprocessTransport.__del__{s+|| 'x0/$ O JJLrBc|jSrD)rrJs r5get_pidzBaseSubprocessTransport.get_pids yyrBc|jSrD)rrJs r5get_returncodez&BaseSubprocessTransport.get_returncodesrBcR||jvr|j|jSyrD)rr=)r-fds r5get_pipe_transportz*BaseSubprocessTransport.get_pipe_transports%  ;;r?'' 'rBc0|j tyrD)rrSrJs r5 _check_procz#BaseSubprocessTransport._check_procs :: $& & rBcZ|j|jj|yrD)rbr send_signal)r-signals r5rdz#BaseSubprocessTransport.send_signals   v&rBcX|j|jjyrD)rbr terminaterJs r5rgz!BaseSubprocessTransport.terminates  rBcX|j|jjyrD)rbrrRrJs r5rRzBaseSubprocessTransport.kills  rBcK j}j}|j9|jfd|jd{\}}|jd<|j 9|j fd|j d{\}}|jd<|j9|j fd|jd{\}}|jd<jJ|jjjjD]\}}|j|g|d_|#|js|jdyyy7)77#ttf$rt $r7}|+|js|j#|Yd}~yYd}~yYd}~yd}~wwxYww)NctdS)Nr)WriteSubprocessPipeProtorJsr5z8BaseSubprocessTransport._connect_pipes..s4T1=rBrctdS)NrReadSubprocessPipeProtorJsr5rlz8BaseSubprocessTransport._connect_pipes..3D!<rBrctdS)Nr rnrJsr5rlz8BaseSubprocessTransport._connect_pipes..rprBr )rrr connect_write_piperrconnect_read_piperr call_soonrconnection_made cancelled set_result SystemExitKeyboardInterrupt BaseException set_exception) r-r0procr._r=callbackdataexcs ` r5r,z&BaseSubprocessTransport._connect_pipess# (::D::Dzz% $ 7 7=JJ!  4"& A{{& $ 6 6<KK!!!4"& A{{& $ 6 6<KK!!!4"& A&&2 22 NN4>>994 @"&"5"5 0$x/$/ 0"&D !&*:*:*<!!$'+=!; ! !-.   *!&*:*:*<$$S))+=! *shG AE; E4 AE;E7AE;E9A8E;&G 4E;7E;9E;;G #G6G G  G c|j|jj||fy|jj|g|yrD)rr;rrt)r-cbrs r5_callzBaseSubprocessTransport._calls?    *    & &Dz 2 DJJ  +d +rBcr|j|jj|||jyrD)rrpipe_connection_lost _try_finish)r-r_rs r5_pipe_connection_lostz-BaseSubprocessTransport._pipe_connection_losts( 4>>66C@ rBcR|j|jj||yrD)rrpipe_data_received)r-r_rs r5_pipe_data_receivedz+BaseSubprocessTransport._pipe_data_receiveds 4>>44b$?rBcx|J||jJ|j|jjrtjd||||_|j j ||j _|j|jj|jy)Nz%r exited with return code %r) rrr&rr@r returncoderrprocess_exitedr)r-rs r5_process_exitedz'BaseSubprocessTransport._process_exiteds%1z1%'9)9)99' ::   ! KK7z J% :: (%/DJJ ! 4>>001 rBcK|j |jS|jj}|jj ||d{S7w)zdWait until the process exit and return the process return code. This method is a coroutine.N)rr create_futurerr;)r-r0s r5_waitzBaseSubprocessTransport._waitsP    '## #))+ !!&)||sAAAAc|jrJ|jytd|jj Dr$d|_|j |j dyy)Nc3@K|]}|duxr |jywrD) disconnected).0ps r5 z6BaseSubprocessTransport._try_finish..s(.}//.sT)r rallrrOr_call_connection_lostrJs r5rz#BaseSubprocessTransport._try_finishs`>>!!    #  . **,. .!DN JJt114 8 .rBc |jj||jD].}|jr|j |j 0d|_d|_d|_d|_y#|jD].}|jr|j |j 0d|_d|_d|_d|_wxYwrD)rconnection_lostrrvrwrrr)r-rr0s r5rz-BaseSubprocessTransport._call_connection_losts " NN * *3 /,, 8'')%%d&6&67 8"&D DJDJ!DN ,, 8'')%%d&6&67 8"&D DJDJ!DNsA77 C:C)NN)r: __module__ __qualname__rrAr"rHrKrMr#warningswarnrYr[r]r`rbrdrgrRr,rrrrrrr __classcell__)r4s@r5rr s%)))r4r:r_r=rJs r5rAz!WriteSubprocessPipeProto.__repr__ s04>>**+4ytyym1MMrBcld|_|jj|j|d|_y)NT)rr|rr_)r-rs r5rz(WriteSubprocessPipeProto.connection_lost s)  ''5 rBcL|jjjyrD)r|r pause_writingrJs r5rz&WriteSubprocessPipeProto.pause_writings ))+rBcL|jjjyrD)r|rresume_writingrJs r5rz'WriteSubprocessPipeProto.resume_writings **,rBN) r:rrrrurArrrrrBr5rkrks!" N ,-rBrkceZdZdZy)rocP|jj|j|yrD)r|rr_)r-rs r5 data_receivedz%ReadSubprocessPipeProto.data_receiveds %%dggt4rBN)r:rrrrrBr5roros5rBro)rrrrrlogrSubprocessTransportr BaseProtocolrkProtocolrorrBr5rsTr"j<<r"j-y55-456'005rB