<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yf                 @   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 Gd d   d e j e j  Z Gd d   d  Z e d d d d e j d d   Z e d d d d d d d d d e j d d    Z d S)create_subprocess_execcreate_subprocess_shell    N   )events)	protocols)streams)tasks)	coroutine)loggerc                   sp   e  Z d  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
   S)SubprocessStreamProtocolz0Like StreamReaderProtocol, but for a subprocess.c                sR   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__ 7/opt/alt/python35/lib64/python3.5/asyncio/subprocess.pyr      s    			z!SubprocessStreamProtocol.__init__c             C   s   |  j  j g } |  j d  k	 r2 | j d |  j  |  j d  k	 rU | 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	 re t j d |  j d |  j  |  _ |  j j |  |  j j	 d  | j d  } | d  k	 r t j d |  j d |  j  |  _
 |  j
 j |  |  j j	 d  | j d  } | d  k	 rt j | d |  d d  d |  j |  _ d  S)Nr   r   r      r   protocolreader)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   sS   | d k r |  j  } n | d k r0 |  j } n d  } | d  k	 rO | 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 rT |  j } n | d k rl |  j } n d  } | d  k r | d  k r | 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   s8   t  |  j  d k r4 |  j r4 |  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____doc__r   r    r)   r,   r2   r3   r/   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   sR   | |  _  | |  _ | |  _ | 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   Ed HS)zdWait until the process exit and return the process return code.

        This method is a coroutine.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   Ed  HWnD t t	 f k
 r } z | r t j d |  |  WYd  d  } ~ Xn X| r t 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   rm | d k rT d n d } t j d |  |  | j   Ed  H} |  j j   r | d k r d 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	 rK |  j d  } n |  j   } |  j d  k	 rx |  j d  } n |  j   } t j | | | d |  j Ed  H\ } } } |  j   Ed  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)r   r5   r6   r   r    propertyr:   r	   r;   r<   r>   r?   rF   rG   rL   rM   r   r   r   r   r8   k   s   	r8   c       
   
   +   so    d  k r t  j       f d d   }  j | |  d | d | d | | Ed  H\ } }	 t | |	   S)Nc                  s   t  d   d   S)Nr   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            /   sr    d  k r t  j       f d d   }  j | |  | d | d | d | | Ed  H\ }	 }
 t |	 |
   S)Nc                  s   t  d   d   S)Nr   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]	