
    daf                        d dl Z d dlZd dlZd dlmZ  G d dej
                        Z G d dej
                        Z G d deej
                        Z G d	 d
e      Z	 G d de      Z
 G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zedk(  r ej$                          yy)    N)ExceptionIsLikeMixinc                   $    e Zd Zd Zd Zd Zd Zy)TestInvalidExceptStarc                     g d}|D ]-  }| j                  t              5  t        |dd       d d d        / y # 1 sw Y   :xY w)N)z:try: pass
except ValueError: pass
except* TypeError: pass
z:try: pass
except* ValueError: pass
except TypeError: pass
z?try: pass
except ValueError as e: pass
except* TypeError: pass
z?try: pass
except* ValueError as e: pass
except TypeError: pass
z?try: pass
except ValueError: pass
except* TypeError as e: pass
z?try: pass
except* ValueError: pass
except TypeError as e: pass
z0try: pass
except ValueError: pass
except*: pass
z0try: pass
except* ValueError: pass
except: pass
<string>exec)assertRaisesSyntaxErrorcompile)selferrorserrs      0/root/Python-3.12.4/Lib/test/test_except_star.py1test_mixed_except_and_except_star_is_syntax_errorzGTestInvalidExceptStar.test_mixed_except_and_except_star_is_syntax_error   sN    	
  	1C"";/ 1Z01 1	11 1s	   8A	c                     | j                  t              5  	 t        d      # g xt        % x}d }~nd }~ nn x Y ncY w xY wd d d        y # 1 sw Y   y xY w)Nblah)r	   	TypeErrorOSErrorExceptionGroupr   es     r   7test_except_star_ExceptionGroup_is_runtime_error_singlezMTestInvalidExceptStar.test_except_star_ExceptionGroup_is_runtime_error_single   sN    y) 	fo%N 	 	 	s   A#A AAc                     | j                  t              5  	 t        dt        d      g      # g xt        t        f% x n nn x Y ncY w xY wd d d        y # 1 sw Y   y xY w)Neg*   )r	   r   r   
ValueErrorr   s    r   6test_except_star_ExceptionGroup_is_runtime_error_tuplezLTestInvalidExceptStar.test_except_star_ExceptionGroup_is_runtime_error_tuple   s]    y) 	$TJrN+;<<Y/ 	 	 	s   A.AAA%c                 B   | j                  t              5  	 t        # g xd% x n nn x Y ncY w xY wd d d        n# 1 sw Y   nxY w| j                  t              5  	 t        # g xt        df% x n nn x Y ncY w xY wd d d        y # 1 sw Y   y xY w)Nr   )r	   r   r   r   s    r   'test_except_star_invalid_exception_typez=TestInvalidExceptStar.test_except_star_invalid_exception_type%   s    y) 	  B 	 	 	 y) 	  Z$ 	 	 	s6   A6AA#B%A++B	BBN)__name__
__module____qualname__r   r   r   r         r   r   r      s    1 r%   r   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	(TestBreakContinueReturnInExceptStarBlockzC'break', 'continue' and 'return' cannot appear in an except\* blockc                     | j                  t        | j                        5  t        t	        j
                  |      dd       d d d        y # 1 sw Y   y xY w)Nr   r   )assertRaisesRegexr
   MSGr   textwrapdedent)r   srcs     r   check_invalidz6TestBreakContinueReturnInExceptStarBlock.check_invalid7   s@    ##K: 	>HOOC(*f=	> 	> 	>s   !AAc                 j    | j                  d       | j                  d       | j                  d       y )Nzy
            try:
                raise ValueError
            except* Exception as e:
                break
            z
            for i in range(5):
                try:
                    pass
                except* Exception as e:
                    if i == 2:
                        break
            z
            for i in range(5):
                try:
                    pass
                except* Exception as e:
                    if i == 2:
                        break
                finally:
                    return 0
            r.   r   s    r   test_break_in_except_starzBTestBreakContinueReturnInExceptStarBlock.test_break_in_except_star;   s?    	 		 		
	r%   c                 j    | j                  d       | j                  d       | j                  d       y )Nz
            for i in range(5):
                try:
                    raise ValueError
                except* Exception as e:
                    continue
            z
            for i in range(5):
                try:
                    pass
                except* Exception as e:
                    if i == 2:
                        continue
            z
            for i in range(5):
                try:
                    pass
                except* Exception as e:
                    if i == 2:
                        continue
                finally:
                    return 0
            r0   r   s    r   *test_continue_in_except_star_block_invalidzSTestBreakContinueReturnInExceptStarBlock.test_continue_in_except_star_block_invalid[   s?    	 		 		
	r%   c                 H    | j                  d       | j                  d       y )Nz
            def f():
                try:
                    raise ValueError
                except* Exception as e:
                    return 42
            z
            def f():
                try:
                    pass
                except* Exception as e:
                    return 42
                finally:
                    finished = True
            r0   r   s    r   (test_return_in_except_star_block_invalidzQTestBreakContinueReturnInExceptStarBlock.test_return_in_except_star_block_invalid{   s*    	 			r%   c                 &   	 t        d      # g xt        % xV}d}t        d      D ]  }|dk(  r	|dk(  r n|dz  } | j                  |d       | j                  d       |}d }~nd }~ nn x Y ncY w xY w| j	                  t
               y )Nr   r               )r   	ExceptionrangeassertEqualassertIsInstancer   )r   r   countiexcs        r   .test_break_continue_in_except_star_block_validzWTestBreakContinueReturnInExceptStarBlock.test_break_continue_in_except_star_block_valid   s    	R. 		 	E1X 66
 UA&Q"CC	 	c>2s    A9A
