
    z%iU                         d dl Z d dlZd dlZd dl mZ d dlZd Z G d de      Z G d de      Z	d Z
 G d	 d
ej                        Zedk(  r ej                          yy)    N)
taskgroupsc                  .    t        j                  d        y N)asyncioset_event_loop_policy     U/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_asyncio/test_taskgroups.pytearDownModuler      s    !!$'r	   c                       e Zd Zy)MyExcN__name__
__module____qualname__r   r	   r
   r   r          r	   r   c                       e Zd Zy)	MyBaseExcNr   r   r	   r
   r   r      r   r	   r   c                 R    | j                   D ch c]  }t        |       c}S c c}w r   )
exceptionstype)egexcs     r
   get_error_typesr      s    !#/#DI///s   $c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!y )!TestTaskGroupc                 |  K   d }d }t        j                         4 d {   }|j                   |             }|j                   |             }d d d       d {    | j                  j	                         d       | j                  j	                         d       y 7 7 G# 1 d {  7  sw Y   WxY ww)Nc                  J   K   t        j                  d       d {    y7 wN皙?*   r   sleepr   r	   r
   foo1z-TestTaskGroup.test_taskgroup_01.<locals>.foo1!         --$$$ %   #!#c                  J   K   t        j                  d       d {    y7 wN皙?   r"   r   r	   r
   foo2z-TestTaskGroup.test_taskgroup_01.<locals>.foo2%   r%   r&   r!   r*   )r   	TaskGroupcreate_taskassertEqualresultselfr$   r+   gt1t2s         r
   test_taskgroup_01zTestTaskGroup.test_taskgroup_01   s     		 '') 	' 	'Qtv&Btv&B	' 	' 	b)b)	' 	' 	' 	' 	'sE   B<B#B<-B'B<B%AB<%B<'B9-B0.B95B<c                   K   d }d }t        j                         4 d {   }|j                   |             }t        j                  d       d {    |j                   |             }d d d       d {    | j                  j                         d       | j                  j                         d       y 7 7 m7 I# 1 d {  7  sw Y   YxY ww)Nc                  J   K   t        j                  d       d {    y7 wr   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_02.<locals>.foo12   r%   r&   c                  J   K   t        j                  d       d {    y7 wr(   r"   r   r	   r
   r+   z-TestTaskGroup.test_taskgroup_02.<locals>.foo26   r%   r&   333333?r!   r*   )r   r,   r-   r   r#   r.   r/   r0   s         r
   test_taskgroup_02zTestTaskGroup.test_taskgroup_020   s     		 '') 	' 	'Qtv&B--%%%tv&B	' 	'
 	b)b)	'%	' 	' 	' 	'sW   CC C/CCC/C:C;ACCCCCCCc                   K   d }d }t        j                         4 d {   }|j                   |             }t        j                  d       d {    |j                          |j                   |             }d d d       d {    | j                  j                                | j                  j                         d       y 7 7 |7 H# 1 d {  7  sw Y   XxY ww)Nc                  J   K   t        j                  d       d {    y7 wN   r!   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_03.<locals>.foo1D         --""" #r&   c                  J   K   t        j                  d       d {    y7 wr(   r"   r   r	   r
   r+   z-TestTaskGroup.test_taskgroup_03.<locals>.foo2H   r%   r&   r9   r*   )
r   r,   r-   r   r#   cancel
assertTrue	cancelledr.   r/   r0   s         r
   test_taskgroup_03zTestTaskGroup.test_taskgroup_03B   s     		 '') 	' 	'Qtv&B--%%% IIKtv&B	' 	' 	'b)	'%	' 	' 	' 	'sW   C*CC*/CC*C?C*
