§
    Ètºf(  ã                   ó^   — d Z ddlZddlmZmZmZmZ ddlmZ ddl	m
Z
  G d„ de
¦  «        ZdS )z/
Tests for C{yield from} support in Deferreds.
é    N)ÚDeferredÚensureDeferredÚfailÚsucceed)ÚClock)ÚTestCasec                   óJ   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dS )ÚYieldFromTestsz@
    Tests for using Deferreds in conjunction with PEP-380.
    ÚreturnNc                 ó
  — d„ } |¦   «         }|                       |t          j        ¦  «         t          |¦  «        }|                       |t          ¦  «         |                      |¦  «        }|                      |d¦  «         dS )zM
        L{ensureDeferred} will turn a coroutine into a L{Deferred}.
        c               3   ó8   K  — t          d¦  «        } | E d {V —†}|S ©NÚfoo©r   ©ÚdÚress     úi/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/test/test_defer_yieldfrom.pyÚrunz/YieldFromTests.test_ensureDeferred.<locals>.run   ó'   è è € Ý˜‘”ˆAØ�,�,�,�,�,�,ˆCØˆJó    r   N)ÚassertIsInstanceÚtypesÚGeneratorTyper   r   ÚsuccessResultOfÚassertEqual)Úselfr   Úrr   r   s        r   Útest_ensureDeferredz"YieldFromTests.test_ensureDeferred   s�   € ð
	ð 	ð 	ð ˆC‰EŒEˆØ×Ò˜a¥Ô!4Ñ5Ô5Ð5õ ˜1ÑÔˆØ×Ò˜a¥Ñ*Ô*Ð*ð ×"Ò" 1Ñ%Ô%ˆØ×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r   c                 ó   ‡— ˆfd„}d„ Š |¦   «         }|                       |t          j        ¦  «         t          j        |¦  «        }|                       |t          ¦  «         |                      |¦  «        }|                      |d¦  «         dS )zU
        L{Deferred.fromCoroutine} will turn a coroutine into a L{Deferred}.
        c               3   óZ   •K  — t          d¦  «        } | E d {V —†  ‰¦   «         E d {V —†}|S )NÚbarr   )r   r   Úrun2s     €r   r   z6YieldFromTests.test_DeferredfromCoroutine.<locals>.run0   sE   øè è € Ý˜‘”ˆAØˆLˆLˆLˆLˆLˆLˆLØ!˜T™VœVÐ#Ð#Ð#Ð#Ð#Ð#ˆCØˆJr   c               3   ó8   K  — t          d¦  «        } | E d {V —†}|S r   r   r   s     r   r#   z7YieldFromTests.test_DeferredfromCoroutine.<locals>.run26   r   r   r   N)r   r   r   r   ÚfromCoroutiner   r   )r   r   r   r   r   r#   s        @r   Útest_DeferredfromCoroutinez)YieldFromTests.test_DeferredfromCoroutine+   sª   ø€ ð
	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð ˆC‰EŒEˆØ×Ò˜a¥Ô!4Ñ5Ô5Ð5õ Ô" 1Ñ%Ô%ˆØ×Ò˜a¥Ñ*Ô*Ð*ð ×"Ò" 1Ñ%Ô%ˆØ×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r   c                 óš   — d„ }t          j         |¦   «         ¦  «        }|                      |¦  «        }|                      |d¦  «         dS )ze
        L{Deferred.fromCoroutine} allows a function to C{yield from} a
        L{Deferred}.
        c               3   ó8   K  — t          d¦  «        } | E d {V —†}|S r   r   r   s     r   r   z&YieldFromTests.test_basic.<locals>.runM   r   r   r   N)r   r%   r   r   ©r   r   r   r   s       r   Ú