A'	#A9c                     	 t        d      # g xt        % x}d } |d      }|}d }~nd }~ nn x Y ncY w xY w| j                  d       | j                  t               y )Nr   c                     d| z  S )N   r$   )xs    r   fzZTestBreakContinueReturnInExceptStarBlock.test_return_in_except_star_block_valid.<locals>.f   s    s
r%   r:      )r   r;   r=   r>   r   )r   r   rG   rrA   s        r   &test_return_in_except_star_block_validzOTestBreakContinueReturnInExceptStarBlock.test_return_in_except_star_block_valid   s]    	R. 		 	!ACC		
 	Ac>2s    <*	<N)
r!   r"   r#   r*   r.   r1   r3   r5   rB   rJ   r$   r%   r   r'   r'   3   s)    2C>@@*3"	3r%   r'   c                       e Zd Zd Zd Zy)ExceptStarTestc                 $   ||| j                  |d u xr |d u        y | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         y N)
assertTruer=   __context__	__cause____traceback__r   e1e2s      r   assertMetadataEqualz"ExceptStarTest.assertMetadataEqual   sp    :OOB$J52:6R^^R^^<R\\2<<8R--r/?/?@r%   c                     ||| j                  ||       y |j                  |j                  k(  xr4 |j                  |j                  k(  xr |j                  |j                  k(   S rN   )assertNotEqualrP   rQ   rR   rS   s      r   assertMetadataNotEqualz%ExceptStarTest.assertMetadataNotEqual   sg    :B'"..8 ALLBLL8A,,0@0@@B Br%   N)r!   r"   r#   rV   rY   r$   r%   r   rL   rL      s    ABr%   rL   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestExceptStarSplitSemanticsc                    t        j                         }d x}x}}	 	 |# g x|% x"}	t        j                         }|	}d }	~	nd }	~	 nn x Y ncY w xY wn# t        $ r}	|	}Y d }	~	nd }	~	ww xY w| j                  ||       | j	                  ||       | j	                  ||       | j                  t        j                         |       y rN   )sys	exceptionBaseExceptionr=   assertExceptionIsLike
r   rA   Tmatch_templaterest_templateinitial_sys_exceptionsys_exceptionmatchrestr   s
             r   doSplitTestNamedz-TestExceptStarSplitSemantics.doSplitTestNamed   s     #'+++		A  #  	D	 	.""5.9""47*?@s+    AA	AA 	A, A''A,c                 d   t        j                         }d x}x}}	 	 |# g x|% x t        j                         x}}n nn x Y ncY w xY wn# t        $ r}	|	}Y d }	~	nd }	~	ww xY w| j	                  ||       | j	                  ||       | j                  t        j                         |       y rN   )r]   r^   failr_   r`   r=   ra   s
             r   doSplitTestUnnamedz/TestExceptStarSplitSemantics.doSplitTestUnnamed   s     #'+++		6	8A 8(+78
  	D	""5.9""47*?@s*    A>	AA 	A&A!!A&c                     	 t        dt        d      t        d      g      # t        $ r+ | j	                  ||||       | j                  ||||       Y y w xY wNr   r9   rE   r   r   r   r;   ri   rl   r   rA   rb   rc   rd   s        r   doSplitTestInExceptHandlerz7TestExceptStarSplitSemantics.doSplitTestInExceptHandler   s[    	K 	!jm'DEE 	K!!#q.-H##CNMJ	Ks    " 1AAc           
          	 t        dt        d      t        d      g      # g xt        % x. | j	                  ||||       | j                  ||||       n nn x Y y cY w xY wrn   ro   rp   s        r   doSplitTestInExceptStarHandlerz;TestExceptStarSplitSemantics.doSplitTestInExceptStarHandler   se    	K 	!jm'DEE	K	 	K!!#q.-H##CNMJJ	Ks    " A&(A	A&c                     | j                  ||||       | j                  ||||       | j                  ||||       | j                  ||||       y rN   )ri   rl   rq   rs   rp   s        r   doSplitTestz(TestExceptStarSplitSemantics.doSplitTest   sR    c1nmDQF''QN++CNMRr%   c                     | j                  t        dt        d      t        d      g      t        d t        dt        d      t        d      g             y )Ntest1Vrb   )ru   r   r   r   r
   r   s    r   test_no_match_single_typez6TestExceptStarSplitSemantics.test_no_match_single_type   sE    7Z_in$EF7Z_in$EF		Hr%   c                     | j                  t        dt        d      t        d      g      t        t        dt        d      t        d      g      d        y )Ntest2V1V2)ru   r   r   r   s    r   test_match_single_typez3TestExceptStarSplitSemantics.test_match_single_type   sH    7Z%5z$7G$HI7Z%5z$7G$HI		r%   c                     | j                  t        dt        d      t        d      t        d      g      t        t        dt        d      t        d      g      t        dt        d      g             y )Ntest3r|   OSr}   )ru   r   r   r   r   s    r   $test_match_single_type_partial_matchzATestExceptStarSplitSemantics.test_match_single_type_partial_match  sb    D!74=*T2BCE 7Z%5z$7G$HI7WT]O4	6r%   c                 z   | j                  t        dt        d      t        d      t        dt        d      t        d      t	        d      g      g      t        t        dt        d      t        dt        d      g      g      t        dt        d      t        dt        d      t	        d      g      g             y )Ng1r|   OS1g2OS2r}   rb   ru   r   r   r   r   r   s    r   test_match_single_type_nestedz:TestExceptStarSplitSemantics.test_match_single_type_nested  s    4 ENt$cN$%&' 4 tj&6%78:; 4tENIcN&4 5"6 7	8r%   c                    | j                  t        dt        d      t        d      t        dt        d      t        d      t	        d      g      g      t        t        ft        dt        d      t        dt        d      t	        d      g      g      t        dt        d      t        dt        d      g      g             y )Nh1r|   r   h2r   r}   rb   r   r   s    r   test_match_type_tuple_nestedz9TestExceptStarSplitSemantics.test_match_type_tuple_nested"  s    4 75>:d+;Ys^LNOP #4 tj&6	#%GHJK tgen%5689	:r%   c                    | j                  t        dt        dt        d      g      t        dt        d      t        d      g      t        dt        d      g      g      t        t        dt        dt        d      g      t        dt        d      g      g      t        dt        dt        d      g      t        dt        d      g      g             y )	Nr   i1r|   i2r}   T1i3T2ru   r   r   r   r   s    r   test_empty_groups_removedz6TestExceptStarSplitSemantics.test_empty_groups_removed4  s    tj&6%78tj&6	$%HItio%679:
 4tio%67tio%67"9 : 4"4*T*:);<"4*T*:);<"> ?	@r%   c                 Z   | j                  t        dt        dt        dt        d      g      t        dt        d      g      g      g      t        t        dt        dt        dt        d      g      g      g      t        dt        dt        dt        d      g      g      g             y )Nj1j2j3r|   j4rb   r   r   s    r   test_singleton_groups_are_keptz;TestExceptStarSplitSemantics.test_singleton_groups_are_keptC  s    4t"4*T*:);<"4)C.)9:&< ="> ? ~dYs^<L'M&NOPR ~dZ=M<N'O&PQRT	Ur%   c           
      n    | j                  t        d      t        t        dt        d      g      d        y Nrx    )ru   r   r   r   s    r   %test_naked_exception_matched_wrapped1zBTestExceptStarSplitSemantics.test_naked_exception_matched_wrapped1Q  s.    sO2
