
    /hh                     V   S SK rS SKrS SKrS SKJr   " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r	 " S	 S
\R                  5      r
S r " S S\R                  5      r " S S\R                  5      r " S S5      r " S S\5      r " S S\5      r " S S\R                  5      rS%S jr " S S\R                  5      rS r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r\S$:X  a  \R4                  " 5         gg)&    N)get_c_recursion_limitc                   &    \ rS rSrS rS rS rSrg)TestExceptionGroupTypeHierarchy   c                     U R                  [        [        [        5      5        U R                  [        [        [        5      5        U R                  [        [        [
        5      5        g N)
assertTrue
issubclassExceptionGroup	ExceptionBaseExceptionGroupBaseExceptionselfs    B/opt/python-3.13.8/usr/lib/python3.13/test/test_exception_group.pytest_exception_group_types:TestExceptionGroupTypeHierarchy.test_exception_group_types   s=    
>9=>
>3EFG
#5}EF    c                 ~    U R                  [        S5         [        [             S S S 5        g ! , (       d  f       g = f)Nr   )assertRaisesRegex	TypeErrorr   OSErrorr   s    r   "test_exception_is_not_generic_typeBTestExceptionGroupTypeHierarchy.test_exception_is_not_generic_type   s&    ##I{;g <;;s   .
<c                     [         nU R                  [        U   [        R                  5        U R                  [
        U   [        R                  5        g r   )r   assertIsInstancer   typesGenericAliasr   )r   Es     r   $test_exception_group_is_generic_typeDTestExceptionGroupTypeHierarchy.test_exception_group_is_generic_type   s>    nQ/1C1CD03U5G5GHr    N)__name__
__module____qualname____firstlineno__r   r   r    __static_attributes__r"   r   r   r   r      s    G
Ir   r   c                   ,    \ rS rSrS rS rS rS rSrg)BadConstructorArgs   c                    SnU R                  [        U5         [        S5        S S S 5        U R                  [        U5         [        [        S5      /5        S S S 5        U R                  [        U5         [        S[        S5      /[        S5      /5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N`= f! , (       d  f       g = f)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_args:BadConstructorArgs.test_bad_EG_construction__too_many_args   s    I##Is3;' 4##Is3Jx012 4##Is34*U"3!4y7H6IJ 43	 433333s#   B"B37"C"
B03
C
Cc                 0   SnU R                  [        U5         [        [        S5      [	        S5      5        S S S 5        U R                  [        U5         [        S [        S5      /5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nzargument 1 must be str, not    z
bad syntax)r   r   r   r0   SyntaxErrorr1   s     r   %test_bad_EG_construction__bad_message8BadConstructorArgs.test_bad_EG_construction__bad_message    sh    ,##Is3:b>;|+DE 4##Is34*R.!12 43 4333s   A6B6
B
Bc                    SnU R                  [        U5         [        S[        S5      15        S S S 5        U R                  [        U5         [        SS 5        S S S 5        SnU R                  [        U5         [        S/ 5        S S S 5        g ! , (       d  f       Ng= f! , (       d  f       NM= f! , (       d  f       g = f)Nz1second argument \(exceptions\) must be a sequencezerrors not sequence*   r,   z;second argument \(exceptions\) must be a non-empty sequencer/   r1   s     r   +test_bad_EG_construction__bad_excs_sequence>BadConstructorArgs.test_bad_EG_construction__bad_excs_sequence'   s    B##Is30:b>2BC 4##Is34& 4 M##J44$ 54 4333 54s#   BB";B3
B"
B03
Cc                    SnU R                  [        U5         [        S[        /5        S S S 5        U R                  [        U5         [        SS/5        S S S 5        g ! , (       d  f       N;= f! , (       d  f       g = f)NzAItem [0-9]+ of second argument \(exceptions\) is not an exceptionzexpect instance, not typez	bad errorznot an exception)r   r0   r   r   r1   s     r   /test_bad_EG_construction__nested_non_exceptionsBBadConstructorArgs.test_bad_EG_construction__nested_non_exceptions2   sa    %##J46	B 5##J4;);(<= 54 5444s   A 	A1 
A.1
A?r"   N)	r#   r$   r%   r&   r3   r8   r<   r?   r'   r"   r   r   r)   r)      s    K3	%>r   r)   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)InstanceCreation;   c                     [        S5      [        S5      /nU R                  [        [	        SU5      5      [        5        g )N      r,   )r0   r   assertIstyper   r   excss     r   $test_EG_wraps_Exceptions__creates_EG5InstanceCreation.test_EG_wraps_Exceptions__creates_EG<   s2    1y|,d+,	r   c                     [        S5      [        S5      /nU R                  [        [	        SU5      5      [
        5        g )NrE   rF   beg)r0   r   rG   rH   r   r   rI   s     r   %test_BEG_wraps_Exceptions__creates_EG6InstanceCreation.test_BEG_wraps_Exceptions__creates_EGB   s3    1y|,#E401	r   c                     SnU R                  [        U5         [        S[        S5      [	        S5      /5      nS S S 5        g ! , (       d  f       g = f)Nz/Cannot nest BaseExceptions in an ExceptionGroupr,   rE   rF   )r   r   r   r0   KeyboardInterrupt)r   r2   r,   s      r   -test_EG_wraps_BaseException__raises_TypeError>InstanceCreation.test_EG_wraps_BaseException__raises_TypeErrorH   s>    >##Is3z!}6G6J&KLB 433s   !A
Ac                     [        S[        S5      [        S5      /5      nU R                  [	        U5      [         5        g )NrN   rE   rF   )r   r0   rR   rG   rH   )r   rN   s     r   )test_BEG_wraps_BaseException__creates_BEG:InstanceCreation.test_BEG_wraps_BaseException__creates_BEGM   s0     A8I!8L(MNd3i!34r   c                      " S S[         5      nU R                  [        U" S[        S5      [	        S5      /5      5      U5        g )Nc                       \ rS rSrSrg)IInstanceCreation.test_EG_subclass_wraps_non_base_exceptions.<locals>.MyEGR   r"   Nr#   r$   r%   r&   r'   r"   r   r   MyEGrZ   R       r   r]   r,   r6   r;   )r   rG   rH   r0   r   r   r]   s     r   *test_EG_subclass_wraps_non_base_exceptions;InstanceCreation.test_EG_subclass_wraps_non_base_exceptionsQ   s;    	> 	 	dZ^Yr];<=	r   c                      " S S[         5      nSnU R                  [        U5         U" S[        S5      [	        S5      /5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)MInstanceCreation.test_EG_subclass_does_not_wrap_base_exceptions.<locals>.MyEGZ   r"   Nr\   r"   r   r   r]   rd   Z   r^   r   r]   $Cannot nest BaseExceptions in 'MyEG'r,   r6   r;   )r   r   r   r0   rR   r   r]   msgs      r   .test_EG_subclass_does_not_wrap_base_exceptions?InstanceCreation.test_EG_subclass_does_not_wrap_base_exceptionsY   sJ    	> 	 5##Is3
2(9"(=>? 433s   A
Ac                      " S S[         [        5      nSnU R                  [        U5         U" S[        S5      [	        S5      /5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)TInstanceCreation.test_BEG_and_E_subclass_does_not_wrap_base_exceptions.<locals>.MyEGb   r"   Nr\   r"   r   r   r]   rm   b   r^   r   r]   rf   r,   r6   r;   )r   r0   r   r   rR   rg   s      r   5test_BEG_and_E_subclass_does_not_wrap_base_exceptionsFInstanceCreation.test_BEG_and_E_subclass_does_not_wrap_base_exceptionsa   sM    	%z 	 5##Is3
2(9"(=>? 433s   A
A"c                 d     " S S[         [        5      nU" S[        S5      [        5       /5        g )Nc                       \ rS rSrSrg)[InstanceCreation.test_EG_and_specific_subclass_can_wrap_any_nonbase_exception.<locals>.MyEGj   r"   Nr\   r"   r   r   r]   rs   j   r^   r   r]   r,   r6   )r   r0   r   r_   s     r   <test_EG_and_specific_subclass_can_wrap_any_nonbase_exceptionMInstanceCreation.test_EG_and_specific_subclass_can_wrap_any_nonbase_exceptioni   s'    	>: 	 	TJrNIK01r   c                 d     " S S[         [        5      nU" S[        S5      [        5       /5        g )Nc                       \ rS rSrSrg)\InstanceCreation.test_BEG_and_specific_subclass_can_wrap_any_nonbase_exception.<locals>.MyEGq   r"   Nr\   r"   r   r   r]   ry   q   r^   r   r]   r,   r6   )r   r0   r   r_   s     r   =test_BEG_and_specific_subclass_can_wrap_any_nonbase_exceptionNInstanceCreation.test_BEG_and_specific_subclass_can_wrap_any_nonbase_exceptionp   s(    	%z 	 	TJrNIK01r   c                      " S S[         5      nU R                  [        U" S[        S5      [	        S5      /5      5      U5        U R                  [        U" S[        S5      [        S5      /5      5      U5        g )Nc                       \ rS rSrSrg)@InstanceCreation.test_BEG_subclass_wraps_anything.<locals>.MyBEGy   r"   Nr\   r"   r   r   MyBEGr   y   r^   r   r   r,   r6   r;   )r   rG   rH   r0   r   rR   )r   r   s     r    test_BEG_subclass_wraps_anything1InstanceCreation.test_BEG_subclass_wraps_anythingx   sk    	& 	 	tjnim<=>	 	tjn.?.CDEF	r   r"   N)r#   r$   r%   r&   rK   rO   rS   rV   r`   ri   ro   ru   r{   r   r'   r"   r   r   rB   rB   ;   s7    M
5@@22	r   rB   c                   &    \ rS rSrS rS rS rSrg)StrAndReprTests   c           	      `   [        S[        S5      [        S5      /5      nU R                  [	        U5      S5        U R                  [        U5      S5        [        SU[        S5      U[        S5      /5      nU R                  [	        U5      S5        U R                  [        U5      S5        g )	NflatrE   rF   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   r0   r   assertEqualstrreprr   r,   s     r   test_ExceptionGroup#StrAndReprTests.test_ExceptionGroup   s    Z]IaL13 	R";<bC	E  r:a="il;= 	R"=>bE	Fr   c                 L   [        S[        S5      [        S5      /5      nU R                  [	        U5      S5        U R                  [        U5      S5        [        SU[        S5      U/5      nU R                  [	        U5      S5        U R                  [        U5      S5        g )	Nr   rE   rF   r   zABaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)])r   znested (3 sub-exceptions)zBaseExceptionGroup('nested', [BaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)]), ValueError(1), BaseExceptionGroup('flat', [ValueError(1), KeyboardInterrupt(2)])]))r   r0   rR   r   r   r   r   s     r   test_BaseExceptionGroup'StrAndReprTests.test_BaseExceptionGroup   s    Z]$5a$89; 	R";<b9	:
  r:a="-/ 	R"=>b?	@r   c           	      r    " S S[         5      nU" S[        S5      [        S5      /5      nU R                  [	        U5      S5        U R                  [        U5      S5        U" SU[        S5      U[        S5      /5      nU R                  [	        U5      S	5        U R                  [        U5      S
5        g )Nc                       \ rS rSrSrg)3StrAndReprTests.test_custom_exception.<locals>.MyEG   r"   Nr\   r"   r   r   r]   r      r^   r   r]   r   rE   rF   r   z+MyEG('flat', [ValueError(1), TypeError(2)])r   r   zMyEG('nested', [MyEG('flat', [ValueError(1), TypeError(2)]), ValueError(1), MyEG('flat', [ValueError(1), TypeError(2)]), TypeError(2)]))r   r0   r   r   r   r   )r   r]   r,   s      r   test_custom_exception%StrAndReprTests.test_custom_exception   s    	> 	 Z]IaL13 	R";<b#PQr:a="il;= 	R"=>b'	)r   r"   N)r#   r$   r%   r&   r   r   r   r'   r"   r   r   r   r      s    F(@,)r   r   c                  H   / n   [        S5      e! [          a  n[        S5      UeS nAff = f! [         a  nU R                  U5         S nAOS nAff = f  [        S5      e! [         a  n[	        [
        5      eS nAff = f! [         a  nU R                  U5         S nAOS nAff = f  [        S5      e! [         a  n[        S5      eS nAff = f! [         a  nU R                  U5         S nAOS nAff = f [        SU 5      e! [         a  nUs S nA$ S nAff = f)Nz#context and cause for ValueError(1)rE   zcontext for TypeErrorzcontext for ValueError(2)rF   	simple eg)MemoryErrorr0   appendr   r   intImportErrorr   )rJ   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# #
B-A<<BB 
B)B$$B).B9 9
CCCC 
C; C66C;?D 
D!DD!D!c                        \ rS rSrS rS rSrg)ExceptionGroupFields   c                 .   [        5       nU R                  UR                  S5        U R                  UR                  S   S5        U R	                  UR
                  S   [        5        U R	                  UR
                  S   R                  [        5        U R	                  UR
                  S   R                  [        5        U R	                  UR
                  S   [        5        U R                  UR
                  S   R                  5        U R	                  UR
                  S   R                  [        5        U R	                  UR
                  S   [        5        U R                  UR
                  S   R                  5        U R	                  UR
                  S   R                  [        5        [         R                  R                  nUS-   US-   US-   US-   //nU R                  UR                   R"                  US   5        U R                  UR                   R$                  5        ['        S	5       HY  nUR
                  U   R                   nU R                  UR$                  5        U R                  UR"                  US   U   5        M[     g )
Nr   r   rE   rF      r      r*      )r   r   messageargsr   
exceptionsr0   	__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_fields6ExceptionGroupFields.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                    [        S[        S5      [        S5      /5      nU R                  [	        UR
                  5      [        5        UR                    U R                  [        5         SUl        S S S 5        UR
                    U R                  [        5         [        S5      /Ul        S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Nr,   rE   rF   znew msgxyz)
r   r   r   r   rH   r   tupler   assertRaisesAttributeErrorr   s     r   test_fields_are_readonly-ExceptionGroupFields.test_fields_are_readonly  s    D9Q<"<=bmm,e4


~."BJ / 	~.$U^,BM /.	 /. /.s   +B7C7
C
Cr"   N)r#   r$   r%   r&   r   r   r'   r"   r   r   r   r      s    =:-r   r   c                       \ rS rSrS rSrg)ExceptionGroupTestBasei  c                 @   Ub  U R                  [        U5      U5        [        U[        5      (       a  U R	                  U[
        R                  R                  5        U R                  [        UR                  5      [        U5      5        [        UR                  U5       H  u  pEU R                  US U5        M     g U R	                  U[        5        U R                  [        U5      [        U5      5        U R                  UR                  UR                  5        g r   )rG   rH   
isinstancer   r   collectionsabcSequencer   lenr   zipassertMatchesTemplater   r   )r   excexc_typetemplater   ts         r   r   ,ExceptionGroupTestBase.assertMatchesTemplate  s     MM$s)X.c-..!!(KOO,D,DES0#h-@CNNH5**1dA6 6 !!(M:T#YX7SXXx}}5r   r"   N)r#   r$   r%   r&   r   r'   r"   r   r   r   r     s    6r   r   c                   &    \ rS rSrS rS rS rSrg)	Predicatei)  c                     Xl         g r   func)r   r   s     r   __init__Predicate.__init__*  s    	r   c                 $    U R                  U5      $ r   r   r   r   s     r   __call__Predicate.__call__-      yy|r   c                 $    U R                  U5      $ r   r   r   s     r   methodPredicate.method0  r   r   r   N)r#   r$   r%   r&   r   r   r   r'   r"   r   r   r   r   )  s    r   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ExceptionGroupSubgroupTestsi3  c                 t    [        5       U l        [        S5      [        [        5      [        S5      /U l        g NrE   rF   r   r,   r0   r   r   eg_templater   s    r   setUp!ExceptionGroupSubgroupTests.setUp4  '    "$&qM9S>:a=Ir   c                     " S S5      nSU[        S5      [         [        /[         S4/nU Hu  nU R                  [        5         U R                  R	                  U5        S S S 5        U R                  [        5         U R                  R                  U5        S S S 5        Mw     g ! , (       d  f       NL= f! , (       d  f       M  = f)Nc                       \ rS rSrSrg)OExceptionGroupSubgroupTests.test_basics_subgroup_split__bad_arg_type.<locals>.Ci9  r"   Nr\   r"   r   r   Cr   9  r^   r   r   zbad argzinstance not typer;   )r   r   r   r,   subgroupsplit)r   r   bad_argsargs       r   (test_basics_subgroup_split__bad_arg_typeDExceptionGroupSubgroupTests.test_basics_subgroup_split__bad_arg_type8  s    	 	 /0i(bM	 C""9-  % .""9-c" .- ----s   B'>B8'
B5	8
C	c                 <   U R                   nU R                  XR                  [        5      5        U R                  XR                  [        5      5        U R                  XR                  [
        5      5        U R                  XR                  [        5      5        g r   )r,   rG   r   r   r   r   r   r   s     r   )test_basics_subgroup_by_type__passthroughEExceptionGroupSubgroupTests.test_basics_subgroup_by_type__passthroughH  s`    WWb++m45b++i01b++&89:b++n56r   c                 `    U R                  U R                  R                  [        5      5        g r   )r   r,   r   r   r   s    r   &test_basics_subgroup_by_type__no_matchBExceptionGroupSubgroupTests.test_basics_subgroup_by_type__no_matchO  s    $''**734r   c                    U R                   n[        [        S5      [        S5      /4[        [        [        5      /4[        [        4U R                  4/nU Hk  u  p4U R                  US9   UR                  U5      nU R                  UR                  UR                  5        U R                  U[        U5        S S S 5        Mm     g ! , (       d  f       M  = f)NrE   rF   )match)r,   r0   r   r   r   subTestr   r   r   r   r   )r   r,   	testcases
match_typer   subegs         r   #test_basics_subgroup_by_type__match?ExceptionGroupSubgroupTests.test_basics_subgroup_by_type__matchR  s    WW *Q-A783())$d&6&67	9	 %. JJ/J/  

;**5.(K 0/ %.//s   ,AC
C	c                     S nU[        U5      [        U5      R                  4 H8  nU R                  U R                  U R                  R	                  U5      5        M:     g )Nc                     gNTr"   r   s    r   <lambda>\ExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__passthrough.<locals>.<lambda>a      dr   )r   r   rG   r,   r   r   fcallables      r   .test_basics_subgroup_by_predicate__passthroughJExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__passthrough`  sG    IaL)A,*=*=>HMM$''477#3#3H#=> ?r   c                     S nU[        U5      [        U5      R                  4 H-  nU R                  U R                  R	                  U5      5        M/     g )Nc                     gNFr"   r  s    r   r  YExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__no_match.<locals>.<lambda>f      er   )r   r   r   r,   r   r	  s      r   +test_basics_subgroup_by_predicate__no_matchGExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__no_matche  sC    IaL)A,*=*=>Hdgg..x89 ?r   c                   ^ U R                   n[        [        S5      [        S5      /4[        [        [        5      /4[        [        4U R                  4/nU H  u  mnU4S jnU[        U5      [        U5      R                  4 Hi  nU R                  US9   UR                  U5      nU R                  UR                  UR                  5        U R                  U[        U5        S S S 5        Mk     M     g ! , (       d  f       M  = f)NrE   rF   c                    > [        U T5      $ r   r   r   r   s    r   r  VExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__match.<locals>.<lambda>s      *Q
3r   )r  )r,   r0   r   r   r   r   r   r   r   r   r   r   r   )r   r,   r   r   r
  r  r   r   s          @r   (test_basics_subgroup_by_predicate__matchDExceptionGroupSubgroupTests.test_basics_subgroup_by_predicate__matchj  s    WW *Q-A783())$d&6&67	9	 %. J3A	!il.A.AB\\8\4KKNE$$U]]BJJ?..unhO 54 C %. 54s   AC88
Dr,   r   N)r#   r$   r%   r&   r   r   r   r   r   r  r  r  r'   r"   r   r   r   r   3  s-    J# 75L?
:
Pr   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ExceptionGroupSplitTestsi{  c                 t    [        5       U l        [        S5      [        [        5      [        S5      /U l        g r   r   r   s    r   r   ExceptionGroupSplitTests.setUp|  r   r   c                     [         [        [        [        4 HR  nU R                  R                  U5      u  p#U R                  U[        U R                  5        U R                  U5        MT     g r   )	r   r   r   r   r,   r   r   r   r   )r   r   r   rests       r   &test_basics_split_by_type__passthrough?ExceptionGroupSplitTests.test_basics_split_by_type__passthrough  sU    $n6A''--*KE&&~t'7'79d#6r   c                     U R                   R                  [        5      u  pU R                  U5        U R	                  U[
        U R                  5        g r   )r,   r   r   r   r   r   r   )r   r   r#  s      r   #test_basics_split_by_type__no_match<ExceptionGroupSplitTests.test_basics_split_by_type__no_match  s?    ggmmG,% "".$"2"2	4r   c                 j   U R                   n[        n[        nX"" S5      U" S5      /U" [        5      /4X3" [        5      /U" S5      U" S5      /4X#4U R                  S 4[
        U4U" S5      U" S5      /U" [        5      /4/nU H  u  pVnUR                  U5      u  pU R                  UR                  UR                  5        U R                  U[        U5        Ub?  U R                  U	R                  UR                  5        U R                  U	[        U5        M  U R                  U	5        M     g r   )r,   r0   r   r   r   r   r   r   r   r   r   r   )
r   r,   VETEr   r   match_templaterest_templater   r#  s
             r    test_basics_split_by_type__match9ExceptionGroupSplitTests.test_basics_split_by_type__match  s   WW "Q%A"S'+"S'RUBqEN+Xt''.r]RUBqENRWI6
	 :C5J((:.KEU]]BJJ7&&~~7(  rzz:**.-9 !!$' :Cr   c                     S nU[        U5      [        U5      R                  4 HR  nU R                  R                  U5      u  p4U R	                  U[
        U R                  5        U R                  U5        MT     g )Nc                     gr  r"   r  s    r   r  VExceptionGroupSplitTests.test_basics_split_by_predicate__passthrough.<locals>.<lambda>  r  r   )r   r   r,   r   r   r   r   r   r   r
  r  r   r#  s        r   +test_basics_split_by_predicate__passthroughDExceptionGroupSplitTests.test_basics_split_by_predicate__passthrough  s`    IaL)A,*=*=>H''--1KE&&und>N>NOd# ?r   c                     S nU[        U5      [        U5      R                  4 HR  nU R                  R                  U5      u  p4U R	                  U5        U R                  U[        U R                  5        MT     g )Nc                     gr  r"   r  s    r   r  SExceptionGroupSplitTests.test_basics_split_by_predicate__no_match.<locals>.<lambda>  r  r   )r   r   r,   r   r   r   r   r   r3  s        r   (test_basics_split_by_predicate__no_matchAExceptionGroupSplitTests.test_basics_split_by_predicate__no_match  s`    IaL)A,*=*=>H''--1KEe$&&t^T=M=MN ?r   c                 `  ^ U R                   n[        n[        nX"" S5      U" S5      /U" [        5      /4X3" [        5      /U" S5      U" S5      /4X#4U R                  S 4/nU H  u  mpVU4S jnU[        U5      [        U5      R                  4 H  nUR                  U5      u  pU R                  U	R                  UR                  5        U R                  U	[        U5        Uc  MX  U R                  U
R                  UR                  5        U R                  U
[        U5        M     M     g )NrE   rF   c                    > [        U T5      $ r   r  r  s    r   r  PExceptionGroupSplitTests.test_basics_split_by_predicate__match.<locals>.<lambda>  r  r   )r,   r0   r   r   r   r   r   r   r   r   r   r   )r   r,   r*  r+  r   r,  r-  r
  r  r   r#  r   s              @r   %test_basics_split_by_predicate__match>ExceptionGroupSplitTests.test_basics_split_by_predicate__match  s   WW "Q%A"S'+"S'RUBqEN+Xt''.	
	 :C5J3A	!il.A.AB hhx0  

;**>>; ,$$T\\2::>..nm= C :Cr   r  N)r#   r$   r%   r&   r   r$  r'  r.  r4  r9  r>  r'   r"   r   r   r  r  {  s'    J$4(0$O=r   r  c                   &    \ rS rSrS rS rS rSrg)DeepRecursionInSplitAndSubgroupi  c                 p    [        S5      n[        [        5       S-   5       H  n[        SU/5      nM     U$ )NrE   r,   )r   r   r   r   )r   r   r   s      r   make_deep_eg,DeepRecursionInSplitAndSubgroup.make_deep_eg  s6    aL,.23AtaS)A 4r   c                     U R                  5       nU R                  [        5         UR                  [        5        S S S 5        g ! , (       d  f       g = fr   )rC  r   RecursionErrorr   r   r   s     r   test_deep_split/DeepRecursionInSplitAndSubgroup.test_deep_split  s6    ~.GGI /..   A
Ac                     U R                  5       nU R                  [        5         UR                  [        5        S S S 5        g ! , (       d  f       g = fr   )rC  r   rF  r   r   r   s     r   test_deep_subgroup2DeepRecursionInSplitAndSubgroup.test_deep_subgroup  s6    ~.JJy! /..rI  r"   N)r#   r$   r%   r&   rC  rG  rK  r'   r"   r   r   rA  rA    s    
"r   rA  c              #      #    Uc  / nUR                  U R                  5        [        U [        5      (       a'  U R                   H  n[        X!5       S h  vN   M     OX4v   UR                  5         g  N7fr   )r   r   r   r   r   leaf_generatorpop)r   tbsr   s      r   rN  rN    sb     
{JJs  !#)**A%a---   hGGI .s   AA7A5 A7c                       \ rS rSrS rSrg)LeafGeneratorTesti  c                    [        5       nU R                  [        U5       VVs/ s H  u  p#UPM	     snnUR                  5        [        U5       H,  u  p$U R                  XAR                  UR                  /5        M.     g s  snnf r   )r   assertSequenceEqualrN  r   r   )r   r,   r   _rP  s        r   test_leaf_generator%LeafGeneratorTest.test_leaf_generator  sr      )"-.-41Q-.MM	 %R(FA$$&&8: ) /s   B
r"   N)r#   r$   r%   r&   rV  r'   r"   r   r   rR  rR    s    
	:r   rR  c                     / n   [        [        5      e! [          a  n[        SU/5      eS nAff = f! [         a  nU R                  U5         S nAOS nAff = f  [	        S5      e! [         a  n[        S5      UeS nAff = f! [
         a  nU R                  U5         S nAOS nAff = f [        SU 5      e! [         a  nUs S nA$ S nAff = f)Nr   zout of memoryrE   root)r   bytesr   r   r   r0   )rJ   r   r,   s      r   create_nested_egr[    s    D	0E"" 	0 A3//	0 A	'o.. 	'Q-Q&	' AVT** 	sr    
0+03 
AAAA( (
B2A>>BB 
B+B&&B+/B; ;
CCCCc                   ,    \ rS rSrS rS rS rS rSrg)NestedExceptionGroupBasicsTesti  c                 x    [        5       nU R                  U[        [        [        5      /[        S5      /5        g )NrE   )r[  r   r   r   rZ  r0   r   s     r   "test_nested_group_matches_templateANestedExceptionGroupBasicsTest.test_nested_group_matches_template  s2    ""A/	1r   c                 &   [        5       nU R                  UR                  S   R                  [        5        U R                  UR                  S   R
                  [        5        U R                  UR                  S   R                  [        5        g )NrE   r   )r[  r   r   r   r   r   r   r   s     r   test_nested_group_chaining9NestedExceptionGroupBasicsTest.test_nested_group_chaining  sg    bmmA.::KHbmmA.88+FbmmA.::IFr   c                    [        5       n[         R                  R                  nUR                  US-   4UR                  S   R                  US-   4UR                  S   R                  US-   4UR                  S   R                  S   R                  US-   44 H<  u  p4U R                  UR                  U5        U R                  UR                  5        M>     g )N   r   r   rE   r      )	r[  r   r   r   r   r   r   r   r   )r   r,   r   r   expecteds        r   &test_nested_exception_group_tracebacksENestedExceptionGroupBasicsTest.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           	      |   [        5       nU R                  [        [        [	        U5      5      5      S5        [         R
                  R                  nUS-   US-   US-   /US-   US-   //n[        [	        U5      5       H6  u  nu  pVU R                  U Vs/ s H  owR                  PM     snX4   5        M8     g s  snf )NrF   re  r   rf  r   )
r[  r   r   listrN  r   r   	enumeraterT  r   )r   r,   r   expected_tbsr   rU  rP  r   s           r   test_iteration_full_tracebacks=NestedExceptionGroupBasicsTest.test_iteration_full_tracebacks1  s     	T."456: ))88"*eai;"*ebj13 '~b'9:MQ$$(+,",! ;,s   B9
r"   N)	r#   r$   r%   r&   r_  rb  rh  rn  r'   r"   r   r   r]  r]    s    1G*!r   r]  c                       \ rS rSrS rSrg)ExceptionGroupSplitTestBaseiA  c                 J   U R                  U[        5        UR                  U5      u  p4UR                  U5      nUb  U R                  U[        5        [	        U5       H  u  pgU R                  Xb5        M     U R                  U5        U R                  U[        5        [	        U5       H  u  pgU R                  Xb5        M     Ub  U R                  U[        5        S nU R                  U" U5      U" U5      5        U" U5      n	U" U5      n
U R                  [        U" U5      5      [        U" U5      5      [        U" U5      5      -   5        U" U5       H+  nU R                  U=(       a    Xi;   U=(       a    Xj;   5        M-     X4U4 H  nUc  M  U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  [        USS 5      [        USS 5      5        M     S nS nX4U4 H<  nU" U5       H-  nU R                  U" U" Xa5      5      U" U" Xk5      5      5        M/     M>     X44$ )Nc                 X    U c  / $ [        U 5       VVs/ s H  u  pUPM	     snn$ s  snnf r   rN  )r   r   rU  s      r   leavesAExceptionGroupSplitTestBase.split_exception_group.<locals>.leavesW  s,    2Ls8K*L8K18K*LL*Ls   &	__notes__c                 <    [        U5       H  u  p#X L d  M  Us  $    g r   rt  )leafr,   r   rP  s       r   tbs_for_leafGExceptionGroupSplitTestBase.split_exception_group.<locals>.tbs_for_leaft  s    (,9J -r   c                 V    U  Vs/ s H  o(       d  M  UR                   PM     sn$ s  snf r   )r   )rP  r   s     r   r   EExceptionGroupSplitTestBase.split_exception_group.<locals>.tb_linenosy  s"    +.53R"LBLL3555s   
&&)r   r   r   r   rN  assertIsNotNonerT  r   r   assertNotEqualr   rG   r   r   r   getattr)r   r,   r   r   r#  sgr   rU  ru  match_leavesrest_leavespartrz  r   s                 r   split_exception_group1ExceptionGroupSplitTestBase.split_exception_groupC  sP   b"45hhuo[[!!%);<%e,%%a/ -   $!!"&89%b)%%a/ * !!$(:;	M 	  r
;e}Tlr
OuVD\!22	4 A+!+))+  "%D  T\\:bllDNN;bnnd.>.>?b..0B0BC  BT2D+t46 &	
	6 "%DD\((|A23|A457 " & {r   r"   N)r#   r$   r%   r&   r  r'   r"   r   r   rq  rq  A  s    @r   rq  c                   2    \ rS rSrS rS rS rS rS rSr	g)	NestedExceptionGroupSplitTesti  c                 "  ^	^
^  " S S[         5      m	S mS m
U	U
U4S jn U" 5         [        S5      [	        [
        5      [        S5      /[        S5      [	        [
        5      [        S	5      /[        S	5      /[        S5      /n[        S5      [        S5      /[        S5      [        S	5      /[        S	5      /[        S5      /n[	        [
        5      /[	        [
        5      ///nU R                  W[         U5        U R                  U[        5      u  pxU R                  U5        U R                  U[         U5        U R                  U[        5      u  pxU R                  U[         U5        U R                  U5        U R                  U[        [        45      u  pxU R                  U[         U5        U R                  U5        U R                  U[        5      u  pxU R                  U[         U5        U R                  U[         U5        U R                  U[        [        45      u  pxU R                  U[         U5        U R                  U[         U5        UR                  [         5      u  pxU R                  Xs5        U R                  U5        UR                  T	5      u  pxU R                  U[         US
   /5        U R                  U[         US   /5        g ! [          a*  nUR                  S[        U5       35        Un S nAGNS nAff = f)Nc                       \ rS rSrSrg)JNestedExceptionGroupSplitTest.test_split_by_type.<locals>.MyExceptionGroupi  r"   Nr\   r"   r   r   MyExceptionGroupr    r^   r   r  c                     [        U 5      er   )r0   )vs    r   raiseVEANestedExceptionGroupSplitTest.test_split_by_type.<locals>.raiseVE  s    Q-r   c                     [        U 5      er   )r   )r   s    r   raiseTEANestedExceptionGroupSplitTest.test_split_by_type.<locals>.raiseTE  s    A,r   c                  F   >^^ UU4S jmUUU4S jmUU4S jn U " S5        g )Nc                    > / nTU 4T[         4TU S-   44 H  u  p# U" U5        M     [        SU5      e! [         a  nUR                  U5         S nAM?  S nAff = f)NrE   msg1)r   r   r   r   )r   rJ   r
  r   r   r  r  s        r   level1VNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level1  sf     '|gs^gqs^LFA'# M
 %VT22 % 'A's   4
AAAc                    > / nTU 4TU S-   4TU S-   44 H  u  p# U" U5        M     T" SU5      e! [          a  nUR                  U5         S nAM<  S nAff = f)NrE   rF   msg2)r   r   )r   rJ   r
  r   r   r  r  r  s        r   level2VNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level2  sj     &{VQqSMGQqS>JFA'# K
 'vt44 % 'A's   0
AAAc                    > / nTU S-   4TU S-   44 H  u  p# U" U5        M     [        SU5      e! [          a  nUR                  U5         S nAM?  S nAff = f)NrE   rF   msg3)r   r   r   )r   rJ   r
  r   r   r  r  s        r   level3VNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group.<locals>.level3  sc     &!}w!n=FA'# >
 %VT22 % 'A's   0
AAA   r"   )r  r  r  r  r  r  s    @@r   nested_groupFNestedExceptionGroupSplitTest.test_split_by_type.<locals>.nested_group  s    353 1Ir   z
the note: r         r   rE   )r   add_noteidr0   r   r   r   r  r7   r   r   r   rG   )r   r  r   r,   r   valueErrors_templatetypeErrors_templater   r#  r  r  r  s            @@@r   test_split_by_type0NestedExceptionGroupSplitTest.test_split_by_type  s   	~ 		 		<	N A	#
1>A	#
1>1
 qM A
1.A
1.1
 qM  "+3 09S>2BCD""2~{C 00[A% ""4E 00]C""5.+F$00j)5LM""5.+F$ 00Z@""5.:NO""49LM 00i5MN""5.:MN""49MN hh~.e $ hh/0""5.;q>:JK""4+a.9IJo  	JJBqE7+,B	s   K 
L$L		Lc           	      Z   S n [        SU" [        S5      5      U" [        S5      5      /5      e! [          a  nUn S nAOS nAff = fU R                  U[        5      u  pEU R                  U5        U R                  U[         [        S5      [        S5      /5        U R                  U[        [        45      u  pEU R                  U[         [        S5      [        S5      /5        U R                  U5        U R                  U[        5      u  pEU R                  U[        [        S5      /5        U R                  U[         [        S5      /5        U R                  U[        5      u  pEU R                  U[         [        S5      /5        U R                  U[        [        S5      /5        g )Nc                 :     U e! [          a  nUs S nA$ S nAff = fr   )r   )exr   s     r   r   HNestedExceptionGroupSplitTest.test_split_BaseExceptionGroup.<locals>.exc  s!      s    
rN   rE   rF   )r   r0   rR   r  r   r   r   r   )r   r   r   rN   r   r#  s         r   test_split_BaseExceptionGroup;NestedExceptionGroupSplitTest.test_split_BaseExceptionGroup  s   		$JqM*C0A!0D,EFH H! 	C	 00i@% ""$z!}6G6J&K	M 00*/02""%
17H7K'L	N$ 00jA"">JqM?	4""$'8';&<	> 006GH""%(9!(<'=	?"".:a=/	3s   ,1 
AAAc                    [        S[        S5      [        S5      /5      nUR                  S5        UR                  S5        [	        UR
                  5      nUR                  [        5      u  p4U R                  UR
                  U5        U R                  UR
                  U5        U R                  UR
                  U5        U R                  UR
                  UR
                  5        U R                  UR
                  UR
                  5        U R                  UR
                  UR
                  5        UR                  S5        UR                  S5        UR                  S5        U R                  UR
                  US/-   5        U R                  UR
                  US/-   5        U R                  UR
                  US/-   5        g )Nr,   rE   rF   note1note2r   r#  )	r   r0   r   r  rk  rw  r   r   assertIsNot)r   r,   
orig_notesr   r#  s        r   test_split_copies_notes5NestedExceptionGroupSplitTest.test_split_copies_notes  sJ   D:a=)A,"?@
G
G",,'
hhy)z2*54u7t~~6$..9
DwfzTF':;*y*@Avh)>?r   c                     [        S[        S5      [        S5      /5      nSUl        UR	                  [        5      u  p#U R                  [        US5      5        U R                  [        US5      5        g )Nr,   rE   rF   {   rw  )r   r0   r   rw  r   assertFalsehasattr)r   r,   r   r#  s       r   +test_split_does_not_copy_non_sequence_notesINestedExceptionGroupSplitTest.test_split_does_not_copy_non_sequence_notes'  s^     D:a=)A,"?@hhy)45{34r   c                 t    " S S[         5      nU" S[        S5      [        S5      /5      nSnU R                  [        U5         UR	                  [        5        S S S 5        U R                  [        U5         UR                  [        5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)KNestedExceptionGroupSplitTest.test_drive_invalid_return_value.<locals>.MyEgi1  c                     g)Nr;   r"   rI   s     r   deriveRNestedExceptionGroupSplitTest.test_drive_invalid_return_value.<locals>.MyEg.derive2  s    r   r"   N)r#   r$   r%   r&   r  r'   r"   r   r   MyEgr  1  s    r   r  r,   rE   rF   z4derive must return an instance of BaseExceptionGroup)r   r   r0   r   r   r   )r   r  r,   rh   s       r   test_drive_invalid_return_value=NestedExceptionGroupSplitTest.test_drive_invalid_return_value0  s    	> 	 $1z!}56D##Is3HHY 4##Is3KK	" 43 4333s   B9B)
B&)
B7r"   N)
r#   r$   r%   r&   r  r  r  r  r  r'   r"   r   r   r  r    s     aKF&3P@(5
#r   r  c                   &    \ rS rSrS rS rS rSrg)%NestedExceptionGroupSubclassSplitTesti=  c                 &    " S S[         5      n   [        S5      e! [         a  nU" SU/5      eS nAff = f! U a-  n [        S5      e! [         a  nU" SXC/5      eS nAff = fS nAff = f! U a  nUn S nAOS nAff = fU R                  Xa[        S5      [        S5      //5        U R	                  U[
        5      u  pxU R                  U5        U R                  U[         [        S5      [        S5      //5        U R	                  U[        [        45      u  pxU R                  U[         [        S5      [        S5      //5        U R                  U5        U R	                  U[        5      u  pxU R                  U[         [        S5      /5        U R                  U[         [        S5      //5        U R	                  U[        5      u  pxU R                  U[         [        S5      //5        U R                  U[         [        S5      /5        g )Nc                       \ rS rSrSrg)nNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_no_derive_no_new_override.<locals>.EGi@  r"   Nr\   r"   r   r   EGr  @  r^   r   r  rF   r   rE   r,   )r   r   r0   r   r  r   r   )	r   r  ter   ver   r,   r   r#  s	            r   <test_split_ExceptionGroup_subclass_no_derive_no_new_overridebNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_no_derive_no_new_override?  s   	 			1-#A,&  -Xt,,- 11$Q-'! 1TB<0011
  	B	 	""2JqMIaL>+JK 00W=% "".:a=9Q<."A	C 00j)5LM"">JqMIaL>#B	D$ 00Z@""5.:a=/J""49Q<.9IJ 00Y?""5.IaL>:JK""4*Q-IsU    
7
27: A-A
A%
A  A%%A((A--A0 0B6A==Bc                     " S S[         5      n U" S[        S5      [        S5      /S5      e! U a  nUn S nAOS nAff = fU R                  X1[        S5      [        S5      /5        U R	                  U[
        5      u  pEU R                  U5        U R                  U[         [        S5      [        S5      /5        U R	                  U[        [        45      u  pEU R                  U[         [        S5      [        S5      /5        U R                  U5        U R	                  U[        5      u  pEU R                  U[        [        S5      /5        U R                  U[         [        S5      /5        U R	                  U[        5      u  pEU R                  U[         [        S5      /5        U R                  U[        [        S5      /5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )oNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_override.<locals>.EGij  c                 $   > [         TU ]  XU5      $ r   )super__new__)clsr   rJ   unused	__class__s       r   r  wNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_override.<locals>.EG.__new__k  s    
 wsT::r   r"   )r#   r$   r%   r&   r  r'   __classcell__)r  s   @r   r  r  j  s    ; ;r   r  r,   rE   rF   r  )r   r0   rR   r   r  r   r   r   )r   r  r   r,   r   r#  s         r   =test_split_BaseExceptionGroup_subclass_no_derive_new_overridecNestedExceptionGroupSubclassSplitTest.test_split_BaseExceptionGroup_subclass_no_derive_new_overridei  s   	;# 	;	TJqM+<Q+?@(KK 	B	 	""Z]$5a$89	; 00W=% ""$z!}6G6J&K	M 00./1""%
17H7K'L	N$ 00Z@""5.:a=/J""$'8';&<	> 005FG""%(9!(<'=	?""4*Q-Is   / A<Ac                   ^  " U4S jS[         5      m   [        S5      e! [         a  nT" SU/S5      eS nAff = f! T a.  n [        S5      e! [         a  nT" SX2/S5      eS nAff = fS nAff = f! T a  nUn S nAOS nAff = fU R                  UT[        S5      [        S5      //5        U R	                  U[
        5      u  pgU R                  U5        U R                  UT[        S5      [        S5      //5        U R                  UR                  S5        U R                  UR                  S   R                  S5        U R	                  U[        [        45      u  pgU R                  UT[        S5      [        S5      //5        U R                  UR                  S5        U R                  UR                  S   R                  S5        U R                  U5        U R	                  U[        5      u  pgU R                  UT[        S5      /5        U R                  UR                  S5        U R                  UT[        S5      //5        U R                  UR                  S5        U R                  UR                  S	   R                  S5        U R	                  U[        5      u  pgU R                  UT[        S5      //5        U R                  UR                  S5        U R                  UR                  S	   R                  S5        U R                  UT[        S5      /5        U R                  UR                  S5        g )
Nc                   6   >^  \ rS rSrU 4S jrU4S jrSrU =r$ )mNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EGi  c                 4   > [         TU ]  XU5      nX4l        U$ r   )r  r  code)r  r   rJ   r  objr  s        r   r  uNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EG.__new__  s    gocD9
r   c                 >   > T" U R                   XR                  5      $ r   )r   r  )r   rJ   r  s     r   r  tNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides.<locals>.EG.derive  s    $,,ii88r   r"   )r#   r$   r%   r&   r  r  r'   r  )r  r  s   @r   r  r    s    
9 9r   r  rF   r   e   rE   r,   r;   r   )
r   r   r0   r   r  r   r   r   r  r   )	r   r  r   r  r   r,   r   r#  r  s	           @r   ;test_split_ExceptionGroup_subclass_derive_and_new_overridesaNestedExceptionGroupSubclassSplitTest.test_split_ExceptionGroup_subclass_derive_and_new_overrides  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=% ""4jmil^-LMB'+00#6 00j)5LM""5"z!}y|n.MNR())!,1137$ 00Z@""5"z!}o>R(""4y|n-=>B'+00#6 00Y?""5"	!~.>?R())!,1137""4jm_=B'sU   " 
<7<? A3A
A+A&&A++A..A33A6 6B<BBr"   N)r#   r$   r%   r&   r  r  r  r'   r"   r   r   r  r  =  s    (JT(JT6(r   r  __main__r   )collections.abcr   r   unittesttest.supportr   TestCaser   r)   rB   r   r   r   r   r   r   r  rA  rN  rR  r[  r]  rq  r  r  r#   mainr"   r   r   <module>r     s;      .Ih&7&7 I ">** ">JFx(( FR>)h'' >)B@)-8,, )-X6X.. 60 EP"8 EPPN=5 N=b"h&7&7 "$:)) :"0(!%; (!VB"8 BJt#$? t#nL(,G L(^ zMMO r   