
    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j                        Z	 G d	 d
ej                        Z
d Z G d dej                        Z G d dej                        Z G d de      Z G d de      Z G d dej                        Zd#dZ G d dej                        Zd 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j2                          yy)$    N)C_RECURSION_LIMITc                       e Zd Zd Zd Zd Zy)TestExceptionGroupTypeHierarchyc                     | j                  t        t        t                     | j                  t        t        t                     | j                  t        t        t
                     y N)
assertTrue
issubclassExceptionGroup	ExceptionBaseExceptionGroupBaseExceptionselfs    4/root/Python-3.12.4/Lib/test/test_exception_group.pytest_exception_group_typesz:TestExceptionGroupTypeHierarchy.test_exception_group_types   s=    
>9=>
>3EFG
#5}EF    c                 t    | j                  t        d      5  t        t            d d d        y # 1 sw Y   y xY w)Nr   )assertRaisesRegex	TypeErrorr   OSErrorr   s    r   "test_exception_is_not_generic_typezBTestExceptionGroupTypeHierarchy.test_exception_is_not_generic_type   s/    ##I{; 	g	 	 	s   .7c                     t         }| j                  t        |   t        j                         | j                  t
        |   t        j                         y r   )r   assertIsInstancer
   typesGenericAliasr   )r   Es     r   $test_exception_group_is_generic_typezDTestExceptionGroupTypeHierarchy.test_exception_group_is_generic_type   s>    nQ/1C1CD03U5G5GHr   N)__name__
__module____qualname__r   r   r    r   r   r   r      s    G
Ir   r   c                   $    e Zd Zd Zd Zd Zd Zy)BadConstructorArgsc                    d}| j                  t        |      5  t        d       d d d        | j                  t        |      5  t        t        d      g       d d d        | j                  t        |      5  t        dt        d      gt        d      g       d d d        y # 1 sw Y   ~xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)Nz8BaseExceptionGroup.__new__\(\) takes exactly 2 argumentsz	no errorszno msgegtoomanyr   r   r
   
ValueErrorr   MSGs     r   'test_bad_EG_construction__too_many_argsz:BadConstructorArgs.test_bad_EG_construction__too_many_args   s    I##Is3 	(;'	(##Is3 	3Jx012	3##Is3 	K4*U"3!4y7H6IJ	K 	K		( 	(	3 	3	K 	Ks#   B"B.7"B:"B+.B7:Cc                    d}| j                  t        |      5  t        t        d      t	        d             d d d        | j                  t        |      5  t        d t        d      g       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nzargument 1 must be str, not    z
bad syntax)r   r   r
   r)   SyntaxErrorr*   s     r   %test_bad_EG_construction__bad_messagez8BadConstructorArgs.test_bad_EG_construction__bad_message    s~    ,##Is3 	F:b>;|+DE	F##Is3 	34*R.!12	3 	3	F 	F	3 	3s   A6B6A?Bc                 j   d}| j                  t        |      5  t        dt        d      h       d d d        | j                  t        |      5  t        dd        d d d        d}| j                  t        |      5  t        dg        d d d        y # 1 sw Y   bxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nz1second argument \(exceptions\) must be a sequencezerrors not sequence*   r%   z;second argument \(exceptions\) must be a non-empty sequencer(   r*   s     r   +test_bad_EG_construction__bad_excs_sequencez>BadConstructorArgs.test_bad_EG_construction__bad_excs_sequence'   s    B##Is3 	D0:b>2BC	D##Is3 	'4&	' M##J4 	%4$	% 	%	D 	D	' 	'	% 	%s#   BB;B)BB&)B2c                     d}| j                  t        |      5  t        dt        g       d d d        | j                  t        |      5  t        ddg       d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)NzAItem [0-9]+ of second argument \(exceptions\) is not an exceptionzexpect instance, not typez	bad errorznot an exception)r   r)   r
   r   r*   s     r   /test_bad_EG_construction__nested_non_exceptionszBBadConstructorArgs.test_bad_EG_construction__nested_non_exceptions2   sw    %##J4 	D6	B	D##J4 	>;);(<=	> 	>	D 	D	> 	>s   A 	A, A),A5N)r   r   r    r,   r0   r3   r5   r!   r   r   r#   r#      s    K3	%>r   r#   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)InstanceCreationc                     t        d      t        d      g}| j                  t        t	        d|            t               y )N      r%   )r)   r   assertIstyper
   r   excss     r   $test_EG_wraps_Exceptions__creates_EGz5InstanceCreation.test_EG_wraps_Exceptions__creates_EG<   s2    1y|,d+,	r   c                     t        d      t        d      g}| j                  t        t	        d|            t
               y )Nr9   r:   beg)r)   r   r;   r<   r   r
   r=   s     r   %test_BEG_wraps_Exceptions__creates_EGz6InstanceCreation.test_BEG_wraps_Exceptions__creates_EGB   s3    1y|,#E401	r   c                     d}| j                  t        |      5  t        dt        d      t	        d      g      }d d d        y # 1 sw Y   y xY w)Nz/Cannot nest BaseExceptions in an ExceptionGroupr%   r9   r:   )r   r   r
   r)   KeyboardInterrupt)r   r+   r%   s      r   -test_EG_wraps_BaseException__raises_TypeErrorz>InstanceCreation.test_EG_wraps_BaseException__raises_TypeErrorH   sK    >##Is3 	Mz!}6G6J&KLB	M 	M 	Ms   !AAc                     t        dt        d      t        d      g      }| j                  t	        |      t                y )NrA   r9   r:   )r   r)   rD   r;   r<   )r   rA   s     r   )test_BEG_wraps_BaseException__creates_BEGz:InstanceCreation.test_BEG_wraps_BaseException__creates_BEGM   s0     A8I!8L(MNd3i!34r   c                      G d dt               }| j                  t         |dt        d      t	        d      g            |       y )Nc                       e Zd Zy)IInstanceCreation.test_EG_subclass_wraps_non_base_exceptions.<locals>.MyEGNr   r   r    r!   r   r   MyEGrJ   R       r   rL   r%   r.   r2   )r
   r;   r<   r)   r   r   rL   s     r   *test_EG_subclass_wraps_non_base_exceptionsz;InstanceCreation.test_EG_subclass_wraps_non_base_exceptionsQ   s;    	> 	 	dZ^Yr];<=	r   c                      G d dt               }d}| j                  t        |      5   |dt        d      t	        d      g       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)MInstanceCreation.test_EG_subclass_does_not_wrap_base_exceptions.<locals>.MyEGNrK   r!   r   r   rL   rR   Z   rM   r   rL   $Cannot nest BaseExceptions in 'MyEG'r%   r.   r2   )r
   r   r   r)   rD   r   rL   msgs      r   .test_EG_subclass_does_not_wrap_base_exceptionsz?InstanceCreation.test_EG_subclass_does_not_wrap_base_exceptionsY   sW    	> 	 5##Is3 	@