301		r%   c           
      n    | j                  t        d      t        t        dt        d      g      d        y r   )ru   r   r;   r   r   s    r   %test_naked_exception_matched_wrapped2zBTestExceptStarSplitSemantics.test_naked_exception_matched_wrapped2X  s.    sO2
301		r%   c           
          | j                  t        dt        d      g      t        t        dt        d      g      d        y )Nr   rx   )ru   r   r   r;   r   s    r   6test_exception_group_except_star_Exception_not_wrappedzSTestExceptStarSplitSemantics.test_exception_group_except_star_Exception_not_wrapped_  s8    4*S/!234*S/!23		r%   c                 X    | j                  t        d      t        d t        d             y )Nrx   )ru   r   r   r   s    r    test_plain_exception_not_matchedz=TestExceptStarSplitSemantics.test_plain_exception_not_matchedf  s$    sOsO		r%   c                     | j                  t        dt        d      t        d      g      t        t        dt        d      g      t        dt        d      g             y )Nstiorb   )ru   r   BlockingIOErrorr   r   r   s    r   test_match__supertypez2TestExceptStarSplitSemantics.test_match__supertypem  sN    4/$"73!HI4/$"7!894)C.!12		4r%   c                 P   	 t        dt        d      t        d      g      # g xt        % x2}| j                  |t        dt        d      g             d }~nd }~ nn t        % x2}| j                  |t        dt        d      g             d }~nd }~ nn x Y y cY w xY w)Nmmnosr   )r   r   r   r`   rk   r   s     r   test_multiple_matches_namedz8TestExceptStarSplitSemantics.test_multiple_matches_namedt  s    		. 8M(NOO	@ 	@&&qut'<&=>@ @ @	@  	8&&quwt}o68 8 8	8s     " B%&A	B%)&B	B%c                    	 t        dt        d      t        d      g      # g xt        % x@ t        j                         }| j                  |t        dt        d      g             n nn t        % x@ t        j                         }| j                  |t        dt        d      g             n nn x Y y cY w xY w)Nmmur   r   )r   r   r   r]   r^   r`   rk   r   s     r   test_multiple_matches_unnamedz:TestExceptStarSplitSemantics.test_multiple_matches_unnamed  s    	. 8M(NOO	@ 	@A&&qut'<&=>@ @	@  	8A&&quwt}o68 8	8s     " C:A)	(C7:B2	1Cc                    	 t        dt        d      g      # g xt        % x2}| j                  |t        dt        d      g             d }~nd }~ nn t        % x | j	                  d       n nn x Y y cY w xY w)Nfstr   z#Should have been matched as OSError)r   r   r   r`   rk   r   s     r   test_first_match_wins_namedz8TestExceptStarSplitSemantics.test_first_match_wins_named  s    	. )>(?@@	@ 	@&&qut'<&=>@ @ @	@   	=II;<<	=s     B &A	
B A1	0B c                     	 t        dt        d      g      # g xt        % x@ t        j                         }| j                  |t        dt        d      g             n nn t        % x n nn x Y y cY w xY w)Nfstur   )r   r   r   r]   r^   r`   rk   r   s     r   test_first_match_wins_unnamedz:TestExceptStarSplitSemantics.test_first_match_wins_unnamed  s}    		. /$*?)@AA	A 	AA&&qv(='>?A A	A   	D	s    A=:A	A=c                 N   	 t        dt        d      g      # g xt        % xv 	 t        dt        d      g      # g xt        % x n nn x Y ncY w xY wt	        j
                         }| j                  |t        dt        d      g             n nn x Y y cY w xY w)Nnr   )r   r   r   rk   r]   r^   r`   r   s     r   test_nested_except_starsz5TestExceptStarSplitSemantics.test_nested_except_stars  s    	. t'<&=>>		? 		?2$S:d+;*<==J  A&&qod&;%<=? ?		?s    B$;AAB	B$c                     t        d      D ]  }	 t        dt        d      g       y # g xt        % x n nn x Y 5cY w xY w)NrE   nlr   )r<   r   r   rk   )r   _s     r   test_nested_in_loopz0TestExceptStarSplitSemantics.test_nested_in_loop  sI    q 	2A2$TOD,A+BCC	2O s	   (AN)r!   r"   r#   ri   rl   rq   rs   ru   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r%   r   r[   r[      s}    A"A"KKSH68*:$@U4
..	.
.. 2r%   r[   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestExceptStarReraisec                 f   	 	 t        dt        d      t        d      t        d      g      # g xt        % x} d }~ n t        % x} d }~ n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      t        d      g             y Nr   r9   rE   r:   r   r   r   r   r`   r   r   rA   s      r   test_reraise_all_namedz,TestExceptStarReraise.test_reraise_all_named  s    
	$9Q<A
