HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/twisted/test/__pycache__/test_defgen.cpython-38.pyc
U


W[�)�@s�dZddlmZmZddlmZddlmZddlm	Z	m
Z
mZddlmZm
Z
ddlmZddlmZdd	lmZd
d�Zdd
�ZGdd�de�ZGdd�d�Zdd�ZGdd�deej�ZGdd�deej�ZGdd�dej�ZdS)zI
Tests for L{twisted.internet.defer.deferredGenerator} and related APIs.
�)�division�absolute_import)�reactor)�unittest)�waitForDeferred�deferredGenerator�Deferred)�inlineCallbacks�returnValue)�defer)�suppress)�runWithWarningsSuppressedcCst�}t�d|jd�|S)Nr�hi)rr�	callLater�callback��d�r�:/usr/lib/python3/dist-packages/twisted/test/test_defgen.py�getThingsrcs"t���fdd�}t�d|��S)Ncs��td��dS)N�OMG)�errback�ZeroDivisionErrorrrrr�CRAPszgetOwie.<locals>.CRAPr)rrr)rrrr�getOwiesrc@seZdZdS)�TerminalExceptionN)�__name__�
__module__�__qualname__rrrrr$src@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�BaseDefgenTestsa
    This class sets up a bunch of test cases which will test both
    deferredGenerator and inlineCallbacks based generators. The subclasses
    DeferredGeneratorTests and InlineCallbacksTests each provide the actual
    generator implementations tested.
    cCs|���|jd�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.
        �WOOSH)�
_genBasics�addCallback�assertEqual��selfrrr�
testBasics/szBaseDefgenTests.testBasicscCs|�|��t�S)zp
        Ensure that a buggy generator properly signals a Failure
        condition on result deferred.
        )�
assertFailure�	_genBuggyrr$rrr�	testBuggy8szBaseDefgenTests.testBuggycCs|���|jd�S)z9Test that a generator which never yields results in None.N)�_genNothingr"r#r$rrr�testNothing?szBaseDefgenTests.testNothingcCs|���|jd�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.
        N)�_genHandledTerminalFailurer"r#r$rrr�testHandledTerminalFailureDsz*BaseDefgenTests.testHandledTerminalFailurecCs.t��}|�|�}|�td��|�|jd�S)z~
        Just like testHandledTerminalFailure, only with a Deferred which fires
        asynchronously with an error.
        �Handled Terminal FailureN)rr�_genHandledTerminalAsyncFailurerrr"r#)r%rZdeferredGeneratorResultDeferredrrr�testHandledTerminalAsyncFailureLs
�z/BaseDefgenTests.testHandledTerminalAsyncFailurecCs|���|jd�S)zj
        Make sure we don't blow the stack when yielding immediately
        available deferreds.
        r)�_genStackUsager"r#r$rrr�testStackUsageWszBaseDefgenTests.testStackUsagecCs|���|jd�S)zg
        Make sure we don't blow the stack when yielding immediately
        available values.
        r)�_genStackUsage2r"r#r$rrr�testStackUsage2^szBaseDefgenTests.testStackUsage2N)rrr�__doc__r&r)r+r-r0r2r4rrrrr's	rcCsttdd�gt|�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)�frrr�deprecatedDeferredGeneratorgs

�r:c@s|eZdZedd��Zedd��Zedd��Zedd��Zed	d
��Zdd�Z	ee	�Z	d
d�Z
ee
�Z
dd�Zedd�gZ
dS)�DeferredGeneratorTestsc
cs~tt��}|V|��}|�|d�tt��}|Vz|��Wn2tk
rr}z|�t|�d�W5d}~XYnXdVdS�Nrrr )rr�	getResultr#rr�str)r%�xZow�errrr!xs

"z!DeferredGeneratorTests._genBasicsccstt��VdddS�N�r)rrr$rrrr(�sz DeferredGeneratorTests._genBuggyccsdS�Nrr$rrrr*�sz"DeferredGeneratorTests._genNothingccs>tt�td���}|Vz|��Wntk
r8YnXdS�Nr.)rr�failrr=�r%r?rrrr,�sz1DeferredGeneratorTests._genHandledTerminalFailureccs4t|�}|Vz|��Wntk
r.YnXdSrC)rr=r)r%rr?rrrr/�sz6DeferredGeneratorTests._genHandledTerminalAsyncFailureccs4td�D] }tt�d��}|V|��}qdVdS�Ni�rBr)�rangerr�succeedr=rFrrrr1�s

z%DeferredGeneratorTests._genStackUsageccstd�D]
}dVqdVdSrG)rHrFrrrr3�sz&DeferredGeneratorTests._genStackUsage2cCsdd�}t|�}|�|�t�S)zZ
        Ensure that yielding a Deferred directly is trapped as an
        error.
        csst�VdSrC�rrrrr�_genDeferred�szADeferredGeneratorTests.testDeferredYielding.<locals>._genDeferred)r:r'�	TypeError)r%rKrrr�testDeferredYielding�sz+DeferredGeneratorTests.testDeferredYieldingz5twisted.internet.defer.waitForDeferred was deprecatedr6N)rrrr:r!r(r*r,r/r1r3rMr8rrrrrr;us"



	
	