2(9"(=>?	@ 	@ 	@s   AAc                      G d dt         t              }d}| j                  t        |      5   |dt        d      t	        d      g       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)TInstanceCreation.test_BEG_and_E_subclass_does_not_wrap_base_exceptions.<locals>.MyEGNrK   r!   r   r   rL   rY   b   rM   r   rL   rS   r%   r.   r2   )r   r)   r   r   rD   rT   s      r   5test_BEG_and_E_subclass_does_not_wrap_base_exceptionszFInstanceCreation.test_BEG_and_E_subclass_does_not_wrap_base_exceptionsa   sZ    	%z 	 5##Is3 	@
2(9"(=>?	@ 	@ 	@s   AAc                 d     G d dt         t              } |dt        d      t               g       y )Nc                       e Zd Zy)[InstanceCreation.test_EG_and_specific_subclass_can_wrap_any_nonbase_exception.<locals>.MyEGNrK   r!   r   r   rL   r]   j   rM   r   rL   r%   r.   )r
   r)   r   rN   s     r   <test_EG_and_specific_subclass_can_wrap_any_nonbase_exceptionzMInstanceCreation.test_EG_and_specific_subclass_can_wrap_any_nonbase_exceptioni   s'    	>: 	 	TJrNIK01r   c                 d     G d dt         t              } |dt        d      t               g       y )Nc                       e Zd Zy)\InstanceCreation.test_BEG_and_specific_subclass_can_wrap_any_nonbase_exception.<locals>.MyEGNrK   r!   r   r   rL   ra   q   rM   r   rL   r%   r.   )r   r)   r   rN   s     r   =test_BEG_and_specific_subclass_can_wrap_any_nonbase_exceptionzNInstanceCreation.test_BEG_and_specific_subclass_can_wrap_any_nonbase_exceptionp   s(    	%z 	 	TJrNIK01r   c                      G d dt               }| j                  t         |dt        d      t	        d      g            |       | j                  t         |dt        d      t        d      g            |       y )Nc                       e Zd Zy)@InstanceCreation.test_BEG_subclass_wraps_anything.<locals>.MyBEGNrK   r!   r   r   MyBEGre   y   rM   r   rf   r%   r.   r2   )r   r;   r<   r)   r   rD   )r   rf   s     r    test_BEG_subclass_wraps_anythingz1InstanceCreation.test_BEG_subclass_wraps_anythingx   sk    	& 	 	tjnim<=>	 	tjn.?.CDEF	r   N)r   r   r    r?   rB   rE   rG   rO   rV   rZ   r^   rb   rg   r!   r   r   r7   r7   ;   s7    M
5@@22	r   r7   c                       e Zd Zd Zd Zd Zy)StrAndReprTestsc           	      `   t        dt        d      t        d      g      }| j                  t	        |      d       | j                  t        |      d       t        d|t        d      |t        d      g      }| j                  t	        |      d       | j                  t        |      d       y )	Nflatr9   r:   flat (2 sub-exceptions)z5ExceptionGroup('flat', [ValueError(1), TypeError(2)])nestednested (4 sub-exceptions)zExceptionGroup('nested', [ExceptionGroup('flat', [ValueError(1), TypeError(2)]), ValueError(1), ExceptionGroup('flat', [ValueError(1), TypeError(2)]), TypeError(2)]))r   r)   r   assertEqualstrreprr   r%   s     r   test_ExceptionGroupz#StrAndReprTests.test_ExceptionGroup   s    Z]IaL13 	R";<bC	E  r:a="il;= 	R"=>bE	Fr   c                 L   t        dt        d      t        d      g      }| j                  t	        |      d       | j                  t        |      d       t        d|t        d      |g      }| j                  t	        |      d       | j                  t        |      d       y )	Nrk   r9   r:   rl   zABaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)])rm   znested (3 sub-exceptions)zBaseExceptionGroup('nested', [BaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)]), ValueError(1), BaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)])]))r   r)   rD   ro   rp   rq   rr   s     r   test_BaseExceptionGroupz'StrAndReprTests.test_BaseExceptionGroup   s    Z]$5a$89; 	R";<b9	:
  r:a="-/ 	R"=>b?	@r   c           	      r    G d dt               } |dt        d      t        d      g      }| j                  t	        |      d       | j                  t        |      d        |d|t        d      |t        d      g      }| j                  t	        |      d	       | j                  t        |      d
       y )Nc                       e Zd Zy)3StrAndReprTests.test_custom_exception.<locals>.MyEGNrK   r!   r   r   rL   rx      rM   r   rL   rk   r9   r:   rl   z+MyEG('flat', [ValueError(1), TypeError(2)])rm   rn   zMyEG('nested', [MyEG('flat', [ValueError(1), TypeError(2)]), ValueError(1), MyEG('flat', [ValueError(1), TypeError(2)]), TypeError(2)]))r
   r)   r   ro   rp   rq   )r   rL   r%   s      r   test_custom_exceptionz%StrAndReprTests.test_custom_exception   s    	> 	 Z]IaL13 	R";<b#PQr:a="il;= 	R"=>b'	)r   N)r   r   r    rs   ru   ry   r!   r   r   ri   ri      s    F(@,)r   ri   c                  :   g } 	 	 t        d      # t         $ r}t        d      |d }~ww xY w# t        $ r}| j                  |       Y d }~nd }~ww xY w	 	 t        d      # t        $ r}t	        t
              d }~ww xY w# t        $ r}| j                  |       Y d }~nd }~ww xY w	 	 t        d      # t        $ r}t        d      d }~ww xY w# t        $ r}| j                  |       Y d }~nd }~ww xY w	 t        d|       # t        $ r}|cY d }~S d }~ww xY w)Nz#context and cause for ValueError(1)r9   zcontext for TypeErrorzcontext for ValueError(2)r:   	simple eg)MemoryErrorr)   appendr   r   intImportErrorr
   )r>   es     r   create_simple_egr      s   D	'CDD 	'Q-Q&	' A	!122 	!C. 	! A	 9:: 	 Q-	  A[$// s    	*%*- 	AAAA! !	A>*A99A>>B 	B%
B  B%*B5 5	C>C		CC 	C5C00C59D 	DDDDc                       e Zd Zd Zd Zy)ExceptionGroupFieldsc                 *   t               }| j                  |j                  d       | j                  |j                  d   d       | j	                  |j
                  d   t               | j	                  |j
                  d   j                  t               | j	                  |j
                  d   j                  t               | j	                  |j
                  d   t               | j                  |j
                  d   j                         | j	                  |j
                  d   j                  t               | j	                  |j
                  d   t               | j                  |j
                  d   j                         | j	                  |j
                  d   j                  t               t         j                  j                  }|dz   |dz   |dz   |dz   gg}| j                  |j                   j"                  |d          | j                  |j                   j$                         t'        d	      D ]X  }|j
                  |   j                   }| j                  |j$                         | j                  |j"                  |d   |          Z y )
Nr{   r   r9   r:                  )r   ro   messageargsr   
exceptionsr)   	__cause__r|   __context__r   assertIsNoner   r   __code__co_firstlineno__traceback__	tb_linenotb_nextrange)r   r%   line0
tb_linenositbs         r   !test_basics_ExceptionGroup_fieldsz6ExceptionGroupFields.test_basics_ExceptionGroup_fields   s    	[1[1 	bmmA.
;bmmA.88+FbmmA.::KHbmmA.	:"--*445bmmA.::GDbmmA.
;"--*445bmmA.::KH !))88bjqy%"*ebj9;
))33Z]C"**223q 	=Aq!//Bbjj)R\\:a=+;<	=r   c                    t        dt        d      t        d      g      }| j                  t	        |j
                        t               |j                   | j                  t              5  d|_        d d d        |j
                   | j                  t              5  t        d      g|_        d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nr%   r9   r:   znew msgxyz)
r
   r   r   ro   r<   r   tupler   assertRaisesAttributeErrorrr   s     r   test_fields_are_readonlyz-ExceptionGroupFields.test_fields_are_readonly  s    D9Q<"<=bmm,e4


~. 	#"BJ	# 	~. 	-$U^,BM	- 	-		# 	#	- 	-s   +B7C7C CN)r   r   r    r   r   r!   r   r   r   r      s    =:-r   r   c                       e Zd Zd Zy)ExceptionGroupTestBasec                 2   || j                  t        |      |       t        |t              r| j	                  |t
        j                  j                         | j                  t        |j                        t        |             t        |j                  |      D ]  \  }}| j                  |d|        y| j	                  |t               | j                  t        |      t        |             | j                  |j                  |j                         y)a   Assert that the exception matches the template

            A template describes the shape of exc. If exc is a
            leaf exception (i.e., not an exception group) then
            template is an exception instance that has the
            expected type and args value of exc. If exc is an
            exception group, then template is a list of the
            templates of its nested exceptions.
        N)r;   r<   
isinstancer   r   collectionsabcSequencero   lenr   zipassertMatchesTemplater   r   )r   excexc_typetemplater   ts         r   r   z,ExceptionGroupTestBase.assertMatchesTemplate  s     MM$s)X.c-.!!(KOO,D,DES0#h-@CNNH5 71**1dA67 !!(M:T#YX7SXXx}}5r   N)r   r   r    r   r!   r   r   r   r     s    6r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
ExceptionGroupSubgroupTestsc                 t    t               | _        t        d      t        t              t        d      g| _        y Nr9   r:   r   r%   r)   r   r~   eg_templater   s    r   setUpz!ExceptionGroupSubgroupTests.setUp+  '    "$&qM9S>:a=Ir   c                 d   dt        d      t         t        gt         dfg}|D ]t  }| j                  t              5  | j                  j	                  |       d d d        | j                  t              5  | j                  j                  |       d d d        v y # 1 sw Y   ExY w# 1 sw Y   xY w)Nzbad argzinstance not typer2   )r   r   r   r%   subgroupsplit)r   bad_argsargs      r   (test_basics_subgroup_split__bad_arg_typezDExceptionGroupSubgroupTests.test_basics_subgroup_split__bad_arg_type/  s    /0i(bM#  	#C""9- &  %&""9- #c"# #	#& &# #s   B3B&B#	&B/	c                 D   | j                   }| j                  ||j                  t                     | j                  ||j                  t                     | j                  ||j                  t
                     | j                  ||j                  t                     y r   )r%   r;   r   r   r   r   r
   rr   s     r   )test_basics_subgroup_by_type__passthroughzEExceptionGroupSubgroupTests.test_basics_subgroup_by_type__passthrough:  sh    WWb"++m45b"++i01b"++&89:b"++n56r   c                 `    | j                  | j                  j                  t                     y r   )r   r%   r   r   r   s    r   &test_basics_subgroup_by_type__no_matchzBExceptionGroupSubgroupTests.test_basics_subgroup_by_type__no_matchA  s    $''**734r   c                    | j                   }t        t        d      t        d      gft        t        t              gft        t        f| j                  fg}|D ]n  \  }}| j                  |      5  |j                  |      }| j                  |j                  |j                         | j                  |t        |       d d d        p y # 1 sw Y   {xY w)Nr9   r:   )match)r%   r)   r   r~   r   subTestr   ro   r   r   r
   )r   r%   	testcases
