+
    Dfj(                     X    R t ^ RIt^ RIHtHtHtHt ^ RIHt ^ RI	H
t
  ! R R]
4      tR# )z/
Tests for C{yield from} support in Deferreds.
N)DeferredensureDeferredfailsucceed)Clock)TestCasec                      a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltRtV tR# )YieldFromTestsz8
Tests for using Deferreds in conjunction with PEP-380.
c                   < V ^8  d   QhRR/#    returnN )format__classdict__s   "L/usr/lib/python3/dist-packages/twisted/internet/test/test_defer_yieldfrom.py__annotate__YieldFromTests.__annotate__   s     % %T %    c                    R pV! 4       pV P                  V\        P                  4       \        V4      pV P                  V\        4       V P                  V4      pV P                  VR4       R# )z=
L{ensureDeferred} will turn a coroutine into a L{Deferred}.
c               3   <   "   \        R 4      p T  Rj  xL
 pV#  L5ifooNr   dress     r   run/YieldFromTests.test_ensureDeferred.<locals>.run        A,CJ    r   N)assertIsInstancetypesGeneratorTyper   r   successResultOfassertEqual)selfr   rr   r   s   &    r   test_ensureDeferred"YieldFromTests.test_ensureDeferred   sd    
	 Ea!4!45 1a* ""1%e$r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   +   s     % %D %r   c                  a V3R lpR oV! 4       pV P                  V\        P                  4       \        P                  ! V4      pV P                  V\        4       V P                  V4      pV P                  VR4       R# )zE
L{Deferred.fromCoroutine} will turn a coroutine into a L{Deferred}.
c               3   `   <"   \        R 4      p T  Rj  xL
  S! 4        Rj  xL
 pV#  L L5i)barNr   )r   r   run2s     r   r   6YieldFromTests.test_DeferredfromCoroutine.<locals>.run0   s-     ALL!V#CJ #s   .*.,..c               3   <   "   \        R 4      p T  Rj  xL
 pV#  L5ir   r   r   s     r   r.   7YieldFromTests.test_DeferredfromCoroutine.<locals>.run26   r   r    r   N)r!   r"   r#   r   fromCoroutiner$   r%   )r&   r   r'   r   r   r.   s   &    @r   test_DeferredfromCoroutine)YieldFromTests.test_DeferredfromCoroutine+   sp    
		 Ea!4!45 ""1%a* ""1%e$r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   G   s     % %D %r   c                    R p\         P                  ! V! 4       4      pV P                  V4      pV P                  VR4       R# )zM
L{Deferred.fromCoroutine} allows a function to C{yield from} a
L{Deferred}.
c               3   <   "   \        R 4      p T  Rj  xL
 pV#  L5ir   r   r   s     r   r   &YieldFromTests.test_basic.<locals>.runM   r   r    r   N)r   r2   r$   r%   r&   r   r   r   s   &   r   
test_basicYieldFromTests.test_basicG   s;    	
 ""35)""1%e$r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   V   s     6 6 6r   c                   R p\         P                  ! V! 4       4      pV P                  V4      pV P                  \	        VP
                  4      \        4       V P                  VP
                  P                  R4       R# )
An exception in a generator scheduled with L{Deferred.fromCoroutine}
will cause the returned L{Deferred} to fire with a failure.
c               3   N   "   \        R 4      p T  Rj  xL
  \        R4      h L5i)r   NOh no!)r   
ValueError)r   s    r   r   *YieldFromTests.test_exception.<locals>.run\   s%     ALLX&& s   %#%N)r@   )r   r2   failureResultOfr%   typevaluerA   argsr9   s   &   r   test_exceptionYieldFromTests.test_exceptionV   s[    	'
 ""35)""1%cii*55r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   f   s     )& )&d )&r   c                  aaa \        4       o. oVV3R loVVV3R lp\        P                  ! V! 4       4      pSP                  R4       V P	                  S^^.4       SP                  R4       V P	                  S. RO4       SP                  R4       V P	                  S. RO4       SP                  R4       V P	                  S. RO4       V P                  V4      pV P	                  VR4       R# )	r>   c               3      <"   SP                  ^4       \        4       p SP                  ^V P                  R4       T  Rj  xL
  SP                  ^4       R#  L5i)r   NYay!appendr   	callLatercallback)r   reactorsectionss    r   runone+YieldFromTests.test_twoDeep.<locals>.runonen   sJ     OOA
AaT2LLOOA s   >AAAc               3      <"   SP                  ^4       S! 4        Rj  xL
 p SP                  ^4       \        4       pSP                  ^VP                  R4       T Rj  xL
  SP                  ^4       V #  LY L5i)   NrM   )resultr   rQ   rS   rR   s     r   r   (YieldFromTests.test_twoDeep.<locals>.runv   sg     OOA &(FOOA
AaT2LLOOAM ) s"   A=A9AA=!A;"A=;A=g?皙?rL   N)rV   r         )rV   r   rZ   r[      )r   r   r2   advancer%   r$   )r&   r   r   r   rQ   rS   rR   s   &   @@@r   test_twoDeepYieldFromTests.test_twoDeepf   s    
 '		 ""35)Aq6*<0<0?3""1%f%r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r      s     ! !d !r   c                   a  V 3R lpS P                  \        P                  ! V! 4       4      4      pS P                  V^4       R# )zD
Yielding from an already failed Deferred will raise the exception.
c               3      <"    \        \        R 4      4       Rj  xL
  ^ #  L  \         d(   p SP                  T P                  R4        Rp ? ^# Rp ? ii ; i5i)BoomN)rc   )r   rA   r%   rF   )er&   s    r   test)YieldFromTests.test_reraise.<locals>.test   sN     
6 2333 	 4   3s6   A% #% A% AAAAAN)r$   r   r2   r%   )r&   re   r   s   f  r   test_reraiseYieldFromTests.test_reraise   s7    
	 ""8#9#9$&#ABa r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r      s     % %d %r   c                   a \        4       oV3R lp\        P                  ! V! 4       4      pSP                  R4       V P	                  V4      pV P                  VR4       R# )zQ
Yielding from a paused & chained Deferred will give the result when it
has one.
c               3      <a"   \        4       p \        4       oV P                  V3R  l4       V P                  R4       SP                  ^ SP                  R4       T  Rj  xL
 pV#  L5i)c                    < S# )Nr   )ignoredd2s   &r   <lambda>;YieldFromTests.test_chained.<locals>.test.<locals>.<lambda>   s    "r   Nbye)r   addCallbackrP   rO   )r   r   rn   rQ   s     @r   re   )YieldFromTests.test_chained.<locals>.test   sT     
ABMM,-JJtae4,CJ s   AA*!A("A*rY   rq   N)r   r   r2   r]   r$   r%   )r&   re   r   r   rQ   s   &   @r   test_chainedYieldFromTests.test_chained   sQ    
 '	 ""46*""1%e$r   r   N)__name__
__module____qualname____firstlineno____doc__r(   r3   r:   rG   r^   rg   rt   __static_attributes____classdictcell__)r   s   @r   r	   r	      sQ     % %,% %8% %6 6 )& )&V! ! % %r   r	   )rz   r"   twisted.internet.deferr   r   r   r   twisted.internet.taskr   twisted.trial.unittestr   r	   r   r   r   <module>r      s)   
  J J ' +f%X f%r   