ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \                 @   s   d dgZ ddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
l	m
Z
 ejZejZejZG dd dejejZG dd dZeddddejfddZeddddejddd ZdS )create_subprocess_execcreate_subprocess_shell    N   )events)	protocols)streams)tasks)	coroutine)loggerc                   sL   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	  Z
S )SubprocessStreamProtocolc                s<   t  j|d || _d  | _ | _| _d | _d| _g | _d S )N)loopF)	super__init___limitstdinstdoutstderr
_transport_process_exited	_pipe_fds)selflimitr   )	__class__ */usr/lib64/python3.6/asyncio/subprocess.pyr      s    z!SubprocessStreamProtocol.__init__c             C   sf   | j jg}| jd k	r$|jd| j  | jd k	r>|jd| j  | jd k	rX|jd| j  ddj| S )Nzstdin=%rz	stdout=%rz	stderr=%rz<%s> )r   __name__r   appendr   r   join)r   infor   r   r   __repr__   s    



z!SubprocessStreamProtocol.__repr__c             C   s   || _ |jd}|d k	rDtj| j| jd| _| jj| | jj	d |jd}|d k	rtj| j| jd| _
| j
j| | jj	d |jd}|d k	rtj|| d | jd| _d S )Nr   )r   r      r   )protocolreaderr   )r   get_pipe_transportr   StreamReaderr   _loopr   Zset_transportr   r   r   StreamWriterr   )r   	transportZstdout_transportZstderr_transportZstdin_transportr   r   r   connection_made(   s&    


z(SubprocessStreamProtocol.connection_madec             C   s:   |dkr| j }n|dkr | j}nd }|d k	r6|j| d S )Nr   r!   )r   r   Z	feed_data)r   fddatar#   r   r   r   pipe_data_received@   s    z+SubprocessStreamProtocol.pipe_data_receivedc             C   s   |dkr,| j }|d k	r|j  | j| d S |dkr<| j}n|dkrL| j}nd }|d krt|d krj|j  n
|j| || jkr| jj| | j	  d S )Nr   r   r!   )
r   closeZconnection_lostr   r   Zfeed_eofZset_exceptionr   remove_maybe_close_transport)r   r*   excpiper#   r   r   r   pipe_connection_lostJ   s$    



z-SubprocessStreamProtocol.pipe_connection_lostc             C   s   d| _ | j  d S )NT)r   r/   )r   r   r   r   process_exiteda   s    z'SubprocessStreamProtocol.process_exitedc             C   s(   t | jdkr$| jr$| jj  d | _d S )Nr   )lenr   r   r   r-   )r   r   r   r   r/   e   s    
z/SubprocessStreamProtocol._maybe_close_transport)r   
__module____qualname__r   r    r)   r,   r2   r3   r/   __classcell__r   r   )r   r   r      s   

r   c               @   s~   e Zd Zdd Zdd Zedd Zedd Zd	d
 Z	dd Z
dd Zedd Zedd Zedd ZedddZdS )Processc             C   s8   || _ || _|| _|j| _|j| _|j| _|j | _d S )N)r   Z	_protocolr&   r   r   r   Zget_pidpid)r   r(   r"   r   r   r   r   r   l   s    zProcess.__init__c             C   s   d| j j| jf S )Nz<%s %s>)r   r   r9   )r   r   r   r   r    u   s    zProcess.__repr__c             C   s
   | j j S )N)r   Zget_returncode)r   r   r   r   
returncodex   s    zProcess.returncodec             c   s   | j j E d H S )N)r   Z_wait)r   r   r   r   wait|   s    zProcess.waitc             C   s   | j j| d S )N)r   send_signal)r   signalr   r   r   r<      s    zProcess.send_signalc             C   s   | j j  d S )N)r   	terminate)r   r   r   r   r>      s    zProcess.terminatec             C   s   | j j  d S )N)r   kill)r   r   r   r   r?      s    zProcess.killc             c   s   | j j }| jj| |r,tjd| t| y| jj E d H  W n8 tt	fk
rx } z|rhtjd| | W Y d d }~X nX |rtjd|  | jj
  d S )Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin)r&   	get_debugr   writer
   debugr4   ZdrainBrokenPipeErrorConnectionResetErrorr-   )r   inputrB   r0   r   r   r   _feed_stdin   s    
 zProcess._feed_stdinc             C   s   d S )Nr   )r   r   r   r   _noop   s    zProcess._noopc             c   s   | j j|}|dkr| j}n| j}| jj rJ|dkr8dnd}tjd| | |j E d H }| jj r|dkrndnd}tjd| | |j	  |S )Nr!   r   r   r   z%r communicate: read %sz%r communicate: close %s)
r   r$   r   r   r&   r@   r
   rB   readr-   )r   r*   r(   streamnameoutputr   r   r   _read_stream   s    

zProcess._read_streamNc             c   s   |d k	r| j |}n| j }| jd k	r2| jd}n| j }| jd k	rP| jd}n| j }tj|||| jdE d H \}}}| j E d H  ||fS )Nr   r!   )r   )	rF   rG   r   rL   r   r   Zgatherr&   r;   )r   rE   r   r   r   r   r   r   communicate   s    


zProcess.communicate)N)r   r5   r6   r   r    propertyr:   r	   r;   r<   r>   r?   rF   rG   rL   rM   r   r   r   r   r8   k   s   	r8   c       
      +   sP   d krt j  fdd}j|| f|||d|E d H \}}	t||	S )Nc                  s   t  dS )N)r   r   )r   r   )r   r   r   r   <lambda>   s   z)create_subprocess_shell.<locals>.<lambda>)r   r   r   )r   get_event_loopZsubprocess_shellr8   )
cmdr   r   r   r   r   kwdsprotocol_factoryr(   r"   r   )r   r   r   r      s    )r   r   r   r   r   c            /   sT   d krt j  fdd}j|| f||||d|E d H \}	}
t|	|
S )Nc                  s   t  dS )N)r   r   )r   r   )r   r   r   r   rO      s   z(create_subprocess_exec.<locals>.<lambda>)r   r   r   )r   rP   Zsubprocess_execr8   )Zprogramr   r   r   r   r   argsrR   rS   r(   r"   r   )r   r   r   r      s    )__all__
subprocess r   r   r   r   Z
coroutinesr	   logr
   PIPEZSTDOUTZDEVNULLZFlowControlMixinZSubprocessProtocolr   r8   Z_DEFAULT_LIMITr   r   r   r   r   r   <module>   s(   X]