match_typer   subegs         r   #test_basics_subgroup_by_type__matchz?ExceptionGroupSubgroupTests.test_basics_subgroup_by_type__matchD  s    WW *Q-A783())$d&6&67	9	 %. 	L JJ/ LJ/  

;**5.(KL L	LL Ls   0AC

C	c                 p    | j                  | j                  | j                  j                  d              y )Nc                      yNTr!   r   s    r   <lambda>z\ExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__passthrough.<locals>.<lambda>S      r   )r;   r%   r   r   s    r   .test_basics_subgroup_by_predicate__passthroughzJExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__passthroughR  s#    dggtww//?@r   c                 Z    | j                  | j                  j                  d              y )Nc                      yNFr!   r   s    r   r   zYExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__no_match.<locals>.<lambda>V  r   r   )r   r%   r   r   s    r   +test_basics_subgroup_by_predicate__no_matchzGExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__no_matchU  s    $''**?;<r   c                 f   | j                   }t        t        d      t        d      gft        t        t              gft        t        f| j                  fg}|D ]V  \  }|j                  fd      }| j                  |j                  |j                         | j                  |t        |       X y )Nr9   r:   c                     t        |       S r   r   r   r   s    r   r   zVExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__match.<locals>.<lambda>a  s    *Q
*C r   )
r%   r)   r   r~   r   r   ro   r   r   r
   )r   r%   r   r   r   r   s        @r   (test_basics_subgroup_by_predicate__matchzDExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__matchX  s    WW *Q-A783())$d&6&67	9	 %. 	H JKK CDEU]]BJJ7&&unhG	Hr   N)r   r   r    r   r   r   r   r   r   r   r   r!   r   r   r   r   *  s.    J	#75LA=Hr   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	ExceptionGroupSplitTestsc                 t    t               | _        t        d      t        t              t        d      g| _        y r   r   r   s    r   r   zExceptionGroupSplitTests.setUpg  r   r   c                     t         t        t        t        fD ]R  }| j                  j                  |      \  }}| j                  |t        | j                         | j                  |       T y r   )	r   r   r   r
   r%   r   r   r   r   )r   r   r   rests       r   &test_basics_split_by_type__passthroughz?ExceptionGroupSplitTests.test_basics_split_by_type__passthroughk  s\    $n6 	$A''--*KE4&&~t'7'79d#	$r   c                     | j                   j                  t              \  }}| j                  |       | j	                  |t
        | j                         y r   )r%   r   r   r   r   r
   r   r   r   r   s      r   #test_basics_split_by_type__no_matchz<ExceptionGroupSplitTests.test_basics_split_by_type__no_matchs  sA    ggmmG,t% "".$"2"2	4r   c                 l   | j                   }t        }t        }| |d       |d      g |t              gf| |t              g |d       |d      gf||f| j                  d ft
        |f |d       |d      g |t              gfg}|D ]  \  }}}|j                  |      \  }}	| j                  |j                  |j                         | j                  |t        |       |>| j                  |	j                  |j                         | j                  |	t        |       | j                  |	        y r   )r%   r)   r   r~   r   r   r   ro   r   r   r
   r   )
