o ?Og@sdZddlZddlmZddlmZddlmZddlmZddlmZej Z ej Z ej Z Gd d d ej ej ZGd d d Zdddejfd dZdddejdddZdS))create_subprocess_execcreate_subprocess_shellN)events) protocols)streams)tasks)loggercsVeZdZ fddZddZddZddZd d Zd d Zd dZ ddZ Z S)SubprocessStreamProtocolcsHtj|d||_d|_|_|_d|_d|_g|_|j |_ dS)N)loopF) super__init___limitstdinstdoutstderr _transport_process_exited _pipe_fds_loopZ create_future _stdin_closed)selflimitr  __class__9/opt/alt/python310/lib64/python3.10/asyncio/subprocess.pyr sz!SubprocessStreamProtocol.__init__cCsn|jjg}|jdur|d|j|jdur!|d|j|jdur/|d|jdd|S)Nzstdin=zstdout=zstderr=z<{}> )r__name__rappendrrformatjoin)rinforrr__repr__s    z!SubprocessStreamProtocol.__repr__cCs||_|d}|dur"tj|j|jd|_|j||j d|d}|durAtj|j|jd|_ |j ||j d|d}|durWtj ||d|jd|_ dSdS)Nrrr r)protocolreaderr ) rget_pipe_transportr StreamReaderrrrZ set_transportrrr StreamWriterr)r transportZstdout_transportZstderr_transportZstdin_transportrrrconnection_made(s.        z(SubprocessStreamProtocol.connection_madecCs>|dkr|j}n |dkr|j}nd}|dur||dSdSNrr%)rrZ feed_data)rfddatar'rrrpipe_data_received@sz+SubprocessStreamProtocol.pipe_data_receivedcCs|dkr(|j}|dur||||dur |jddS|j|dS|dkr0|j}n |dkr8|j}nd}|durL|durG|n||||j vrW|j || dS)Nrrr%) rcloseZconnection_lostrZ set_resultZ set_exceptionrrZfeed_eofrremove_maybe_close_transport)rr.excpiper'rrrpipe_connection_lostJs,        z-SubprocessStreamProtocol.pipe_connection_lostcCsd|_|dS)NT)rr3rrrrprocess_exitedes z'SubprocessStreamProtocol.process_exitedcCs0t|jdkr|jr|jd|_dSdSdS)Nr)lenrrrr1r7rrrr3is  z/SubprocessStreamProtocol._maybe_close_transportcCs||jur|jSdSN)rr)rstreamrrr_get_close_waiterns z*SubprocessStreamProtocol._get_close_waiter) r __module__ __qualname__r r#r,r0r6r8r3r< __classcell__rrrrr s    r c@sjeZdZddZddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ dddZdS)ProcesscCs8||_||_||_|j|_|j|_|j|_||_dSr:)rZ _protocolrrrrZget_pidpid)rr+r&r rrrr tszProcess.__init__cCsd|jjd|jdS)N)rrrAr7rrrr#}szProcess.__repr__cCs |jSr:)rZget_returncoder7rrr returncodes zProcess.returncodecs |jIdHSr:)rZ_waitr7rrrwaitsz Process.waitcCs|j|dSr:)r send_signal)rsignalrrrrFszProcess.send_signalcC|jdSr:)r terminater7rrrrIzProcess.terminatecCrHr:)rkillr7rrrrKrJz Process.killc s|j}|j||rtd|t|z |jIdHWntt fy>}z|r4td||WYd}~nd}~ww|rGtd||j dS)Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin) r get_debugrwriter debugr9ZdrainBrokenPipeErrorConnectionResetErrorr1)rinputrNr4rrr _feed_stdins"    zProcess._feed_stdincsdSr:rr7rrr_noopsz Process._noopcs|j|}|dkr|j}n|j}|jr&|dkrdnd}td|||IdH}|jrA|dkr8dnd}td||| |S)Nr%rrrz%r communicate: read %sz%r communicate: close %s) rr(rrrrLr rNreadr1)rr.r+r;nameoutputrrr _read_streams   zProcess._read_streamNcs|dur ||}n|}|jdur|d}n|}|jdur)|d}n|}t|||IdH\}}}|IdH||fSr-)rRrSrrWrrZgatherrE)rrQrrrrrr communicates     zProcess.communicater:)rr=r>r r#propertyrDrErFrIrKrRrSrWrXrrrrr@ss  r@c sJtfdd}j||f|||d|IdH\}}t||S)Nc tdSNr$r rr$rrz)create_subprocess_shell..rrr)rget_running_loopZsubprocess_shellr@) cmdrrrrkwdsprotocol_factoryr+r&rr$rrs r)rrrrc sPtfdd}j||g|R|||d|IdH\}} t|| S)NcrZr[r\rr$rrr]r^z(create_subprocess_exec..r_)rr`Zsubprocess_execr@) Zprogramrrrrargsrbrcr+r&rr$rrs r)__all__ subprocessrrrrlogr PIPEZSTDOUTZDEVNULLZFlowControlMixinZSubprocessProtocolr r@Z_DEFAULT_LIMITrrrrrrs(     bU