§
    ÈtºfÝ  ã                   óÌ   — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ d„ Zd„ Z G d	„ d
e¦  «        Zd„ Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )zI
Tests for L{twisted.internet.defer.deferredGenerator} and related APIs.
é    )ÚdeferÚreactor)ÚDeferredÚdeferredGeneratorÚwaitForDeferred)ÚrunWithWarningsSuppressed)Úunittest)Úsuppressc                  óX   — t          ¦   «         } t          j        d| j        d¦  «         | S )Nr   Úhi)r   r   Ú	callLaterÚcallback©Úds    úW/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_defgen.pyÚgetThingr      s'   € Ý‰
Œ
€AÝÔ�a˜œ TÑ*Ô*Ð*Ø€Hó    c                  óX   ‡— t          ¦   «         Šˆfd„} t          j        d| ¦  «         ‰S )Nc                  óL   •— ‰                       t          d¦  «        ¦  «         d S )NÚOMG)ÚerrbackÚZeroDivisionErrorr   s   €r   ÚCRAPzgetOwie.<locals>.CRAP   s$   ø€ Ø	�	Š	Õ# EÑ*Ô*Ñ+Ô+Ð+Ð+Ð+r   r   )r   r   r   )r   r   s    @r   ÚgetOwier      s?   ø€ Ý‰
Œ
€Að,ð ,ð ,ð ,ð ,õ Ô�a˜ÑÔÐØ€Hr   c                   ó   — e Zd ZdS )ÚTerminalExceptionN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r      s   € € € € € Ø€Dr   r   c                 óL   — t          t          d¬¦  «        gt          | ¦  «        S )z–
    Calls L{deferredGenerator} while suppressing the deprecation warning.

    @param f: Function to call
    @return: Return value of function.
    z7twisted.internet.defer.deferredGenerator was deprecated©Úmessage)r   ÚSUPPRESSr   )Úfs    r   ÚdeprecatedDeferredGeneratorr&   #   s8   € õ %åØTðñ ô ð	
õ
 	Ø	ñô ð r   c                   óX   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
 ed	¬
¦  «        gZdS )ÚDeferredGeneratorTestsc                 ón   ‡ — t           ˆ fd„¦   «         } |¦   «                              ‰ j        d¦  «        S )zÅ
        Test that a normal deferredGenerator works.  Tests yielding a
        deferred which callbacks, as well as a deferred errbacks. Also
        ensures returning a final value works.
        c               3   ó„  •K  — t          t          ¦   «         ¦  «        } | V — |                      ¦   «         } ‰                     | d¦  «         t          t	          ¦   «         ¦  «        }|V — 	 |                     ¦   «          n:# t
          $ r-}‰                     t          |¦  «        d¦  «         Y d }~nd }~ww xY wdV — d S )Nr   r   ÚWOOSH)r   r   Ú	getResultÚassertEqualr   r   Ústr)ÚxÚowÚeÚselfs      €r   Ú
_genBasicsz5DeferredGeneratorTests.testBasics.<locals>._genBasics=   sÊ   øè è € å¥¡
¤
Ñ+Ô+ˆAØˆGˆGˆGØ—’‘”ˆAà×Ò˜Q Ñ%Ô%Ð%å ¥¡¤Ñ+Ô+ˆBØˆHˆHˆHð0Ø—’‘”��øÝ$ð 0ð 0ð 0Ø× Ò ¥ Q¡¤¨Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/øøøøð0øøøàˆMˆMˆMØˆFs   Á-B Â
B9Â#B4Â4B9r+   ©r&   ÚaddCallbackr-   )r2   r3   s   ` r   Ú
testBasicsz!DeferredGeneratorTests.testBasics6   sJ   ø€ õ 
%ð	ð 	ð 	ð 	ñ 
%Ô	$ð	ð  ˆz‰|Œ|×'Ò'¨Ô(8¸'ÑBÔBÐBr   c                 óh   — t           d„ ¦   «         }|                       |¦   «         t          ¦  «        S )z°
        Ensure that a generator that produces an exception signals
        a Failure condition on result deferred by converting the exception to
        a L{Failure}.
        c               3   óN   K  — t          t          ¦   «         ¦  «        V — ddz   d S )Né   r   )r   r   r    r   r   Ú_genProduceExceptionzJDeferredGeneratorTests.testProducesException.<locals>._genProduceExceptionW   s+   è è € å!¥(¡*¤*Ñ-Ô-Ð-Ð-Ð-Ø�‰FˆFˆFˆFr   )r&   ÚassertFailurer   )r2   r:   s     r   ÚtestProducesExceptionz,DeferredGeneratorTests.testProducesExceptionP   sA   € õ 