r   r%   VETEr   r   match_templaterest_templater   r   s
             r    test_basics_split_by_type__matchz9ExceptionGroupSplitTests.test_basics_split_by_type__matchy  s%   WW "Q%A"S'+"S'RUBqEN+"Xt''.r]RUBqENRWI6
	 :C 
	(5J((:.KE4U]]BJJ7&&~~7(  rzz:**.-9 !!$'
	(r   c                     | j                   j                  d       \  }}| j                  |t        | j                         | j                  |       y )Nc                      yr   r!   r   s    r   r   zVExceptionGroupSplitTests.test_basics_split_by_predicate__passthrough.<locals>.<lambda>  r   r   )r%   r   r   r
   r   r   r   s      r   +test_basics_split_by_predicate__passthroughzDExceptionGroupSplitTests.test_basics_split_by_predicate__passthrough  s>    ggmmN3t""5.$:J:JK$r   c                     | j                   j                  d       \  }}| j                  |       | j                  |t        | j
                         y )Nc                      yr   r!   r   s    r   r   zSExceptionGroupSplitTests.test_basics_split_by_predicate__no_match.<locals>.<lambda>  r   r   )r%   r   r   r   r
   r   r   s      r   (test_basics_split_by_predicate__no_matchzAExceptionGroupSplitTests.test_basics_split_by_predicate__no_match  s>    ggmmO4t% ""49I9IJr   c                   	 | j                   }t        }t        }| |d       |d      g |t              gf| |t              g |d       |d      gf||f| j                  d fg}|D ]  \  	}}|j                  	fd      \  }}| j                  |j                  |j                         | j                  |t        |       |^| j                  |j                  |j                         | j                  |t        |        y )Nr9   r:   c                     t        |       S r   r   r   s    r   r   zPExceptionGroupSplitTests.test_basics_split_by_predicate__match.<locals>.<lambda>  s    Z:-F r   )
