ó
    Ö›‘h(  ã                   óV   • S r SSKrSSKJrJrJrJr  SSKJr  SSK	J
r
   " S S\
5      rg)z/
Tests for C{yield from} support in Deferreds.
é    N)ÚDeferredÚensureDeferredÚfailÚsucceed)ÚClock)ÚTestCasec                   ó^   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSrg)ÚYieldFromTestsé   z8
Tests for using Deferreds in conjunction with PEP-380.
Nc                 óà   • S nU" 5       nU R                  U[        R                  5        [        U5      nU R                  U[        5        U R                  U5      nU R                  US5        g)z=
L{ensureDeferred} will turn a coroutine into a L{Deferred}.
c               3   ó<   #   • [        S5      n U  S h  v•N nU$  N7f©NÚfoo©r   ©ÚdÚress     ÚnC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/test/test_defer_yieldfrom.pyÚ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Õ$ó    c                 ó  ^• U4S jnS mU" 5       nU R                  U[        R                  5        [        R                  " U5      nU R                  U[        5        U R                  U5      nU R                  US5        g)zE
L{Deferred.fromCoroutine} will turn a coroutine into a L{Deferred}.
c               3   ó`   >#   • [        S5      n U  S h  v•N   T" 5        S h  v•N nU$  N N7f)NÚbarr   )r   r   Úrun2s     €r   r   Ú6YieldFromTests.test_DeferredfromCoroutine.<locals>.run0   s-   øé € Ü˜“ˆAØ�LˆLÙ!›V×#ˆCØˆJñ Ù#ùs   ƒ.”*•.£,¤.¬.c               3   ó<   #   • [        S5      n U  S h  v•N nU$  N7f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                 ó†   • S n[         R                  " U" 5       5      nU R                  U5      nU R                  US5        g)zM
L{Deferred.fromCoroutine} allows a function to C{yield from} a
L{Deferred}.
c               3   ó<   #   • [        S5      n U  S h  v•N nU$  N7fr   r   r   s     r   r   Ú&YieldFromTests.test_basic.<locals>.runM   r   r   r   N)r   r*   r   r   ©r   r   r   r   s       r   Ú
test_basicÚYieldFromTests.test_basicG   s;   € ò	ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r"   c                 ó   • S n[         R                  " U" 5       5      nU R                  U5      nU R                  [	        UR
                  5      [        5        U R                  UR
                  R                  S5        g)ú‚
An exception in a generator scheduled with L{Deferred.fromCoroutine}
will cause the returned L{Deferred} to fire with a failure.
c               3   óN   #   • [        S5      n U  S h  v•N   [        S5      e N7f)Nr   úOh no!)r   Ú
ValueError)r   s    r   r   Ú*YieldFromTests.test_exception.<locals>.run\   s%   é € Ü˜“ˆAØ�LˆLÜ˜XÓ&Ð&ñ ùs   ‚%“#”%)r6   N)r   r*   ÚfailureResultOfr   ÚtypeÚvaluer7   Úargsr0   s       r   Útest_exceptionÚYieldFromTests.test_exceptionV   s[   € ò	'ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 1Ó%ˆØ×Ñœ˜cŸi™i›¬*Ô5Ø×Ñ˜Ÿ™Ÿ™¨Õ5r"   c                 óä  ^^^• [        5       m/ mUU4S jmUUU4S jn[        R                  " U" 5       5      nTR                  S5        U R	                  TSS/5        TR                  S5        U R	                  T/ SQ5        TR                  S5        U R	                  T/ SQ5        TR                  S5        U R	                  T/ SQ5        U R                  U5      nU R	                  US	5        g
)r4   c               3   ó¸   >#   • TR                  S5        [        5       n TR                  SU R                  S 5        U  S h  v•N   TR                  S5        g N7f)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   óþ   >#   • TR                  S5        T" 5        S h  v•N n TR                  S5        [        5       nTR                  SUR                  S 5        U S h  v•N   TR                  S5        U $  NY N7f)NrB   é   é   rE   )Úresultr   rI   rK   rJ   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ÍÌÌÌÌÌì?rB   rA   çš™™™™™¹?)rB   rA   rC   rN   )rB   rA   rC   rN   rO   rD   N)r   r   r*   Úadvancer   r   )r   r   r   r   rI   rK   rJ   s       @@@r   Útest_twoDeepÚYieldFromTests.test_twoDeepf   sÃ   ú€ ô
 “'ˆØˆö	÷	ô ×"Ò"¡3£5Ó)ˆà�‰˜ÔØ×Ñ˜ A q 6Ô*à�‰˜ÔØ×Ñ˜¢<Ô0à�‰˜ÔØ×Ñ˜¢<Ô0à�‰˜ÔØ×Ñ˜¢?Ô3à×"Ñ" 1Ó%ˆØ×Ñ˜˜fÕ%r"   c                 óŠ   ^ • U 4S jnT R                  [        R                  " U" 5       5      5      nT R                  US5        g)zD
Yielding from an already failed Deferred will raise the exception.
c               3   ó²   >#   •  [        [        S5      5       S h  v•N   g N! [         a&  n TR                  U R                  S5         S n A gS n A ff = f7f)NÚBoom)rX   rB   r   )r   r7   r   r<   )Ú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rB   N)r   r   r*   r   )r   rZ   r   s   `  r   Útest_reraiseÚYieldFromTests.test_reraise‘   s7   ø€ õ
	ð ×"Ñ"¤8×#9Ò#9¹$»&Ó#AÓBˆØ×Ñ˜˜aÕ r"   c                 óÄ   ^• [        5       mU4S jn[        R                  " U" 5       5      nTR                  S5        U R	                  U5      nU R                  US5        g)zQ
Yielding from a paused & chained Deferred will give the result when it
has one.
c               3   óØ   >^#   • [        5       n [        5       mU R                  U4S j5        U R                  S 5        TR                  STR                  S5        U  S h  v•N nU$  N7f)Nc                 ó   >• T$ )N© )ÚignoredÚd2s    €r   Ú<lambda>Ú;YieldFromTests.test_chained.<locals>.test.<locals>.<lambda>«   s   ø€ ©"r"   r   Úbye)r   ÚaddCallbackrH   rG   )r   r   rc   rI   s     @€r   rZ   Ú)YieldFromTests.test_chained.<locals>.test¨   sT   ùé € Ü“
ˆAÜ“ˆBØ�M‰MÔ,Ô-à�J‰J�tÔØ×Ñ˜a §¡¨eÔ4Ø—,ˆCØˆJñ ùs   „AA*Á!A(Á"A*rR   rf   N)r   r   r*   rS   r   r   )r   rZ   r   r   rI   s       @r   Útest_chainedÚYieldFromTests.test_chained¡   sQ   ø€ ô
 “'ˆõ	ô ×"Ò"¡4£6Ó*ˆØ�‰˜Ôà×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r"   ra   )ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r+   r1   r=   rT   r\   ri   Ú__static_attributes__ra   r"   r   r
   r
      s+   † ñô%ô,%ô8%ô6ô )&ôV!÷ %r"   r
   )rp   r   Útwisted.internet.deferr   r   r   r   Útwisted.internet.taskr   Útwisted.trial.unittestr   r
   ra   r"   r   Ú<module>ru      s)   ðñ
ó ç JÓ JÝ 'Ý +ôf%�Xõ f%r"   