
    daf.\                         d dl Z d dlZd dlZd dl mZ d dlZd dlm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)
taskgroups)await_without_taskc                  .    t        j                  d        y N)asyncioset_event_loop_policy     </root/Python-3.12.4/Lib/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!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>.foo14   r&   r'   c                  J   K   t        j                  d       d {    y7 wr)   r#   r	   r
   r   r,   z-TestTaskGroup.test_taskgroup_02.<locals>.foo28   r&   r'   333333?r"   r+   )r   r-   r.   r   r$   r/   r0   r1   s         r   test_taskgroup_02zTestTaskGroup.test_taskgroup_022   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>.foo1F         --""" #r'   c                  J   K   t        j                  d       d {    y7 wr)   r#   r	   r
   r   r,   z-TestTaskGroup.test_taskgroup_03.<locals>.foo2J   r&   r'   r:   r+   )
r   r-   r.   r   r$   cancel
assertTrue	cancelledr/   r0   r1   s         r   test_taskgroup_03zTestTaskGroup.test_taskgroup_03D   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>.foo2d   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.   )r3   rO   r%   r,   r5   s    r   runnerz/TestTaskGroup.test_taskgroup_04.<locals>.runnerm   so      "++- + +df%]]46*+ + 2IC	+ + + + +sD   A<A#A<-A'A<A%A<%A<'A9-A0.A95A<)
assertRaisesExceptionGroupr   r.   r/   r   	exceptionZeroDivisionErrorrC   rD   )r2   rW   cmrO   r%   r,   r5   rP   s      @@@@@r   test_taskgroup_04zTestTaskGroup.test_taskgroup_04Z   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rH   r#   r	   r
   r   r%   z?TestTaskGroup.test_cancel_children_on_child_error.<locals>.foo1   rI   rJ   c                     K   	 t        j                  d       d {     dz   y 7 
# t         j                  $ r d w xY ww)N   Tr?   rL   rN   s   r   r,   z?TestTaskGroup.test_cancel_children_on_child_error.<locals>.foo2   rQ   rR   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)NrU   Tr   r-   r.   r   r$   rM   )r3   rO   r%   r,   runner_cancels    r   rW   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")	rX   rY   r   r.   r/   r   rZ   r[   rC   )r2   rW   r\   rO   r%   r,   rd   rP   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Nra   r?   rL   rO   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)Nra   )r   r-   ranger.   r3   _rj   s     r   rW   z/TestTaskGroup.test_cancellation.<locals>.runner   se     !++- ) )q )AMM#%()) ) ) ) ) ) )sD   A1AA1'AA1AA1A1A."A%#A.*A1r!   ra   	r   r.   r$   assertFalsedonerB   rX   rM   r/   )r2   rW   rr\   rO   rj   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rh   rL   ri   s   r   rj   z,TestTaskGroup.test_taskgroup_07.<locals>.foo   rk   rl   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Nra   rU   )r   r-   rn   r.   r   r$   rM   )r3   rp   rO   rj   s     r   rW   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!      rq   )r2   rW   rt   rO   rj   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NrU   r?   r   r#   r	   r
   r   rj   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ry   r   r-   rn   r.   r   r$   ro   s     r   rW   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$   rr   rs   rB   rX   rY   r/   r   rZ   r[   r2   rW   rt   r\   rj   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rH   )r   r-   r.   r   r$   r3   r%   r,   r4   r5   s    r   rW   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failrY   r/   r   r[   rC   rD   r2   rW   tr%   r,   r4   r5   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   rV   r   s    r   rW   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   rj   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ry   r   )g2rp   rj   s     r   rW   z/TestTaskGroup.test_taskgroup_11.<locals>.runnerF  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$   rr   rs   rB   rX   rY   r/   r   rZ   r   r[   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   rj   z,TestTaskGroup.test_taskgroup_12.<locals>.foo[  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)NrU   ra   )r   r-   r.   r   r$   rn   )g1r   rp   rj   s      r   rW   z/TestTaskGroup.test_taskgroup_12.<locals>.runnera  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_12Y  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_afterx  '     --"""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!   rU   rV   r   r   r   s     r   rW   z/TestTaskGroup.test_taskgroup_13.<locals>.runner|  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.   rX   rY   r/   r   rZ   r   r2   rW   rt   r\   r   s       @r   test_taskgroup_13zTestTaskGroup.test_taskgroup_13v  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)NrU   r!   rV   r   s     r   rW   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.   rX   rY   r/   r   rZ   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  rI   rJ   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NrU   g      ?rc   r   r   s    r   rW   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   )r2   rW   rt   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  rI   rJ   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   rc   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   rW   z/TestTaskGroup.test_taskgroup_16.<locals>.runner  s      ##MO4AGGs    +)+r!   r   )r2   rW   rt   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rT   )r   r-   r   r$   rM   ri   s   r   rW   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!   rU   rq   )r2   rW   rt   rO   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rT   )r   r-   r   r$   rM   r   ri   s   r   rW   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   rU   )r   r.   r$   rr   rs   rB   r   rY   r/   r   r   )r2   rW   rt   r   rO   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rH   r#   r	   r
   r   r   z3TestTaskGroup.test_taskgroup_19.<locals>.crash_soon  rI   rJ   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrT   )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   rV   r3   r   r   s    r   rW   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   rY   r/   r   r   r[   )r2   rW   rt   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rH   r#   r	   r
   r   r   z3TestTaskGroup.test_taskgroup_20.<locals>.crash_soon  rI   rJ   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrT   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   rV   r   s    r   rW   z/TestTaskGroup.test_taskgroup_20.<locals>.runner'  r   r   rX   r   r2   rW   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rH   r#   r	   r
   r   r   z4TestTaskGroup.test_taskgroup_20a.<locals>.crash_soon0  rI   rJ   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrT   r   r$   r   r	   r
   r   r   z0TestTaskGroup.test_taskgroup_20a.<locals>.nested4  -      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   rV   r   s    r   rW   z0TestTaskGroup.test_taskgroup_20a.<locals>.runner:  r   r   )rX   BaseExceptionGroupr/   r   rZ   r   r[   r2   rW   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_soonN  s#     --$$$## %rJ   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrT   r   r$   	TypeErrorr	   r
   r   r   z0TestTaskGroup._test_taskgroup_21.<locals>.nestedR  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   rV   r   s    r   rW   z0TestTaskGroup._test_taskgroup_21.<locals>.runnerX  r   r   r   r   s     @@r   _test_taskgroup_21z TestTaskGroup._test_taskgroup_21F  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_soonb  s"     --$$$O %rJ   c                  j   K   	 t        j                  d       d {    t        7 
# t        xY wwrT   r   r	   r
   r   r   z0TestTaskGroup.test_taskgroup_21a.<locals>.nestedf  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   rV   r   s    r   rW   z0TestTaskGroup.test_taskgroup_21a.<locals>.runnerl  r   r   )rX   r   r/   r   rZ   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>.foo1x  r@   r'   c                  J   K   t        j                  d       d {    y7 wr   r#   r	   r
   r   r,   z-TestTaskGroup.test_taskgroup_22.<locals>.foo2|  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   rV   )r3   r%   r,   s    r   rW   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$   rB   rX   rM   )r2   rW   rt   r%   r,   s      @@r   test_taskgroup_22zTestTaskGroup.test_taskgroup_22v  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'   rU   r!   r   ra   g?r   )