CE EI    	C	 	""4)A,
1wqz!JK	Ms6   *- A:	A
A	AA   	A5)A00A5c                 Z   	 	 t        dt        d      t        d      t        d      g      # g xt        % x   n t        % x   n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      t        d      g             y r   r   r   s      r   test_reraise_all_unnamedz.TestExceptStarReraise.test_reraise_all_unnamed  s    
	$9Q<A
CE EI    	C	 	""4)A,
1wqz!JK	Ms6   *- A:	AA		AA 	A/#A**A/c           
      Z   	 	 t        dt        d      t        d      t        d      g      # g xt        % x} d }~ n t        % x}d }~nd }~ nn x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             y r   r   r   s      r   "test_reraise_some_handle_all_namedz8TestExceptStarReraise.test_reraise_some_handle_all_named      
	$9Q<A
CE EI    	C	 	""y|WQZ&@A	C*   *- A :	!A A$ $	A9-A44A9c           	          	 	 t        dt        d      t        d      g      # g xt        % x   n t        % x n nn x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j                  t        dt        d      g             y rn   )r   r   r   r`   r   s      r   'test_reraise_partial_handle_all_unnamedz=TestExceptStarReraise.test_reraise_partial_handle_all_unnamed  s    		$9Q<A79 9I   	C	 	""y|n5	7s*    # A0	AA 	A&A!!A&c           
      Z   	 	 t        dt        d      t        d      t        d      g      # g xt        % x} d }~ n t        % x}d }~nd }~ nn x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             y r   r   r   s      r   &test_reraise_partial_handle_some_namedz<TestExceptStarReraise.test_reraise_partial_handle_some_named  r   r   c           
      H   	 	 t        dt        d      t        d      t        d      g      # g xt        % x   n t        % x n nn x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             y r   r   r   s      r   (test_reraise_partial_handle_some_unnamedz>TestExceptStarReraise.test_reraise_partial_handle_some_unnamed  s    		$9Q<A
CE EI   	C	 	""y|WQZ&@A	Cs*   *- A:	AA 	A0$A++A0c           	          	 	 t        d      # g xt         % x} d }~ n x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY w| j                  t        dt        d      g             y Nr   r   r   r   r`   r   s      r   "test_reraise_plain_exception_namedz8TestExceptStarReraise.test_reraise_plain_exception_named   se    	 n$J  	C	 	""Z^$45	7s$    ,	,0 	AA  Ac           	          	 	 t        d      # g xt         % x   n x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY w| j                  t        dt        d      g             y r   r   r   s      r   $test_reraise_plain_exception_unnamedz:TestExceptStarReraise.test_reraise_plain_exception_unnamed,  se    	 n$J  	C	 	""Z^$45	7s"    )		)- 	A=AN)r!   r"   r#   r   r   r   r   r   r   r   r   r$   r%   r   r   r     s/    M"M"C 7C C
7
7r%   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestExceptStarRaisec                 :   t        dt        d      t        d      g      }	 	 |# g xt        % x}t        d      d }~ n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        dt        d      g      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         y Nr   r9   rE   r:   r   r   	r   r   r   r   r`   
exceptionsrP   rY   rV   r   origr   rA   s       r   test_raise_namedz$TestExceptStarRaise.test_raise_named:  s    dZ]GAJ$?@	#
#G #l"# 	C	 	""Yq\>$A#HIK	L
 	""NN1))4'!*.	0 	##D#.  s~~a'8'D'DEs*   % A<	AA 	A&A!!A&c                 4   t        dt        d      t        d      g      }	 	 |# g xt        % x t        d       n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        dt        d      g      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         y r   r   r   s       r   test_raise_unnamedz&TestExceptStarRaise.test_raise_unnamedP  s    dZ]GAJ$?@	#
#G #l"# 	C	 	""Yq\>$A#HIK	L
 	""NN1))4'!*.	0 	##D#.  s~~a'8'D'DEs*   % A
<		A
A 	A#AA#c           
         t        dt        d      t        d      g      }	 	 |# g xt        t        f% x}t        d      d }~ n x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY w| j	                  t        d             | j	                  |j
                  t        dt        d      t        d      g             | j                  ||       | j                  ||j
                         y r   r   r   r   r
   r`   rP   rY   rV   r   s       r   %test_raise_handle_all_raise_one_namedz9TestExceptStarRaise.test_raise_handle_all_raise_one_namedf      dYq\:a=$AB	%
%Y
+ %!!n$% 	C	 	""3A7""OO4)A,
1!>?	A 	##D#.  s7,   % AA	AA 	A, A''A,c           
         t        dt        d      t        d      g      }	 	 |# g xt        t        f% x}t        d      d }~ n x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY w| j	                  t        d             | j	                  |j
                  t        dt        d      t        d      g             | j                  ||       | j                  ||j
                         y r   r   r   s       r   'test_raise_handle_all_raise_one_unnamedz;TestExceptStarRaise.test_raise_handle_all_raise_one_unnamedy  r   r   c           
      &   t        dt        d      t        d      g      }	 	 |# g xt        % x}t        d      d }~ n t        % x}t        d      d }~ n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         y Nr   r9   rE   r:   r8   r   r   	r   r   r   r
   r`   r   rP   rY   rV   r   s       r   %test_raise_handle_all_raise_two_namedz9TestExceptStarRaise.test_raise_handle_all_raise_two_named  sS   dYq\:a=$AB	%
