PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  oY @s ddgZddlZddlmZddlmZddlmZddlmZdd lmZdd l m Z ej Z ej Z ej Z Gd d d ejejZGd ddZeddddejddZedddddddddejddZdS)create_subprocess_execcreate_subprocess_shellN)events) protocols)streams)tasks) coroutine)loggercspeZdZdZfddZddZddZdd Zd d Zd d Z ddZ S)SubprocessStreamProtocolz0Like StreamReaderProtocol, but for a subprocess.csRtjd|||_d|_|_|_d|_d|_g|_dS)NloopF) super__init___limitstdinstdoutstderr _transport_process_exited _pipe_fds)selflimitr ) __class__)/opt/python35/lib/python3.5/subprocess.pyrs    z!SubprocessStreamProtocol.__init__cCs|jjg}|jdk r2|jd|j|jdk rU|jd|j|jdk rx|jd|jddj|S)Nzstdin=%rz stdout=%rz stderr=%rz<%s> )r__name__rappendrrjoin)rinforrr__repr__sz!SubprocessStreamProtocol.__repr__cCs||_|jd}|dk retjd|jd|j|_|jj||jj d|jd}|dk rtjd|jd|j|_ |j j||jj d|jd}|dk rtj |d|ddd|j|_ dS)Nrrr rprotocolreader) rget_pipe_transportr StreamReaderr_looprZ set_transportrrr StreamWriterr)r transportZstdout_transportZstderr_transportZstdin_transportrrrconnection_made(s&     z(SubprocessStreamProtocol.connection_madecCsS|dkr|j}n|dkr0|j}nd}|dk rO|j|dS)Nrr!)rrZ feed_data)rfddatar#rrrpipe_data_received@s     z+SubprocessStreamProtocol.pipe_data_receivedcCs|dkr<|j}|dk r+|j|j|dS|dkrT|j}n|dkrl|j}nd}|dkr|dkr|jn |j|||jkr|jj||j dS)Nrrr!) rcloseZconnection_lostrrZfeed_eof set_exceptionrremove_maybe_close_transport)rr*excpiper#rrrpipe_connection_lostJs$             z-SubprocessStreamProtocol.pipe_connection_lostcCsd|_|jdS)NT)rr0)rrrrprocess_exitedas z'SubprocessStreamProtocol.process_exitedcCs8t|jdkr4|jr4|jjd|_dS)Nr)lenrrrr-)rrrrr0es z/SubprocessStreamProtocol._maybe_close_transport) r __module__ __qualname____doc__rr r)r,r3r4r0rr)rrr s    r c@seZdZddZddZeddZeddZd d Z d d Z d dZ eddZ eddZ eddZedddZdS)ProcesscCsR||_||_||_|j|_|j|_|j|_|j|_dS)N)rZ _protocolr&rrrZget_pidpid)rr(r"r rrrrls      zProcess.__init__cCsd|jj|jfS)Nz<%s %s>)rrr:)rrrrr uszProcess.__repr__cCs |jjS)N)rZget_returncode)rrrr returncodexszProcess.returncodeccs|jjEdHS)zdWait until the process exit and return the process return code. This method is a coroutine.N)r_wait)rrrrwait|sz Process.waitcCs|jj|dS)N)r send_signal)rsignalrrrr>szProcess.send_signalcCs|jjdS)N)r terminate)rrrrr@szProcess.terminatecCs|jjdS)N)rkill)rrrrrAsz Process.killccs|jj}|jj||r>tjd|t|y|jjEdHWnDtt fk r}z|rtjd||WYdd}~XnX|rtjd||jj dS)Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin) r& get_debugrwriter debugr5ZdrainBrokenPipeErrorConnectionResetErrorr-)rinputrDr1rrr _feed_stdins &zProcess._feed_stdincCsdS)Nr)rrrr_noopsz Process._noopccs|jj|}|dkr*|j}n|dks<t|j}|jjr|dkrfdnd}tjd|||j EdH}|jjr|dkrdnd}tjd|||j |S)Nr!rrrz%r communicate: read %sz%r communicate: close %s) rr$rAssertionErrorrr&rBr rDreadr-)rr*r(streamnameoutputrrr _read_streams    zProcess._read_streamNccs|dk r|j|}n |j}|jdk rK|jd}n |j}|jdk rx|jd}n |j}tj|||d|jEdH\}}}|jEdH||fS)Nrr!r ) rHrIrrOrrZgatherr&r=)rrGrrrrrr communicates    zProcess.communicate)rr6r7rr propertyr;r r=r>r@rArHrIrOrPrrrrr9ks     r9c +sodkrtjfdd}j||d|d|d||EdH\}} t|| S)NcstddS)Nrr )r r)rr rrs z)create_subprocess_shell..rrr)rget_event_loopZsubprocess_shellr9) cmdrrrr rkwdsprotocol_factoryr(r"r)rr rrs  rrrr rc /srdkrtjfdd}j|||d|d|d||EdH\} } t| | S)NcstddS)Nrr )r r)rr rrrRs z(create_subprocess_exec..rrr)rrSZsubprocess_execr9) Zprogramrrrr rargsrUrVr(r"r)rr rrs    )__all__ subprocessrrrrZ coroutinesr logr PIPESTDOUTDEVNULLZFlowControlMixinZSubprocessProtocolr r9Z_DEFAULT_LIMITrrrrrrs(      X]