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

``@asyncio.coroutine`` and ``yield from`` are  used here instead.
    N)EOFc              #     ^#    U R                  5       nUb  U$ U R                  R                  (       dm  [        5       mTR	                  U 5        [
        R                  " 5       R                  U4S jU R                  5       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       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 )pws   :/usr/lib/python3/dist-packages/pexpect/_async_pre_await.py<lambda>expect_async.<locals>.<lambda>   s    B    )existing_dataspawnasync_pw_transportPatternWaiterset_expecterasyncioget_event_loopconnect_read_piperesume_readingwait_forfutTimeoutErrorpause_readingtimeout)expecterr   idx	transporter   s        @r	   expect_asyncr      s     
 
 
"C

>>,,_
!#*#9#9#;#M#M$
 
	2 -/	M) 99I
!  "#"++BFFG<<=
 = #!""#sU   BEDAE$D	  DD	 ED	 	E E=E>EEEc              #   B  #    / nU R                   R                  US   5        USS   H[  nU R                  USS9 S h  vN   UR                  U R                   R                  5        U R                   R                  U5        M]     U R                  USS9 S h  vN nUS:X  aL  U R                   R                  [        R                  5        U R                  SSS9 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_asyncr3   %   s     
CJJ$&&wt&DDD

4::$$%

D!  !///MMJQ

&&&q&>>>LMM773**++,,-- 	E
 N 	?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   8   Nc                 D    Xl         [        R                  " 5       U l        g r   )r   r   Futurer   )selfr   s     r	   r   PatternWaiter.set_expecter;   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   )r8   results     r	   foundPatternWaiter.found?   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   r8   excs     r	   errorPatternWaiter.errorD   s8    xx}}HH""3'NN((* r   c                     Xl         g r   )r   )r8   r   s     r	   connection_madePatternWaiter.connection_madeI   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_datar>   	ExceptionerroredrD   )r8   datar   sindexr   s         r	   data_receivedPatternWaiter.data_receivedL   s    ##NN!!$'

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

5! !  	MM!!#JJqMM	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eofr>   r   rD   )r8   rV   r   s      r	   eof_receivedPatternWaiter.eof_received_   sX    	+/DMM(MM%%'E JJu  	JJqMM	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\   rD   rB   s     r	   connection_lostPatternWaiter.connection_lostj   s?    c7##		UYY(>_JJsO r   )r   r   r   )__name__
__module____qualname____firstlineno__r   r   r>   rD   rG   rW   r\   rc   __static_attributes__r   r   r	   r   r   8   s*    I$+
+
#&	r   r   r   ))__doc__r   ra   r*   pexpectr   	coroutiner   r3   Protocolr   r   r   r	   <module>ro      s^        	# #0 	. .$7G$$ 7r   