%ð	ð 	ñ 
%Ô	$ð	ð ×!Ò!Ð"6Ð"6Ñ"8Ô"8Õ:KÑLÔLÐLr   c                 óh   — t           d„ ¦   «         } |¦   «                              | j        d¦  «        S )z9Test that a generator which never yields results in None.c               3   ó
   K  — d S ©Nr    r    r   r   Ú_genNothingz7DeferredGeneratorTests.testNothing.<locals>._genNothinga   s   è è € ðð r   Nr4   )r2   r@   s     r   ÚtestNothingz"DeferredGeneratorTests.testNothing^   s?   € õ 
%ð	ð 	ñ 
%Ô	$ð	ð ˆ{‰}Œ}×(Ò(¨Ô)9¸4Ñ@Ô@Ð@r   c                 óh   — t           d„ ¦   «         } |¦   «                              | j        d¦  «        S )zÍ
        Create a Deferred Generator which yields a Deferred which fails and
        handles the exception which results.  Assert that the Deferred
        Generator does not errback its Deferred.
        c               3   óº   K  — t          t          j        t          d¦  «        ¦  «        ¦  «        } | V — 	 |                      ¦   «          d S # t          $ r Y d S w xY w)NúHandled Terminal Failure)r   r   Úfailr   r,   ©r/   s    r   Ú_genHandledTerminalFailurezUDeferredGeneratorTests.testHandledTerminalFailure.<locals>._genHandledTerminalFailureo   so   è è € åÝ”
Õ,Ð-GÑHÔHÑIÔIñô ˆAð ˆGˆGˆGðØ—’‘”���øÝ$ð ð ð Ø��ðøøøs   ¶A Á
AÁANr4   )r2   rG   s     r   ÚtestHandledTerminalFailurez1DeferredGeneratorTests.testHandledTerminalFailureh   sB   € õ 
%ð	ð 	ñ 
%Ô	$ð	ð *Ð)Ñ+Ô+×7Ò7¸Ô8HÈ$ÑOÔOÐOr   c                 óØ   — t           d„ ¦   «         }t          j        ¦   «         } ||¦  «        }|                     t	          d¦  «        ¦  «         |                     | j        d¦  «        S )z~
        Just like testHandledTerminalFailure, only with a Deferred which fires
        asynchronously with an error.
        c              3   ó|   K  — t          | ¦  «        }|V — 	 |                     ¦   «          d S # t          $ r Y d S w xY wr?   )r   r,   r   )r   r/   s     r   Ú_genHandledTerminalAsyncFailurez_DeferredGeneratorTests.testHandledTerminalAsyncFailure.<locals>._genHandledTerminalAsyncFailure‚   sT   è è € å Ñ"Ô"ˆAØˆGˆGˆGðØ—’‘”���øÝ$ð ð ð Ø��ðøøøs   —- ­
