a zex@sVddlZddlZddlmZmZmZddlmZGdddejZ e dkrRe dS)N)captured_stderr disable_gc gc_collect)supportc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCS)DTestPEP380OperationcsNgfdd}fdd|D]}d|fq$|gddS)Nc3s$dEdHddSN Starting g1 Finishing g1appendg2tracer H/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_yield_from.pyg1s  zOTestPEP380Operation.test_delegation_of_initial_next_to_subgenerator..g1c3sddVddS)N Starting g2* Finishing g2r r rr rrs zOTestPEP380Operation.test_delegation_of_initial_next_to_subgenerator..g2 Yielded %s)rrz Yielded 42rr r assertEqualselfrxr r r/test_delegation_of_initial_next_to_subgenerators   zCTestPEP380Operation.test_delegation_of_initial_next_to_subgeneratorc sgfdd}fddz |D]}d|fq&Wn6tyt}z||jddWYd}~nd}~00|d|gd dS) Nc 3s6z$dEdHWdn d0dSrr r r r rr1s zKTestPEP380Operation.test_raising_exception_in_initial_next_call..g1c s2z dtdWdn d0dS)Nrspanish inquisition occurredrr ValueErrorr rr rr7s  zKTestPEP380Operation.test_raising_exception_in_initial_next_call..g2rrr'subgenerator failed to raise ValueError)rrrr r rrargsfailrrrer r r+test_raising_exception_in_initial_next_call,s  ( z?TestPEP380Operation.test_raising_exception_in_initial_next_callcsNgfdd}fdd|D]}d|fq$|gddS)Nc3s0ddVEdHdVddSNrg1 hamg1 eggsr r r r r rrPs   zLTestPEP380Operation.test_delegation_of_next_call_to_subgenerator..g1c3s$ddVdVddSNrg2 spam g2 more spamrr r rr rrVs zLTestPEP380Operation.test_delegation_of_next_call_to_subgenerator..g2r)rYielded g1 hamrYielded g2 spamYielded g2 more spamrYielded g1 eggsr rrr r r,test_delegation_of_next_call_to_subgeneratorKs   z@TestPEP380Operation.test_delegation_of_next_call_to_subgeneratorc sgfdd}fddz |D]}d|fq&Wn6tyt}z||jddWYd}~nd}~00|d|gd dS) Nc 3sBz0ddVEdHdVWdn d0dSr'r r r r rrms   zMTestPEP380Operation.test_raising_exception_in_delegated_next_call..g1c 3s>z,ddVtddVWdn d0dS)Nrr+hovercraft is full of eelsr,rrr rr rrus  zMTestPEP380Operation.test_raising_exception_in_delegated_next_call..g2rrr2r rr-rr.rr r!r$r r r-test_raising_exception_in_delegated_next_callhs  ( zATestPEP380Operation.test_raising_exception_in_delegated_next_callcsgfdd}fdd|}t|}d}z(||}d|f|d7}q2WntyjYn0|gddS)Nc3sPddV}d|fEdHdV}d|fddSNrr(zg1 received %sr)r r rr r rrs  z7TestPEP380Operation.test_delegation_of_send..g1c3sDddV}d|fdV}d|fddS)Nrr+g2 received %sr,rr r6rr rrs  z7TestPEP380Operation.test_delegation_of_send..g2r) r g1 received 1rr. g2 received 2r/z g2 received 3rr0z g1 received 4r )nextsendr StopIterationr)rrgyrr r rtest_delegation_of_sends   z+TestPEP380Operation.test_delegation_of_sendcsLgfddfddfdd}|t||gddS)Nc3sPddV}d|fEdHdV}d|fddSr5r r6r r rrs  zMTestPEP380Operation.test_handling_exception_while_delegating_send..g1c3sLddV}d|ftddV}d|fddS)Nrr+r7r2r,rrr6rr rrs zMTestPEP380Operation.test_handling_exception_while_delegating_send..g2cs\}t|}d}z(||}d|f|d7}qWntyVdYn0dS)Nr8rr=)r;r<r r=)r>r?r)rrr rruns  zNTestPEP380Operation.test_handling_exception_while_delegating_send..run)rr9rr.r:) assertRaisesrrrrAr rrrr-test_handling_exception_while_delegating_sends   zATestPEP380Operation.test_handling_exception_while_delegating_sendcsfgfdd}fdd|}tdD]}t|}d|fq,||gddS)Nc 3sBz0ddVEdHdVWdn d0dSr'r r r r rrs   z5TestPEP380Operation.test_delegating_close..g1c 3s6z$ddVdVWdn d0dSr*r r rr rrs  z5TestPEP380Operation.test_delegating_close..g2rr3)ranger;r closer)rrr>irr r rtest_delegating_closes  z)TestPEP380Operation.test_delegating_closec sgfdd}fddz8|}tdD]}t|}d|fq.|WnDty}z,||jdd||jt WYd}~nd}~00| d |gd dS) Nc 3sBz0ddVEdHdVWdn d0dSr'r r r r rr s   zMTestPEP380Operation.test_handing_exception_while_delegating_close..g1c 3sFz,ddVdVWdtdndtd0dS)Nrr+r,r"nybbles have exploded with delightrr rr rrs   zMTestPEP380Operation.test_handing_exception_while_delegating_close..g2rFrrrKr r3) rGr;r rHrrr"assertIsInstance __context__ GeneratorExitr#rrr>rIrr%r r r-test_handing_exception_while_delegating_closes   $ zATestPEP380Operation.test_handing_exception_while_delegating_closec sgfdd}fddzB|}tdD]}t|}d|fq.td}||Wn6ty}z||jddWYd}~nd}~00|d |gd dS) Nc 3sBz0ddVEdHdVWdn d0dSr'r r r r rr2s   z5TestPEP380Operation.test_delegating_throw..g1c 3s6z$ddVdVWdn d0dSr*r r rr rr:s  z5TestPEP380Operation.test_delegating_throw..g2rFrtomato ejectedrr r3rGr;r rthrowrr"r#rOr r rtest_delegating_throw-s  ( z)TestPEP380Operation.test_delegating_throwcsPgfdd}t}||td}||d|_|||gddS)Ncs,d|jj|fd|jfdS)Nz%s: %sz value = %s)r __class____name__value)r%rr rpexZszPTestPEP380Operation.test_value_attribute_of_StopIteration_exception..pexspameggs)zStopIteration: z value = NoneStopIteration: spamz value = spamr[z value = eggs)r=rWr)rrXr%r rr/test_value_attribute_of_StopIteration_exceptionUs zCTestPEP380Operation.test_value_attribute_of_StopIteration_exceptioncs,fdd}dd|t|dgdS)Nc3sEdHdSNr r rr rrpsz:TestPEP380Operation.test_exception_value_crash..g1css dVdgS)Nrrr r r r rrrsz:TestPEP380Operation.test_exception_value_crash..g2r)rlist)rrr r^rtest_exception_value_crashms z.TestPEP380Operation.test_exception_value_crashcsPgfdd}dfdd |D]}d|fq&|gddS)Nc3srddVEdH}d|fddtdfD]"}|EdH}d|fq:dVddS) Nrr(zg2 returned %rr8rFr)r )r r=)retvr r rr}s  z;TestPEP380Operation.test_generator_return_value..g1c3s,ddVdVd|r(|SdSr*r rdrr rrs   z;TestPEP380Operation.test_generator_return_value..g2r)rr-rr.r/rzg2 returned Nonerr.r/rz g2 returned 1rr.r/rzg2 returned (2,)rr.r/rzg2 returned StopIteration(3)r0r )Nrrr r rtest_generator_return_valuexs   z/TestPEP380Operation.test_generator_return_valuecCs<g}dd}|D]}|d|fq||gddS)NcsstdEdHdSNrbrGr r r rr>szGTestPEP380Operation.test_delegation_of_next_to_non_generator..gr) Yielded 0 Yielded 1 Yielded 2r)rrr>rr r r(test_delegation_of_next_to_non_generators  zszBTestPEP380Operation.test_conversion_of_sendNone_to_next..grb Yielded: %s)z Yielded: 0z Yielded: 1z Yielded: 2)rGr<r r)rrr>girr?r r r#test_conversion_of_sendNone_to_nexts  z7TestPEP380Operation.test_conversion_of_sendNone_to_nextcspgfdd}|}t|t}|Wdn1sB0Y||d|ddgdS)Nc 3sBz0dtdEdHdWdn d0dSN starting grbzg should not be here finishing gr rGr rr rr>s   zHTestPEP380Operation.test_delegation_of_close_to_non_generator..grqrr)r;rrHrgetvalue)rr>rnoutputr rr)test_delegation_of_close_to_non_generators &z=TestPEP380Operation.test_delegation_of_close_to_non_generatorc sgfdd}zB|}tdD]}t|}d|fq td}||Wn6ty}z||jddWYd}~nd}~00|d|gddS) Nc 3s8z&dtdEdHWdn d0dS)N Starting g Finishing grsr rr rr>s zETestPEP380Operation.test_delegating_throw_to_non_generator..grrQrr )rxrirjrkz Yielded 3z Yielded 4rzrR)rr>rnrIrr%r rr&test_delegating_throw_to_non_generators  ( z:TestPEP380Operation.test_delegating_throw_to_non_generatorc sgfdd}z:|}t|tdD]}|d}d|fq(Wn6ty}z|d|jdWYd}~nd}~00|d|d d gdS) Nc 3sBz0dtdEdHdWdn d0dSrprsr rr rr>s   zGTestPEP380Operation.test_attempting_to_send_to_non_generator..grbrzShould not have yielded: %sr<rz#was able to send into non-generatorrqrr) r;rGr<r AttributeErrorZassertInr"r#r)rr>rnrr?r%r rr(test_attempting_to_send_to_non_generators   ( z}|}|t|d| |t|j j Wdn1s0YdS)Nc@s$eZdZddZddZddZdS)z@TestPEP380Operation.test_broken_getattr_handling..BrokencSs|Sr]r rr r r__iter__"szITestPEP380Operation.test_broken_getattr_handling..Broken.__iter__cSsdS)Nr8r rr r r__next__$szITestPEP380Operation.test_broken_getattr_handling..Broken.__next__cSs dddSNr8rr )rattrr r r __getattr__&szLTestPEP380Operation.test_broken_getattr_handling..Broken.__getattr__N)rV __module__ __qualname__rrrr r r rBroken!src3sEdHdSr]r r rr rr>)sz;TestPEP380Operation.test_broken_getattr_handling..gr8) rBZeroDivisionErrorrr;r<rSr}rZcatch_unraisable_exceptionrHZ unraisableexc_type)rr>rncmr rrtest_broken_getattr_handlings  ( ( z0TestPEP380Operation.test_broken_getattr_handlingcsDgfddddfdd}|t||dgdS)Nc3s$dEdHddS)Ng1 about to yield from g2g1 should not be herer r r r rrBs  zCTestPEP380Operation.test_exception_in_initial_next_call..g1cssddVdSrr r r r rrFszCTestPEP380Operation.test_exception_in_initial_next_call..g2cs}t|dSr])r;)rnrr rrAHszDTestPEP380Operation.test_exception_in_initial_next_call..runr)rBrrrCr rDr#test_exception_in_initial_next_call=s  z7TestPEP380Operation.test_exception_in_initial_next_callc sgfdd}fddz$|D]}d|fq,Wn6tyz}z||jddWYd}~nd}~00|d|gd dS) Nc3s4ddVdEdHddS)N g1: startingZy1g1: about to yield from g2rr r r r rrUs    z>TestPEP380Operation.test_attempted_yield_from_loop..g1c3s2ddVdEdHddS)N g2: startingZy2g2: about to yield from g1zg2 should not be herer r )rnrr rr\s    z>TestPEP380Operation.test_attempted_yield_from_loop..g2rmrzgenerator already executingz$subgenerator didn't raise ValueError)rz Yielded: y1rrz Yielded: y2rr!)rrr?r%r )rrnrrtest_attempted_yield_from_loopPs( z2TestPEP380Operation.test_attempted_yield_from_loopcsgfdd}fddGdddt|}tdD]}t|}d|fq>d }|||D]}d|fqr|gd dS) Nc 3sBz0ddVEdHdVWdn d0dSr'r r r r rrxs   zITestPEP380Operation.test_returning_value_from_delegated_throw..g1c3sHzddVdVWn(yBddVdVYn0dS)Nrr+r,Caught LunchError in g2zg2 lunch savedzg2 yet more spamr r ) LunchErrorrr rrs    zITestPEP380Operation.test_returning_value_from_delegated_throw..g2c@s eZdZdS)zQTestPEP380Operation.test_returning_value_from_delegated_throw..LunchErrorNrVrrr r r rrsrrFrrQ)rr-rr.rzYielded g2 yet more spamr0r ) ExceptionrGr;r rSrrOr )rrrr)test_returning_value_from_delegated_throwss   z=TestPEP380Operation.test_returning_value_from_delegated_throwcsVgfdd}fdd|d|d|d|td|gddS) Nc sj|}t|z dt|dWn4tyd}zd|fWYd}~n d}~00dS)N f resuming gf SHOULD NOT BE HERE f caught %r)r;r r=rrnr%r>rr rfs z>TestPEP380Operation.test_next_and_return_with_value..fc3s$ddVd|f|S)N g startingg returning %rr )rrr rr>s z>TestPEP380Operation.test_next_and_return_with_value..gr8rarb)rrg returning Nonef caught StopIteration()rr g returning 1f caught StopIteration(1)rrg returning (2,)f caught StopIteration((2,))rrg returning StopIteration(3)(f caught StopIteration(StopIteration(3))r=rrrr rrtest_next_and_return_with_values  z3TestPEP380Operation.test_next_and_return_with_valuecsVgfdd}fdd|d|d|d|td|gddS) Nc sl|}t|z"d|ddWn4tyf}zd|fWYd}~n d}~00dS)Nf sending spam to grYrr)r;r r<r=rrr rrs  z>TestPEP380Operation.test_send_and_return_with_value..fc3s4ddV}d|fd|f|S)Nrz g received %rrr )rrrr rr>s  z>TestPEP380Operation.test_send_and_return_with_value..gr8rarb)rrg received 'spam'rrrrrrrrrrrrrrrrrrrr rrtest_send_and_return_with_values  z3TestPEP380Operation.test_send_and_return_with_valuec s~fddfdd}ddtdfD]Ng|}t|t|t|ddd ftgq*dS) Nc3s,z dVWnty&dYn0S)Nr8inner caught ValueError)rr r )rrWr rinners   zTTestPEP380Operation.test_catching_exception_from_subgen_and_returning..innerc3s&EdH}d|f|VdS)Ninner returned %r to outerr re)rrr routers zTTestPEP380Operation.test_catching_exception_from_subgen_and_returning..outerrFrar8rr)r=r r;reprrSrrrrr>r )rrrWr1test_catching_exception_from_subgen_and_returningszETestPEP380Operation.test_catching_exception_from_subgen_and_returningcslgfddfdd}z|}t||tWntyLYn 0|d|ddgdS)Nc3s8zddVdWnty2YdS0dSNEnter fExit fr rNr rr rrs   zSTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_returns..fc3s$dEdHddSNEnter gzExit gr r rrr rr>!s  zSTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_returns..g*subgenerator failed to raise GeneratorExitrr)r;rSrNr#r)rr>rnr rr4test_throwing_GeneratorExit_into_subgen_that_returnss   zHTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_returnsc sgfddfdd}z|}t||tWn6typ}z||jddWYd}~nd}~00|d|dd gdS) Nc3s<zddVdWnty6dVYn0dSrrr rr rr8s   zXTestPEP380Operation.test_throwing_GeneratorExit_into_subgenerator_that_yields..fc3s$dEdHddSrr r rr rr>?s  zXTestPEP380Operation.test_throwing_GeneratorExit_into_subgenerator_that_yields..grzgenerator ignored GeneratorExitrrr)r;rSrN RuntimeErrorrr"r#rr>rnr%r rr9test_throwing_GeneratorExit_into_subgenerator_that_yields2s ( zMTestPEP380Operation.test_throwing_GeneratorExit_into_subgenerator_that_yieldsc sgfddfdd}z|}t||tWnDty~}z,||jdd||jtWYd}~nd}~00|d|dd gdS) Nc3s>zddVdWnty8tdYn0dS)NrrVorpal bunny encountered)r rNrr rr rrVs   zRTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_raises..fc3s$dEdHddSrr r rr rr>]s  zRTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_raises..grrr rr) r;rSrNrrr"rLrMr#rr rr3test_throwing_GeneratorExit_into_subgen_that_raisesPs $ zGTestPEP380Operation.test_throwing_GeneratorExit_into_subgen_that_raisescCsdd}|tt|dS)NcssdEdHdS)Nr r r r r rr>psz4TestPEP380Operation.test_yield_from_empty..g)rBr=r;)rr>r r rtest_yield_from_emptyosz)TestPEP380Operation.test_yield_from_emptycsfdd}fdd|tgd|tg}z|dqDWntyjYn0|gdGdddtfd d}fd d|tg}z|qWntyYn0Gfd d d tfd d}|t dS)Nc3sdVEdHdVdSNrrbr r )twor ronevs zOTestPEP380Operation.test_delegating_generators_claim_to_be_running..onec3s2dVzEdHWnty&Yn0dVdSNr8rFrr rr rrzs  zOTestPEP380Operation.test_delegating_generators_claim_to_be_running..two)rr8rFrbrc@s eZdZdS)zQTestPEP380Operation.test_delegating_generators_claim_to_be_running..MyErrNrr r r rMyErrsrc3sLz dVWnyYn0EdHz dVWnyFYn0dSrr r )rrr rrs     c3sbz dVWnyYn0zEdHWnty>Yn0z dVWny\Yn0dSrrr )rrr rrs     cs*eZdZddZddZfddZdS)zPTestPEP380Operation.test_delegating_generators_claim_to_be_running..MyItcSs|Sr]r rr r rrszYTestPEP380Operation.test_delegating_generators_claim_to_be_running..MyIt.__iter__cSsdSNrr rr r rrszYTestPEP380Operation.test_delegating_generators_claim_to_be_running..MyIt.__next__csjttdSr]) assertTrue gi_runningrBrr;)Zself_rrr rrHs zVTestPEP380Operation.test_delegating_generators_claim_to_be_running..MyIt.closeN)rVrrrrrHr rr rMyItsrc3sEdHdSr]r r )rr rrs) rr_r;r r<r=rrSobjectrH)rrresr )rrrrrr.test_delegating_generators_claim_to_be_runningts2         zBTestPEP380Operation.test_delegating_generators_claim_to_be_runningcspddfdd}dd}dd}||D]}|d |vq.|||D]}|d |vofd |vqPdS) NcSsddtDS)NcSsg|] }|dqS)rbr ).0rr r r zaTestPEP380Operation.test_delegator_is_visible_to_debugger..call_stack..)inspectstackr r r r call_stackszMTestPEP380Operation.test_delegator_is_visible_to_debugger..call_stackc3sVVVdSr]r r rr rgenszFTestPEP380Operation.test_delegator_is_visible_to_debugger..gencss|EdHdSr]r r>r r rrYszGTestPEP380Operation.test_delegator_is_visible_to_debugger..spamcss|EdHdSr]r rr r rrZszGTestPEP380Operation.test_delegator_is_visible_to_debugger..eggsrYrZ)r)rrrYrZrr rr%test_delegator_is_visible_to_debuggers z9TestPEP380Operation.test_delegator_is_visible_to_debuggercs:Gdddfdd}dt||ddS)Nc@seZdZddZddZdS)z?TestPEP380Operation.test_custom_iterator_return..MyItercSs|Sr]r rr r rrszHTestPEP380Operation.test_custom_iterator_return..MyIter.__iter__cSs tddSr)r=rr r rrszHTestPEP380Operation.test_custom_iterator_return..MyIter.__next__N)rVrrrrr r r rMyItersrc3sEdHdSr]r r rrcr rrsz.genr)r_r)rrr rrtest_custom_iterator_returns  z/TestPEP380Operation.test_custom_iterator_returncszddfdd}dd}tD|}|}|d||||~~tWdn1sl0YdS)Ncss dVdSr]r r r r r innermostszDTestPEP380Operation.test_close_with_cleared_frame..innermostc3sdV}EdHdSr]r ) outer_genrr rrsz@TestPEP380Operation.test_close_with_cleared_frame..innercssdV}|EdHdSr]r ) inner_genr r rrsz@TestPEP380Operation.test_close_with_cleared_frame..outer)rr<r)rrrrrr rrtest_close_with_cleared_frames    z1TestPEP380Operation.test_close_with_cleared_framecsJGfdddfdd}|}t|d|d|ddS)Ncs(eZdZddZddZfddZdS)zHTestPEP380Operation.test_send_tuple_with_custom_generator..MyGencSs|Sr]r rr r rr szQTestPEP380Operation.test_send_tuple_with_custom_generator..MyGen.__iter__cSsdSrr rr r rr szQTestPEP380Operation.test_send_tuple_with_custom_generator..MyGen.__next__cs|dSr]r )rZwhatrer rr< szMTestPEP380Operation.test_send_tuple_with_custom_generator..MyGen.sendN)rVrrrrr<r rer rMyGensrc3sEdH}dSr]r re)rr rrszHTestPEP380Operation.test_send_tuple_with_custom_generator..outer)r8rFrb)r;r<rrr )rrdr%test_send_tuple_with_custom_generators  z9TestPEP380Operation.test_send_tuple_with_custom_generatorN)$rVrrrr&r1r4r@rErJrPrTr\r`rfrlrorwr|r~rrrrrrrrrrrrrrrrr r r rrsB%,)")( 3  #+*/H'r__main__) ZunittestrZ test.supportrrrtestrZTestCaserrVmainr r r r s