+
    üÐ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Ø�LˆLÙ!›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;   € ò	ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 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Ø�LˆLÜ˜XÓ&Ð&ñ ùs   ‚%“#”%N)r@   )r   r2   ÚfailureResultOfr%   ÚtypeÚvaluerA   Úargsr9   s   &   r   Útest_exceptionÚYieldFromTests.test_exceptionV   s[   € ò	'ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 1Ó%ˆØ×Ñœ˜cŸi™i›¬*Ô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   øé € Ø�O‰O˜AÔÜ“
ˆAØ×Ñ˜a §¡¨TÔ2Ø�LˆLØ�O‰O˜AÔÙñ ù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   øé € Ø�O‰O˜AÔÙ &£×(ˆFØ�O‰O˜AÔÜ“
ˆAØ×Ñ˜a §¡¨TÔ2Ø�LˆLØ�O‰O˜AÔØˆ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Ã   ú€ ô
 “'ˆØˆö	÷	ô ×"Ò"¡3£5Ó)ˆà�‰˜ÔØ×Ñ˜ A q 6Ô*à�‰˜ÔØ×Ñ˜¢<Ô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Ø�M‰MÔ,Ô-à�J‰J�tÔØ×Ñ˜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   ø€ ô
 “'ˆõ	ô ×"Ò"¡4£6Ó*ˆØ�‰˜Ôà×"Ñ" 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   