r%   r)   r   r~   r   r   ro   r   r   r
   )
r   r%   r   r   r   r   r   r   r   r   s
            @r   %test_basics_split_by_predicate__matchz>ExceptionGroupSplitTests.test_basics_split_by_predicate__match  s    WW "Q%A"S'+"S'RUBqEN+"Xt''.	
	 :C 	95J((#FGKE4U]]BJJ7&&~~7(  rzz:**.-9	9r   N)
r   r   r    r   r   r   r   r   r   r   r!   r   r   r   r   f  s'    J$4(0 
K
9r   r   c                       e Zd Zd Zd Zd Zy)DeepRecursionInSplitAndSubgroupc                 d    t        d      }t        t        dz         D ]  }t        d|g      } |S )Nr9   r%   )r   r   r   r
   )r   r   r   s      r   make_deep_egz,DeepRecursionInSplitAndSubgroup.make_deep_eg  s8    aL(1,- 	*AtaS)A	*r   c                     | j                         }| j                  t              5  |j                  t               d d d        y # 1 sw Y   y xY wr   )r   r   RecursionErrorr   r   r   r   s     r   test_deep_splitz/DeepRecursionInSplitAndSubgroup.test_deep_split  s?    ~. 	GGI	 	 	   AAc                     | j                         }| j                  t              5  |j                  t               d d d        y # 1 sw Y   y xY wr   )r   r   r   r   r   r   s     r   test_deep_subgroupz2DeepRecursionInSplitAndSubgroup.test_deep_subgroup  s?    ~. 	"JJy!	" 	" 	"r   N)r   r   r    r   r   r   r!   r   r   r   r     s    
"r   r   c              #      K   |g }|j                  | j                         t        | t              r&| j                  D ]  }t        ||      E d {     n| |f |j                          y 7 wr   )r}   r   r   r   r   leaf_generatorpop)r   tbsr   s      r   r   r     si     
{JJs  !#)* 	.A%a---	. 3hGGI .s   AA1A/A1c                       e Zd Zd Zy)LeafGeneratorTestc                 
   t               }| j                  t        |      D cg c]  \  }}|	 c}}|j                         t        |      D ]-  \  }}| j                  ||j                  |j                  g       / y c c}}w r   )r   assertSequenceEqualr   r   r   )r   r%   r   _r   s        r   test_leaf_generatorz%LeafGeneratorTest.test_leaf_generator  sw      )"-.41aQ.MM	 %R( 	:FAs$$b&&8:	: /s   A?
N)r   r   r    r  r!   r   r   r   r     s    
	:r   r   c                     g } 	 	 t        t              # t         $ r}t        d|g      d }~ww xY w# t        $ r}| j                  |       Y d }~nd }~ww xY w	 	 t	        d      # t        $ r}t        d      |d }~ww xY w# t
        $ r}| j                  |       Y d }~nd }~ww xY w	 t        d|       # t        $ r}|cY d }~S d }~ww xY w)Nrm   zout of memoryr9   root)r   bytesr
   r}   r|   r)   )r>   r   r%   s      r   create_nested_egr    s    D	0E"" 	0 A3//	0 A	'o.. 	'Q-Q&	' AVT** 	sr    	/*/2 	AAAA& &	B /A;;B  B 	B'B""B'+B7 7	C CCCc                   $    e Zd Zd Zd Zd Zd Zy)NestedExceptionGroupBasicsTestc                 x    t               }| j                  |t        t        t              gt        d      g       y )Nr9   )r  r   r
   r   r  r)   rr   s     r   "test_nested_group_matches_templatezANestedExceptionGroupBasicsTest.test_nested_group_matches_template  s2    ""A/	1r   c                 &   t               }| j                  |j                  d   j                  t               | j                  |j                  d   j
                  t               | j                  |j                  d   j                  t               y )Nr9   r   )r  r   r   r   r|   r   r   rr   s     r   test_nested_group_chainingz9NestedExceptionGroupBasicsTest.test_nested_group_chaining  sg    bmmA.::KHbmmA.88+FbmmA.::IFr   c                    t               }t         j                  j                  }|j                  |dz   f|j                  d   j                  |dz   f|j                  d   j                  |dz   f|j                  d   j                  d   j                  |dz   ffD ]<  \  }}| j                  |j                  |       | j                  |j                         > y )N   r   r   r9   r      )	r  r   r   r   r   ro   r   r   r   )r   r%   r   r   expecteds        r   &test_nested_exception_group_tracebackszENestedExceptionGroupBasicsTest.test_nested_exception_group_tracebacks	  s     ))88urz*]]1++UQY7]]1++URZ8]]1((+99519E	
 	*NR R\\84bjj)	*r   c           	      x   t               }| j                  t        t        t	        |                  d       t         j
                  j                  }|dz   |dz   |dz   g|dz   |dz   gg}t        t	        |            D ]5  \  }\  }}| j                  |D cg c]  }|j                   c}||          7 y c c}w )Nr:   r  r   r  r   )