CAC*CC*C'CC'#C*c                   K   ddd d fdfd}| j                  t              5 }t        j                   |              d {    d d d        | j	                  t        j                        t        h       | j	                  d       | j                         | j                  j                                y 7 y# 1 sw Y   xxY ww)Nr   Fc                  T   K   t        j                  d       d {    ddz   y 7 
wNr    r>   r   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_04.<locals>.foo1^   $     --$$$E %   (&(c                     K   	 t        j                  d       d {     dz   y 7 
# t         j                  $ r d w xY ww)Nr>   Tr   r#   CancelledErrorNUM	t2_cancels   r
   r+   z-TestTaskGroup.test_taskgroup_04.<locals>.foo2b   J     mmA&&& 1HC	 '))  	%   A* (* A* AAc                     K   t        j                         4 d {   } | j                                 | j                                d d d       d {    dz  y 7 F7 # 1 d {  7  sw Y   xY wwN
   r   r,   r-   )r2   rN   r$   r+   r4   s    r
   runnerz/TestTaskGroup.test_taskgroup_04.<locals>.runnerk   so      "++- + +df%]]46*+ + 2IC	+ + + + +sD   A<A#A<-A'A<A%A<%A<'A9-A0.A95A<)
assertRaisesExceptionGroupr   r-   r.   r   	exceptionZeroDivisionErrorrB   rC   )r1   rV   cmrN   r$   r+   r4   rO   s      @@@@@r
   test_taskgroup_04zTestTaskGroup.test_taskgroup_04X   s     				 ~. 	0"%%fh///	0 	69J8KLa 	"' 0	0 	0s/   -CCCCA5CCCCc                   K   dddd fdfd}| j                  t              5 }t        j                   |              d {    d d d        | j	                  t        j                        t        h       | j	                  d       | j                         | j                         y 7 k# 1 sw Y   jxY ww)Nr   Fc                  T   K   t        j                  d       d {    ddz   y 7 
wrG   r"   r   r	   r
   r$   z?TestTaskGroup.test_cancel_children_on_child_error.<locals>.foo1   rH   rI   c                     K   	 t        j                  d       d {     dz   y 7 
# t         j                  $ r d w xY ww)N   Tr>   rK   rM   s   r
   r+   z?TestTaskGroup.test_cancel_children_on_child_error.<locals>.foo2   rP   rQ   c                    K   t        j                         4 d {   } | j                                 | j                                 | j                                 | j                                 	 t        j                  d       d {    d d d       d {    dz  y 7 7 # t        j
                  $ r d w xY w7 (# 1 d {  7  sw Y   8xY ww)NrT   Tr   r,   r-   r   r#   rL   )r2   rN   r$   r+   runner_cancels    r
   rV   zATestTaskGroup.test_cancel_children_on_child_error.<locals>.runner   s      "++- 	 	df%df%df%df%!--+++	 	 2IC	 ,-- $(M	 	 	 	si   C"B-C"AC:B1B/B1C""C#C"/B11CCC"CCCC")	rW   rX   r   r-   r.   r   rY   rZ   rB   )r1   rV   r[   rN   r$   r+   rc   rO   s      @@@@@r
   #test_cancel_children_on_child_errorz1TestTaskGroup.test_cancel_children_on_child_error}   s      				$ ~. 	0"%%fh///	0 	69J8KLa 	"& 0	0 	0s/   -CC B>C A'C>C  C	Cc                   K   dfdfd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t         j                        5 }| d {    d d d        | j                  d       y 7 x7 !# 1 sw Y    xY ww)Nr   c                     K   	 t        j                  d       d {    y 7 # t         j                  $ r  dz    w xY wwNr`   r>   rK   rN   s   r
   fooz,TestTaskGroup.test_cancellation.<locals>.foo   >     mmA&&&)) q#   A% #% A% ?Ac                     K   t        j                         4 d {   } t        d      D ]  }| j                                  d d d       d {    y 7 ;7 # 1 d {  7  sw Y   y xY ww)Nr`   )r   r,   ranger-   r2   _ri   s     r
   rV   z/TestTaskGroup.test_cancellation.<locals>.runner   se     !++- ) )q )AMM#%()) ) ) ) ) ) )sD   A1AA1'AA1AA1A1A."A%#A.*A1r    r`   	r   r-   r#   assertFalsedonerA   rW   rL   r.   )r1   rV   rr[   rN   ri   s       @@r
   test_cancellationzTestTaskGroup.test_cancellation   s     		)
 )mmC   "	
w556 	"GG	 	a  	!
 	 	s<   ?CB<ACC B>C !C>C  C	Cc                   K   dfdfd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t         j                        5  | d {    d d d        | j                  d       y 7 x7 !# 1 sw Y    xY ww)Nr   c                     K   	 t        j                  d       d {    y 7 # t         j                  $ r  dz    w xY wwrg   rK   rh   s   r
   ri   z,TestTaskGroup.test_taskgroup_07.<locals>.foo   rj   rk   c                  `  K   t        j                         4 d {   } t        d      D ]  }| j                                  	 t	        j
                  d       d {    d d d       d {    y 7 Y7 # t        j                  $ r dz   w xY w7 &# 1 d {  7  sw Y   y xY wwNr`   rT   )r   r,   rm   r-   r   r#   rL   )r2   ro   rN   ri   s     r
   rV   z/TestTaskGroup.test_taskgroup_07.<locals>.runner   s     !++-  q )AMM#%()!--+++  
 ,-- 2IC   sh   B.A6B.'BA: A8!A:%B.0B1B.8A::BBB.B+B" B+'B.r       rp   )r1   rV   rs   rN   ri   s      @@r
   test_taskgroup_07zTestTaskGroup.test_taskgroup_07   s     	
	 )mmC   "	
w556 	GG	 	b! 	!
 	 	s=   A CB=ACCB?C"C?CC