test_basiczYieldFromTests.test_basicG   sX   € ð	ð 	ð 	õ
 Ô" 3 3¡5¤5Ñ)Ô)ˆØ×"Ò" 1Ñ%Ô%ˆØ×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r   c                 ó  — d„ }t          j         |¦   «         ¦  «        }|                      |¦  «        }|                      t	          |j        ¦  «        t          ¦  «         |                      |j        j        d¦  «         dS )úš
        An exception in a generator scheduled with L{Deferred.fromCoroutine}
        will cause the returned L{Deferred} to fire with a failure.
        c               3   óR   K  — t          d¦  «        } | E d {V —† t          d¦  «        ‚)Nr   úOh no!)r   Ú
ValueError)r   s    r   r   z*YieldFromTests.test_exception.<locals>.run\   s0   è è € Ý˜‘”ˆAØˆLˆLˆLˆLˆLˆLˆLÝ˜XÑ&Ô&Ð&r   )r.   N)r   r%   ÚfailureResultOfr   ÚtypeÚvaluer/   Úargsr)   s       r   Útest_exceptionzYieldFromTests.test_exceptionV   sz   € ð	'ð 	'ð 	'õ
 Ô" 3 3¡5¤5Ñ)Ô)ˆØ×"Ò" 1Ñ%Ô%ˆØ×Ò�˜cœi™œ­*Ñ5Ô5Ð5Ø×Ò˜œœ¨Ñ5Ô5Ð5Ð5Ð5r   c                 ó<  ‡‡‡— t          ¦   «         Šg Šˆˆfd„Šˆˆˆfd„}t          j         |¦   «         ¦  «        }‰                     d¦  «         |                      ‰ddg¦  «         ‰                     d¦  «         |                      ‰g d¢¦  «         ‰                     d¦  «         |                      ‰g d¢¦  «         ‰                     d¦  «         |                      ‰g d¢¦  «         |                      |¦  «        }|                      |d	¦  «         d