r  ro   r   listr   r   r   	enumerater  r   )r   r%   r   expected_tbsr   r  r   r   s           r   test_iteration_full_tracebacksz=NestedExceptionGroupBasicsTest.test_iteration_full_tracebacks  s     	T."456: ))88"*eai;"*ebj13 '~b'9: 	!MQC$$(+,",Q!	!,s   B7
N)r   r   r    r  r  r  r  r!   r   r   r
  r
    s    1G*!r   r
  c                       e Zd Zd Zy)ExceptionGroupSplitTestBasec                 *   | j                  |t               |j                  |      \  }}|j                  |      }|| j                  |t               t	        |      D ]  \  }}| j                  ||        | j                  |       | j                  |t               t	        |      D ]  \  }}| j                  ||        || j                  |t               d }| j                   ||       ||              ||      }	 ||      }
| j                  t         ||            t         ||            t         ||            z           ||      D ]   }| j                  |xr ||	v |xr ||
v        " |||fD ]  }|| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |dd      t        |dd              d }d }|||fD ];  } ||      D ].  }| j                   | |||             | |||                   0 = ||fS )z5 Split an EG and do some sanity checks on the result Nc                 R    | g S t        |       D cg c]  \  }}|	 c}}S c c}}w r   r   )r   r   r  s      r   leaveszAExceptionGroupSplitTestBase.split_exception_group.<locals>.leaves<  s(    2Ls8K*L11*LL*Ls   #	__notes__c                 :    t        |      D ]  \  }}|| u s|c S  y r   r  )leafr%   r   r   s       r   tbs_for_leafzGExceptionGroupSplitTestBase.split_exception_group.<locals>.tbs_for_leafY  s&    (, 39Jr   c                 F    | D cg c]  }|s|j                    c}S c c}w r   )r   )r   r   s     r   r   zEExceptionGroupSplitTestBase.split_exception_group.<locals>.tb_linenos^  s    +.5R"BLL555s   )r   r   r   r   r   assertIsNotNoner  ro   r   assertNotEqualr   r;   r   r   r   getattr)r   r%   r   r   r   sgr   r  r  match_leavesrest_leavespartr"  r   s                 r   split_exception_groupz1ExceptionGroupSplitTestBase.split_exception_group(  s   b"45hhuot[[!!%);<%e, 0!%%a/0   $!!"&89%b) 0!%%a/0 !!$(:;	M 	  r
;e}Tlr
OuVD\!22	4  	+A+!|+)k)+	+ D"% 	6D  T\\:bllDNN;bnnd.>.>?b..0B0BC  BT2D+t46	6	
	6 D"% 	7DD\ 7((|Ar23|At4577	7 d{r   N)r   r   r    r+  r!   r   r   r  r  &  s    @r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)NestedExceptionGroupSplitTestc                 .  	
  G d dt               	d d 
	
fd}	  |        t        d      t	        t
              t        d      gt        d      t	        t
              t        d	      gt        d	      gt        d      g}t        d      t        d      gt        d      t        d	      gt        d	      gt        d      g}t	        t
              gt	        t
              ggg}| j                  t         |       | j                  |t              \  }}| j                  |       | j                  |t         |       | j                  |t              \  }}| j                  |t         |       | j                  |       | j                  |t        t        f      \  }}| j                  |t         |       | j                  |       | j                  |t              \  }}| j                  |t         |       | j                  |t         |       | j                  |t        t        f      \  }}| j                  |t         |       | j                  |t         |       |j                  t               \  }}| j                  ||       | j                  |       |j                  	      \  }}| j                  |t         |d
   g       | j                  |t         |d   g       y # t         $ r*}|j                  dt        |              |}Y d }~d }~ww xY w)Nc                       e Zd Zy)JNestedExceptionGroupSplitTest.test_split_by_type.<locals>.MyExceptionGroupNrK   r!   r   r   MyExceptionGroupr0  n  rM   r   r1  c                     t        |       r   )r)   )vs    r   raiseVEzANestedExceptionGroupSplitTest.test_split_by_type.<locals>.raiseVEq  s    Q-r   c                     t        |       r   )r   )r   s    r   raiseTEzANestedExceptionGroupSplitTest.test_split_by_type.<locals>.raiseTEt  s    A,r   c                  @    fdfdfd}  | d       y )Nc                     g }| ft         f| dz   ffD ]  \  }}	  ||        t        d|      # t        $ r}|j                  |       Y d }~<d }~ww xY w)Nr9   msg1)r~   r   r}   r
   )r   r>   fr   r   r6  r4  s        r   level1zVNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level1x  sl     '|gs^gqs^L 'FAs'#'
 %VT22 % 'A's   3	AAAc                     g }| f| dz   f| dz   ffD ]  \  }}	  ||         d|      # t         $ r}|j                  |       Y d }~9d }~ww xY w)Nr9   r:   msg2)r   r}   )r   r>   r:  r   r   r1  r;  r4  s        r   level2zVNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level2  sp     &{VQqSMGQqS>J 'FAs'#'
 'vt44 % 'A's   /	AAAc                     g }| dz   f| dz   ffD ]  \  }}	  ||        t        d|      # t         $ r}|j                  |       Y d }~<d }~ww xY w)Nr9   r:   msg3)r   r}   r
   )r   r>   r:  r   r   r>  r4  s        r   level3zVNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level3  sj     &!}w!n= 'FAs'#'
 %VT22 % 'A's   /	AAA   r!   )rA  r;  r>  r1  r6  r4  s    @@r   nested_groupzFNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_groupw  s    353 1Ir   z