r   r-   rn   r   r$   r.   
assertLesslen_tasksr/   )r2   r  r3   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.   )r3   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   rV   )r3   r  s    r   rW   z/TestTaskGroup.test_taskgroup_24.<locals>.runner  sT     !++- ' 'd1g&' ' ' ' ' ' 'sC   A"A	A"AA"AA"A"AAAA"r	   )r2   rW   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
  )r3   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)NrU   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   rV   )r3   r  r  s    r   rW   z/TestTaskGroup.test_taskgroup_25.<locals>.runner  sb     !++- * *eAh'hj)* * * * * * *sD   A8AA8.A#A8A!A8!A8#A5)A,*A51A8rU   )rX   rY   r/   r   rZ   r[   assertGreaterEqual)r2   rW   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)r2   r  r3   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/   )r2   r  r3   ctxr4   r5   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 'rJ   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$   rM   rX   RuntimeErrorr.   r[   )r3   c1r  r2   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)	rX   rY   r   r-   r.   r/   r   rZ   r[   )r2   r3  r\   r3   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   CustomExceptionr7    s    r
   r8  c                     K    wr   r	   r8  s   r   	raise_exczKTestTaskGroup.test_taskgroup_context_manager_exit_raises.<locals>.raise_exc  s     !!s   c                 (   K   	 d   #  xY wwr   r	   r:  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errr8  r=  r;  r2   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.   )r2   rD  r8  r=  r;  s   ` @@@r   *test_taskgroup_context_manager_exit_raisesz8TestTaskGroup.test_taskgroup_context_manager_exit_raises  sO     	i 		" 
	'	'	& 
(	&	8 !!$&)))s   AA AA c           	      \  K   t        j                         }|4 d {    | j                  t        d      5  |4 d {    	 d d d       d {    d d d        d d d       d {    y 7 P7 07 !# 1 d {  7  sw Y   1xY w# 1 sw Y   5xY w7 ,# 1 d {  7  sw Y   y xY wwNzhas already been enteredr   r-   assertRaisesRegexr1  r2   rB  s     r   test_taskgroup_already_enteredz,TestTaskGroup.test_taskgroup_already_entered  s     !!# 	 	''6PQ    	 	 	     	 	 	 	s   B,A.B,BB	A0
 B	A4B	A2B	BB,(B)B,0B	2B	4B:A=;BB		B	BB,B)B B)%B,c                 ^  K   t        j                         }|4 d {    	 d d d       d {    | j                  t        d      5  |4 d {    	 d d d       d {    d d d        y 7 Q7 B# 1 d {  7  sw Y   RxY w7 77 (# 1 d {  7  sw Y   8xY w# 1 sw Y   y xY wwrJ  rK  rM  s     r   test_taskgroup_double_enterz)TestTaskGroup.test_taskgroup_double_enter  s     !!# 	 		 	##L2LM 	   	 		 	 	 	 	    	 	s   B-A/B-A3B-A1B-	B!BB!BB!!B
"B!&
B-1B-3B9A<:BB-B!
B!B	BB	B!!B*&B-c                 X  K   t        j                         }|4 d {    	 d d d       d {    t        j                  d      }| j	                  t
        d      5  |j                  |       d d d        | d {    y 7 e7 V# 1 d {  7  sw Y   fxY w# 1 sw Y   -xY w7 *w)Nr   zis finishedr   r-   r   r$   rL  r1  r.   r2   rB  r  s      r   test_taskgroup_finishedz%TestTaskGroup.test_taskgroup_finished  s     !!# 	 		 	}}Q##L-@ 	!NN4 	! 

	 	 	 	 		! 	! 	se   B*BB*BB*B/B*B0B*=B(>B*B*BBBB*B%!B*c                    K   t        j                         }t        j                  d      }| j	                  t
        d      5  |j                  |       d d d        | d {    y # 1 sw Y   xY w7 w)Nr   has not been enteredrR  rS  s      r   test_taskgroup_not_enteredz(TestTaskGroup.test_taskgroup_not_entered)  sb     !!#}}Q##L2HI 	!NN4 	! 

	! 	! 	s*   A A5A'A5!A3"A5'A0,A5c                   K   t        j                         }| j                  t        d      5  t	        |j                                d {    d d d        t        j                  d      }| j                  t        d      5  |j                  |       d d d        | d {    y 7 \# 1 sw Y   [xY w# 1 sw Y   "xY w7 w)Nzparent taskr   rV  )	r   r-   rL  r1  r   
__aenter__r   r$   r.   rS  s      r   "test_taskgroup_without_parent_taskz0TestTaskGroup.test_taskgroup_without_parent_task1  s     !!###L-@ 	6$R]]_555	6}}Q##L2HI 	!NN4 	! 

 6	6 	6	! 	! 	sR   +CB)
B'B)3CB5C!C"C'B))B2.C5B>:CN)'r   r   r   r6   r;   rE   r]   re   ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r-  r4  rH  rN  rP  rT  rW  rZ  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'  rF  r   unittesttest.test_asyncio.utilsr   r   rE  r   BaseExceptionr   r   IsolatedAsyncioTestCaser   r   rD  r	   r
   r   <module>r`     sj   
      6(	I 		 	0ZH44 Zz zHMMO r
   