
    0hho                     R   S r SrSrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
Jr   " S S\	5      rS	 r " S
 S\5      r\S 5       r " S S\5      r " S S\5      r " S S\R&                  5      r " S S\5      r " S S\R&                  \5      r " S S\R&                  \5      r " S S\\R&                  5      r " S S\R&                  5      r " S S\R&                  5      r " S S \R&                  5      r " S! S"\R&                  5      r\S#:X  a  \R<                  " 5         gg)$z7Unit tests for the with statement specified in PEP 343.z
Mike Blandzmbland at acm dot org    N)deque)_GeneratorContextManagercontextmanagernullcontextc                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )MockContextManager   c                 J   > [         TU ]  " U6   SU l        SU l        S U l        g NF)super__init__enter_calledexit_called	exit_args)selfargs	__class__s     7/opt/python-3.13.8/usr/lib/python3.13/test/test_with.pyr   MockContextManager.__init__   s'    $!     c                 <    SU l         [        R                  " U 5      $ NT)r   r   	__enter__r   s    r   r   MockContextManager.__enter__   s     '11$77r   c                 P    SU l         XU4U l        [        R                  " XX#5      $ r   )r   r   r   __exit__r   typevalue	tracebacks       r   r   MockContextManager.__exit__   s0    y1'0016C 	Cr   r   r   r   )	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s    8C Cr   r   c                    ^  U 4S jnU$ )Nc                     > [        TX5      $ N)r   )r   kwdsfuncs     r   helper#mock_contextmanager.<locals>.helper!   s    !$33r    )r.   r/   s   ` r   mock_contextmanagerr2       s    4Mr   c                       \ rS rSrS rSrg)MockResource&   c                      SU l         SU l        g r   )yieldedstoppedr   s    r   r   MockResource.__init__'   s    r   )r8   r7   Nr$   r%   r&   r'   r   r(   r1   r   r   r4   r4   &   s    r   r4   c               #   ^   #    [        5       n  SU l        U v   SU l        g ! SU l        f = f7fr   )r4   r7   r8   )mocks    r   mock_contextmanager_generatorr=   ,   s+     >D
ts   -! -	*-c                   &    \ rS rSrS rS rS rSrg)Nested6   c                     Xl         S U l        g r,   )managersenteredr   rB   s     r   r   Nested.__init__8   s     r   c                 T   U R                   b  [        S5      e[        5       U l         / n U R                   H=  nUR	                  UR                  5       5        U R                   R                  U5        M?     U$ !   U R                  " [        R                  " 5       6 (       d  e  U$ = f)NzContext is not reentrant)
rC   RuntimeErrorr   rB   appendr   
appendleftr   sysexc_info)r   varsmgrs      r   r   Nested.__enter__<   s    <<#9::w	}}CMMO,'', % 	==#,,.1 2s   AA: :*B'c                     UnU R                    H  n UR                  " U6 (       a  SnM  M     S U l         X!La  Ueg ! [         a"  n[        U5      XDR                  4n S nAMU  S nAff = fN)NNN)rC   r   BaseExceptionr   __traceback__)r   rK   exrM   es        r   r   Nested.__exit__J   so     <<C3<<$+B %   H  ! 31gq//23s   =
A)A$$A))rC   rB   Nr$   r%   r&   r'   r   r   r   r(   r1   r   r   r?   r?   6   s    r   r?   c                   &    \ rS rSrS rS rS rSrg)
MockNestedZ   c                 \    [         R                  " U /UQ76   SU l        SU l        S U l        g r   )r?   r   r   r   r   rD   s     r   r   MockNested.__init__[   s*    (x(! r   c                 :    SU l         [        R                  U 5      $ r   )r   r?   r   r   s    r   r   MockNested.__enter__a   s     %%r   c                 J    SU l         Xl        [        R                  " U /UQ76 $ r   )r   r   r?   r   r   rK   s     r   r   MockNested.__exit__e   s#    !t/h//r   r#   NrV   r1   r   r   rX   rX   Z   s    &0r   rX   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)FailureTestCasek   c                 6    S nU R                  [        U5        g )Nc                  D    [            S S S 5        g ! , (       d  f       g = fr,   foor1   r   r   fooNotDeclared5FailureTestCase.testNameError.<locals>.fooNotDeclaredm   s    s   
)assertRaises	NameError)r   rh   s     r   testNameErrorFailureTestCase.testNameErrorl   s    	)^4r   c                 ^   ^  " S S[         5      mU4S jnU R                  [        SU5        g )Nc                       \ rS rSrS rSrg)<FailureTestCase.testEnterAttributeError1.<locals>.LacksEnterr   c                     g r,   r1   r   s       r   r   EFailureTestCase.testEnterAttributeError1.<locals>.LacksEnter.__exit__s       r   r1   N)r$   r%   r&   r'   r   r(   r1   r   r   
LacksEnterrp   r       r   ru   c                  L   > T" 5       n U    S S S 5        g ! , (       d  f       g = fr,   r1   )rg   ru   s    r   fooLacksEnter?FailureTestCase.testEnterAttributeError1.<locals>.fooLacksEnterv   s    ,C   
#the context managerobjectassertRaisesRegex	TypeError)r   rx   ru   s     @r   testEnterAttributeError1(FailureTestCase.testEnterAttributeError1q   s)    	 		 	y*?Or   c                 ^   ^  " S S[         5      mU4S jnU R                  [        SU5        g )Nc                       \ rS rSrSrg)CFailureTestCase.testEnterAttributeError2.<locals>.LacksEnterAndExit|   r1   Nr$   r%   r&   r'   r(   r1   r   r   LacksEnterAndExitr   |   s    r   r   c                  L   > T" 5       n U    S S S 5        g ! , (       d  f       g = fr,   r1   )rg   r   s    r   fooLacksEnterAndExitFFailureTestCase.testEnterAttributeError2.<locals>.fooLacksEnterAndExit   s    #%Crz   r{   r|   )r   r   r   s     @r   testEnterAttributeError2(FailureTestCase.testEnterAttributeError2{   s*    	 		 	y*?AUVr   c                 ^   ^  " S S[         5      mU4S jnU R                  [        SU5        g )Nc                       \ rS rSrS rSrg)9FailureTestCase.testExitAttributeError.<locals>.LacksExit   c                     g r,   r1   r   s    r   r   CFailureTestCase.testExitAttributeError.<locals>.LacksExit.__enter__   rt   r   r1   N)r$   r%   r&   r'   r   r(   r1   r   r   	LacksExitr      rv   r   r   c                  L   > T" 5       n U    S S S 5        g ! , (       d  f       g = fr,   r1   )rg   r   s    r   fooLacksExit<FailureTestCase.testExitAttributeError.<locals>.fooLacksExit   s    +Crz   zthe context manager.*__exit__r|   )r   r   r   s     @r   testExitAttributeError&FailureTestCase.testExitAttributeError   s)    	 		 	y*I<Xr   c                 6    S nU R                  [        X!5        g )Nc                     [        U SS5        g )N single)compile)ss    r   shouldRaiseSyntaxErrorGFailureTestCase.assertRaisesSyntaxError.<locals>.shouldRaiseSyntaxError   s    Ar8$r   )rj   SyntaxError)r   codestrr   s      r   assertRaisesSyntaxError'FailureTestCase.assertRaisesSyntaxError   s    	%+'=Gr   c                 H    U R                  S5        U R                  S5        g )Nzwith mock as None:
  passzwith mock as (None):
  passr   r   s    r   testAssignmentToNoneError)FailureTestCase.testAssignmentToNoneError   s$    $$%AB$$	r   c                 H    U R                  S5        U R                  S5        g )Nzwith mock as None,:
  passzwith mock as (None,):
  passr   r   s    r   ,testAssignmentToTupleOnlyContainingNoneError<FailureTestCase.testAssignmentToTupleOnlyContainingNoneError   s$    $$%BC$$	r   c                 &    U R                  S5        g )Nz%with mock as (foo, None, bar):
  passr   r   s    r   (testAssignmentToTupleContainingNoneError8FailureTestCase.testAssignmentToTupleContainingNoneError   s    $$	r   c                    ^ ^  " S S[         5      mUU 4S jnT R                  [        U5        T R                  T R                  S 5        g )Nc                        \ rS rSrS rS rSrg)4FailureTestCase.testEnterThrows.<locals>.EnterThrows   c                     [        S5      e)NzEnter threwrG   r   s    r   r   >FailureTestCase.testEnterThrows.<locals>.EnterThrows.__enter__   s    "=11r   c                     g r,   r1   r   r   s     r   r   =FailureTestCase.testEnterThrows.<locals>.EnterThrows.__exit__   rt   r   r1   Nr$   r%   r&   r'   r   r   r(   r1   r   r   EnterThrowsr      s    2r   r   c                  f   > T" 5       n S Tl         U  Tl          S S S 5        g ! , (       d  f       g = fr,   rf   )ctr   r   s    r   shouldThrow4FailureTestCase.testEnterThrows.<locals>.shouldThrow   s'    BDH tx s   "
0)r}   rj   rG   assertEqualrg   )r   r   r   s   ` @r   testEnterThrowsFailureTestCase.testEnterThrows   s:    	& 		 	,44(r   c                 \   ^  " S S[         5      mU4S jnU R                  [        U5        g )Nc                        \ rS rSrS rS rSrg)2FailureTestCase.testExitThrows.<locals>.ExitThrows   c                     g r,   r1   r   s    r   r   <FailureTestCase.testExitThrows.<locals>.ExitThrows.__enter__   s    r   c                     [        S5      e)N*   r   r   s     r   r   ;FailureTestCase.testExitThrows.<locals>.ExitThrows.__exit__   s    "2&&r   r1   Nr   r1   r   r   
ExitThrowsr      s    'r   r   c                  J   > T " 5           S S S 5        g ! , (       d  f       g = fr,   r1   )r   s   r   r   3FailureTestCase.testExitThrows.<locals>.shouldThrow   s     s   
")r}   rj   rG   )r   r   r   s     @r   testExitThrowsFailureTestCase.testExitThrows   s&    	' 	'
	 	,4r   rf   N)r$   r%   r&   r'   rl   r   r   r   r   r   r   r   r   r   r(   r1   r   r   rb   rb   k   s8    5
PWYH

)$	5r   rb   c                   P    \ rS rSrS rS rS rS rS rS r	S r
 SS
 jrS rSrg	)ContextmanagerAssertionMixin   c                 $    [        S5      U l        g )Nztest exception)rG   TEST_EXCEPTIONr   s    r   setUp"ContextmanagerAssertionMixin.setUp   s    *+;<r   c                     U R                  UR                  5        U R                  UR                  5        U R	                  UR
                  S 5        g r,   )
assertTruer   assertFalser   r   r   r   mock_managers     r   assertInWithManagerInvariants:ContextmanagerAssertionMixin.assertInWithManagerInvariants   s>    112112//6r   c                     U R                  UR                  5        U R                  UR                  5        U R                  UR                  U5        g r,   )r   r   r   r   r   )r   r   r   s      r    assertAfterWithManagerInvariants=ContextmanagerAssertionMixin.assertAfterWithManagerInvariants   s<    112001//;r   c                 (    U R                  US5        g rP   )r   r   s     r   'assertAfterWithManagerInvariantsNoErrorDContextmanagerAssertionMixin.assertAfterWithManagerInvariantsNoError   s    --l	 r   c                 p    U R                  UR                  5        U R                  UR                  5        g r,   )r   r7   r   r8   r   mock_generators     r   assertInWithGeneratorInvariants<ContextmanagerAssertionMixin.assertInWithGeneratorInvariants   s(    ..///0r   c                 p    U R                  UR                  5        U R                  UR                  5        g r,   r   r7   r8   r   s     r   )assertAfterWithGeneratorInvariantsNoErrorFContextmanagerAssertionMixin.assertAfterWithGeneratorInvariantsNoError   &    ../../r   c                     U R                   er,   r   r   s    r   raiseTestException/ContextmanagerAssertionMixin.raiseTestException   s    !!!r   Nc                    U R                  UR                  5        U R                  UR                  5        Uc>  U R                  UR                  S   U R
                  5        [        U R
                  5      nU R                  UR                  S   U5        U R                  UR                  S   U5        U R                  UR                  S   S 5        g )N   r      )	r   r   r   r   r   r   r   assertIsInstanceassertIsNot)r   r   exc_types      r   )assertAfterWithManagerInvariantsWithErrorFContextmanagerAssertionMixin.assertAfterWithManagerInvariantsWithError   s    112001\33A68K8KLD//0H//2H=l44Q7B//2D9r   c                 p    U R                  UR                  5        U R                  UR                  5        g r,   r   r   s     r   +assertAfterWithGeneratorInvariantsWithErrorHContextmanagerAssertionMixin.assertAfterWithGeneratorInvariantsWithError   r   r   r   r,   )r$   r%   r&   r'   r   r   r   r   r   r   r   r   r   r(   r1   r   r   r   r      s5    =7
<
 10" <@
:0r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)NonexceptionalTestCase   c                 N    [        5           S S S 5        g ! , (       d  f       g = fr,   r=   r   s    r   testInlineGeneratorSyntax0NonexceptionalTestCase.testInlineGeneratorSyntax   s    *, -,,s   
$c                 t    [        5       nU    S S S 5        U R                  U5        g ! , (       d  f       N = fr,   )r=   r   )r   r<   s     r   testUnboundGenerator+NonexceptionalTestCase.testUnboundGenerator   s+    ,. 44T: Ts   )
7c                     [        5        nU R                  U5        S S S 5        U R                  W5        g ! , (       d  f       N = fr,   r=   r   r   r   rg   s     r   testInlineGeneratorBoundSyntax5NonexceptionalTestCase.testInlineGeneratorBoundSyntax   s6    *,005 - 	66s; -,	   7
Ac                     [        5        nU R                  U5        S S S 5        U R                  W5        g ! , (       d  f       N = fr,   r  r	  s     r   *testInlineGeneratorBoundToExistingVariableANonexceptionalTestCase.testInlineGeneratorBoundToExistingVariable  s4    *,005 -66s; -,r  c                     [        5        U l        U R                  U R                  5        S S S 5        U R                  U R                  5        g ! , (       d  f       N*= fr,   )r=   rg   r   r   r   s    r   (testInlineGeneratorBoundToDottedVariable?NonexceptionalTestCase.testInlineGeneratorBoundToDottedVariable  s>    *,00: -66txx@ -,s   !A
Ac                     [        5       nU nU R                  U5        U R                  U5        S S S 5        U R                  W5        U R	                  U5        g ! , (       d  f       N1= fr,   )r=   r   r   r   r   )r   r<   rg   s      r   testBoundGenerator)NonexceptionalTestCase.testBoundGenerator  sV    ,.S005..t4  	66s;44T:	 Ts   #A
A)c                    [        5       nU n[        5       nU nU R                  U5        U R                  U5        U R                  U5        U R                  U5        S S S 5        U R                  U5        U R	                  W5        U R                  U5        U R                  U5        S S S 5        U R                  U5        U R	                  W5        g ! , (       d  f       N}= f! , (       d  f       NB= fr,   )r=   r   r   r   r   )r   mock_arg   mock_bbars        r   testNestedSingleStatements1NonexceptionalTestCase.testNestedSingleStatements  s    .0s24F3226:226:44S944S9	 
 88@::3?..v6005  	44V<66s;  Vs$   C'ACAC'
C$	 C''
C5rf   N)r$   r%   r&   r'   r  r  r
  r  r  r  r  r(   r1   r   r   r   r      s&    ;<<
A
;<r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)NestedNonexceptionalTestCasei$  c                 `    [        [        5       5          S S S 5        g ! , (       d  f       g = fr,   r?   r=   r   s    r   "testSingleArgInlineGeneratorSyntax?NestedNonexceptionalTestCase.testSingleArgInlineGeneratorSyntax&  s    134 544s   
-c                     [        5       n[        U5       nU R                  U5        S S S 5        U R                  U5        g ! , (       d  f       N = fr,   r=   r?   r   r   r   mrg   s      r   testSingleArgBoundToNonTuple9NestedNonexceptionalTestCase.testSingleArgBoundToNonTuple*  s>    )+ AY#..q1 44Q7 Y   A
Ac                     [        5       n[        U5       nU R                  U5        S S S 5        U R                  U5        g ! , (       d  f       N = fr,   r#  r$  s      r   2testSingleArgBoundToSingleElementParenthesizedListONestedNonexceptionalTestCase.testSingleArgBoundToSingleElementParenthesizedList2  s>    )+ AY3..q1 44Q7 Yr(  c                 6    S nU R                  [        U5        g )Nc                  d    [        [        5       5       u  p S S S 5        g ! , (       d  f       g = fr,   r  )rg   r  s     r   shouldThrowValueErroriNestedNonexceptionalTestCase.testSingleArgBoundToMultipleElementTupleError.<locals>.shouldThrowValueError;  s!    578JS 988s   !
/)rj   
ValueError)r   r.  s     r   -testSingleArgBoundToMultipleElementTupleErrorJNestedNonexceptionalTestCase.testSingleArgBoundToMultipleElementTupleError:  s    	 	*&;<r   c                     [        5       n[        U5      nU   U R                  U5        U R                  U5        S S S 5        U R                  U5        U R                  U5        g ! , (       d  f       N1= fr,   r=   rX   r   r   )r   r2   mock_nesteds      r   testSingleArgUnbound1NestedNonexceptionalTestCase.testSingleArgUnbound@  sb    ;= !45../BC..{;  	445HI44[A	 [s   #A&&
A4c                    [        5       n[        5       n[        5       n[        XU5      nU   U R                  U5        U R                  U5        U R                  U5        U R                  U5        S S S 5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g ! , (       d  f       NS= fr,   r4  )r   r%  nor5  s        r   testMultipleArgUnbound3NestedNonexceptionalTestCase.testMultipleArgUnboundI  s    )+)+)+ q)..q1..q1..q1..{;	 
 	44Q744Q744Q744[A [s   AB??
Cc                    [        [        5       [        5       [        5       5      nU u  p#nU R                  U5        U R                  U5        U R                  U5        U R                  U5        S S S 5        U R	                  W5        U R	                  W5        U R	                  W5        U R                  U5        g ! , (       d  f       NS= fr,   )rX   r=   r   r   r   r   )r   r5  r%  r9  r:  s        r   testMultipleArgBound1NestedNonexceptionalTestCase.testMultipleArgBoundX  s     !>!@)+-J-LNIQ1003003003..{;	 
 	66q966q966q944[A [s   AB==
Cr1   N)r$   r%   r&   r'   r   r&  r*  r1  r6  r;  r>  r(   r1   r   r   r  r  $  s(    88=BBBr   r  c                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)ExceptionalTestCaseif  c                    ^ ^ [        5       mUU 4S jnT R                  [        U5        T R                  T5        T R	                  T R
                  5        g )Nc                     > T  Tl         TR                  T 5        TR                  TR                   5        TR                  5         S S S 5        g ! , (       d  f       g = fr,   )resourcer   r   r   cmr   s   r   r   ;ExceptionalTestCase.testSingleResource.<locals>.shouldThrowi  s@    t}222644T]]C'') s   AA
A)r=   rj   rG   r   r   rD  r   r   rF  s   ` @r   testSingleResource&ExceptionalTestCase.testSingleResourceg  sB    *,	*
 	,466r:88Gr   c                    ^ ^ [        5       mUU 4S jnT R                  [        U5        T R                  T[        5        g )Nc                  R   > T  Tl         SS-    S S S 5        g ! , (       d  f       g = fNr   r   )rD  rE  s   r   r   @ExceptionalTestCase.testExceptionNormalized.<locals>.shouldThrowt  s    t} Q s   
&)r=   rj   ZeroDivisionErrorr   rH  s   ` @r   testExceptionNormalized+ExceptionalTestCase.testExceptionNormalizedr  s4    *,	
 	+[966r;LMr   c                   ^ ^^ [        5       m[        5       mUUU 4S jnT R                  [        U5        T R                  T5        T R                  T5        T R	                  T R
                  5        T R	                  T R                  5        g )Nc                  Z  > T  Tl         T Tl        TR                  T 5        TR                  T5        TR                  TR                   5        TR                  TR                  5        TR	                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr,   rg   r  r   r   r   r  r  r   s   r   r   CExceptionalTestCase.testNestedSingleStatements.<locals>.shouldThrow  sw    48tx66v>66v>88B88B++-  V s#   BA.B:B
B	B
B*)r=   rj   rG   r   r   rg   r  r   r   r  r  s   ` @@r   r  .ExceptionalTestCase.testNestedSingleStatements|  sj    .0.0	. 	,466v>66v>88B88Br   c                 \  ^ ^^^ [        5       m[        5       m[        TT5      mUUUU 4S jnT R                  [        U5        T R	                  T5        T R	                  T5        T R	                  T5        T R                  T R                  5        T R                  T R                  5        g )Nc                  J  > T u  Tl         Tl        TR                  T 5        TR                  T5        TR                  T5        TR                  TR                   5        TR                  TR                  5        TR	                  5         S S S 5        g ! , (       d  f       g = fr,   )
resource_a
resource_br   r   r   )cm_acm_br5  r   s   r   r   OExceptionalTestCase.testMultipleResourcesInSingleStatement.<locals>.shouldThrow  su     B$/2248224822;?44T__E44T__E'') s   BB
B")r=   rX   rj   rG   r   r   r[  r\  )r   r   r]  r^  r5  s   ` @@@r   &testMultipleResourcesInSingleStatement:ExceptionalTestCase.testMultipleResourcesInSingleStatement  s    ,.,. t,	* 	* 	,466t<66t<66{C88I88Ir   c                   ^ ^^ [        5       m[        5       mS T l        UUU 4S jnT R                  [        U5        T R	                  T5        T R                  T R                  5        T R                  T R                  S 5        T R                  TR                  5        T R                  TR                  5        T R                  TR                  S 5        g )Nc                    > T  Tl         TR                  T 5        TR                  TR                   5        TR                  5         T Tl         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr,   )rg   r   r   r   r  rU  s   r   r   PExceptionalTestCase.testNestedExceptionBeforeInnerStatement.<locals>.shouldThrow  s\    48226:44TXX>'')tx 	  V	 s$   AA1A A1 
A.	*A11
A?)r=   r  rj   rG   r   r   rg   r   r   r   r   r   rW  s   ` @@r   'testNestedExceptionBeforeInnerStatement;ExceptionalTestCase.testNestedExceptionBeforeInnerStatement  s    .0.0	 	,466v>88B 	4(,,-++,))40r   c                   ^ ^^ [        5       m[        5       mUUU 4S jnT R                  [        U5        T R                  T5        T R	                  T5        T R                  T R                  5        T R                  T R                  5        g )Nc                  Z  > T  Tl         T Tl        TR                  T 5        TR                  T5        TR                  TR                   5        TR                  TR                  5        S S S 5        TR	                  5         S S S 5        g ! , (       d  f       N'= f! , (       d  f       g = fr,   rT  rU  s   r   r   OExceptionalTestCase.testNestedExceptionAfterInnerStatement.<locals>.shouldThrow  sy    48tx66v>66v>88B88B	 
 '') V s#   BAB*B
B	B
B*)	r=   rj   rG   r   r   r   rg   r   r  rW  s   ` @@r   &testNestedExceptionAfterInnerStatement:ExceptionalTestCase.testNestedExceptionAfterInnerStatement  sj    .0.0	* 	,466v>44V<88B66txx@r   c                    ^ [         S 5       mU4S jnU R                  [        S5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc               3      #    S v   g 7fr,   r1   r1   r   r   rF  8ExceptionalTestCase.testRaisedStopIteration1.<locals>.cm          c                  L   > T " 5          [        S5      e! , (       d  f       g = fN	from withStopIterationrF  s   r   r   AExceptionalTestCase.testRaisedStopIteration1.<locals>.shouldThrow      #K00    
#rs  )r   r~   ru  rH  s     @r   testRaisedStopIteration1,ExceptionalTestCase.testRaisedStopIteration1  s>    		 
		1 ##M;?M @??s	   ;
A	c                    ^  " S S[         5      mU4S jnU R                  [        S5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc                        \ rS rSrS rS rSrg)8ExceptionalTestCase.testRaisedStopIteration2.<locals>.cmi  c                     g r,   r1   r   s    r   r   BExceptionalTestCase.testRaisedStopIteration2.<locals>.cm.__enter__  rt   r   c                     g r,   r1   r   s       r   r   AExceptionalTestCase.testRaisedStopIteration2.<locals>.cm.__exit__  rt   r   r1   Nr   r1   r   r   rF  r~        r   rF  c                  L   > T " 5          [        S5      e! , (       d  f       g = frr  rt  rv  s   r   r   AExceptionalTestCase.testRaisedStopIteration2.<locals>.shouldThrow  rx  ry  rs  )r}   r~   ru  rH  s     @r   testRaisedStopIteration2,ExceptionalTestCase.testRaisedStopIteration2  s8    	 		1 ##M;?M @??s	   >
Ac                    ^ [         S 5       mU4S jnU R                  [        5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc               3      #    S v   g 7fr,   r1   r1   r   r   rF  8ExceptionalTestCase.testRaisedStopIteration3.<locals>.cm  ro  rp  c                  ^   > T " 5          [        [        / 5      5      e! , (       d  f       g = fr,   )nextiterrv  s   r   r   AExceptionalTestCase.testRaisedStopIteration3.<locals>.shouldThrow  s    48n$ s   
,)r   rj   ru  rH  s     @r   testRaisedStopIteration3,ExceptionalTestCase.testRaisedStopIteration3  s=     
	 
		% }-M .--s	   :
Ac                 V   ^ [         S 5       mU4S jnU R                  [        U5        g )Nc               3      #    S v   g 7fr,   r1   r1   r   r   rF  8ExceptionalTestCase.testRaisedGeneratorExit1.<locals>.cm  ro  rp  c                  L   > T " 5          [        S5      e! , (       d  f       g = frr  GeneratorExitrv  s   r   r   AExceptionalTestCase.testRaisedGeneratorExit1.<locals>.shouldThrow  rx  ry  )r   rj   r  rH  s     @r   testRaisedGeneratorExit1,ExceptionalTestCase.testRaisedGeneratorExit1  s,    		 
		1 	-5r   c                 \   ^  " S S[         5      mU4S jnU R                  [        U5        g )Nc                        \ rS rSrS rS rSrg)8ExceptionalTestCase.testRaisedGeneratorExit2.<locals>.cmi  c                     g r,   r1   r   s    r   r   BExceptionalTestCase.testRaisedGeneratorExit2.<locals>.cm.__enter__  rt   r   c                     g r,   r1   r   s       r   r   AExceptionalTestCase.testRaisedGeneratorExit2.<locals>.cm.__exit__  rt   r   r1   Nr   r1   r   r   rF  r    r  r   rF  c                  L   > T " 5          [        S5      e! , (       d  f       g = frr  r  rv  s   r   r   AExceptionalTestCase.testRaisedGeneratorExit2.<locals>.shouldThrow  rx  ry  )r}   rj   r  rH  s     @r   testRaisedGeneratorExit2,ExceptionalTestCase.testRaisedGeneratorExit2  s&    	& 		1 	-5r   c                    ^ ^  " S S[         5      mUU 4S jnU" 5         UU 4S jnT R                  [        U5        UU 4S jnT R                  [        U5        g )Nc                   &    \ rS rSrS rS rS rSrg)0ExceptionalTestCase.testErrorsInBool.<locals>.cmi  c                 8   ^  " U4S jS5      nU" 5       U l         g )Nc                   "   > \ rS rSrU 4S jrSrg)GExceptionalTestCase.testErrorsInBool.<locals>.cm.__init__.<locals>.Booli  c                    > T" 5       $ r,   r1   )r   bool_conversions    r   __bool__PExceptionalTestCase.testErrorsInBool.<locals>.cm.__init__.<locals>.Bool.__bool__  s    .00r   r1   N)r$   r%   r&   r'   r  r(   )r  s   r   Boolr    s    1 1r   r  exit_result)r   r  r  s    ` r   r   9ExceptionalTestCase.testErrorsInBool.<locals>.cm.__init__  s    1 1 $(6 r   c                     g)N   r1   r   s    r   r   :ExceptionalTestCase.testErrorsInBool.<locals>.cm.__enter__  s    r   c                     U R                   $ r,   r  r   abcs       r   r   9ExceptionalTestCase.testErrorsInBool.<locals>.cm.__exit__  s    '''r   r  NrV   r1   r   r   rF  r    s    *
(r   rF  c                  n   > T " S 5         TR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                      gr   r1   r1   r   r   <lambda>JExceptionalTestCase.testErrorsInBool.<locals>.trueAsBool.<locals>.<lambda>  s    Dr   Should NOT see thisfailrE  s   r   
trueAsBool8ExceptionalTestCase.testErrorsInBool.<locals>.trueAsBool  $    L!		/0 "!!   &
4c                  n   > T " S 5         TR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                      gr   r1   r1   r   r   r  KExceptionalTestCase.testErrorsInBool.<locals>.falseAsBool.<locals>.<lambda>  s    Er   zShould raiser  rE  s   r   falseAsBool9ExceptionalTestCase.testErrorsInBool.<locals>.falseAsBool  s#    M"		.) #""r  c                  n   > T " S 5         TR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                      SS-  $ rM  r1   r1   r   r   r  JExceptionalTestCase.testErrorsInBool.<locals>.failAsBool.<locals>.<lambda>$  s    AqDr   r  r  rE  s   r   
failAsBool8ExceptionalTestCase.testErrorsInBool.<locals>.failAsBool#  r  r  )r}   rj   AssertionErrorrO  )r   r  r  r  rF  s   `   @r   testErrorsInBool$ExceptionalTestCase.testErrorsInBool
  sJ    		( 		(	1 		* 	.+6	1 	+Z8r   )r  rg   rD  r[  r\  N)r$   r%   r&   r'   rI  rP  r  r`  re  rj  rz  r  r  r  r  r  r(   r1   r   r   rA  rA  f  sC    	HNC"J&1*A"
669r   rA  c                   2    \ rS rSrS rS rS rS rS rSr	g)	NonLocalFlowControlTestCasei)  c                     Sn US-  n[        5          US-  n S S S 5        U R                  US5        g ! , (       d  f       O= fUS-  nMI  )Nr   r   
   d      r=   r   r   counters     r   testWithBreak)NonLocalFlowControlTestCase.testWithBreak+  sU    qLG.02 1 	"%	 10 sNG s	   5
Ac                     Sn US-  nUS:  a  O[        5          US-  n S S S 5        M(  U R                  US5        g ! , (       d  f       O= fUS-  nMR  )Nr   r   r   r  r     r  r  s     r   testWithContinue,NonLocalFlowControlTestCase.testWithContinue5  sb    qLG{.02 10 	"%	 10 sNG s	   >
Ac                 8    S nU R                  U" 5       S5        g )Nc                  x    Sn  U S-  n [        5          U S-  n U sS S S 5        $ ! , (       d  f       O= fU S-  n M8  )Nr   r   r  r  r  )r  s    r   rg   7NonLocalFlowControlTestCase.testWithReturn.<locals>.fooB  sA    G124rMG" 544 3 s   $
2r  )r   r	  s     r   testWithReturn*NonLocalFlowControlTestCase.testWithReturnA  s    	 	#r   c                 R    S n[        U" 5       5      nU R                  USS/5        g )Nc               3   d   #    [        5          Sv   Sv   S S S 5        g ! , (       d  f       g = f7f)Nr     r  r1   r   r   gen6NonLocalFlowControlTestCase.testWithYield.<locals>.genM  s      .0 100s   0		0
-0r  r  )listr   )r   r  xs      r   testWithYield)NonLocalFlowControlTestCase.testWithYieldL  s(    	 KRH%r   c                     Sn US-  n[        5          US-  n[        e! , (       d  f       O= fUS-  nU R                  S5        g ! [         a    U R                  US5         g f = f)Nr   r   r  r  zDidn't raise RuntimeErrorr  )r=   rG   r  r   r  s     r   testWithRaise)NonLocalFlowControlTestCase.testWithRaiseT  sn    		3qLG.02"" 10 sNG II12  	*Wb)	*s   A 
-A A&%A&r1   N)
r$   r%   r&   r'   r  r  r  r  r  r(   r1   r   r   r  r  )  s    &
&	$&3r   r  c                   &    \ rS rSrS rS rS rSrg)AssignmentTargetTestCaseib  c                    S/ SQ0n[        5        US   S'   U R                  [        UR                  5       5      S/5        U R                  US   S   R                  [
        5        S S S 5        [        5        [        UR                  5       5      S   S'   U R                  [        UR                  5       5      S/5        U R                  US   S   R                  [
        5        S S S 5        [        5        US'   [        UR                  5       5      nUR                  5         U R                  USS/5        S S S 5         " S S5      nU" 5       n[        5        Ul        U R                  [        US5      S5        S S S 5        g ! , (       d  f       GN(= f! , (       d  f       N= f! , (       d  f       Nw= f! , (       d  f       g = f)	Nr   r   r   r   r   r   c                       \ rS rSrSrg);AssignmentTargetTestCase.testSingleComplexTarget.<locals>.Cip  r1   Nr   r1   r   r   Cr  p      r   r  rg   T)
r=   r   r  keysr   r4   valuessortrg   hasattr)r   targetsr  r  blahs        r   testSingleComplexTarget0AssignmentTargetTestCase.testSingleComplexTargetd  sV   i.*,
1T',,.1A37WQZ]44lC - +,W^^5E0Fq0I!0LT',,.1A37WQZ]44lC - +,
'DIIKTAq6* - 	s*,WT5148 -, -, -, -, -,s2   AF	:A.F:AF,"F=	
F
F),
F:=
Gc                     " S S5      nS/ SQ0nU" 5        u  US   S'   US   S'   US   S'   U R                  US/ SQ05        S S S 5        U" 5        u  [        UR                  5       5      S   S'   [        UR                  5       5      S   S'   [        UR                  5       5      S   S'   U R                  US/ SQ05        S S S 5        U" 5        u  US'   US'   US	'   U R                  USSS	S.5        S S S 5         " S
 S5      nU" 5       nU" 5        u  Ul        Ul        Ul        U R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S	5        S S S 5        g ! , (       d  f       GNL= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nc                        \ rS rSrS rS rSrg)>AssignmentTargetTestCase.testMultipleComplexTargets.<locals>.Civ  c                     g)Nr   r   r  r1   r   s    r   r   HAssignmentTargetTestCase.testMultipleComplexTargets.<locals>.C.__enter__w  s    r   c                     g r,   r1   r   tvtbs       r   r   GAssignmentTargetTestCase.testMultipleComplexTargets.<locals>.C.__exit__x  s    $r   r1   Nr   r1   r   r   r  r  v  s    /.r   r  r   r  r   r   r  )r  r   r   r  c                       \ rS rSrSrg)>AssignmentTargetTestCase.testMultipleComplexTargets.<locals>.Bi  r1   Nr   r1   r   r   Br    r  r   r  )r   r  r  onetwothree)r   r  r   r  r  s        r   testMultipleComplexTargets3AssignmentTargetTestCase.testMultipleComplexTargetsu  sz   	/ 	/ i.SAWQZ]GAJqM71:a=Wq)n5 SnT'..*+A.q148H3I!3LQ3OQUV]VdVdVfQghiQjklQmWq)n5 S8WQZWQZW!a&89 sS4TXtxTXXq)TXXq)TZZ+ S SSS Ss1   -F
A2F$F-A(F>

F
F*-
F;>
Gc                     [        [        SS5      5       GtpnU R                  US5        U R                  USS/5        U R                  US5        S S S 5        g ! , (       d  f       g = f)Nr      r   r     )r   ranger   r  s       r   testWithExtendedTargets0AssignmentTargetTestCase.testWithExtendedTargets  sV    q!%!Q"QA'Q" &%%s   <A
A)r1   N)r$   r%   r&   r'   r  r  r  r(   r1   r   r   r  r  b  s    9",$#r   r  c                        \ rS rSrS rS rSrg)ExitSwallowsExceptionTestCasei  c                      " S S5      n U" 5          SS-    S S S 5        g ! , (       d  f       g = f! [          a    U R                  S5         g f = f)Nc                        \ rS rSrS rS rSrg)SExitSwallowsExceptionTestCase.testExitTrueSwallowsException.<locals>.AfricanSwallowi  c                     g r,   r1   r   s    r   r   ]ExitSwallowsExceptionTestCase.testExitTrueSwallowsException.<locals>.AfricanSwallow.__enter__      r   c                     gr   r1   r  s       r   r   \ExitSwallowsExceptionTestCase.testExitTrueSwallowsException.<locals>.AfricanSwallow.__exit__  s    r   r1   Nr   r1   r   r   AfricanSwallowr"    s    %5r   r(  r   r   z,ZeroDivisionError should have been swallowed)rO  r  )r   r(  s     r   testExitTrueSwallowsException;ExitSwallowsExceptionTestCase.testExitTrueSwallowsException  sH    	6 	6	F!! "!!  	FIIDE	Fs#   3 "3 
03 3 AAc                      " S S5      n U" 5          SS-    S S S 5        U R                  S5        g ! , (       d  f       N = f! [         a     g f = f)Nc                        \ rS rSrS rS rSrg)ZExitSwallowsExceptionTestCase.testExitFalseDoesntSwallowException.<locals>.EuropeanSwallowi  c                     g r,   r1   r   s    r   r   dExitSwallowsExceptionTestCase.testExitFalseDoesntSwallowException.<locals>.EuropeanSwallow.__enter__  r%  r   c                     gr   r1   r  s       r   r   cExitSwallowsExceptionTestCase.testExitFalseDoesntSwallowException.<locals>.EuropeanSwallow.__exit__  s    r   r1   Nr   r1   r   r   EuropeanSwallowr-    s    %6r   r2  r   r   z)ZeroDivisionError should have been raised)r  rO  )r   r2  s     r   #testExitFalseDoesntSwallowExceptionAExitSwallowsExceptionTestCase.testExitFalseDoesntSwallowException  sM    	7 	7	C "! #
 IIAB #"  		s$   A 3A 
AA 
AAr1   N)r$   r%   r&   r'   r)  r3  r(   r1   r   r   r  r    s    F
Cr   r  c                       \ rS rSr " S S\5      r " S S\5      r " S S\5      r " S S	\5      rS
 r	S r
S rS rS rS rSrg)
NestedWithi  c                   *    \ rS rSrSS jrS rS rSrg)NestedWith.Dummyi  Nc                 B    Uc  U nXl         X l        SU l        SU l        g r   )r    gobbler   r   )r   r    r:  s      r   r   NestedWith.Dummy.__init__  s&    }J K %D$Dr   c                 (    SU l         U R                  $ r   )r   r    r   s    r   r   NestedWith.Dummy.__enter__  s     $D::r   c                 B    SU l         Xl        U R                  (       a  gg r   )r   rK   r:  r_   s     r   r   NestedWith.Dummy.__exit__  s    #D$M{{ r   )r   rK   r   r:  r    r   rV   r1   r   r   Dummyr8    s    	%		r   r@  c                       \ rS rSrS rSrg)NestedWith.InitRaisesi  c                     [        5       er,   r   r   s    r   r   NestedWith.InitRaises.__init__  s	    ,.0r   r1   Nr:   r1   r   r   
InitRaisesrB    s    0r   rE  c                        \ rS rSrS rS rSrg)NestedWith.EnterRaisesi  c                     [        5       er,   r   r   s    r   r    NestedWith.EnterRaises.__enter__  s	    <>1r   c                     g r,   r1   r_   s     r   r   NestedWith.EnterRaises.__exit__  s    tr   r1   Nr   r1   r   r   EnterRaisesrG    s    1+r   rL  c                        \ rS rSrS rS rSrg)NestedWith.ExitRaisesi  c                     g r,   r1   r   s    r   r   NestedWith.ExitRaises.__enter__  s    Tr   c                     [        5       er,   r   r_   s     r   r   NestedWith.ExitRaises.__exit__  s	    \^';r   r1   Nr   r1   r   r   
ExitRaisesrN    s    !;r   rS  c                    U R                  5        oR                  5        nU R                  UR                  5        U R                  UR                  5        S S S 5        S S S 5        U R                  WR                  5        U R                  WR                  5        g ! , (       d  f       NM= f! , (       d  f       NV= fr,   )r@  r   r   r   )r   r  r  s      r   testNoExceptionsNestedWith.testNoExceptions  sk    ZZ\Q

OOANN+OOANN+ !-\ 	&&	 !-\\s"   B07BB0
B-	)B00
B>c                 (    U R                  5        oR                  5           S S S 5        S S S 5        U R                  WR                  5        U R                  UR                  5        g ! , (       d  f       NM= f! , (       d  f       NV= f!    N]= fr,   )r@  rE  r   r   r   r   r  s     r   testExceptionInExprList"NestedWith.testExceptionInExprList  s\    	OO$5 %6 	'& %6$5	s=   B A<A+A<B +
A9	5A<<
B
B 
B Bc                 |    U R                  5        oR                  5          U R                  S5        S S S 5        S S S 5        U R                  S5        U R	                  WR
                  5        U R	                  UR                  5        g ! , (       d  f       N^= f! , (       d  f       Ng= f! [         a     Nef = f)Nzbody of bad with executedzRuntimeError not reraised)r@  rL  r  rG   r   r   r   rX  s     r   testExceptionInEnterNestedWith.testExceptionInEnter  s}    	3$4$4$6		56 %7
 II12'& %7$6 		s=   B. BBBB. 
B	B
B+'B. .
B;:B;c                 |   SnU R                  SS9 o R                  5          SnS S S 5        S S S 5        U R                  WR                  5        U R                  UR                  5        U R                  U5        U R                  UR                  S   S 5        g ! , (       d  f       N}= f! , (       d  f       N= f)NFT)r:  r   )r@  rS  r   r   r   assertNotEqualrK   )r   body_executedr  s      r   testExceptionInExitNestedWith.testExceptionInExit  s    ZZtZ$??+< M ,=$'&&AJJqM40 ,=+<$$s!   B-BB-
B*	&B--
B;c                 @   U R                  SS9 u  pU R                  SS9 u  p4U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N)r   r   )r    )r     r   r   r  rd  )r@  r   )r   a1a2b1b2s        r   testEnterReturnsTuple NestedWith.testEnterReturnsTuple  s    ZZeZ$ZZhZ'8BQ#Q#R$R$	 ( %$'' %$s#   BAA>-B>
B	B
Bc                 0  ^  U 4S jnU 4S jnU 4S jnUS4US4US44 H  u  pET R                  U5         U" 5       n[        R                  " UR                  5      S   nSnUR                  n	T R                  UR                  U	R                  S	-   5        T R                  UR                  U	R                  S	-   5        T R                  UR                  UR                  U-
  UR                  U-
   U5        S S S 5        M     g ! , (       d  f       M  = f)