%I %!!n$% %!!n$% 	C	 	""[^[^$DE	G 	""NN1))4)A,0	2 	""NN1))4*Q-1	3 	##D#.  s~~a'8'D'DE  s~~a'8'D'DEs6   % A(<	A(A	A(#A, ,	B5A<<Bc           
         t        dt        d      t        d      g      }	 	 |# g xt        % x t        d       n t        % x t        d       n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         y r   r   r   s       r   'test_raise_handle_all_raise_two_unnamedz;TestExceptStarRaise.test_raise_handle_all_raise_two_unnamed  sS   dYq\:a=$AB	%
%I %!!n$% %!!n$% 	C	 	""[^[^$DE	G 	""NN1))4)A,0	2 	""NN1))4*Q-1	3 	##D#.  s~~a'8'D'DE  s~~a'8'D'DEs6   % A"<	A"	A		A"A& &	A;/A66A;N	r!   r"   r#   r   r   r   r   r   r   r$   r%   r   r   r   9  s$    F,F,8&8&F6Fr%   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestExceptStarRaiseFromc                    t        dt        d      t        d      g      }	 	 |# g xt        % x}t        d      |d }~ n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        dt        d      g      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         y r   )
r   r   r   r   r`   r   rP   rQ   rY   rV   r   s       r   r   z(TestExceptStarRaiseFrom.test_raise_named  s   dZ]GAJ$?@	*
*G *l)* 	C	 	""Yq\>$A#HIK	L
 	""NN1))4'!*.	0 	""NN1''4'!*.	0 	##D#.  s~~a'8'D'DE  s~~a'8'B'BC##D#..*;*G*GH##D#..*;*E*EFs*   % A=	A	A 	A'A""A'c                    t        dt        d      t        d      g      }	 	 |# g xt        % x$ t        j                         }t        d      | n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j                  t        dt        d      t        dt        d      g      g             | j                  |j                  d   j                  t        dt        d      g             | j                  |j                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j                  d   j                         | j                  ||j                  d   j                         | j                  ||j                  d   j                         | j                  ||j                  d   j                         y r   )r   r   r   r]   r^   r   r`   r   rP   rQ   rY   rV   r   s       r   r   z*TestExceptStarRaiseFrom.test_raise_unnamed  s   dZ]GAJ$?@	*
*G *MMOl)*  	C	 	""Yq\>$A#HIK	L
 	""NN1))4'!*.	0 	""NN1''4'!*.	0 	##D#.  s~~a'8'D'DE  s~~a'8'B'BC##D#..*;*G*GH##D#..*;*E*EFs,   % A A		AA# #	A8,A33A8c           
         t        dt        d      t        d      g      }	 	 |# g xt        t        f% x}t        d      |d }~ n x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY w| j	                  t        d             | j	                  |j
                  t        dt        d      t        d      g             | j	                  |j                  t        dt        d      t        d      g             | j                  ||       | j                  ||j
                         | j                  ||j                         y r   )	r   r   r   r
   r`   rP   rQ   rY   rV   r   s       r   r   z=TestExceptStarRaiseFrom.test_raise_handle_all_raise_one_named  s   dYq\:a=$AB	,
,Y
+ ,!!n!+, 	C	 	""3A7""OO4)A,
1!>?	A 	""MM4)A,
1!>?	A 	##D#.  s7  s}}5s,   % AA	AA 	A-!A((A-c           
         t        dt        d      t        d      g      }	 	 |# g xt        t        f% x'}t        j                         }t        d      |d }~ n x Y ncY w xY wn# t
        $ r}|}Y d }~nd }~ww xY w| j                  t        d             | j                  |j                  t        dt        d      t        d      g             | j                  |j                  t        dt        d      t        d      g             | j                  ||       | j                  ||j                         | j                  ||j                         y r   )r   r   r   r]   r^   r
   r`   rP   rQ   rY   rV   r   s       r   r   z?TestExceptStarRaiseFrom.test_raise_handle_all_raise_one_unnamed  s   dYq\:a=$AB	,
,Y
+ ,MMO!!n!+,  	C	 	""3A7""OO4)A,
1!>?	A 	""MM4)A,
1!>?	A 	##D#.  s7  s}}5s,   % A( A	A(#A, ,	B5A<<Bc           
         t        dt        d      t        d      g      }	 	 |# g xt        % x}t        d      |d }~ n t        % x}t        d      |d }~ n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j	                  t        dt        d      t        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j	                  |j
                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j
                  d   j                         | j                  ||j
                  d   j                         y r   )
r   r   r   r
   r`   r   rP   rQ   rY   rV   r   s       r   r   z=TestExceptStarRaiseFrom.test_raise_handle_all_raise_two_named0  s   dYq\:a=$AB	,
,I ,!!n!+, ,!!n!+, 	C	 	""[^[^$DE	G 	""NN1))4)A,0	2 	""NN1''4)A,0	2 	""NN1))4*Q-1	3 	""NN1''4*Q-1	3 	##D#.  s~~a'8'D'DE  s~~a'8'B'BCs6   % A*=	A*A	A*%A. .	B7A>>Bc           
         t        dt        d      t        d      g      }	 	 |# g xt        % x$ t        j                         }t        d      | n t        % x$ t        j                         }t        d      | n x Y ncY w xY wn# t         $ r}|}Y d }~nd }~ww xY w| j                  t        dt        d      t        d      g             | j                  |j                  d   j                  t        dt        d      g             | j                  |j                  d   j                  t        dt        d      g             | j                  |j                  d   j                  t        dt        d      g             | j                  |j                  d   j                  t        dt        d      g             | j                  ||       | j                  ||j                  d   j                         | j                  ||j                  d   j                         | j                  ||j                  d   j                         | j                  ||j                  d   j                         y r   )r   r   r   r]   r^   r
   r`   r   rP   rQ   rY   rV   r   s       r   r   z?TestExceptStarRaiseFrom.test_raise_handle_all_raise_two_unnamedS  s   dYq\:a=$AB
	,