Cc                   K   d fd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t              5 }| d {    d d d        | j                  t        j                        t        h       y 7 7 9# 1 sw Y   8xY ww)Nc                  j   K   	 t        j                  d       d {    ddz   y 7 
# ddz   w xY wwNrT   r>   r   r"   r   r	   r
   ri   z,TestTaskGroup.test_taskgroup_08.<locals>.foo   1     mmB'''A (A    3) ') 3) 03c                  $  K   t        j                         4 d {   } t        d      D ]  }| j                                  t	        j
                  d       d {    d d d       d {    y 7 X7 7 	# 1 d {  7  sw Y   y xY wwrx   r   r,   rm   r-   r   r#   rn   s     r
   rV   z/TestTaskGroup.test_taskgroup_08.<locals>.runner   s     !++- ( (q )AMM#%() mmB'''	( ( ( (	( ( ( (sV   BA5B?A;A7 A;$B/A90B7A;9B;BBB	Br    r   r-   r#   rq   rr   rA   rW   rX   r.   r   rY   rZ   r1   rV   rs   r[   ri   s       @r
   test_taskgroup_08zTestTaskGroup.test_taskgroup_08   s     		( )mmC   "	
~. 	"GG	69J8KL 	!
 	 	:   ;CCACC	CC	4CC		CCc                 f  K   d xd d fd}	  |        d {    | j                  d       | j                  j                                | j                  j                                y 7 T# t        $ r*}| j                  t        |      t        h       Y d }~od }~ww xY ww)Nc                  J   K   t        j                  d       d {    y7 wr=   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_09.<locals>.foo1  r?   r&   c                  J   K   t        j                  d       d {    y7 wN   r*   r"   r   r	   r
   r+   z-TestTaskGroup.test_taskgroup_09.<locals>.foo2	  r?   r&   c                  :  K   t        j                         4 d {   } | j                                | j                                t        j                  d       d {    ddz   d d d       d {    y 7 c7 7 	# 1 d {  7  sw Y   y xY wwrG   )r   r,   r-   r   r#   r2   r$   r+   r3   r4   s    r
   rV   z/TestTaskGroup.test_taskgroup_09.<locals>.runner  s     !++-  ]]46*]]46*mmC(((A	   )   sW   BB BAB%B&	B/B:B;BBBBBBBExceptionGroup was not raisedfailrX   r.   r   rZ   rB   rC   r1   rV   tr$   r+   r3   r4   s      @@@@r
   test_taskgroup_09zTestTaskGroup.test_taskgroup_09  s     R				7(NN II56''  	F_Q/2C1DEE	F>   B1
A; A9A; AB19A; ;	B. B)$B1)B..B1c                 f  K   d xd d fd}	  |        d {    | j                  d       | j                  j                                | j                  j                                y 7 T# t        $ r*}| j                  t        |      t        h       Y d }~od }~ww xY ww)Nc                  J   K   t        j                  d       d {    y7 wr=   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_10.<locals>.foo1#  r?   r&   c                  J   K   t        j                  d       d {    y7 wr   r"   r   r	   r
   r+   z-TestTaskGroup.test_taskgroup_10.<locals>.foo2'  r?   r&   c                     K   t        j                         4 d {   } | j                                | j                                ddz   d d d       d {    y 7 F7 # 1 d {  7  sw Y   y xY ww)Nr>   r   rU   r   s    r
   rV   z/TestTaskGroup.test_taskgroup_10.<locals>.runner+  sk     !++-  ]]46*]]46*A      sD   A<A#A<2A'A<A%A<%A<'A9-A0.A95A<r   r   r   s      @@@@r
   test_taskgroup_10zTestTaskGroup.test_taskgroup_10  s     R				7(NN II56''  	F_Q/2C1DEE	Fr   c                   K   d fd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t              5 }| d {    d d d        | j                  t        j                        t        h       | j                  t        |j                  j                  d         t        h       y 7 7 p# 1 sw Y   oxY ww)Nc                  j   K   	 t        j                  d       d {    ddz   y 7 
# ddz   w xY wwr}   r"   r   r	   r
   ri   z,TestTaskGroup.test_taskgroup_11.<locals>.foo>  r~   r   c                    K   t        j                         4 d {    t        j                         4 d {   } t        d      D ]  }| j                                  t	        j
                  d       d {    d d d       d {    d d d       d {    y 7 7 j7 )7 # 1 d {  7  sw Y   +xY w7 "# 1 d {  7  sw Y   y xY wwrx   r   )g2ro   ri   s     r
   rV   z/TestTaskGroup.test_taskgroup_11.<locals>.runnerD  s     !++- , ,%//1 , ,R"1X .su-. "--+++	, ,, , ,, ,	, , , ,, , , ,s   CB"CCB$C?B*<B&=B*CB(CCB?C$C&B*(C*B<	0B31B<	8C?CCC
CCr    r   r   r-   r#   rq   rr   rA   rW   rX   r.   r   rY   r   rZ   r   s       @r
   test_taskgroup_11zTestTaskGroup.test_taskgroup_11<  s     		, )mmC   "	
~. 	"GG	 	68HI)@)@)CDGXFYZ 	!
 	 	;   ;DC<ADD C>D A+D>D  D	Dc                   K   d fd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t              5 }| d {    d d d        | j                  t        j                        t        h       | j                  t        |j                  j                  d         t        h       y 7 7 p# 1 sw Y   oxY ww)Nc                  j   K   	 t        j                  d       d {    ddz   y 7 
# ddz   w xY wwr}   r"   r   r	   r
   ri   z,TestTaskGroup.test_taskgroup_12.<locals>.fooY  r~   r   c                    K   t        j                         4 d {   } | j                  t        j                  d             t        j                         4 d {   }t        d      D ]  }|j                                  t        j                  d       d {    d d d       d {    d d d       d {    y 7 7 j7 )7 # 1 d {  7  sw Y   +xY w7 "# 1 d {  7  sw Y   y xY ww)NrT   r`   )r   r,   r-   r   r#   rm   )g1r   ro   ri   s      r
   rV   z/TestTaskGroup.test_taskgroup_12.<locals>.runner_  s     !++- , ,w}}R01%//1 , ,R"1X .su-. "--+++	, ,, , ,, ,	, , , ,, , , ,s   C:CC:=C%CC%!?C C
!C%C%0C1C%5C: C#C:C%
CC%C 	CC 	C%#C:%C7+C.,C73C:r    r   r   r   s       @r
   test_taskgroup_12zTestTaskGroup.test_taskgroup_12W  s     		, )mmC   "	
~. 	"GG	 	68HI)@)@)CDGXFYZ 	!
 	 	r   c                   K   d fd}t        j                   |             }| j                  t              5 }| d {    d d d        | j	                  t        j                        t        h       y 7 7# 1 sw Y   6xY ww)Nc                 ^   K   t        j                  |        d {    t        |       7 wr   r   r#   
ValueErrorr   s    r
   crash_afterz4TestTaskGroup.test_taskgroup_13.<locals>.crash_afterv  '     --"""Q- #   -+-c                    K   t        j                         4 d {   } | j                   d             t        j                         4 d {   }|j                   d             d d d       d {    d d d       d {    y 7 p7 >7 # 1 d {  7  sw Y   )xY w7  # 1 d {  7  sw Y   y xY ww)Nr    rT   rU   r   r   r   s     r
   rV   z/TestTaskGroup.test_taskgroup_13.<locals>.runnerz  s     !++- 4 4{3/0%//1 4 4RNN;r?34 44 4 44 4 4 4 44 4 4 4   B?BB?0B*BB*B,B*7B8B*<B?B(B?B*B*B%	BB%	!B*(B?*B<0B31B<8B?)r   r-   rW   rX   r.   r   rY   r   r1   rV   rs   r[   r   s       @r
   test_taskgroup_13zTestTaskGroup.test_taskgroup_13t  ss     	 	4 )~. 	"GG	 	6E 	 	s.   8BA;A9A;3B9A;;B Bc                   K   d fd}t        j                   |             }| j                  t              5 }| d {    d d d        | j	                  t        j                        t        h       | j	                  t        |j                  j                  d         t        h       y 7 n# 1 sw Y   mxY ww)Nc                 ^   K   t        j                  |        d {    t        |       7 wr   r   r   s    r
   r   z4TestTaskGroup.test_taskgroup_14.<locals>.crash_after  r   r   c                    K   t        j                         4 d {   } | j                   d             t        j                         4 d {   }|j                   d             d d d       d {    d d d       d {    y 7 p7 >7 # 1 d {  7  sw Y   )xY w7  # 1 d {  7  sw Y   y xY ww)NrT   r    rU   r   s     r
   rV   z/TestTaskGroup.test_taskgroup_14.<locals>.runner  s     !++- 5 5{2/%//1 5 5RNN;s#345 55 5 55 5 5 5 55 5 5 5r   r   )	r   r-   rW   rX   r.   r   rY   r   r   r   s       @r
   test_taskgroup_14zTestTaskGroup.test_taskgroup_14  s     	 	5 )~. 	"GG	 	68HI)@)@)CDzlS 	 	s/   8B>B2B0B2A*B>0B22B;7B>c                   K   d fd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t              5 }| d {    d d d        | j                  t        j                        t        h       y 7 7 9# 1 sw Y   8xY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
wN333333?r>   r   r"   r   r	   r
   
crash_soonz3TestTaskGroup.test_taskgroup_15.<locals>.crash_soon  rH   rI   c                  r  K   t        j                         4 d {   } | j                                 	 t        j                  d       d {    d d d       d {    y 7 I7 # t        j
                  $ r  t        j                  d       d {  7    w xY w7 ?# 1 d {  7  sw Y   y xY wwNrT   g      ?rb   r   r   s    r
   rV   z/TestTaskGroup.test_taskgroup_15.<locals>.runner       !++-  z|,!--+++   ,-- !--,,,	   s   B7A&B7B"A*A(A*B7 B !B7(A**+BBBB" B7"B4(B+)B40B7r    r   )r1   rV   rs   r[   r   s       @r
   test_taskgroup_15zTestTaskGroup.test_taskgroup_15  s     		 )mmC   "	
~. 	"GG	69J8KL 	!
 	 	r   c                   K   d fdfd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t              5 }| d {    d d d        | j                  t        j                        t        h       y 7 7 9# 1 sw Y   8xY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
wr   r"   r   r	   r
   r   z3TestTaskGroup.test_taskgroup_16.<locals>.crash_soon  rH   rI   c                  r  K   t        j                         4 d {   } | j                                 	 t        j                  d       d {    d d d       d {    y 7 I7 # t        j
                  $ r  t        j                  d       d {  7    w xY w7 ?# 1 d {  7  sw Y   y xY wwr   rb   r   s    r
   nested_runnerz6TestTaskGroup.test_taskgroup_16.<locals>.nested_runner  r   r   c                  Z   K   t        j                                } |  d {    y 7 wr   )r   r-   )r   r   s    r
   rV   z/TestTaskGroup.test_taskgroup_16.<locals>.runner  s      ##MO4AGGs    +)+r    r   )r1   rV   rs   r[   r   r   s       @@r
   test_taskgroup_16zTestTaskGroup.test_taskgroup_16  s     			 )mmC   "	
~. 	"GG	69J8KL 	!
 	 	s=   A CCACCCC4CCCCc                   K   dfd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          | j                  t         j                        5  | d {    d d d        | j                  d       y 7 x7 !# 1 sw Y    xY ww)Nr   c                    K   t        j                         4 d {    	 t        j                  d       d {    d d d       d {    y 7 37 # t        j                  $ r  dz    w xY w7 &# 1 d {  7  sw Y   y xY wwrS   )r   r,   r   r#   rL   rh   s   r
   rV   z/TestTaskGroup.test_taskgroup_17.<locals>.runner  s}     !++-  !--+++  +-- 2IC   sd   BABA3AAAB
A1BAA..A31B3B9A<:BBr    rT   rp   )r1   rV   rs   rN   s      @r
   test_taskgroup_17zTestTaskGroup.test_taskgroup_17  s     	 )mmC   "	
w556 	GG	 	b! 	!
 	 	s:   :CB6ACB:B8B:C8B::C?Cc                   K   dfd}t        j                   |             }t        j                  d       d {    | j                  |j	                                |j                          	 | d {    | j                  d       | j                  d       y 7 b7 *# t        $ r*}| j                  t        |      t        h       Y d }~Ed }~ww xY ww)Nr   c                    K   t        j                         4 d {    	 t        j                  d       d {    d d d       d {    y 7 37 # t        j                  $ r  dz   t
        w xY w7 +# 1 d {  7  sw Y   y xY wwrS   )r   r,   r   r#   rL   r   rh   s   r
   rV   z/TestTaskGroup.test_taskgroup_18.<locals>.runner  s     !++-     !--+++     +--  2IC  K	        sd   BABA8AAAB
A6BAA33A86B8B
>B?B
Br    r   rT   )r   r-   r#   rq   rr   rA   r   rX   r.   r   r   )r1   rV   rs   r   rN   s       @r
   test_taskgroup_18zTestTaskGroup.test_taskgroup_18  s     		  )mmC   "	
	7GG II56b! 	!  	9_Q/88	9sK   :CB 3C2B$ 7B"8B$ <%C"B$ $	C- CCCCc                   K   d d fd}t        j                   |             }	 | d {    | j                  d       y 7 # t        $ r/}| j	                  t        |      t        t        h       Y d }~y d }~ww xY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
wrG   r"   r   r	   r
   r   z3TestTaskGroup.test_taskgroup_19.<locals>.crash_soon  rH   rI   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrS   )r   r#   r   r   r	   r
   nestedz/TestTaskGroup.test_taskgroup_19.<locals>.nested  s-     mmB''' (r   c                     K   t        j                         4 d {   } | j                                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY wwr   rU   r2   r   r   s    r
   rV   z/TestTaskGroup.test_taskgroup_19.<locals>.runner  _     !++-  jl+h     V   A2AA2!AAAA2AA2AA2A/#A&$A/+A2zTasgGroupError was not raised)r   r-   r   rX   r.   r   r   rZ   )r1   rV   rs   r   r   r   s       @@r
   test_taskgroup_19zTestTaskGroup.test_taskgroup_19  sy     			
 )	7GG II56	  	M_Q/%9J1KLL	Ms=   'BA
 AA
 BA
 
	B%A=8B=BBc                    K   d d fd}| j                  t              5   |        d {    d d d        y 7 # 1 sw Y   y xY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
wrG   r"   r   r	   r
   r   z3TestTaskGroup.test_taskgroup_20.<locals>.crash_soon  rH   rI   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrS   r   r#   KeyboardInterruptr   r	   r
   r   z/TestTaskGroup.test_taskgroup_20.<locals>.nested  s/     (mmB''''' (''r   c                     K   t        j                         4 d {   } | j                                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY wwr   rU   r   s    r
   rV   z/TestTaskGroup.test_taskgroup_20.<locals>.runner%  r   r   rW   r   r1   rV   r   r   s     @@r
   test_taskgroup_20zTestTaskGroup.test_taskgroup_20  sM     		(	
 01 	(NN	 		 	)   "AA?A	AAA
Ac                    K   d d fd}| j                  t              5 } |        d {    d d d        | j                  t        j                        t
        t        h       y 7 <# 1 sw Y   ;xY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
wrG   r"   r   r	   r
   r   z4TestTaskGroup.test_taskgroup_20a.<locals>.crash_soon.  rH   rI   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrS   r   r#   r   r   r	   r
   r   z0TestTaskGroup.test_taskgroup_20a.<locals>.nested2  -      mmB''' (r   c                     K   t        j                         4 d {   } | j                                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY wwr   rU   r   s    r
   rV   z0TestTaskGroup.test_taskgroup_20a.<locals>.runner8  r   r   )rW   BaseExceptionGroupr.   r   rY   r   rZ   r1   rV   r[   r   r   s      @@r
   test_taskgroup_20az TestTaskGroup.test_taskgroup_20a-  sp     		 	
 12 	b(NN	 	BLL)I7H+I	
 	 	+   "A<A0A.A08A<.A00A95A<c                    K   d d fd}| j                  t              5   |        d {    d d d        y 7 # 1 sw Y   y xY ww)Nc                  T   K   t        j                  d       d {    t        7 
wNr    r   r   r	   r
   r   z4TestTaskGroup._test_taskgroup_21.<locals>.crash_soonL  s#     --$$$## %rI   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrS   r   r#   	TypeErrorr   r	   r
   r   z0TestTaskGroup._test_taskgroup_21.<locals>.nestedP  r   r   c                     K   t        j                         4 d {   } | j                                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY wwr   rU   r   s    r
   rV   z0TestTaskGroup._test_taskgroup_21.<locals>.runnerV  r   r   r   r   s     @@r
   _test_taskgroup_21z TestTaskGroup._test_taskgroup_21D  sM     	$	 	
 01 	(NN	 		 	r   c                    K   d d fd}| j                  t              5 } |        d {    d d d        | j                  t        j                        t
        t        h       y 7 <# 1 sw Y   ;xY ww)Nc                  T   K   t        j                  d       d {    t        7 
wr   r   r   r	   r
   r   z4TestTaskGroup.test_taskgroup_21a.<locals>.crash_soon`  s"     --$$$O %rI   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrS   r   r   r	   r
   r   z0TestTaskGroup.test_taskgroup_21a.<locals>.nestedd  r   r   c                     K   t        j                         4 d {   } | j                                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY wwr   rU   r   s    r
   rV   z0TestTaskGroup.test_taskgroup_21a.<locals>.runnerj  r   r   )rW   r   r.   r   rY   r   r   r   s      @@r
   test_taskgroup_21az TestTaskGroup.test_taskgroup_21a^  sl     		 	
 12 	b(NN	 	6I8NO 	 	r   c                 :  K   d d fd}t        j                   |             }t        j                  d       d {    |j                          | j	                  t         j
                        5  | d {    d d d        y 7 G7 # 1 sw Y   y xY ww)Nc                  J   K   t        j                  d       d {    y7 wr=   r"   r   r	   r
   r$   z-TestTaskGroup.test_taskgroup_22.<locals>.foo1v  r?   r&   c                  J   K   t        j                  d       d {    y7 wr   r"   r   r	   r
   r+   z-TestTaskGroup.test_taskgroup_22.<locals>.foo2z  r?   r&   c                     K   t        j                         4 d {   } | j                                 | j                                 d d d       d {    y 7 A7 # 1 d {  7  sw Y   y xY wwr   rU   )r2   r$   r+   s    r
   rV   z/TestTaskGroup.test_taskgroup_22.<locals>.runner~  s`     !++- & &df%df%& & & & & & &sD   A7AA7-A"A7A A7 A7"A4(A+)A40A7g?)r   r-   r#   rA   rW   rL   )r1   rV   rs   r$   r+   s      @@r
   test_taskgroup_22zTestTaskGroup.test_taskgroup_22t  s     			&
 )mmD!!!	
w556 	GG	 	 	" 	 	s;   ?BB3B7B=B>B
BBBBc                   K   d }t        j                         4 d {   }t        d      D ]a  }t        j                  d       d {    |j                   |d             |dk(  s=| j                  t        |j                        d       c t        j                  d       d {    | j                  t        |j                        d       d d d       d {    y 7 7 7 >7 # 1 d {  7  sw Y   y xY ww)Nc                 J   K   t        j                  |        d {    y 7 wr   r"   delays    r
   do_jobz/TestTaskGroup.test_taskgroup_23.<locals>.do_job       --&&&r&   rT   r    r   r`   g?r   )
r   r,   rm   r   r#   r-   
assertLesslen_tasksr.   )r1   r   r2   counts       r
   test_taskgroup_23zTestTaskGroup.test_taskgroup_23  s     	' '') 	/ 	/Qr 6mmC(((fSk*A:OOCM15	6
 --%%%S]A.	/ 	/ 	/( &	/ 	/ 	/ 	/sn   DC%D'C-	C'
 C-+?C-*C)+)C-DC+ D'C-)C-+D-C?3C64C?;Dc                 L   K   fdd fd} |        d {    y 7 w)Nc                    K   t        j                  d       d {    | j                   d             | j                   d             y 7 3w)Nr    r)   r   r#   r-   )r2   coro1s    r
   rootz-TestTaskGroup.test_taskgroup_24.<locals>.root  s>     --$$$MM%*%MM%*% %s   AA4Ac                 J   K   t        j                  |        d {    y 7 wr   r"   r   s    r
   r
  z.TestTaskGroup.test_taskgroup_24.<locals>.coro1  r  r&   c                     K   t        j                         4 d {   } | j                   |              d d d       d {    y 7 ,7 # 1 d {  7  sw Y   y xY wwr   rU   )r2   r  s    r
   rV   z/TestTaskGroup.test_taskgroup_24.<locals>.runner  sT     !++- ' 'd1g&' ' ' ' ' ' 'sC   A"A	A"AA"AA"A"AAAA"r   )r1   rV   r
  r  s     @@r
   test_taskgroup_24zTestTaskGroup.test_taskgroup_24  s!     	&
	'	' hs   $"$c                 &  K   dfdfdfd}| j                  t              5 } |        d {    d d d        | j                  t        j                        t
        h       | j                  d       y 7 I# 1 sw Y   HxY ww)Nr   c                    K   dz  t        j                  d       d {    | j                   |              | j                   |              y 7 3w)Nr>   g{Gz?r	  )r2   hydranhydrass    r
   r  z.TestTaskGroup.test_taskgroup_25.<locals>.hydra  sG     qLG--%%%MM%(#MM%(# &s   AA4Ac                  l   K    dk  r#t        j                  d       d {     dk  r#ddz   y 7 w)NrT   gQ?r>   r   r"   )r  s   r
   herculesz1TestTaskGroup.test_taskgroup_25.<locals>.hercules  s5     B,mmE*** B,E +s   42	44c                     K   t        j                         4 d {   } | j                   |              | j                                 d d d       d {    y 7 B7 # 1 d {  7  sw Y   y xY wwr   rU   )r2   r  r  s    r
   rV   z/TestTaskGroup.test_taskgroup_25.<locals>.runner  sb     !++- * *eAh'hj)* * * * * * *sD   A8AA8.A#A8A!A8!A8#A5)A,*A51A8rT   )rW   rX   r.   r   rY   rZ   assertGreaterEqual)r1   rV   r[   r  r  r  s      @@@r
   test_taskgroup_25zTestTaskGroup.test_taskgroup_25  s     	$	
	*
 ~. 	"(NN	 	69J8KL, 	 	s,   )BBBBABBB
Bc                   K   d }t        j                         4 d {   }|j                   |       d      }| j                  |j	                         d       d d d       d {    y 7 M7 # 1 d {  7  sw Y   y xY ww)Nc                  J   K   t        j                  d       d {    y 7 wNr   r"   r   r	   r
   coroz4TestTaskGroup.test_taskgroup_task_name.<locals>.coro  s     --"""r&   yolo)name)r   r,   r-   r.   get_name)r1   r  r2   r   s       r
   test_taskgroup_task_namez&TestTaskGroup.test_taskgroup_task_name  sr     	#'') 	3 	3Qdf62AQZZ\62	3 	3 	3 	3 	3 	3 	3sD   BA,B9A0B&A.'B.B0B6A97B>Bc                 N  K   t        j                  d      fd}t        j                         4 d {   }t        j                         }| j                  |j                               |j                   |d      |      }| d {    | j                  d|j                               |j                   |d      |      }| d {    | j                  d|j                               d d d       d {    y 7 7 |7 :7 # 1 d {  7  sw Y   y xY ww)Ncvarc                 n   K   t        j                  d       d {    j                  |        y 7 wr  )r   r#   set)valr!  s    r
   r  z7TestTaskGroup.test_taskgroup_task_context.<locals>.coro  s)     --"""HHSM #s   535r>   )contextr   )	contextvars
ContextVarr   r,   copy_contextassertIsNonegetr-   r.   )r1   r  r2   ctxr3   r4   r!  s         @r
   test_taskgroup_task_contextz)TestTaskGroup.test_taskgroup_task_context  s     %%f-	 '') 	/ 	/Q**,Ccggdm,tAw4BHHQ.tAw4BHHQ.	/ 	/ 	/  	/ 	/ 	/ 	/sj   3D%DD%ADD
ADD%D7D%DD%
DDD%D"DD"D%c                    K   d  fd} j                  t              5 }t        j                         4 d {   }|j	                                 |j	                   ||             d d d       d {    d d d         j                  t        j                        t        h       y 7 t7 9# 1 d {  7  sw Y   IxY w# 1 sw Y   MxY ww)Nc                  T   K   t        j                  d       d {    ddz   y 7 
w)NgMbP?r>   r   r"   r   r	   r
   r
  zHTestTaskGroup.test_taskgroup_no_create_task_after_failure.<locals>.coro1  s$     --&&&E 'rI   c                 r  K   	 t        j                  d       d {    y 7 # t         j                  $ r| j                  t              5  | j                          x}       d d d        n# 1 sw Y   nxY wj                  t              5   d {  7   d d d        Y y # 1 sw Y   Y y xY ww xY ww)Nr>   )r   r#   rL   rW   RuntimeErrorr-   rZ   )r2   c1r
  r1   s     r
   coro2zHTestTaskGroup.test_taskgroup_no_create_task_after_failure.<locals>.coro2  s     mmA&&&)) &&|4 1MM-"01 1 1 &&'89 HH  	ss   B7% #% B7% (B4A/&	B4/A8	4B4B&BB&B4$B7&B0	+B4.B70B44B7)	rW   rX   r   r,   r-   r.   r   rY   rZ   )r1   r2  r[   r2   r
  s   `   @r
   +test_taskgroup_no_create_task_after_failurez9TestTaskGroup.test_taskgroup_no_create_task_after_failure  s     		 ~. 	("!++- ( (eg&eAh'( (	(
 	69J8KL	( ( ( ( (	( 	(sb   CC
B1C
 .B5.C
9B3:C
>3C1C
3C
5C	;B><C	C

CCc                     K    G d dt               fdt        j                  fd        fd}t        j                   |              d {    y 7 w)Nc                       e Zd Zy)QTestTaskGroup.test_taskgroup_context_manager_exit_raises.<locals>.CustomExceptionNr   r   r	   r
   CustomExceptionr6    s    r	   r7  c                     K    wr   r   r7  s   r
   	raise_exczKTestTaskGroup.test_taskgroup_context_manager_exit_raises.<locals>.raise_exc  s     !!s   c                 (   K   	 d   #  xY wwr   r   r9  s   r
   databasezJTestTaskGroup.test_taskgroup_context_manager_exit_raises.<locals>.database  s     &%%o%s    c            	        K   t        j                         } 	 t        j                         4 d {   }        4 d {    |j	                                 t        j
                  d       d {    d d d       d {    d d d       d {    j                  d       y 7 y7 k7 :7 ,# 1 d {  7  sw Y   <xY w7 3# 1 d {  7  sw Y   CxY w# g x% xQ}j                  | j                         d       j                  t        |j                        d       d }~nd }~ nn x Y y cY w xY ww)Nr>   r   r   zCustomException not raised)r   current_taskr   r,   r-   r#   r.   
cancellingr  r   r   )tasktgerrr7  r<  r:  r1   s      r
   mainzFTestTaskGroup.test_taskgroup_context_manager_exit_raises.<locals>.main  s	    '')D
8%//1 / /R'z / /y{3%mmA.../ // / 		67//./ / / // / / /9O 9  !2A6  S^^!4a8889s   EC B+C C
B-C
/B34B/5B39C
B1C
	C CC E+C -C
/B31C
3C	9B<:C	C
C 
CCCC E'AD0	,E=E)	Exception
contextlibasynccontextmanagerr   r-   )r1   rC  r7  r<  r:  s   ` @@@r
   *test_taskgroup_context_manager_exit_raisesz8TestTaskGroup.test_taskgroup_context_manager_exit_raises  sO     	i 		" 
	'	'	& 
(	&	8 !!$&)))s   AA AA N)"r   r   r   r5   r:   rD   r\   rd   rt   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r,  r3  rG  r   r	   r
   r   r      s    *"*$*,#(J-'^!6 "DM0(<(:[6[:F&T(M0M8",":70&
.4P,,/ -43/"M**r	   r   __main__)r   r&  rE  r   unittestr   rD  r   BaseExceptionr   r   IsolatedAsyncioTestCaser   r   rC  r   r	   r
   <module>rL     sg   
     (	I 		 	0o*H44 o*d zHMMO r	   