Nc                  8  >  TR                  5          TR                  5        n TR                  5        n S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f! [         a  nUs S nA$ S nAff = fr,   )r@  rE  	Exception)rF  drT   r   s      r   init_raises5NestedWith.testExceptionLocation.<locals>.init_raises  s[    ZZ\4??#4DJJLA =I#4\\LL#4#4\\ sf   B A2A!AA!A2B 
AA!!
A/	+A22
B <B  B 
BBBBc                     >  TR                  5          TR                  5        n  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f! [         a  nUs S nA$ S nAff = fr,   )rL  r@  rm  rn  rT   r   s     r   enter_raises6NestedWith.testExceptionLocation.<locals>.enter_raises  sL    %%' *6'''' M   A A7AA 
A	A
AA A 
A/#A*$A/*A/c                     >  TR                  5          TR                  5        n  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f! [         a  nUs S nA$ S nAff = fr,   )rS  r@  rm  rr  s     r   exit_raises5NestedWith.testExceptionLocation.<locals>.exit_raises  sJ    __&

 )5&&&& ru  zself.InitRaises()zself.EnterRaises()zself.ExitRaises()r      r   )subTestr!   
extract_tbrR   __code__r   linenoco_firstlineno
end_linenolinecolno	end_colno)
r   ro  rs  rw  r.   expectedexcfindentcos
   `         r   testExceptionLocation NestedWith.testExceptionLocation  s    			 !,-@A ,.BC +-@A ND d#f(():):;A>]]  2+<+<q+@A  r/@/@1/DE  &(81;;;O!P!)+ $#	  $#s   CD
D	r1   N)r$   r%   r&   r'   r}   r@  rE  rL  rS  rU  rY  r\  ra  ri  r  r(   r1   r   r   r6  r6    sP     &1V 1,f ,<V <''	'1%(+r   r6  __main__)__doc__
__author__	__email__rJ   r!   unittestcollectionsr   
contextlibr   r   r   r   r2   r}   r4   r=   r?   rX   TestCaserb   r   r   r  rA  r  r  r  r6  r$   mainr1   r   r   <module>r     sB   = 
#	 
    L LC1 C$6   !V !H0 0"T5h'' T5l,06 ,0^1<X..0L 1<h?B8#4#4 ?BD@968I8I @9F63("3"3 63r)#x00 )#XCH$5$5 C2t+"" t+n zMMO r   