�r;c@s�eZdZdd�Zee�Zdd�Zee�Zdd�Zee�Zdd�Zee�Zd	d
�Zee�Zdd�Z	ee	�Z	d
d�Z
ee
�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�InlineCallbacksTestsc
cs`t�V}|�|d�zt�VWn2tk
rR}z|�t|�d�W5d}~XYnXtd�dSr<)rr#rrr>r
)r%r?r@rrrr!�s"zInlineCallbacksTests._genBasicsccst�VdddSrArJr$rrrr(�szInlineCallbacksTests._genBuggyccsdSrCrr$rrrr*�sz InlineCallbacksTests._genNothingccs.zt�td��VWntk
r(YnXdSrD)rrErr$rrrr,�sz/InlineCallbacksTests._genHandledTerminalFailureccs$z
|VWntk
rYnXdSrC)r)r%rrrrr/�s
z4InlineCallbacksTests._genHandledTerminalAsyncFailureccs&td�D]}t�d�Vqtd�dSrG)rHrrIr
rFrrrr1�sz#InlineCallbacksTests._genStackUsageccs td�D]
}dVqtd�dSrG)rHr
rFrrrr3sz$InlineCallbacksTests._genStackUsage2cCs dd�}t|�}|��|jd�S)z�
        Ensure that yielding a non-deferred passes it back as the
        result of the yield expression.

        @return: A L{twisted.internet.defer.Deferred}
        @rtype: L{twisted.internet.defer.Deferred}
        cssdVtd�dS�N��r
rrrr�_testsz8InlineCallbacksTests.testYieldNonDeferred.<locals>._testrP�r	r"r#)r%rRrrr�testYieldNonDeferred	sz)InlineCallbacksTests.testYieldNonDeferredcCs dd�}t|�}|��|jd�S)z9Ensure a standard python return results in a None result.css
dVdSrOrrrrr�	_noReturnsz9InlineCallbacksTests.testReturnNoValue.<locals>._noReturnNrS)r%rUrrr�testReturnNoValuesz&InlineCallbacksTests.testReturnNoValuecCs dd�}t|�}|��|jd�S)zEnsure that returnValue works.cssdVtd�dS)NrP�rQrrrr�_return#sz5InlineCallbacksTests.testReturnValue.<locals>._returnrWrS)r%rXrrr�testReturnValue!sz$InlineCallbacksTests.testReturnValuecCs,dd�}t|�}|�dt|�t|���dS)z�
        Ensure that C{TypeError} with a message about L{inlineCallbacks} is
        raised when a non-generator returns something other than a generator.
        cSsdSrOrrrrr�_noYield0sz>InlineCallbacksTests.test_nonGeneratorReturn.<locals>._noYieldr	N�r	ZassertInr>ZassertRaisesrL�r%rZrrr�test_nonGeneratorReturn+s
�z,InlineCallbacksTests.test_nonGeneratorReturncCs,dd�}t|�}|�dt|�t|���dS)z�
        Ensure that C{TypeError} with a message about L{inlineCallbacks} is
        raised when a non-generator calls L{returnValue}.
        cSstd�dSrOrQrrrrrZ=szCInlineCallbacksTests.test_nonGeneratorReturnValue.<locals>._noYieldr	Nr[r\rrr�test_nonGeneratorReturnValue8s
�z1InlineCallbacksTests.test_nonGeneratorReturnValueN)rrrr!r	r(r*r,r/r1r3rTrVrYr]r^rrrrrN�s*�	

rNc@s eZdZdZdd�Zdd�ZdS)�DeprecateDeferredGeneratorTestszY
    Tests that L{DeferredGeneratorTests} and L{waitForDeferred} are
    deprecated.
    cCsVtdd��}|�|jg�}|�t|�d�|�|ddt�|�|ddd�dS)	z5
        L{deferredGenerator} is deprecated.
        css
dVdSrCrrrrr�decoratedFunctionPsz[DeprecateDeferredGeneratorTests.test_deferredGeneratorDeprecated.<locals>.decoratedFunctionrBr�categoryr7z�twisted.internet.defer.deferredGenerator was deprecated in Twisted 15.0.0; please use twisted.internet.defer.inlineCallbacks insteadN)r�
flushWarnings� test_deferredGeneratorDeprecatedr#�len�DeprecationWarning)r%r`�warningsrrrrcLs

�z@DeprecateDeferredGeneratorTests.test_deferredGeneratorDeprecatedcCsXt�}t|�|�|jg�}|�t|�d�|�|ddt�|�|ddd�dS)z3
        L{waitForDeferred} is deprecated.
        rBrrar7z�twisted.internet.defer.waitForDeferred was deprecated in Twisted 15.0.0; please use twisted.internet.defer.inlineCallbacks insteadN)rrrb�test_waitForDeferredDeprecatedr#rdre)r%rrfrrrrg]s
�z>DeprecateDeferredGeneratorTests.test_waitForDeferredDeprecatedN)rrrr5rcrgrrrrr_Fsr_N)r5Z
__future__rrZtwisted.internetrZ
twisted.trialrZtwisted.internet.deferrrrr	r
rZtwisted.trial.utilrr8Ztwisted.python.utilr
rr�	Exceptionrrr:ZTestCaser;rNZSynchronousTestCaser_rrrr�<module>s 
@Xy