;º;rD   N)r&   r   r   r   r   r5   r-   )r2   rK   r   ÚdeferredGeneratorResultDeferreds       r   ÚtestHandledTerminalAsyncFailurez6DeferredGeneratorTests.testHandledTerminalAsyncFailure|   ss   € õ 
%ð	ð 	ñ 
%Ô	$ð	õ ŒNÑÔˆØ*IÐ*IÈ!Ñ*LÔ*LÐ'Ø	�	Š	Õ#Ð$>Ñ?Ô?Ñ@Ô@Ð@Ø.×:Ò:¸4Ô;KÈTÑRÔRÐRr   c                 óh   — t           d„ ¦   «         } |¦   «                              | j        d¦  «        S )zj
        Make sure we don't blow the stack when yielding immediately
        available deferreds.
        c               3   ó¨   K  — t          d¦  «        D ];} t          t          j        d¦  «        ¦  «        } | V — |                      ¦   «         } Œ<dV — d S ©Niˆ  r9   r   )Úranger   r   Úsucceedr,   rF   s    r   Ú_genStackUsagez=DeferredGeneratorTests.testStackUsage.<locals>._genStackUsage–   sW   è è € å˜4‘[”[ð "ð "�å#¥E¤M°!Ñ$4Ô$4Ñ5Ô5�Ø���Ø—K’K‘M”M��ØˆGˆGˆGˆGˆGr   r   r4   )r2   rS   s     r   ÚtestStackUsagez%DeferredGeneratorTests.testStackUsage�   sA   € õ 
%ð	ð 	ñ 
%Ô	$ð	ð ˆ~ÑÔ×+Ò+¨DÔ,<¸aÑ@Ô@Ð@r   c                 óh   — t           d„ ¦   «         } |¦   «                              | j        d¦  «        S )zg
        Make sure we don't blow the stack when yielding immediately
        available values.
        c               3   ó>   K  — t          d¦  «        D ]} dV — ŒdV — d S rP   )rQ   rF   s    r   Ú_genStackUsage2z?DeferredGeneratorTests.testStackUsage2.<locals>._genStackUsage2§   s3   è è € å˜4‘[”[ð ð �à����ØˆGˆGˆGˆGˆGr   r   r4   )r2   rW   s     r   ÚtestStackUsage2z&DeferredGeneratorTests.testStackUsage2¡   sA   € õ 
%ð	ð 	ñ 
%Ô	$ð	ð ˆÑ Ô ×,Ò,¨TÔ-=¸qÑAÔAÐAr   c                 ól   — d„ }t          |¦  «        }|                       |¦   «         t          ¦  «        S )zZ
        Ensure that yielding a Deferred directly is trapped as an
        error.
        c               3   ó*   K  — t          ¦   «         V — d S r?   )r   r    r   r   Ú_genDeferredzADeferredGeneratorTests.testDeferredYielding.<locals>._genDeferred·   s   è è € Ý‘*”*ÐÐÐÐÐr   )r&   r;   Ú	TypeError)r2   r[   s     r   ÚtestDeferredYieldingz+DeferredGeneratorTests.testDeferredYielding°   s<   € ð	ð 	ð 	õ 3°<Ñ@Ô@ˆà×!Ò! , ,¡.¤.µ)Ñ<Ô<Ð<r   z5twisted.internet.defer.waitForDeferred was deprecatedr"   N)r   r   r   r6   r<   rA   rH   rM   rT   rX   r]   r$   r
   r    r   r   r(   r(   5   sµ   € € € € € ðCð Cð Cð4Mð Mð MðAð Að AðPð Pð Pð(Sð Sð Sð(Að Að Að"Bð Bð Bð=ð =ð =ð 	ˆÐSÐTÑTÔTð€H€H€Hr   r(   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚDeprecateDeferredGeneratorTestszY
    Tests that L{DeferredGeneratorTests} and L{waitForDeferred} are
    deprecated.
    c                 ó4  — t           d„ ¦   «         }|                      | j        g¦  «        }|                      t	          |¦  «        d¦  «         |                      |d         d         t
          ¦  «         |                      |d         d         d¦  «         dS )z5
        L{deferredGenerator} is deprecated.
        c               3   ó   K  — d V — d S r?   r    r    r   r   ÚdecoratedFunctionz[DeprecateDeferredGeneratorTests.test_deferredGeneratorDeprecated.<locals>.decoratedFunctionÎ   s   è è € àˆJˆJˆJˆJˆJr   r9   r   Úcategoryr#   z„twisted.internet.defer.deferredGenerator was deprecated in Twisted 15.0.0; please use twisted.internet.defer.inlineCallbacks insteadN)r   ÚflushWarningsÚ test_deferredGeneratorDeprecatedr-   ÚlenÚDeprecationWarning)r2   rb   Úwarningss      r   re   z@DeprecateDeferredGeneratorTests.test_deferredGeneratorDeprecatedÉ   s¨   € õ
 
ð	ð 	ñ 
Ô	ð	ð ×%Ò% tÔ'LÐ&MÑNÔNˆØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ø×Ò˜ !œ ZÔ0Õ2DÑEÔEÐEØ×ÒØ�QŒK˜	Ô"ð=ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óN  — t          ¦   «         }t          |¦  «         |                      | j        g¦  «        }|                      t          |¦  «        d¦  «         |                      |d         d         t          ¦  «         |                      |d         d         d¦  «         dS )z3
        L{waitForDeferred} is deprecated.
        r9   r   rc   r#   z‚twisted.internet.defer.waitForDeferred was deprecated in Twisted 15.0.0; please use twisted.internet.defer.inlineCallbacks insteadN)r   r   rd   Útest_waitForDeferredDeprecatedr-   rf   rg   )r2   r   rh   s      r   rj   z>DeprecateDeferredGeneratorTests.test_waitForDeferredDeprecatedÜ   s£   € õ ‰JŒJˆÝ˜ÑÔÐà×%Ò% tÔ'JÐ&KÑLÔLˆØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ø×Ò˜ !œ ZÔ0Õ2DÑEÔEÐEØ×ÒØ�QŒK˜	Ô"ð=ñ	
ô 	
ð 	
ð 	
ð 	
r   N)r   r   r   Ú__doc__re   rj   r    r   r   r_   r_   Ã   s<   € € € € € ðð ð

ð 
ð 
ð&
ð 
ð 
ð 
ð 
r   r_   N)rk   Útwisted.internetr   r   Útwisted.internet.deferr   r   r   Útwisted.python.utilr   Útwisted.trialr	   Útwisted.trial.utilr
   r$   r   r   Ú	Exceptionr   r&   ÚTestCaser(   ÚSynchronousTestCaser_   r    r   r   ú<module>rt      sA  ððð ð ,Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ðð ð ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ðð ð ð$Kð Kð Kð Kð K˜XÔ.ñ Kô Kð Kð\(
ð (
ð (
ð (
ð (
 hÔ&Bñ (
ô (
ð (
ð (
ð (
r   