,I ,MMO!!n!+,  ,MMO!!n!+,  	C	 	""[^[^$DE	G 	""NN1))4)A,0	2 	""NN1''4)A,0	2 	""NN1))4*Q-1	3 	""NN1''4*Q-1	3 	##D#.  s~~a'8'D'DE  s~~a'8'B'BC  s~~a'8'D'DE  s~~a'8'B'BCs8   % B A	B A>	>	BB 	B%B  B%Nr   r$   r%   r   r   r     s%    G:G<6062!DF%Dr%   r   c                       e Zd Zd Zd Zy)$TestExceptStarExceptionGroupSubclassc                     G fddt               	 	 	 	 t        d      # t        $ r} d|gd      d d }~ww xY w# $ r.}	 t        d      # t        $ r} d||gd      d }~ww xY wd }~ww xY w# g xt        % x}|}d }~nd }~ nn x Y ncY w xY wn# $ r}|}Y d }~nd }~ww xY w| j                         | j                         | j                  |j                  d	          | j                  ||       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	   j                  d       y )
Nc                   *     e Zd Z fdZfdZ xZS )MTestExceptStarExceptionGroupSubclass.test_except_star_EG_subclass.<locals>.EGc                 8    t         |   | ||      }||_        |S rN   )super__new__code)clsmessageexcsr  obj	__class__s        r   r   zUTestExceptStarExceptionGroupSubclass.test_except_star_EG_subclass.<locals>.EG.__new__~  s!    goc7D9
r%   c                 @     | j                   || j                        S rN   )r  r  )r   r  EGs     r   derivezTTestExceptStarExceptionGroupSubclass.test_except_star_EG_subclass.<locals>.EG.derive  s    $,,dii88r%   )r!   r"   r#   r   r	  __classcell__)r  r  s   @r   r  r   }  s    
9 9r%   r  rE   nestede   r9   r   r   r   )r   r   r   r>   r   rV   r=   r  )r   ter  ver   vegtegr  s          @r   test_except_star_EG_subclasszATestExceptStarExceptionGroupSubclass.test_except_star_EG_subclass|  sT   	9 	9		9@'l*$ @ B454?@ 99(m+% 9 F|R8899
J  	C	 	c2&c2&cnnQ/4  c*2&2&*//5sm   " 	<7<? A2A	A*A%%A**A--A22A5 5BB	BB B."B))B.c           	      8    G fddt               	 	  dt        d      t        d      g      # g xt        % x
}|} d }~ n t        % x}|}d }~nd }~ nn x Y ncY w xY wn# t        $ r}|}Y d }~nd }~ww xY wfD ]%  }| j	                  |       | j                  |       ' | j                  | dt        d      g             | j                  | dt        d      g             | j                  | dt        d      g             y )Nc                       e Zd Zd Z fdZy)YTestExceptStarExceptionGroupSubclass.test_falsy_exception_group_subclass.<locals>.FalsyEGc                      yNFr$   r   s    r   __bool__zbTestExceptStarExceptionGroupSubclass.test_falsy_exception_group_subclass.<locals>.FalsyEG.__bool__  s    r%   c                 *     | j                   |      S rN   )r  )r   r  FalsyEGs     r   r	  z`TestExceptStarExceptionGroupSubclass.test_falsy_exception_group_subclass.<locals>.FalsyEG.derive  s    t||T22r%   N)r!   r"   r#   r  r	  )r  s   r   r  r    s    3r%   r  r   r9   rE   )r   r   r   r;   assertFalser>   r`   )r   r   tesvesrA   r  s        @r   #test_falsy_exception_group_subclasszHTestExceptStarExceptionGroupSubclass.test_falsy_exception_group_subclass  s   	3n 	3
	dYq\:a=$ABBI     	C	 sC 	.AQ!!!W-	. 	""3y|n(EF""3y|n(EF""3z!}o(FGs8   2 A)A	A)A	A)$A- -	B6A==BN)r!   r"   r#   r  r  r$   r%   r   r   r   {  s    !6FHr%   r   c                       e Zd Zd Zy)TestExceptStarCleanupc                    	 	 t        d      #  	 t        t              # g xt        % x n nn x Y ncY w xY wddz   Y nxY wn# t        $ r}|}Y d }~nd }~ww xY w| j	                  t        d             | j	                  |j                  t        d             | j                  t        j                         d        y )Nr   r9   r   zdivision by zero)
