ó
    Ö›‘h°  ã                   óˆ   • S r SSKrSSKJr  SSKJrJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJr   " S S	\5      r " S
 S\5      rg)z*
Tests for C{await} support in Deferreds.
é    N)ÚNoReturn)ÚDeferredÚensureDeferredÚfailÚmaybeDeferredÚsucceed)ÚClock)ÚFailure)ÚTestCasec                   ó   • \ rS rSrSrSrg)ÚSampleExceptioné   z*
A specific sample exception for testing.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚjC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/test/test_defer_await.pyr   r      s   † ôr   r   c                   ó|   • \ 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S jrSS jrSS jrSrg)Ú
AwaitTestsé   z8
Tests for using Deferreds in conjunction with PEP-492.
Nc                 ón   • [        5       nUR                  5       nU R                  U[        U5      5        g)z,
C{Deferred.__await__} returns an iterable.
N)r   Ú	__await__ÚassertEqualÚiter)ÚselfÚdÚawaitedDeferreds      r   Útest_awaitReturnsIterableÚ$AwaitTests.test_awaitReturnsIterable$   s+   € ô %›JˆØŸ+™+›-ˆØ×Ñ˜¬$¨Ó*?Õ@r   c                 ó$  ^• S[         4U4S jjnS[         4S j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}.
Úreturnc               “   ó`   >#   • [        S5      n U I S h  v•N   T" 5       I S h  v•N nU$  N N7f)NÚbar©r   )r    ÚresÚrun2s     €r   ÚrunÚ2AwaitTests.test_deferredFromCoroutine.<locals>.run1   s,   øé € Ü˜“ˆAØ�GˆGÙ›—,ˆCØˆJñ Ùùs   ƒ.”*•.£,¤.¬.c               “   ó<   #   • [        S5      n U I S h  v•N nU$  N7f©NÚfoor(   ©r    r)   s     r   r*   Ú3AwaitTests.test_deferredFromCoroutine.<locals>.run27   ó   é € Ü˜“ˆAØ—'ˆCØˆJñ ùó   ‚“”r/   N)ÚstrÚassertIsInstanceÚtypesÚCoroutineTyper   ÚfromCoroutineÚsuccessResultOfr   )r   r+   Úrr    r)   r*   s        @r   Útest_deferredFromCoroutineÚ%AwaitTests.test_deferredFromCoroutine,   s~   ø€ ð
	œ3÷ 	ð	œCô 	ñ ‹EˆØ×Ñ˜a¤×!4Ñ!4Ô5ô ×"Ò" 1Ó%ˆØ×Ñ˜a¤Ô*ð ×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r   c                 ó–   • S[         4S jn[        R                  " U" 5       5      nU R                  U5      nU R	                  US5        g)zK
L{Deferred.fromCoroutine} allows a function to C{await} on a
L{Deferred}.
r%   c               “   ó<   #   • [        S5      n U I S h  v•N nU$  N7fr.   r(   r0   s     r   r+   Ú"AwaitTests.test_basic.<locals>.runN   r2   r3   r/   N)r4   r   r8   r9   r   ©r   r+   r    r)   s       r   Ú
test_basicÚAwaitTests.test_basicH   sB   € ð	œ3ô 	ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r   c                 ó€   • S[         4S jn[        U" 5       5      nU R                  U5      nU R                  US5        g)zC
L{ensureDeferred} allows a function to C{await} on a L{Deferred}.
r%   c               “   ó<   #   • [        S5      n U I S h  v•N nU$  N7fr.   r(   r0   s     r   r+   Ú0AwaitTests.test_basicEnsureDeferred.<locals>.run\   r2   r3   r/   N)r4   r   r9   r   r@   s       r   Útest_basicEnsureDeferredÚ#AwaitTests.test_basicEnsureDeferredW   s<   € ð
	œ3ô 	ô
 ™3›5Ó!ˆØ×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r   c                 ó  • S[         4S j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)z‚
An exception in a coroutine scheduled with L{Deferred.fromCoroutine}
will cause the returned L{Deferred} to fire with a failure.
r%   c               “   óN   #   • [        S5      n U I S h  v•N   [        S5      e N7f)Nr/   úOh no!)r   Ú
ValueError)r    s    r   r+   Ú&AwaitTests.test_exception.<locals>.runk   s%   é € Ü˜“ˆAØ�GˆGÜ˜XÓ&Ð&ñ ùs   ‚%“#”%)rJ   N)	r   r   r8   ÚfailureResultOfr   ÚtypeÚvaluerK   Úargsr@   s       r   Útest_exceptionÚAwaitTests.test_exceptione   sb   € ð	'œ8ô 	'ô
 ×"Ò"¡3£5Ó)ˆØ×"Ñ" 1Ó%ˆØ×Ñœ˜cŸi™i›¬*Ô5Ø×Ñ˜Ÿ™Ÿ™¨Õ5r   c                 ó
  ^• SS jn[        U5      mSU4S jjnU R                  [        R                  " U" 5       5      5      nU R	                  SUR                  5       5        U R	                  SUR                  5       5        g)zÉ
When a Deferred is awaited upon that has already failed with a Failure
that has a traceback, both the place that the synchronous traceback
comes from and the awaiting line are shown in the traceback.
Nc                  ó   • [        5       e©N)r   r   r   r   ÚraisesÚCAwaitTests.test_synchronousDeferredFailureTraceback.<locals>.raises|   s   € Ü!Ó#Ð#r   c               “   ó$   >#   • T I S h  v•N $  N7frU   r   ©Úits   €r   ÚdoomedÚCAwaitTests.test_synchronousDeferredFailureTraceback.<locals>.doomed�   ó   øé € Ø—8ˆO‘8ùó   ƒ‰Šú, in doomed
z, in raises
©r%   N)r   rM   r   r8   ÚassertInÚgetTraceback)r   rV   r[   ÚfailurerZ   s       @r   Ú(test_synchronousDeferredFailureTracebackÚ3AwaitTests.test_synchronousDeferredFailureTracebacku   sf   ø€ ô	$ô ˜6Ó"ˆ÷	ð ×&Ñ&¤x×'=Ò'=¹f»hÓ'GÓHˆà�‰�o w×';Ñ';Ó'=Ô>Ø�‰�o w×';Ñ';Ó'=Õ>r   c                 óf  ^• S[         4S jn[        5       mSU4S jjn[        R                  " U" 5       5      nU R                  U5        TR	                  U" 5       5        U R                  U5      nU R                  SUR                  5       5        U R                  SUR                  5       5        g)zÂ
When a Deferred is awaited upon that later fails with a Failure that
has a traceback, both the place that the synchronous traceback comes
from and the awaiting line are shown in the traceback.
r%   c                  óL   •  [        5       e! [          a    [        5       s $ f = frU   )r   r
   r   r   r   ÚreturnsFailureÚEAwaitTests.test_asyncDeferredFailureTraceback.<locals>.returnsFailure�   s'   € ð!Ü%Ó'Ð'øÜ"ó !Ü“yÒ ð!ús   ‚
 Œ#¢#Nc               “   ó$   >#   • T I S h  v•N $  N7frU   r   rY   s   €r   r[   Ú=AwaitTests.test_asyncDeferredFailureTraceback.<locals>.doomed˜   r]   r^   r_   z, in returnsFailure
r`   )r
   r   r8   ÚassertNoResultÚerrbackrM   ra   rb   )r   rh   r[   Ústartedrc   rZ   s        @r   Ú"test_asyncDeferredFailureTracebackÚ-AwaitTests.test_asyncDeferredFailureTraceback‰   s�   ø€ ð	!¤ô 	!ô &›Zˆ÷	ô ×(Ò(©«Ó2ˆØ×Ñ˜GÔ$Ø
�
‰
‘>Ó#Ô$Ø×&Ñ& wÓ/ˆØ�‰�o w×';Ñ';Ó'=Ô>Ø�‰Ð-¨w×/CÑ/CÓ/EÕFr   c                 ó  ^^^• [        5       m/ mS[        4UU4S jjmS[        4UUU4S j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)zŠ
A coroutine scheduled with L{Deferred.fromCoroutine} that awaits a
L{Deferred} suspends its execution until the inner L{Deferred} fires.
r%   c               “   ó¸   >#   • TR                  S5        [        5       n TR                  SU R                  S5        U I S h  v•N   TR                  S5        g N7f)Né   é   é   úYay!©Úappendr   Ú	callLaterÚcallback)r    ÚreactorÚsectionss    €€r   ÚrunoneÚ'AwaitTests.test_twoDeep.<locals>.runoneª   sJ   øé € Ø�O‰O˜AÔÜ'›zˆAØ×Ñ˜a §¡¨QÔ/Ø�GˆGØ�O‰O˜AÔØñ ùs   ƒ>AÁAÁAc               “   óþ   >#   • TR                  S5        T" 5       I S h  v•N n TR                  S5        [        5       nTR                  SUR                  S5        UI S h  v•N   TR                  S5        U $  NY N7f)Nrt   é   é   rw   )Úresultr    r{   r}   r|   s     €€€r   r+   Ú$AwaitTests.test_twoDeep.<locals>.run²   sf   øé € Ø�O‰O˜AÔÙ!›8—^ˆFØ�O‰O˜AÔÜ'›zˆAØ×Ñ˜a §¡¨QÔ/Ø�GˆGØ�O‰O˜AÔØˆMñ $ñ ùs"   ƒA=ŸA9 AA=Á!A;Á"A=Á;A=gÍÌÌÌÌÌì?rt   rs   çš™™™™™¹?)rt   rs   ru   r€   )rt   rs   ru   r€   r�   rv   N)r	   r4   r   r8   Úadvancer   r9   )r   r+   r    r)   r{   r}   r|   s       @@@r   Útest_twoDeepÚAwaitTests.test_twoDeep¢   sÛ   ú€ ô
 “'ˆØˆð	œc÷ 	ð 	ð	œ3÷ 	ñ 	ô ×"Ò"¡3£5Ó)ˆà�‰˜ÔØ×Ñ˜ A q 6Ô*à�‰˜ÔØ×Ñ˜¢<Ô0à�‰˜ÔØ×Ñ˜¢<Ô0à�‰˜ÔØ×Ñ˜¢?Ô3à×"Ñ" 1Ó%ˆØ×Ñ˜˜fÕ%r   c                 óš   ^ • S[         4U 4S jjnT R                  [        R                  " U" 5       5      5      nT R	                  US5        g)z?
Awaiting an already failed Deferred will raise the exception.
r%   c               “   ó²   >#   •  [        [        S5      5      I 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)rŠ   rt   r   )r   rK   r   rP   )Úer   s    €r   ÚtestÚ%AwaitTests.test_reraise.<locals>.testÒ   sN   øé € ðÜœ: fÓ-Ó.×.Ð.ð ñ	 /øÜó Ø× Ñ  §¡¨Ô3Üûðüs6   ƒA…$ œ"�$ ¡A¢$ ¤
A®AÁ
AÁAÁArt   N)Úintr9   r   r8   r   )r   rŒ   r)   s   `  r   Útest_reraiseÚAwaitTests.test_reraiseÍ   s>   ø€ ð
	œC÷ 	ð ×"Ñ"¤8×#9Ò#9¹$»&Ó#AÓBˆØ×Ñ˜˜aÕ r   c                 óÈ   ^• [        5       mSU4S jjn[        R                  " U" 5       5      nTR                  S5        U R	                  U5      nU R                  US5        g)zL
Awaiting a paused & chained Deferred will give the result when it has
one.
Nc               “   óÔ   >^#   • [        5       n [        5       mU R                  U4S j5        U R                  S 5        TR                  STR                  S5        U I S h  v•N $  N7f)Nc                 ó   >• T$ rU   r   )ÚignoredÚd2s    €r   Ú<lambda>Ú7AwaitTests.test_chained.<locals>.test.<locals>.<lambda>ç   s   ø€ ©"r   r   Úbye)r   ÚaddCallbackrz   ry   )r    r•   r{   s    @€r   rŒ   Ú%AwaitTests.test_chained.<locals>.testä   sL   ùé € Ü (£
ˆAÜ!)£ˆBØ�M‰MÔ,Ô-à�J‰J�tÔØ×Ñ˜a §¡¨eÔ4Ø—7ˆN‘7ùs   „AA(Á!A&Á"A(r„   r˜   r`   )r	   r   r8   r…   r9   r   )r   rŒ   r    r)   r{   s       @r   Útest_chainedÚAwaitTests.test_chainedÝ   sQ   ø€ ô
 “'ˆ÷	ô ×"Ò"¡4£6Ó*ˆØ�‰˜Ôà×"Ñ" 1Ó%ˆØ×Ñ˜˜eÕ$r   r   r`   )r   r   r   r   r   r"   r;   rA   rF   rQ   rd   ro   r†   r�   r›   r   r   r   r   r   r      s<   † ñôAô%ô8%ô%ô6ô ?ô(Gô2)&ôV!÷ %r   r   )r   r6   Útyping_extensionsr   Útwisted.internet.deferr   r   r   r   r   Útwisted.internet.taskr	   Útwisted.python.failurer
   Útwisted.trial.unittestr   Ú	Exceptionr   r   r   r   r   Ú<module>r£      sA   ðñ
ó å &÷õ õ (Ý *Ý +ô�iô ôR%�õ R%r   