
    e                         S r SSKrSSKrSSKrSSKJr  SSKJr  \S:  a  \R                  r
O\R                  r
S
S jrSS jr " S S	\R                  5      rg)zImplementation of coroutines using ``async def``/``await`` keywords.

These keywords replaced ``@asyncio.coroutine`` and ``yield from`` from
Python 3.5 onwards.
    N)version_info)EOF)      c                   ^#    U R                  5       nUb  U$ U R                  R                  (       db  [        5       mTR	                  U 5        [        5       R                  U4S jU R                  5      I S h  vN u  nmTU4U R                  l        O:U R                  R                  u  mnTR	                  U 5        UR                  5          [        R                  " TR                  U5      I S h  vN $  N N! [        R                   a+  nUR                  5         U R                  U5      s S nA$ S nAff = f7f)Nc                     > T $ N )pattern_waiters   8/usr/lib/python3/dist-packages/pexpect/_async_w_await.py<lambda>expect_async.<locals>.<lambda>   s    N    )existing_dataspawnasync_pw_transportPatternWaiterset_expecter_loop_getterconnect_read_piperesume_readingasynciowait_forfutTimeoutErrorpause_readingtimeout)expecterr   idx	transportexcr   s        @r   expect_asyncr"      s     
 
 
"C

>>,,&##H-*6.*J*J"HNN+
 %
!	> -;I,E)$,NN$E$E!	##H-  "%%%n&8&8'BBB%
 C %!$$%sU   A7E :C:;AE $C> 5C<6C> 9E <C> >D= D82D=3E 8D==E c                 B  #    / nU R                   R                  US   5        USS   H[  nU R                  USS9I S h  vN   UR                  U R                   R                  5        U R                   R                  U5        M]     U R                  USS9I S h  vN nUS:X  aL  U R                   R                  [        R                  5        U R                  SSS9I S h  vN   [        S5      eSR                  X0R                   R                  /-   5      $  N N N;7f)Nr      T)r   async_z1Continuation prompt found - input was incomplete: )
childsendline_expect_promptappendbeforekillsignalSIGINT
ValueErrorjoin)replcmdlinesr   resline
prompt_idxs         r   repl_run_command_asyncr6   -   s     
CJJ$!!'$!???

4::$$%

D!  **74*HHJQ

&!!!D!999LMM773**++,,-- 	@
 I 	:s5   <DDADDAD!D"8DDDc                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)r   ?   Nc                 D    Xl         [        R                  " 5       U l        g r	   )r   r   Futurer   )selfr   s     r   r   PatternWaiter.set_expecterB   s     >>#r   c                     U R                   R                  5       (       d6  U R                   R                  U5        U R                  R	                  5         g g r	   )r   done
set_resultr    r   )r;   results     r   foundPatternWaiter.foundF   s8    xx}}HH'NN((* r   c                     U R                   R                  5       (       d6  U R                   R                  U5        U R                  R	                  5         g g r	   )r   r>   set_exceptionr    r   r;   r!   s     r   errorPatternWaiter.errorK   s8    xx}}HH""3'NN((* r   c                     Xl         g r	   )r    )r;   r    s     r   connection_madePatternWaiter.connection_madeP   s    "r   c                    U R                   R                  nUR                  R                  U5      nUR	                  US5        U R
                  R                  5       (       a7  UR                  R                  U5        UR                  R                  U5        g  U R                   R                  U5      nUb  U R                  U5        g g ! [         a5  nU R                   R                  5         U R                  U5         S nAg S nAff = f)Nread)r   r   _decoderdecode_logr   r>   _beforewrite_buffernew_datarA   	ExceptionerroredrF   )r;   datar   sindexr!   s         r   data_receivedPatternWaiter.data_receivedS   s    ##NN!!$'

1f88==??MM"MM"	MM**1-E 

5! !  	MM!!#JJsOO	s   /C 
D+DDc                      SU R                   R                  l        U R                   R                  5       nU R	                  U5        g ! [
         a  nU R                  U5         S nAg S nAff = f)NT)r   r   flag_eofeofrA   r   rF   )r;   rX   r!   s      r   eof_receivedPatternWaiter.eof_receivedf   sX    	+/DMM(MM%%'E JJu  	JJsOO	s   5A	 	
A.A))A.c                     [        U[        5      (       a/  UR                  [        R                  :X  a  U R	                  5         g Ub  U R                  U5        g g r	   )
isinstanceOSErrorerrnoEIOr^   rF   rE   s     r   connection_lostPatternWaiter.connection_lostq   s?    c7##		UYY(>_JJsO r   )r   r   r    )__name__
__module____qualname____firstlineno__r    r   rA   rF   rI   rY   r^   re   __static_attributes__r
   r   r   r   r   ?   s*    I$+
+
#&	r   r   r	   ))__doc__r   rc   r-   sysr   py_version_infopexpectr   get_running_loopr   get_event_loopr"   r6   Protocolr   r
   r   r   <module>rt      sW   
    / f++L ))L%0.$7G$$ 7r   