r   r   intr;   r`   ZeroDivisionErrorrP   r=   r]   r^   r   s      r   test_sys_exception_restoredz1TestExceptStarCleanup.test_sys_exception_restored  s    
	 n$#C.(	 D! 	C	 	""3(9:L(MN""3??JrNC$/s.    A <AA
 
	AAAN)r!   r"   r#   r#  r$   r%   r   r  r    s    0r%   r  c                       e Zd Z G d de      Z G d de      Z G d de      Z G d de      Zd	 Zd
 Z	d Z
d Zd Zd Zd Zy)"TestExceptStar_WeirdLeafExceptionsc                       e Zd ZdZy)0TestExceptStar_WeirdLeafExceptions.UnhashableExcN)r!   r"   r#   __hash__r$   r%   r   UnhashableExcr'    s    r%   r)  c                       e Zd Zd Zy)1TestExceptStar_WeirdLeafExceptions.AlwaysEqualExcc                      yNTr$   r   others     r   __eq__z8TestExceptStar_WeirdLeafExceptions.AlwaysEqualExc.__eq__      r%   Nr!   r"   r#   r0  r$   r%   r   AlwaysEqualExcr+    s    	r%   r3  c                       e Zd Zd Zy)0TestExceptStar_WeirdLeafExceptions.NeverEqualExcc                      yr  r$   r.  s     r   r0  z7TestExceptStar_WeirdLeafExceptions.NeverEqualExc.__eq__      r%   Nr2  r$   r%   r   NeverEqualExcr5    s    	r%   r8  c                       e Zd Zd Zy)1TestExceptStar_WeirdLeafExceptions.BrokenEqualExcc                     t               rN   RuntimeErrorr.  s     r   r0  z8TestExceptStar_WeirdLeafExceptions.BrokenEqualExc.__eq__  
    . r%   Nr2  r$   r%   r   BrokenEqualExcr:    s    	!r%   r?  c                 j    | j                   | j                  | j                  | j                  g| _        y rN   )r)  r3  r8  r?  	bad_typesr   s    r   setUpz(TestExceptStar_WeirdLeafExceptions.setUp  s/    ,,--,,--/r%   c                     d\  }}	 	 |# g x|% x}|}d }~nd }~ nn x Y ncY w xY w||fS # t         $ r}|}Y d }~||fS d }~ww xY wN)NNr;   r   r   typerg   rh   r   s         r   except_typez.TestExceptStar_WeirdLeafExceptions.except_type  c     t	D  d{  	Dd{	$   
 *	*1 	A	AA	c                 h   | j                   D ]  }| j                  |      5  t        dt        d       |d      g      }| j	                  ||      \  }}| j                  |t        d |d      g             | j                  |t        dt        d      g             d d d         y # 1 sw Y   xY wrn   rA  subTestr   r   rH  r`   r   Badr   rg   rh   s        r   $test_catch_unhashable_leaf_exceptionzGTestExceptStar_WeirdLeafExceptions.test_catch_unhashable_leaf_exception  s    >> 	@Cc" @#D9Q<Q*@A"..r37t**>$Q9;**.	!~>@@ @	@@ @s   A<B((B1	c                 p   | j                   D ]  }| j                  |      5  t        dt        d       |d      g      }| j	                  |t              \  }}| j                  |t        dt        d      g             | j                  |t        d |d      g             d d d         y # 1 sw Y   xY wrn   rL  rN  s        r   test_propagate_unhashable_leafzATestExceptStar_WeirdLeafExceptions.test_propagate_unhashable_leaf  s    >> 	:Cc" :#D9Q<Q*@A"..r9=t**>$1?A**.Ax8:: :	:: :s   B B,,B5	c           	      $   | j                   D ]u  }| j                  |      5  t        dt        d       |d      g      }| j	                  |t
              \  }}| j                  |       | j                  ||       d d d        w y # 1 sw Y   xY wrn   )rA  rM  r   r   rH  r   assertIsNoner`   rN  s        r   "test_catch_nothing_unhashable_leafzETestExceptStar_WeirdLeafExceptions.test_catch_nothing_unhashable_leaf  s    >> 	5Cc" 5#D9Q<Q*@A"..r7;t!!%(**44	5 5	55 5   ABB	c           	      $   | j                   D ]u  }| j                  |      5  t        dt        d       |d      g      }| j	                  |t
              \  }}| j                  ||       | j                  |       d d d        w y # 1 sw Y   xY wrn   )rA  rM  r   r   rH  r;   r`   rT  rN  s        r   %test_catch_everything_unhashable_leafzHTestExceptStar_WeirdLeafExceptions.test_catch_everything_unhashable_leaf  s    >> 	(Cc" (#D9Q<Q*@A"..r9=t**5"5!!$'	( (	(( (rV  c                    | j                   D ]>  }| j                  |      5  t        dt        d       |d      t	        d      g      }	 	 | y # g xt        % x n nn |% x   n x Y ncY w xY wn# t
        $ r}|}Y d }~nd }~ww xY w| j                  t        d |d      t	        d      g             d d d        # 1 sw Y   xY wr   )rA  rM  r   r   r   r;   r`   )r   rO  r   r   rA   s        r   test_reraise_unhashable_leafz?TestExceptStar_WeirdLeafExceptions.test_reraise_unhashable_leaf  s    >> 	HCc" H#9Q<QA?A 	HI    C **s1vz!}.EFHH H HsM   (CAA5&A''	A50A98C9	BB	C	B0CC	N)r!   r"   r#   r   r)  r3  r8  r?  rB  rH  rP  rR  rU  rX  rZ  r$   r%   r   r%  r%    sW    
  
 ! !/	@:5(Hr%   r%  c                       e Zd Z G d de      Z G d de      Z G d de      Z G d de      Zd	 Zd
 Z	d Z
d Zd Zd Zy)*TestExceptStar_WeirdExceptionGroupSubclassc                       e Zd ZdZd Zy)7TestExceptStar_WeirdExceptionGroupSubclass.UnhashableEGNc                 :     t        |       | j                  |      S rN   rG  r  r   r  s     r   r	  z>TestExceptStar_WeirdExceptionGroupSubclass.UnhashableEG.derive2      4:dllD11r%   )r!   r"   r#   r(  r	  r$   r%   r   UnhashableEGr^  /  s    	2r%   rc  c                       e Zd Zd Zd Zy)8TestExceptStar_WeirdExceptionGroupSubclass.AlwaysEqualEGc                      yr-  r$   r.  s     r   r0  z?TestExceptStar_WeirdExceptionGroupSubclass.AlwaysEqualEG.__eq__6  r1  r%   c                 :     t        |       | j                  |      S rN   r`  ra  s     r   r	  z?TestExceptStar_WeirdExceptionGroupSubclass.AlwaysEqualEG.derive9  rb  r%   Nr!   r"   r#   r0  r	  r$   r%   r   AlwaysEqualEGre  5  s    		2r%   ri  c                       e Zd Zd Zd Zy)7TestExceptStar_WeirdExceptionGroupSubclass.NeverEqualEGc                      yr  r$   r.  s     r   r0  z>TestExceptStar_WeirdExceptionGroupSubclass.NeverEqualEG.__eq__=  r7  r%   c                 :     t        |       | j                  |      S rN   r`  ra  s     r   r	  z>TestExceptStar_WeirdExceptionGroupSubclass.NeverEqualEG.derive@  rb  r%   Nrh  r$   r%   r   NeverEqualEGrk  <  s    		2r%   rn  c                       e Zd Zd Zd Zy)8TestExceptStar_WeirdExceptionGroupSubclass.BrokenEqualEGc                     t               rN   r<  r.  s     r   r0  z?TestExceptStar_WeirdExceptionGroupSubclass.BrokenEqualEG.__eq__D  r>  r%   c                 :     t        |       | j                  |      S rN   r`  ra  s     r   r	  z?TestExceptStar_WeirdExceptionGroupSubclass.BrokenEqualEG.deriveG  rb  r%   Nrh  r$   r%   r   BrokenEqualEGrp  C  s    	!	2r%   rs  c                 j    | j                   | j                  | j                  | j                  g| _        y rN   )rc  ri  rn  rs  rA  r   s    r   rB  z0TestExceptStar_WeirdExceptionGroupSubclass.setUpJ  s/    ++,,++,,.r%   c                     d\  }}	 	 |# g x|% x}|}d }~nd }~ nn x Y ncY w xY w||fS # t         $ r}|}Y d }~||fS d }~ww xY wrD  rE  rF  s         r   rH  z6TestExceptStar_WeirdExceptionGroupSubclass.except_typeP  rI  rJ  c                    | j                   D ]  }| j                  |      5   |dt        d       |dt        d      g      g      }| j	                  |t              \  }}| j                  | |dt        d      g             | j                  | |d |dt        d      g      g             d d d         y # 1 sw Y   xY wNr   r9   r  rE   )rA  rM  r   r   rH  r`   r   BadEGr   rg   rh   s        r   3test_catch_some_unhashable_exception_group_subclassz^TestExceptStar_WeirdExceptionGroupSubclass.test_catch_some_unhashable_exception_group_subclass[  s    ^^ 		EEe$ E4%aL!(Z]O<>? #..r9=t**5%y|n2MN**4$x*Q-!A BCEE E		EE Es   BB99C	c                 4   | j                   D ]}  }| j                  |      5   |dt        d       |dt        d      g      g      }| j	                  |t
              \  }}| j                  |       | j                  ||       d d d         y # 1 sw Y   xY wrw  )rA  rM  r   r   rH  r   rT  r`   rx  s        r   3test_catch_none_unhashable_exception_group_subclassz^TestExceptStar_WeirdExceptionGroupSubclass.test_catch_none_unhashable_exception_group_subclassg  s    ^^ 		5Ee$ 54%aL!(Z]O<>? #..r7;t!!%(**445 5		55 5   A"BB	c                 4   | j                   D ]}  }| j                  |      5   |dt        d       |dt        d      g      g      }| j	                  |t
              \  }}| j                  ||       | j                  |       d d d         y # 1 sw Y   xY wrw  )rA  rM  r   r   rH  r;   r`   rT  rx  s        r   2test_catch_all_unhashable_exception_group_subclassz]TestExceptStar_WeirdExceptionGroupSubclass.test_catch_all_unhashable_exception_group_subclasss  s    ^^ 		(Ee$ (4%aL!(Z]O<>? #..r9=t**5"5!!$'( (		(( (r}  c                    | j                   D ]P  }| j                  |      5   |dt        d      t        d       |dt        d      t	        d      g      g      }	 	 | y # g xt        % x n nn t        % x   n x Y ncY w xY wn# t
        $ r}|}Y d }~nd }~ww xY w| j                   |dt        d       |dt	        d      g      g             d d d        # 1 sw Y   xY w)Nr   r9   rE   r  r:   r8   )rA  rM  r   r   r   r;   r`   )r   ry  r   r   rA   s        r   test_reraise_unhashable_egzETestExceptStar_WeirdExceptionGroupSubclass.test_reraise_unhashable_eg  s    ^^ 	@Ee$ @4%aL*Q-!(Z]GAJ,GHJK 	@J #   C **til$X
|<&> ?@!@ @ @sM   :C%A!!B<A==	BBC%	B$BC%B$$8C%%C.	N)r!   r"   r#   r   rc  ri  rn  rs  rB  rH  rz  r|  r  r  r$   r%   r   r\  r\  +  sR    2~ 22 22~ 22 2.	
E
5
(@r%   r\  __main__)r]   unittestr+   test.support.testcaser   TestCaser   r'   rL   r[   r   r   r   r   r  r%  r\  r!   mainr$   r%   r   <module>r     s    
   6*H-- *Zw3x/@/@ w3tB)8+<+< B$}2> }2@w7N w7tGF. GFTuDn uDp>H> >HB0N 0&YH YHxh@ h@V zHMMO r%   