the note: r         r   r9   )r
   add_noteidr)   r   r~   r   r+  r/   r   r   r   r;   )r   rC  r   r%   r   valueErrors_templatetypeErrors_templater   r   r1  r6  r4  s            @@@r   test_split_by_typez0NestedExceptionGroupSplitTest.test_split_by_typem  s   	~ 		 		<	N A	#
1>A	#
1>1
 qM A
1.A
1.1
 qM  "+3 09S>2BCD""2~{C 00[At% ""4E 00]Ct""5.+F$00j)5LMt""5.+F$ 00Z@t""5.:NO""49LM 00i5MNt""5.:MN""49MN hh~.teR $ hh/0t""5.;q>:JK""4+a.9IJo  	JJBqE7+,B	s   K! !	L*LLc           	      `   d }	 t        d |t        d             |t        d            g      # t         $ r}|}Y d }~nd }~ww xY w| j                  |t              \  }}| j                  |       | j                  |t         t        d      t        d      g       | j                  |t        t        f      \  }}| j                  |t         t        d      t        d      g       | j                  |       | j                  |t              \  }}| j                  |t        t        d      g       | j                  |t         t        d      g       | j                  |t              \  }}| j                  |t         t        d      g       | j                  |t        t        d      g       y )Nc                 8    	 | # t         $ r}|cY d }~S d }~ww xY wr   )r   )exr   s     r   r   zHNestedExceptionGroupSplitTest.test_split_BaseExceptionGroup.<locals>.exc  s!      s    	rA   r9   r:   )r   r)   rD   r+  r   r   r   r
   )r   r   r   rA   r   r   s         r   test_split_BaseExceptionGroupz;NestedExceptionGroupSplitTest.test_split_BaseExceptionGroup  s   		$JqM*C0A!0D,EFH H! 	C	 00i@t% ""$z!}6G6J&K	M 00*/02t""%
17H7K'L	N$ 00jAt"">JqM?	4""$'8';&<	> 006GHt""%(9!(<'=	?"".:a=/	3s   ,1 	AAAc                    t        dt        d      t        d      g      }|j                  d       |j                  d       t	        |j
                        }|j                  t              \  }}| j                  |j
                  |       | j                  |j
                  |       | j                  |j
                  |       | j                  |j
                  |j
                         | j                  |j
                  |j
                         | j                  |j
                  |j
                         |j                  d       |j                  d       |j                  d       | j                  |j
                  |dgz          | j                  |j
                  |dgz          | j                  |j
                  |dgz          y )Nr%   r9   r:   note1note2r   r   )	r
   r)   r   rF  r  r  r   ro   assertIsNot)r   r%   
orig_notesr   r   s        r   test_split_copies_notesz5NestedExceptionGroupSplitTest.test_split_copies_notes  sL   D:a=)A,"?@
G
G",,'
hhy)tz2*54u7t~~6$..9
DwfzTF':;*y*@Avh)>?r   c                     t        dt        d      t        d      g      }d|_        |j	                  t              \  }}| j                  t        |d             | j                  t        |d             y )Nr%   r9   r:   {   r  )r
   r)   r   r  r   assertFalsehasattr)r   r%   r   r   s       r   +test_split_does_not_copy_non_sequence_noteszINestedExceptionGroupSplitTest.test_split_does_not_copy_non_sequence_notes  s`     D:a=)A,"?@hhy)t45{34r   c                 `    G d dt               } |dt        d      t        d      g      }d}| j                  t        |      5  |j	                  t               d d d        | j                  t        |      5  |j                  t               d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)KNestedExceptionGroupSplitTest.test_drive_invalid_return_value.<locals>.MyEgc                      y)Nr2   r!   r=   s     r   derivezRNestedExceptionGroupSplitTest.test_drive_invalid_return_value.<locals>.MyEg.derive  s    r   N)r   r   r    r^  r!   r   r   MyEgr\    s    r   r_  r%   r9   r:   z4derive must return an instance of BaseExceptionGroup)r
   r   r)   r   r   r   )r   r_  r%   rU   s       r   test_drive_invalid_return_valuez=NestedExceptionGroupSplitTest.test_drive_invalid_return_value  s    	> 	 $1z!}56D##Is3 	 HHY	 ##Is3 	#KK	"	# 	#	  	 	# 	#s   B9B$B!$B-N)r   r   r    rJ  rN  rT  rY  r`  r!   r   r   r-  r-  k  s     aKF&3P@(5