S )r,   c               3   óÄ   •K  — ‰                      d¦  «         t          ¦   «         } ‰                     d| j        d ¦  «         | E d {V —† ‰                      d¦  «         dS )Né   é   é   úYay!©Úappendr   Ú	callLaterÚcallback)r   ÚreactorÚsectionss    €€r   Úrunonez+YieldFromTests.test_twoDeep.<locals>.runonen   sd   øè è € Ø�OŠO˜AÑÔÐÝ‘
”
ˆAØ×Ò˜a ¤¨TÑ2Ô2Ð2ØˆLˆLˆLˆLˆLˆLˆLØ�OŠO˜AÑÔÐØ�6r   c               3   ó  •K  — ‰                      d¦  «          ‰¦   «         E d {V —†} ‰                      d¦  «         t          ¦   «         }‰                     d|j        d ¦  «         |E d {V —† ‰                      d¦  «         | S )Nr8   é   é   r;   )Úresultr   r?   rA   r@   s     €€€r   r   z(YieldFromTests.test_twoDeep.<locals>.runv   s“   øè è € Ø�OŠO˜AÑÔÐØ & ¡¤Ð(Ð(Ð(Ð(Ð(Ð(ˆFØ�OŠO˜AÑÔÐÝ‘
”
ˆAØ×Ò˜a ¤¨TÑ2Ô2Ð2ØˆLˆLˆLˆLˆLˆLˆLØ�OŠO˜AÑÔÐØˆMr   gÍÌÌÌÌÌì?r8   r7   çš™™™™™¹?)r8   r7   r9   rC   )r8   r7   r9   rC   rD   r:   N)r   r   r%   Úadvancer   r   )r   r   r   r   r?   rA   r@   s       @@@r   Útest_twoDeepzYieldFromTests.test_twoDeepf   sM  øøø€ õ
 ‘'”'ˆØˆð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô" 3 3¡5¤5Ñ)Ô)ˆà�Š˜ÑÔÐØ×Ò˜ A q 6Ñ*Ô*Ð*à�Š˜ÑÔÐØ×Ò˜ < < <Ñ0Ô0Ð0à�Š˜ÑÔÐØ×Ò˜ < < <Ñ0Ô0Ð0à�Š˜ÑÔÐØ×Ò˜ ? ? ?Ñ3Ô3Ð3à×"Ò" 1Ñ%Ô%ˆØ×Ò˜˜fÑ%Ô%Ð%Ð%Ð%r   c                 óœ   ‡ — ˆ fd„}‰                       t          j         |¦   «         ¦  «        ¦  «        }‰                      |d¦  «         dS )zT
        Yielding from an already failed Deferred will raise the exception.
        c               3   óº   •K  — 	 t          t          d¦  «        ¦  «        E d {V —† n3# t          $ r&} ‰                     | j        d¦  «         Y d } ~ dS d } ~ ww xY wdS )NÚBoom)rK   r8   r   )r   r/   r   r3   )Úer   s    €r   Útestz)YieldFromTests.test_reraise.<locals>.test–   s‚   øè è € ðÝ¥
¨6Ñ 2Ô 2Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3øÝð ð ð Ø× Ò  ¤¨Ñ3Ô3Ð3Ø�q�q�q�q�qøøøøðøøøð �1s   …"( ¨
A²AÁAr8   N)r   r   r%   r   )r   rM   r   s   `  r   Útest_reraisezYieldFromTests.test_reraise‘   s^   ø€ ð
	ð 	ð 	ð 	ð 	ð ×"Ò"¥8Ô#9¸$¸$¹&¼&Ñ#AÔ#AÑBÔBˆØ×Ò˜˜aÑ Ô Ð Ð Ð r   c                 óæ   ‡— t          ¦   «         Šˆfd„}t          j         |¦   «         ¦  «        }‰                     d¦  «         |                      |¦  «        }|                      |d¦  «         dS )zi
        Yielding from a paused & chained Deferred will give the result when it
        has one.
        c               3   óè   •‡K  — t          ¦   «         } t          ¦   «         Š|                      ˆfd„¦  «         |                      d ¦  «         ‰                     d‰j        d¦  «         | E d {V —†}|S )Nc                 ó   •— ‰S )N© )ÚignoredÚd2s    €r   ú<lambda>z;YieldFromTests.test_chained.<locals>.test.<locals>.<lambda>«   s   ø€ ¨"€ r   r   Úbye)r   ÚaddCallbackr>   r=   )r   r   rT   r?   s     @€r   rM   z)YieldFromTests.test_chained.<locals>.test¨   sx   øøè è € Ý‘
”
ˆAÝ‘”ˆBØ�MŠMÐ,Ð,Ð,Ð,Ñ-Ô-Ð-à�JŠJ�tÑÔÐØ×Ò˜a ¤¨eÑ4Ô4Ð4Ø�,�,�,�,�,�,ˆCØˆJr   rF   rV   N)r   r   r%   rG   r   r   )r   rM   r   r   r?   s       @r   Útest_chainedzYieldFromTests.test_chained¡   s€   ø€ õ
 ‘'”'ˆð	ð 	ð 	ð 	ð 	õ Ô" 4 4¡6¤6Ñ*Ô*ˆØ�Š˜ÑÔÐà×"Ò" 1Ñ%Ô%ˆØ×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r&   r*   r4   rH   rN   rX   rR   r   r   r
   r
      s«   € € € € € ðð ð%ð %ð %ð %ð,%ð %ð %ð %ð8%ð %ð %ð %ð6ð 6ð 6ð 6ð )&ð )&ð )&ð )&ðV!ð !ð !ð !ð %ð %ð %ð %ð %ð %r   r
   )r\   r   Útwisted.internet.deferr   r   r   r   Útwisted.internet.taskr   Útwisted.trial.unittestr   r
   rR   r   r   ú<module>r`      s    ðð
ð ð €€€à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +ðf%ð f%ð f%ð f%ð f%�Xñ f%ô f%ð f%ð f%ð f%r   