#r   r-  c                       e Zd Zd Zd Zd Zy)%NestedExceptionGroupSubclassSplitTestc                 *    G d dt               }	 	 	 t        d      # t        $ r} |d|g      d }~ww xY w# |$ r-}	 t        d      # t        $ r} |d||g      d }~ww xY wd }~ww xY w# |$ r}|}Y d }~nd }~ww xY w| j                  ||t        d      t        d      gg       | j	                  |t
              \  }}| j                  |       | j                  |t         t        d      t        d      gg       | j	                  |t        t        f      \  }}| j                  |t         t        d      t        d      gg       | j                  |       | j	                  |t              \  }}| j                  |t         t        d      g       | j                  |t         t        d      gg       | j	                  |t              \  }}| j                  |t         t        d      gg       | j                  |t         t        d      g       y )Nc                       e Zd Zy)nNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_no_derive_no_new_override.<locals>.EGNrK   r!   r   r   EGre  %  rM   r   rf  r:   rm   r9   r%   )r
   r   r)   r   r+  r   r   )	r   rf  term   ver   r%   r   r   s	            r   <test_split_ExceptionGroup_subclass_no_derive_no_new_overridezbNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_no_derive_no_new_override$  s   	 			1-#A,&  -Xt,,- 11$Q-'! 1TB<0011
  	B	 	""2rJqMIaL>+JK 00W=t% "".:a=9Q<."A	C 00j)5LMt"">JqMIaL>#B	D$ 00Z@t""5.:a=/J""49Q<.9IJ 00Y?t""5.IaL>:JK""4*Q-IsT    	6
169 A+A

	A#AA##A&&A++A. .A?3A::A?c                     G d dt               }	  |dt        d      t        d      gd      # |$ r}|}Y d }~nd }~ww xY w| j                  ||t        d      t        d      g       | j	                  |t
              \  }}| j                  |       | j                  |t         t        d      t        d      g       | j	                  |t        t        f      \  }}| j                  |t         t        d      t        d      g       | j                  |       | j	                  |t              \  }}| j                  |t        t        d      g       | j                  |t         t        d      g       | j	                  |t              \  }}| j                  |t         t        d      g       | j                  |t        t        d      g       y )Nc                        e Zd Z fdZ xZS )oNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_override.<locals>.EGc                 &    t         |   | ||      S r   )super__new__)clsr   r>   unused	__class__s       r   ro  zwNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_override.<locals>.EG.__new__P  s    
 wsGT::r   )r   r   r    ro  __classcell__)rr  s   @r   rf  rl  O  s    ; ;r   rf  r%   r9   r:   rq  )r   r)   rD   r   r+  r   r   r
   )r   rf  r   r%   r   r   s         r   =test_split_BaseExceptionGroup_subclass_no_derive_new_overridezcNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_overrideN  s   	;# 	;	TJqM+<Q+?@(KK 	B	 	""Z]$5a$89	; 00W=t% ""$z!}6G6J&K	M 00./1t""%
17H7K'L	N$ 00Z@t""5.:a=/J""$'8';&<	> 005FGt""%(9!(<'=	?""4*Q-Is   / A ;A c                     G fddt               	 	 	 t        d      # t        $ r} d|g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# $ r}|}Y d }~nd }~ww xY w| j                  |t        d      t        d      gg       | j	                  |t
              \  }}| j                  |       | j                  |t        d      t        d      gg       | j                  |j                  d       | j                  |j                  d   j                  d       | j	                  |t        t        f      \  }}| j                  |t        d      t        d      gg       | j                  |j                  d       | j                  |j                  d   j                  d       | j                  |       | j	                  |t              \  }}| j                  |t        d      g       | j                  |j                  d       | j                  |t        d      gg       | j                  |j                  d       | j                  |j                  d	   j                  d       | j	                  |t              \  }}| j                  |t        d      gg       | j                  |j                  d       | j                  |j                  d	   j                  d       | j                  |t        d      g       | j                  |j                  d       y )
Nc                   *     e Zd Z fdZfdZ xZS )mNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EGc                 8    t         |   | ||      }||_        |S r   )rn  ro  code)rp  r   r>   ry  objrr  s        r   ro  zuNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EG.__new__z  s!    goc7D9
r   c                 @     | j                   || j                        S r   )r   ry  )r   r>   rf  s     r   r^  ztNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EG.derive  s    $,,dii88r   )r   r   r    ro  r^  rs  )rr  rf  s   @r   rf  rw  y  s    
9 9r   rf  r:   rm   e   r9   r%   r2   r   )
r
   r   r)   r   r+  r   r   ro   ry  r   )	r   rg  rm   rh  r   r%   r   r   rf  s	           @r   ;test_split_ExceptionGroup_subclass_derive_and_new_overrideszaNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overridesx  s   	9 	9		52#A,&  2XtS112 55$Q-'! 5TB<4455
  	B	 	""2rJqMIaL>+JK 00W=t% ""4jmil^-LMB'+00#6 00j)5LMt""5"z!}y|n.MNR())!,1137$ 00Z@t""5"z!}o>R(""4y|n-=>B'+00#6 00Y?t""5"	!~.>?R())!,1137""4jm_=B'sU   ! 	:5:= A0A	A(A##A((A++A00A3 3B8A??BN)r   r   r    ri  rt  r}  r!   r   r   rb  rb  "  s    (JT(JT6(r   rb  __main__r   )collections.abcr   r   unittesttest.supportr   TestCaser   r#   r7   ri   r   r   r   r   r   r   r   r   r  r
  r  r-  rb  r   mainr!   r   r   <module>r     s1      *Ih&7&7 I ">** ">JFx(( FR>)h'' >)B@)-8,, )-X6X.. 629H"8 9HxH95 H9V"h&7&7 "$:)) :"0(!%; (!VB"8 BJt#$? t#nL(,G L(^ zHMMO r   