
    daf!                    @   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddl
mZ ddl	mZ ddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ d
 Zd ZdIdZd Z G d d      Z G d d      Z G d d      Zd Z G d d      Z e
j@                   e!ed      xr	  e!ed      d       G d deeejD                               Z# e
j@                   e!ed      xr	  e!ed      d      e G d deejD                                      Z$ e
j@                   e!ed      d      e G d deejD                                      Z% e
j@                   e!ed      d      e G d  d!eejD                                      Z& e
j@                   e!ed      d       G d" d#eejD                               Z' e
j@                   e!ed      d       G d$ d%eejD                               Z( G d& d'eeejD                        Z)e G d( d)eejD                               Z* e
j@                   e!ed      d       G d* d+ejD                               Z+ G d, d-      Z, G d. d/ejD                  e,      Z- e
j@                   e!ed0      d       G d1 d2ejD                  e,             Z. G d3 d4      Z/ G d5 d6e/ejD                        Z0 e
j@                   e!ed      xr	  e!ed7      d       G d8 d9e/ejD                               Z1 G d: d;ejD                        Z2 G d< d=      Z3 G d> d?e3ejD                        Z4 G d@ dAe3ejD                        Z5 G dB dCejD                        Z6 G dD dEejD                        Z7 G dF dGejD                        Z8e9dHk(  r e
jt                          yy)JzTests for tasks.py.    N)mock)GenericAlias)futures)tasks)utils)support)assert_python_okc                  .    t        j                  d        y N)asyncioset_event_loop_policy     7/root/Python-3.12.4/Lib/test/test_asyncio/test_tasks.pytearDownModuler      s    !!$'r   c                     K   y wr   r   r   r   r   coroutine_functionr      s	        c                 p    |rd|z  }nd|z  }||d   }d| d|d|d|d   d	|d
   
S d| d|d|dS )Nz%sz%s, definedzcoro=<z() z at z> created at r   :   >r   )qualnamestatesrcsource_traceback	generatorframes         r   format_coroutiner        sY    u%# $UCq58= 	> $
 *25#>>r   c                 f    d}	 | j                   }|n|} |dz  }t        |       | j                  |fS )zP
    Return information about the innermost exception context in the chain.
    r   r   )__context__typeargs)excdepthcontexts      r   get_innermost_contextr(   -   sG     E
//?
  Isxx''r   c                       e Zd Zd Zd Zy)Dummyc                      y)Nz<Dummy>r   selfs    r   __repr__zDummy.__repr__?   s    r   c                      y r   r   )r-   r$   s     r   __call__zDummy.__call__B       r   N)__name__
__module____qualname__r.   r0   r   r   r   r*   r*   =   s    r   r*   c                   $    e Zd Zd Zd Zd Zd Zy)CoroLikeObjectc                     t        d      N*   )StopIteration)r-   vs     r   sendzCoroLikeObject.sendG   s    Br   c                      y r   r   )r-   r%   s     r   throwzCoroLikeObject.throwJ   r1   r   c                      y r   r   r,   s    r   closezCoroLikeObject.closeM   r1   r   c                     | S r   r   r,   s    r   	__await__zCoroLikeObject.__await__P   s    r   N)r2   r3   r4   r<   r>   r@   rB   r   r   r   r6   r6   F   s     r   r6   c                   "    e Zd ZdZdZdudZd Z f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+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zc edj                  da      db        Zfdc Zgdd Zhde Zidf Zj edj                  da      dg        Zkdh Zldi Zmdj Zndk Zodl Zpdm Zqdn Zrdo Zsdp Ztdq Zudr Zvds Zwdt Zx xZyS )vBaseTaskTestsNc                 @    | j                   j                  ||||      S )N)loopnamer'   )	__class__Task)r-   rF   cororG   r'   s        r   new_taskzBaseTaskTests.new_taskY   s     ~~""4dw"OOr   c                 :    | j                   j                  |      S NrF   )rH   Futurer-   rF   s     r   
new_futurezBaseTaskTests.new_future\   s    ~~$$$$//r   c                      t                     j                          _         j                  j	                   j
                          fd j                  _        y )Nc                  :     j                   j                        S r   )rQ   rF   r,   s   r   <lambda>z%BaseTaskTests.setUp.<locals>.<lambda>c   s    $//$))*D r   )supersetUpnew_test_looprF   set_task_factoryrK   create_futurer-   rH   s   `r   rV   zBaseTaskTests.setUp_   s>    &&(			""4==1"D		r   c                     | j                   j                  t           }| j                  |j                  t        f       | j                  |t               y r   )rH   rI   strassertEqual__args__assertIsInstancer   r-   tasks     r   test_generic_aliasz BaseTaskTests.test_generic_aliase   s<    ~~""3'/dL1r   c                    d }| j                  | j                   |             }| j                  t        |d             | j	                  |j
                  d        |j                  d       | j	                  |j
                  d       | j                  t        j                        5 }| j                  j                  |       d d d        | j	                  dj                  j                  d          y # 1 sw Y   3xY w)Nc                     K   y wr   r   r   r   r   rJ   z;BaseTaskTests.test_task_cancel_message_getter.<locals>.corok   	     r   _cancel_message
my messager   )rK   rF   
assertTruehasattrr]   rf   cancelassertRaisesr   CancelledErrorrun_until_complete	exceptionr$   r-   rJ   tcms       r   test_task_cancel_message_getterz-BaseTaskTests.test_task_cancel_message_getterj   s    	MM$))TV,#456**D1	**L9w556 	,"II((+	, 	r||'8'8';<	, 	,s   (C66C?c                    d }| j                  | j                   |             }|j                  d       d|_        | j	                  |j                  d       | j                  t        j                        5 }| j                  j                  |       d d d        | j	                  dj                  j                  d          y # 1 sw Y   3xY w)Nc                     K   y wr   r   r   r   r   rJ   z;BaseTaskTests.test_task_cancel_message_setter.<locals>.coroz   re   r   rg   zmy new messager   )rK   rF   rj   rf   r]   rk   r   rl   rm   rn   r$   ro   s       r   test_task_cancel_message_setterz-BaseTaskTests.test_task_cancel_message_settery   s    	MM$))TV,	,**,<=w556 	,"II((+	, 	)2<<+<+<Q+?@	, 	,s   8CCc                      G d d      fd}| j                   j                  t        j                  t	        d      D cg c]#  }| j                  | j                    |             % c}        y c c}w )Nc                       e Zd Zd Zy)1BaseTaskTests.test_task_del_collect.<locals>.Evilc                 ,    t        j                          y r   )gccollectr,   s    r   __del__z9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__   s    

r   N)r2   r3   r4   r|   r   r   r   Evilrx      s    r   r}   c                     K            S wr   r   )r}   s   r   runz0BaseTaskTests.test_task_del_collect.<locals>.run   s     6Ms   d   )rF   rm   r   gatherrangerK   )r-   r   _r}   s      @r   test_task_del_collectz#BaseTaskTests.test_task_del_collect   s_    	 		 			$$NN9>s45dii/ 	s   (A3c                 8   t        j                         }| j                  |      }d }	 | j                  t        d      5  | j
                  j                   ||             d d d        |j                          y # 1 sw Y   xY w# |j                          w xY w)Nc                 $   K   |  d {    y 7 wr   r   futs    r   r   z1BaseTaskTests.test_other_loop_future.<locals>.run   s     IIs   zTask .* got Future .* attached)r   new_event_looprQ   assertRaisesRegexRuntimeErrorrF   rm   r@   )r-   
other_loopr   r   s       r   test_other_loop_futurez$BaseTaskTests.test_other_loop_future   s    ++-
ooj)		''(IK 7		,,SX67 	7 7 s#   B  "A;"B ;B B Bc                     fd}t        j                   |       | j                        | j                  t        d      5  | j                  j                         d d d        y # 1 sw Y   y xY w)Nc                  &   K     d {    y 7 wr   r   )ra   s   r   testz6BaseTaskTests.test_task_awaits_on_itself.<locals>.test   s     JJ   rN   zTask cannot await on itself)r   ensure_futurerF   r   r   rm   )r-   r   ra   s     @r   test_task_awaits_on_itselfz(BaseTaskTests.test_task_awaits_on_itself   s]    	 $$TV$))<##L$AC 	/II((.	/ 	/ 	/s   A((A1c                    d }| j                  | j                   |             }| j                  j                  |       | j                  |j	                                | j                  |j                         d       | j                  |j                  | j                         | j                  |j                         | j                         t        j                         }| j                  |       | j                  | |             }| j                  |j                  |       |j                  |       |j                          y )Nc                     K   ywNokr   r   r   r   notmuchz.BaseTaskTests.test_task_class.<locals>.notmuch   	     r   r   )rK   rF   rm   rh   doner]   resultassertIs_loopget_loopr   r   set_event_loopr@   )r-   r   rp   rF   s       r   test_task_classzBaseTaskTests.test_task_class   s    	MM$))WY/		$$Q'!T*aggtyy)ajjlDII.%%'D!MM$	*aggt$"

r   c                    d t        j                          | j                        }| j                  |j                  | j                         | j                  j                  |       | j                  |j                                | j                  |j                         d               }| j                  |j                         | j                  t        d      5  t        j                  |       d d d        fd}| j                  j                   |             }| j                  |j                  | j                         | j                  j                  |       | j                  |j                                | j                  |j                         d       t        j                  | j                         | j                  t         j                  d        t        j                                }| j                  |j                  | j                         | j                  j                  |       | j                  |j                                | j                  |j                         d       y # 1 sw Y   xY w)Nc                     K   ywr   r   r   r   r   r   z;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuch   r   r   rN   r   no current event loopc                  @   K   t        j                                 S wr   )r   r   )r   s   r   r   z8BaseTaskTests.test_ensure_future_coroutine.<locals>.test   s     ((33   )r   r   rF   r   r   rm   rh   r   r]   r   
addCleanupr@   r   r   r   )r-   rp   ar   r   s       @r   test_ensure_future_coroutinez*BaseTaskTests.test_ensure_future_coroutine   s   	!!')$))<aggtyy)		$$Q'!T*I ##L2IJ 	%!!!$	%	4II((0aggtyy)		$$Q'!T* 	tyy)..5!!'),aggtyy)		$$Q'!T*%	% 	%s   #J  J
c                    | j                  | j                        }|j                  d       t        j                  |      }| j                  j                  |       | j                  |j                                | j                  |j                         d       | j                  ||       t        j                         }| j                  |       | j                  t              5  t        j                  ||      }d d d        |j                          t        j                  || j                        }| j                  ||       y # 1 sw Y   MxY w)NkorN   )rQ   rF   
set_resultr   r   rm   rh   r   r]   r   r   r   r   rk   
ValueErrorr@   )r-   f_origfrF   s       r   test_ensure_future_futurez'BaseTaskTests.test_ensure_future_future   s    +$!!&)		$$Q'!T*a %%'D!z* 	9%%f48A	9 	

!!&tyy9a 	9 	9s   (EEc                    d }| j                  | j                   |             }t        j                  |      }| j                  j	                  |       | j                  |j                                | j                  |j                         d       | j                  ||       t        j                         }| j                  |       | j                  t              5  t        j                  ||      }d d d        |j                          t        j                  || j                        }| j                  ||       y # 1 sw Y   MxY w)Nc                     K   ywr   r   r   r   r   r   z6BaseTaskTests.test_ensure_future_task.<locals>.notmuch   r   r   r   rN   )rK   rF   r   r   rm   rh   r   r]   r   r   r   r   rk   r   r@   )r-   r   t_origrp   rF   s        r   test_ensure_future_taskz%BaseTaskTests.test_ensure_future_task   s    	tyy')4!!&)		$$Q'!T*a %%'D!z* 	9%%f48A	9 	

!!&tyy9a 	9 	9s    EEc                     G d d      }d }t        j                         }| j                  |       t        j                   | |             |      }|j	                  |       | j                  |j                         d       y )Nc                       e Zd Zd Zd Zy)6BaseTaskTests.test_ensure_future_awaitable.<locals>.Awc                     || _         y r   rJ   r-   rJ   s     r   __init__z?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__  s	     	r   c                 6    | j                   j                         S r   )rJ   rB   r,   s    r   rB   z@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__
  s    yy**,,r   N)r2   r3   r4   r   rB   r   r   r   Awr     s    !-r   r   c                     K   ywr   r   r   r   r   rJ   z8BaseTaskTests.test_ensure_future_awaitable.<locals>.coro  r   r   rN   r   )r   r   r   r   rm   r]   r   )r-   r   rJ   rF   r   s        r   test_ensure_future_awaitablez*BaseTaskTests.test_ensure_future_awaitable  sk    	- 	-	 %%'D!##BtvJT:$t,r   c                     G d d      }t        j                         }| j                  |       t        j                   |       |      }|j	                  |       | j                  |j                                | j                  |j                         d       | j                  |j                         t        j                         |j                          y )Nc                       e Zd Zd Zy);BaseTaskTests.test_ensure_future_task_awaitable.<locals>.Awc                 L    t        j                  dd      j                         S )Nr   r   r   )r   sleeprB   r,   s    r   rB   zEBaseTaskTests.test_ensure_future_task_awaitable.<locals>.Aw.__await__  s    }}Qt4>>@@r   N)r2   r3   r4   rB   r   r   r   r   r     s    Ar   r   rN   r   )r   r   r   r   rm   rh   r   r]   r   r_   get_corotypesCoroutineTyper@   )r-   r   rF   ra   s       r   !test_ensure_future_task_awaitablez/BaseTaskTests.test_ensure_future_task_awaitable  s    	A 	A %%'D!$$RT5%		$-dmmou/B/BC

r   c                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wr   )rk   	TypeErrorr   r   r,   s    r   test_ensure_future_neitherz(BaseTaskTests.test_ensure_future_neither$  s3    y) 	(!!$'	( 	( 	(s   5>c                    t        j                         }| j                  | j                        }| j	                  t
        d      5  t        j                  ||       d d d        |j                          y # 1 sw Y   xY w)NzRThe future belongs to a different loop than the one specified as the loop argumentrN   )r   r   rQ   rF   r   r   r   r@   )r-   rF   r   s      r   test_ensure_future_error_msgz*BaseTaskTests.test_ensure_future_error_msg(  si    %%'OODII&##J 18 9 	0 !!!$/	0 	

		0 	0s   A77B c                 t     d fd fd fd} j                   j                   |              y )Nc                  0   K             d {    y 7 wr   r   )bars   r   fooz)BaseTaskTests.test_get_stack.<locals>.foo4  s     %KKs   c                  L  K   j                  d      } 	 j                  | d   j                  j                  d       d } t	        j
                         }j                  d|       |j                  d       |j                         }j                  |d       y # d } w xY ww)Nr   )limitr   r   )r   filezfoo\(\) running)
	get_stackr]   f_codeco_nameioStringIOprint_stackseekreadassertRegex)r   r   tbTr-   s      r   r   z)BaseTaskTests.test_get_stack.<locals>.bar7  s     !$A  1!4!4e< ;;=DMMM-IIaLBR!34 s   B$)B  AB$B!!B$c                  r   K   t        j                          j                           d {    y 7 wrM   )r   r   rF   )r   r   r-   s   r   runnerz,BaseTaskTests.test_get_stack.<locals>.runnerF  s&     %%ce$))<AGGs   ,757rF   rm   )r-   r   r   r   r   s   ` @@@r   test_get_stackzBaseTaskTests.test_get_stack1  s-    		5	
 			$$VX.r   c                    | j                   j                  d       d }| j                  |j                  d       | j	                  |j
                  d       | j                  |j                  t               t        j                  |      \  }}|d|} |       }d}| j                  |j                  d       | j                  |j
                  |       | j                  | j                   |      }|j                  t                      t        |d||j                  d	      }| j                  t        |      d
|z         |j                          | j                  t        |      d|z         | j!                  t"        j$                  | j                   j&                  |       t        |d||j                        }| j                  t        |      d|z         | j                  | j                    |             }| j                   j'                  |       t        |d||j                        }| j                  t        |      d|z         y )NFc                     K   ywNabcr   r   r   r   r   z-BaseTaskTests.test_task_repr.<locals>.notmuchP  	     r   r   z#\w+.test_task_repr.<locals>.notmuchr   z-BaseTaskTests.test_task_repr.<locals>.notmuchrunningT)r   z0<Task pending name='TestTask' %s cb=[<Dummy>()]>z3<Task cancelling name='TestTask' %s cb=[<Dummy>()]>r   z#<Task cancelled name='TestTask' %s>z/<Task finished name='TestTask' %s result='abc'>)rF   	set_debugr]   r2   r   r4   r3   
test_utilsget_function_sourcerK   add_done_callbackr*   r    _source_tracebackreprrj   rk   r   rl   rm   )	r-   r   filenamelinenor   gencoro_qualnamerp   rJ   s	            r   test_task_reprzBaseTaskTests.test_task_reprM  s   		E"	 	))95--?	A++X6%99'B&!6* iGy1))=9 MM$))S)	EG$y# ! 3 3tEaKdR	T 	

aNQUU	W 	'00))66	;vs ! 3 35a>E	G MM$))WY/		$$Q'vs ! 3 35aJTQ	Sr   c                    d }| j                  | j                   |       d       }| j                  | j                   |       d       }| j                  t        |      t        |             t	        j
                  dt        |            }| j                  |       t	        j
                  dt        |            }| j                  |       | j                  t        |j                  d            t        |j                  d                   | j                  j                  |       | j                  j                  |       y )Nc                     K   ywN{   r   r   r   r   r   z;BaseTaskTests.test_task_repr_autogenerated.<locals>.notmuch  	     r   z ^<Task pending name='Task-(\d+)'r   )rK   rF   assertNotEqualr   rematchassertIsNotNone
assertLessintgrouprm   )r-   r   t1t2match1match2s         r   test_task_repr_autogeneratedz*BaseTaskTests.test_task_repr_autogenerated  s    	 ]]499gi6]]499gi6DHd2h/=tBxHV$=tBxHV$ 	FLLO,c&,,q/.BC		$$R(		$$R(r   c                 (   d }| j                  | j                   |       d      }| j                  |j                         d       |j	                  d       | j                  |j                         d       | j                  j                  |       y )Nc                     K   ywr   r   r   r   r   r   z8BaseTaskTests.test_task_set_name_pylong.<locals>.notmuch  r   r   ih:rG   	987654321i[	123456789)rK   rF   r]   get_nameset_namerm   r-   r   rp   s      r   test_task_set_name_pylongz'BaseTaskTests.test_task_set_name_pylong  sm    	 MM$))WYYM?{3	

9{3		$$Q'r   c                     d }| j                  | j                   |             }|j                  dh       | j                  |j	                         d       | j                  j                  |       y )Nc                     K   ywr   r   r   r   r   r   z:BaseTaskTests.test_task_repr_name_not_str.<locals>.notmuch  r   r      z{6})rK   rF   r  r]   r  rm   r  s      r   test_task_repr_name_not_strz)BaseTaskTests.test_task_repr_name_not_str  sT    	 MM$))WY/	

A3u-		$$Q'r   c           	         | j                   j                  d       d }| j                  | j                         }| j                  | j                    ||            }t	        j
                  | j                          | j                  t        |      dt        j                  t        |            z         |j                  d        | j                   j                  |       y )NFc                 "   K   |  d {   S 7 wr   r   r   s    r   wait_forz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_for  s     99   z<Task .* wait_for=%s>)rF   r   rQ   rK   r   run_brieflyr   r   r   escaper   rm   )r-   r  r   ra   s       r   test_task_repr_wait_forz%BaseTaskTests.test_task_repr_wait_for  s    		E"	 oodii(}}TYY6tyy)d0299T#Y3GG	I 	t		$$T*r   c                     fd}d d  |       }| j                  | j                  j                  |      d       y )Nc                  Z   K            d {   }          d {   }| |z   S 7 7 wr   r   )r   binner1inner2s     r   outerz-BaseTaskTests.test_task_basics.<locals>.outer  s+     hAhAQ3J s   +'+)
++c                     K   ywr8   r   r   r   r   r  z.BaseTaskTests.test_task_basics.<locals>.inner1  	     r   c                     K   yw)Ni  r   r   r   r   r  z.BaseTaskTests.test_task_basics.<locals>.inner2  r   r   i  )r]   rF   rm   )r-   r  rp   r  r  s      @@r   test_task_basicszBaseTaskTests.test_task_basics  s:    	
		 G55a8$?r   c                     t        j                          j                         d  fd}	  j                   |             }j	                  |       j                          y # j                          w xY w)Nc                     K   t         wr   r   r   r   r   raise_errorzFBaseTaskTests.test_exception_chaining_after_await.<locals>.raise_error  s        	c                  ~  K   	 t        d      # t        $ r} j                                }	 | d {  7   ns# t        $ rb} j                  t	        |       t
               | j                  }j                  t	        |      |j                  ft         df       Y d } ~ nd } ~ ww xY wY d } ~ y Y d } ~ y d } ~ ww xY ww)N   )r*  )KeyError	ExceptionrK   r]   r#   r   r"   r$   )r%   ra   chainedrF   r'  r-   s      r   r   z>BaseTaskTests.test_exception_chaining_after_await.<locals>.run  s     
*qk! *}}T;=9*JJ  *$$T#Y
;!ooG$$d7mW\\%B!4(* ***	 *sT   B= 	B:B5=9=B5	B(AB#B5#B((B5+
B=5B::B=)r   r   r   rK   rm   r@   )r-   r   ra   rF   r'  s   `  @@r   #test_exception_chaining_after_awaitz1BaseTaskTests.test_exception_chaining_after_await  sc     %%'D!		*	==su-D##D)JJLDJJLs   (A- -A?c                 0    d t        j                          j                         d  fd}	  j                   |             }j	                  |       j                           j                  d       y # j                          w xY w)Nc                    K   | wr   r   )r%   s    r   process_exczYBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.process_exc  s     I   c                     K   	 t        d      # t        $ r_} j                   |             }	 | d {  7   n0# t        $ r} | | j                  u d | _        Y d } ~ nd } ~ ww xY wY d } ~ y Y d } ~ y d } ~ ww xY ww)Nr   )r+  r,  rK   BaseExceptionr"   )r%   ra   	has_cyclerF   r1  r-   s     r   r   zQBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.run  sw     	+sm# +}}T;s+;<+JJ$ +!$!7I&*COO+ $	 +sS   A; 	A8A3>:>A3	A&A!A3!A&&A3)
A;3A88A;F)r   r   r   rK   rm   r@   r]   )r-   r   ra   r5  rF   r1  s   `  @@@r   6test_exception_chaining_after_await_with_context_cyclezDBaseTaskTests.test_exception_chaining_after_await_with_context_cycle  s{     	%%'D!		+	==su-D##D)JJLE* JJLs   (B Bc                    t        j                         }d }	 | j                  | |             }| j                  |j	                                | j                  dt        |             | j                  |j                                | j                  |j	                                | j                  dt        |             | j                  |j                                | j                  t         j                        5  |j                  |       d d d        |j                          y # 1 sw Y   xY w# |j                          w xY w)Nc                  J   K   t        j                  d       d {    y 7 wN
   r   r   r   r   r   ra   z+BaseTaskTests.test_cancelling.<locals>.task       --###   #!# cancelling )r   r   rK   assertFalse
cancellingassertNotInr   rh   rj   assertInrk   rl   rm   r@   r-   rF   ra   rp   s       r   test_cancellingzBaseTaskTests.test_cancelling  s    %%'	$	dDF+AQ\\^,^T!W5OOAHHJ'OOALLN+MM.$q'2
 OOAHHJ'""7#9#9: +''*+ JJL+ + JJLs$   C(D8 D,D8 ,D51D8 8E
c                 @   t        j                         }d }	 | j                  | |             }|j                  t        j                  d             | j                  |j                                | j                  dt        |             | j                  |j                         d       | j                  |j                                |j                  t        j                  d             | j                  dt        |             | j                  |j                         d       | j                  |j                                | j                  |j                                | j                  |j                         d       | j                  |j                                | j                  t         j                        5  |j                  |       d d d        | j                  |j                                | j                  |j!                                |j#                          | j                  |j                                | j                  |j!                                |j%                          y # 1 sw Y   xY w# |j%                          w xY w)Nc                     K   	 t        j                  d       d {    y 7 # t         j                  $ rC t        j                         j	                          t        j                  d       d {  7   Y y w xY wwr9  )r   r   rl   current_taskuncancelr   r   r   ra   z/BaseTaskTests.test_uncancel_basic.<locals>.task  sX     (mmB''')) ($$&//1mmB'''(s>   A=$ "$ A=$ AA:1A42A:7A=9A::A={Gz?r>  r   r   )r   r   rK   rm   r   rh   rj   rB  r   r]   r@  r?  	cancelledrA  rk   rl   r   rH  r@   rC  s       r   test_uncancel_basicz!BaseTaskTests.test_uncancel_basic  s   %%'	(	dDF+A##GMM$$78 OOAHHJ'MM.$q'2Q\\^Q/Q[[]+##GMM$$78 ^T!W5Q\\^Q/Q[[]+ OOAHHJ'Q\\^Q/Q[[]+""7#9#9: +''*+OOAKKM*OOAFFH% JJLOOAKKM*OOAFFH%JJL+ + JJLs%   F/J I?BJ ?JJ Jc                     t        j                         }dt        dt        f fd}	  j                  | |dd            }|j	                  |      \  }}} j                  |        j                  |        j                  |        j                  |j                         d        j                  | |dd            }|j	                  |      \  }}} j                  |        j                  |        j                  |        j                  |j                         d       |j                          y # |j                          w xY w)Nr   timeoutc                   K   t        j                         j                         }dd}d}fd}|j                  ||      }	 	 t        j                  |        d {    d}|j                          rFj                         dk(  r3t        t        j                               t         j                  u rt        d}t        j                  d       d {    ||fS 7 # |j                          rHj                         dk(  r4t        t        j                               t         j                  u rt        w w w xY w# t        $ r 	j                         Y w xY w7 w)NFc                  *    d j                          y NTrj   )ra   	timed_outs   r   
on_timeoutzdBaseTaskTests.test_uncancel_structured_blocks.<locals>.make_request_with_timeout.<locals>.on_timeout]  s     	r   Tr   )r   rG  r   
call_laterr   rj   rH  r#   sysrn   rl   TimeoutErrorrh   )
r   rM  rF   structured_block_finishedouter_code_reachedrS  timeout_handlera   rR  r-   s
          @@r   make_request_with_timeoutzPBaseTaskTests.test_uncancel_structured_blocks.<locals>.make_request_with_timeoutU  sK    '')D==?DI(-%!&
 "__WjAN++(+!--...04-"))+! MMOq0 1W5K5KK> +*
 "&--"""79KKK[ / #))+! MMOq0 1W5K5KK> +*? L 1 "D   +	*+
 #s\   AE(
C' "C%#C' )AE E(E&	E(%C' 'AEE E# E("E##E(      $@皙?)r   rM  r   )
r   r   floatrK   rm   rh   r?  r]   r@  r@   )r-   rF   rZ  r  rR  rW  rX  r  s   `       r   test_uncancel_structured_blocksz-BaseTaskTests.test_uncancel_structured_blocksE  s0    %%'>	Le >	Le >	L@	t%>TSV%WXB''+ EI02D OOI&67OO./ R]]_a0 t%>QPT%UVB''+ EI02D Y'OO56OO./R]]_a0JJLDJJLs   DD> >Ec                      fd} j                  |      }d } j                  | |             }|j                  |j                          j	                  t
        j                        5  |j                  |       d d d         j                  |j                                 j                  |j                                 j                  |j                                y # 1 sw Y   gxY w)Nc               3   B   K   d } j                  d|        d y wNr[  r   assertAlmostEqualwhenr-   s    r   r   z&BaseTaskTests.test_cancel.<locals>.gen  !     D""4.G   c                  J   K   t        j                  d       d {    y7 w)Nr[     r;  r   r   r   ra   z'BaseTaskTests.test_cancel.<locals>.task  s      --%%% &r=  )rW   rK   	call_soonrj   rk   r   rl   rm   rh   r   rJ  r?  )r-   r   rF   ra   rp   s   `    r   test_cancelzBaseTaskTests.test_cancel  s    	
 !!#&	 MM$'qxx w556 	'##A&	'!&$		' 	's   ,C$$C-c                 <   	
 g d}|D ]  \  } j                        5  t        j                         	 j                  	       d 
	 
fd} j	                  	 |             } j                  t        j                        5 }	j                  |       d d d        j                  } j                  |j                  |       t        |      } j                  |t        j                  |df       d d d         y # 1 sw Y   jxY w# 1 sw Y   xY w)N)r   r   )r   r   )rg   rn  )   ro  cancel_argsc                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r   zHBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.sleep       !--+++r=  c                     K   j                                } t        j                  d       d {     | j                    t        j                  | g       d {   \  }}| j                          y 7 E7 wNr   )rK   r   r   rj   waitr   ra   r   pendingrr  rF   r-   r   s      r   rJ   zGBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.coro  sb     ==uw7D!--***DKK-*1,,v*>$>MD'KKM +$>!   0A=A9,A= A;!A=;A=r   subTestr   r   r   rK   rk   rl   rm   rn   r]   r$   r(   r-   casesexpected_argsrJ   ra   rq   r%   actualrr  rF   r   s   `       @@@r   +test_cancel_with_message_then_future_resultz9BaseTaskTests.test_cancel_with_message_then_future_result  s
   
 +0 	@&K+6 @--/##D)," }}T462&&w'='=> 2"++D12ll  =9.s3  ++]A>@+@ @	@ 2 2@ @%   A'D
DADD
DD	c                 <   	
 g d}|D ]  \  } j                        5  t        j                         	 j                  	       d 
	 
fd} j	                  	 |             } j                  t        j                        5 }	j                  |       d d d        j                  } j                  |j                  |       t        |      } j                  |t        j                  |df       d d d         y # 1 sw Y   jxY w# 1 sw Y   xY w)Nrm  rq  c                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r   zKBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.sleep  rt  r=  c                     K   j                                } t        j                  d       d {     | j                    t        j                  | g       d {   \  }}| j                          y 7 E7 wrv  rK   r   r   rj   rw  rn   rx  s      r   rJ   zJBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.coro  sc     ==uw7D!--***DKK-*1,,v*>$>MD'NN$ +$>rz  r   r{  r}  s   `       @@@r   .test_cancel_with_message_then_future_exceptionz<BaseTaskTests.test_cancel_with_message_then_future_exception  s
   
 +0 	@&K+6 @--/##D),% }}T462&&w'='=> 2"++D12ll  =9.s3  ++]A>@+@ @	@ 2 2@ @r  c                     t        j                          j                         j                         fd fd} j	                   |             } j                  t              5 }j                  |       d d d        j                  } j                  |j                  d       t        |      } j                  |t         j                  ddf       y # 1 sw Y   `xY w)Nc                  n   K    j                  d        t        j                  d       d {    y 7 wr9  )r   r   r   r   s   r   r   z@BaseTaskTests.test_cancellation_exception_context.<locals>.sleep  s%     NN4 --###s   *535c                     K   j                                }  d {    j                  | j                  d       	 |  d {    y 7 ,7 # t        j                  $ r}t        d      |d }~ww xY ww)NmsgrJ  )rK   rj  rj   r   rl   r   )
inner_taskexr   rF   r-   r   s     r   rJ   z?BaseTaskTests.test_cancellation_exception_context.<locals>.coro  so     tUW5JIINN:,,e46     !)) 6 -256sE   A8A A8A AA A8A A5$A00A55A8)rJ  )r  r   )r   r   r   rY   rK   rk   r   rm   rn   r]   r$   r(   rl   )	r-   rJ   ra   rq   r%   r  r   rF   r   s	   `     @@@r   #test_cancellation_exception_contextz1BaseTaskTests.test_cancellation_exception_context  s    %%'D!  "	$	6 }}T46*z* 	*b##D)	*ll>2&s+##Xq1	3	* 	*s   3C$$C-c                     t        j                          j                         d  fd} j                   |             } j	                  t         j
                        5 }j                  |       d d d        j                  } j                  |j                  d       t        |      } j                  |t         j
                  ddf       y # 1 sw Y   `xY w)Nc                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r   zJBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.sleep'  r<  r=  c                     K   j                                } | j                  d       t        j                  | g       d {   \  }}| j	                          y 7 w)Nrg   )rK   rj   r   rw  rn   )ra   r   ry  rF   r-   r   s      r   rJ   zIBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.coro*  sK     ==uw/DKK%"),,v"66MD'NN 7s   AA AA rn  r   )r   r   r   rK   rk   rl   rm   rn   r]   r$   r(   )r-   rJ   ra   rq   r%   r  rF   r   s   `     @@r   -test_cancel_with_message_before_starting_taskz;BaseTaskTests.test_cancel_with_message_before_starting_task#  s    %%'D!	$	 }}T46*w556 	*"##D)	*ll?3&s+##_a8	:	* 	*s   )CC#c                    d }| j                  | j                   |             }t        j                  | j                         |j	                          | j                  t        j                  | j                  j                  |       | j                  |j                                | j                  |j                                | j                  |j	                                y )Nc                     K   t        j                  d       d {    t        j                  d       d {    y7 "7 w)Nr   ri  r;  r   r   r   ra   z-BaseTaskTests.test_cancel_yield.<locals>.task<  s6     --"""--""" #"   A>AA A A)rK   rF   r   r  rj   rk   r   rl   rm   rh   r   rJ  r?  )r-   ra   rp   s      r   test_cancel_yieldzBaseTaskTests.test_cancel_yield;  s    	
 MM$))TV,tyy)	
""DII$@$@!	E!&$r   c                     | j                  | j                        fd}| j                  | j                   |             }t        j                  | j                         j                          | j                  t        j                        5  | j                  j                  |       d d d        | j                  j                                | j                  |j                                y # 1 sw Y   HxY w)Nc                  &   K     d {    y7 wNri  r   r   s   r   ra   z4BaseTaskTests.test_cancel_inner_future.<locals>.taskM       GG r   )rQ   rF   rK   r   r  rj   rk   r   rl   rm   rh   rJ  r-   ra   rp   r   s      @r   test_cancel_inner_futurez&BaseTaskTests.test_cancel_inner_futureJ  s    OODII&	 MM$))TV,tyy)	
w556 	,II((+	,&&	, 	,s   C44C=c                 ^   | j                  | j                        fd}| j                  | j                   |             }t        j                  | j                         j                          |j                          | j                  t        j                        5  | j                  j                  |       d d d        | j                  |j                                | j                  j                                | j                  |j                                y # 1 sw Y   gxY w)Nc                  &   K     d {    y7 wr  r   r  s   r   ra   zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task\  r  r   )rQ   rF   rK   r   r  rj   rk   r   rl   rm   rh   r   rJ  r  s      @r   &test_cancel_both_task_and_inner_futurez4BaseTaskTests.test_cancel_both_task_and_inner_futureY  s    OODII&	 MM$))TV,tyy)	
	
w556 	,II((+	, 	!&&	, 	,s   !D##D,c                    | j                  | j                        | j                  | j                        fd}| j                  | j                   |             }t        j                  | j                         | j                  |j                         j                  d        t        j                  | j                         | j                  |j                         |j                          | j                  j                                | j                  j                  |      }| j                  |d       | j                  |j                                y )Nc                  r   K     d {    	  d {    y 7 7 # t         j                  $ r Y yw xY wwr8   r   rl   )fut1fut2s   r   ra   z5BaseTaskTests.test_cancel_task_catching.<locals>.taskq  s:     JJ

 )) s0   77  7 4747r9   rQ   rF   rK   r   r  r   _fut_waiterr   rj   rh   rJ  rm   r]   r?  )r-   ra   rp   resr  r  s       @@r   test_cancel_task_catchingz'BaseTaskTests.test_cancel_task_catchingm  s    tyy)tyy)	 MM$))TV,tyy)ammT*tyy)ammT*	
()ii**1-b!'r   c                    | j                  | j                        | j                  | j                        | j                  | j                        fd}| j                  | j                   |             }t        j                  | j                         | j                  |j                         j                  d        t        j                  | j                         | j                  |j                         |j                          | j                  j                                t        j                  | j                         | j                  |j                         j                  d       | j                  j                  |      }| j                  |d       | j                  j                                | j                  |j                                y )Nc                     K    d {    	  d {     d {   } | S 7 7 # t         j                  $ r Y %w xY w7 #wr   r  )r  r  r  fut3s    r   ra   z5BaseTaskTests.test_cancel_task_ignoring.<locals>.task  sL     JJ

 *CJ )) s?   A%A) ') AAA) ?A?Ar9   r  )r-   ra   rp   r  r  r  r  s       @@@r   test_cancel_task_ignoringz'BaseTaskTests.test_cancel_task_ignoring  sC   tyy)tyy)tyy)	 MM$))TV,tyy)ammT*tyy)ammT*	
()tyy)ammT*ii**1-b!)*'r   c                     t        j                         } j                  |        fd} j                  | |              j	                  j                                 j                  t         j                  |j                          j                  j                                 j                  j                                 j	                  j                          j	                  j                                y )Nc                     K   j                           j                  j                         t        j                  d       d {    y7 w)Nr   ri  )rj   rh   _must_cancelr   r   r-   rp   s   r   ra   z4BaseTaskTests.test_cancel_current_task.<locals>.task  s:     HHJOOANN+--$$$ %s   AAAAr   r   r   rK   r?  rJ  rk   rl   rm   rh   r   r  rj   rC  s   `  @r   test_cancel_current_taskz&BaseTaskTests.test_cancel_current_task  s    %%'D!	 MM$''""D$;$;Q	@!&($r   c                     t        j                         } j                  |        fd} j                  | |              j	                  j                                 j                  t         j                  |j                          j                  j                                 j                  j                                 j	                  j                          j	                  j                                y)z+coroutine end right after task is cancelledc                  d   K   j                           j                  j                         ywr  )rj   rh   r  r  s   r   ra   z.BaseTaskTests.test_cancel_at_end.<locals>.task  s#     HHJOOANN+s   -0Nr  rC  s   `  @r   test_cancel_at_endz BaseTaskTests.test_cancel_at_end  s    %%'D!	
 MM$''""D$;$;Q	@!&($r   c                     t        j                          j                  fd       d x j                        fd fd} j	                   |              j                  t         j                        5  j                         d d d         j                  j                                 j                  j                                 j                  j                                y # 1 sw Y   gxY w)Nc                  $     j                         S r   )r@   rN   s   r   rT   z8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>  s    

 r   c                  &   K     d {    y 7 wr   r   r   s   r   nestedz6BaseTaskTests.test_cancel_awaited_task.<locals>.nested       IIr   c                     K   j                                 t        j                  d       d {    j                           d {    y 7 7 wrv  rK   r   r   rj   )rF   r  nested_taskr-   ra   s   r   rJ   z4BaseTaskTests.test_cancel_awaited_task.<locals>.coro  sN      --fh7K--""" KKM  # !   0AAAAAA)
r   r   r   rQ   rK   rk   rl   rm   rh   rJ  )r-   rJ   r   rF   r  r  ra   s   ` @@@@@r   test_cancel_awaited_taskz&BaseTaskTests.test_cancel_awaited_task  s     %%',-!!{ood#	
	 
	 }}T46*w556 	*##D)	* 	()--/0(	* 	*s   D  D	c                 0    ||vrt        d|d| d      y )Nztext z not found in:
>>>z<<<r   )r-   textsubstrs      r   assert_text_containsz"BaseTaskTests.assert_text_contains  s*    vj0CD6MNN r   c                 ~    t        j                          j                         d  fd} j                   |             }	 j	                  |        j                  d       y # t         j                  $ r; t        j                         } j                  |d        j                  |d       Y y w xY w)Nc                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r  zEBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.nested       --###r=  c                     K   j                                } t        j                  d       d {    | j                          |  d {    y 7 7 wrv  r  )ra   rF   r  r-   s    r   rJ   zCBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.coro  sD     ==vx0D--"""KKMJJ #r  CancelledError did not occurawait asyncio.sleep(10)zawait task  # search target
r   r   r   rK   rm   failrl   	traceback
format_excr  r-   rJ   ra   r   rF   r  s   `   @@r   'test_cancel_traceback_for_future_resultz5BaseTaskTests.test_cancel_traceback_for_future_result  s     %%'D!	$	 }}T46*	6##D) II45 %% 	I%%'B%%b*CD%%b*GH		I   A. .AB<;B<c                 ~    t        j                          j                         d  fd} j                   |             }	 j	                  |        j                  d       y # t         j                  $ r; t        j                         } j                  |d        j                  |d       Y y w xY w)Nc                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r  zHBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.nested  r  r=  c                     K   j                                } t        j                  d       d {    | j                          t        j                  | g       d {   \  }}| j                          y 7 F7 wrv  r  )ra   r   ry  rF   r  r-   s      r   rJ   zFBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.coro  s^     ==vx0D--"""KKM"),,v"66MD'NN #6s!   0A>A:-A>!A<"A><A>r  r  z!task.exception()  # search targetr  r  s   `   @@r   *test_cancel_traceback_for_future_exceptionz8BaseTaskTests.test_cancel_traceback_for_future_exception  s     %%'D!	$	 }}T46*		6##D) II45 %% 	5%%'B%%b*CD%%b35		5r  c                 L     fd} j                  |      dfd} j                   |             } j                  t              5 }j	                  |       d d d         j                  t        j                        d        j                  |j                                 j                  d        j                  dj                                |j                           j                  t        j                  j                  |       y # 1 sw Y   xY w)Nc               3      K   d } j                  d|        d} j                  d|        d} j                  d|        d y w)Nr\  皙?333333?rb  rd  s    r   r   z:BaseTaskTests.test_stop_while_run_in_complete.<locals>.gen+  sO     D""3-9D""3-9D""3-I   AAr   c                     K   dk  r>t        j                  d       d {    dz  dk(  r j                          dk  r=y y 7 &w)Nr:  r\  r      )r   r   stop)rF   xs   r   ra   z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.task8  sE     b&mmC(((Q6IIK	 b&(s   A
A#A
A
z+Event loop stopped before Future completed.r  r  )rW   rK   rk   r   rm   r]   r\   rn   r?  r   rc  timerj   r   rl   )r-   r   ra   rp   rq   rF   r  s   `    @@r   test_stop_while_run_in_completez-BaseTaskTests.test_stop_while_run_in_complete)  s    	 !!#&	  MM$'|, 	'##A&	'R\\*F	H"AsDIIK0	
'00$2I2I1M	' 	's   DD#c                     d }| j                  | j                   |             }| j                  t        d      5  d|_        d d d        | j                  j                  |       y # 1 sw Y   %xY w)Nc                     K   y wr   r   r   r   r   rJ   z.BaseTaskTests.test_log_traceback.<locals>.coroM  re   r   zcan only be set to FalseT)rK   rF   r   r   _log_tracebackrm   r-   rJ   ra   s      r   test_log_tracebackz BaseTaskTests.test_log_tracebackL  s_    	 }}TYY/##J0JK 	'"&D	'		$$T*	' 	's   A''A0c                 8     fd} j                  |      } j                  |t        j                  d             j                  |t        j                  d             fd}|j	                   j                  | |                   } j                  |d        j                  d|j                                |j	                   j                  | |                   } j                  d|j                                 j                  |d       y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y wNr\  r   333333?rb  rd  s    r   r   z$BaseTaskTests.test_wait.<locals>.genW  8     D""3-7D""4.J   25r\  r  c                     K   t        j                  g       d {   \  } }j                  | t        g             j                  |t                      y7 ?wr8   r   rw  r]   setr   ry  r   r  r-   s     r   r   z$BaseTaskTests.test_wait.<locals>.fooc  sR     "),,1v"66MD'T31v;/Wce, 7s   A AA A r9   rW   rK   r   r   rm   r]   rc  r  r-   r   rF   r   r  r   r  s   `    @@r   	test_waitzBaseTaskTests.test_waitU  s    	 !!#&MM$c 23MM$d 34	 %%dmmD#%&@Ab!tTYY[1 %%dmmD#%&@AtTYY[1b!r   c                    d }| j                   j                   |d            }| j                  | j                   t        j                  ||| j                   j                   |d            g            }| j                   j                  |      \  }}| j                  |       | j                  t        d |D              ddh       y )Nc                    K   | S wr   r   ss    r   rJ   z:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.corot       Hr2  r   spamc              3   <   K   | ]  }|j                           y wr   r   .0r   s     r   	<genexpr>z?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>~  s     6AQXXZ6   )	rF   create_taskrK   r   rw  rm   r?  r]   r  )r-   rJ   cra   r   ry  s         r   test_wait_duplicate_coroutinesz,BaseTaskTests.test_wait_duplicate_coroutinesr  s    	II!!$v,/}}IILL!Q		 5 5d6l CDEG 		44T:g!6668HIr   c                 `   | j                  t        | j                  j                  t	        j
                  t                            t	        j                  d      }t	        j
                  |gd      }| j                  t        | j                  j                  |       |j                          y )Nr[  r   return_when)	rk   r   rF   rm   r   rw  r  r   r@   )r-   
sleep_coro	wait_coros      r   test_wait_errorszBaseTaskTests.test_wait_errors  s}    		44LL	!
 ]]4(
LL*2>	*))66		C 	r   c                      fd} j                  |      } j                  |t        j                  d            } j                  |t        j                  d            } j                  |t        j                  ||gt        j
                              }|j                  |      \  }} j                  |h|        j                  |h|        j                  |j                                 j                  |j                                 j                  |j                                 j                  d|j                                |j                  d       |j                  t        j                  ||g             y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y w)Nr[  r   r\  rb  rd  s    r   r   z4BaseTaskTests.test_wait_first_completed.<locals>.gen  s8     D""4.7D""3-Ir  r[  r\  r  r:  )rW   rK   r   r   rw  FIRST_COMPLETEDrm   r]   r?  r   rh   assertIsNoner   rc  r  advance_time)r-   r   rF   r   r  ra   r   ry  s   `       r   test_wait_first_completedz'BaseTaskTests.test_wait_first_completed  s+   	 !!#&MM$d 34MM$c 23}}LL!QW-D-DEG //5g!d#!g&"!!((*%sDIIK0 	"aV 45r   c                 r   d }d }| j                  | j                   |             }| j                  | j                   |             }| j                  | j                  t        j                  ||gt        j                              }| j                  j                  |      \  }}| j                  ||h|       | j                  |j                                | j                  |j                                | j                  |j                                | j                  |j                                y )Nc                  J   K   t        j                  d       d {    y 7 wrv  r;  r   r   r   coro1z2BaseTaskTests.test_wait_really_done.<locals>.coro1  s     --"""r=  c                     K   t        j                  d       d {    t        j                  d       d {    y 7 "7 wrv  r;  r   r   r   coro2z2BaseTaskTests.test_wait_really_done.<locals>.coro2  s3     --"""--""" #"r  r  )rK   rF   r   rw  r
  rm   r]   rh   r   r  r   )r-   r  r  r   r  ra   r   ry  s           r   test_wait_really_donez#BaseTaskTests.test_wait_really_done  s    	#	# MM$))UW-MM$))UW-}}IILL!QW-D-DEG 		44T:g!Q&!!((*%!!((*%r   c                 @     fd} j                  |      } j                  |t        j                  d            }d } j                  | |             } j                  |t        j                  ||gt        j
                              }|j                  |      \  }} j                  |h|        j                  |h|        j                  d|j                                |j                  d       |j                  t        j                  ||g             y )Nc               3   B   K   d } j                  d|        d y wra  rb  rd  s    r   r   z4BaseTaskTests.test_wait_first_exception.<locals>.gen  rf  rg  r[  c                      K   t        d      w)Nerr)ZeroDivisionErrorr   r   r   r%   z4BaseTaskTests.test_wait_first_exception.<locals>.exc  s     #E**s   r  r   r:  rW   rK   r   r   rw  FIRST_EXCEPTIONrm   r]   rc  r  r  	r-   r   rF   r   r%   r  ra   r   ry  s	   `        r   test_wait_first_exceptionz'BaseTaskTests.test_wait_first_exception  s    	
 !!#& MM$d 34	+ MM$&}}LL!QW-D-DEG //5g!d#!g&q$))+. 	"aV 45r   c                       fd} j                  |      } j                  |t        j                  d            }d } j                  | |             }t        j                  ||gt        j
                        }|j                  |      \  }} j                  |h|        j                  |h|        j                  d|j                                |j                  d       |j                  t        j                  ||g             y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y w)Nr[  r   rI  rb  rd  s    r   r   z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.gen  8     D""4.7D""4.Jr  r[  c                  ^   K   t        j                  d       d {    t        d      7 w)NrI  r  r   r   r  r   r   r   r%   z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.exc  s(     --%%%#E** &   -+-r  rI  r:  r  r  s	   `        r   !test_wait_first_exception_in_waitz/BaseTaskTests.test_wait_first_exception_in_wait  s    	 !!#& MM$d 34	+ MM$&||QF0G0GH//5g!d#!g&tTYY[1 	"aV 45r   c                      fd} j                  |      } j                  |t        j                  d            d } j                  | |              fd}|j	                   j                  | |                     j                  d|j                                |j	                   j                  | |                     j                  d|j                                y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y wr  rb  rd  s    r   r   z3BaseTaskTests.test_wait_with_exception.<locals>.gen  r  r  r\  c                  ^   K   t        j                  d       d {    t        d      7 w)Nr  reallyr!  r   r   r   sleeperz7BaseTaskTests.test_wait_with_exception.<locals>.sleeper
  s(     --%%%#H-- &r"  c                    K   t        j                  g       d {   \  } }j                  t        |       d       j                  |t	                      t	        d | D              }j                  t        |      d       y 7 jw)Nr  c              3   B   K   | ]  }|j                         |  y wr   )rn   r  s     r   r  zFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>  s     FqAKKM,EFs   r   )r   rw  r]   lenr  )r   ry  errorsr   r  r-   s      r   r   z3BaseTaskTests.test_wait_with_exception.<locals>.foo  so     "),,1v"66MD'SY*Wce,FDFFFS[!,	 7s   BB	A+Br  )rW   rK   r   r   rm   rc  r  )r-   r   rF   r(  r   r   r  s   `    @@r   test_wait_with_exceptionz&BaseTaskTests.test_wait_with_exception  s    	 !!#&MM$c 23	. MM$	*	- 	dCE :;tTYY[1dCE :;tTYY[1r   c                      fd} j                  |      } j                  |t        j                  d             j                  |t        j                  d             fd}|j	                   j                  | |                     j                  d|j                                |j                  d       |j	                  t        j                  g             y )Nc               3      K   d } j                  d|        d} j                  d|        d} j                  d|        d y w)Nr\  r   r  )\(?rb  rd  s    r   r   z1BaseTaskTests.test_wait_with_timeout.<locals>.gen  sO     D""3-7D""4.7D""4.Jr  r\  r  c                     K   t        j                  gd       d {   \  } }j                  | t        g             j                  |t        g             y 7 @w)Nr0  rM  r  r  s     r   r   z1BaseTaskTests.test_wait_with_timeout.<locals>.foo-  sT     "),,1vt"DDMD'T3s8,Wc1#h/ Es   A#A!AA#r0  r:  )	rW   rK   r   r   rm   rc  r  r  rw  )r-   r   rF   r   r   r  s   `   @@r   test_wait_with_timeoutz$BaseTaskTests.test_wait_with_timeout  s    	 !!#&MM$c 23MM$d 34	0
 	dCE :;tTYY[1 	"aV 45r   c                 :     fd} j                  |      } j                  |t        j                  d            } j                  |t        j                  d            }|j	                  t        j
                  ||gd            \  }} j                  |t        |g              j                  |t        |g              j                  d|j                                |j                  d       |j	                  t        j
                  ||g             y )Nc               3      K   d } j                  d|        d} j                  d|        d} j                  d|        d y wr  rb  rd  s    r   r   z8BaseTaskTests.test_wait_concurrent_complete.<locals>.gen;  sO     D""3-7D""4.7D""3-Ir  r\  r  r2  r:  )rW   rK   r   r   rm   rw  r]   r  rc  r  r  )r-   r   rF   r   r  r   ry  s   `      r   test_wait_concurrent_completez+BaseTaskTests.test_wait_concurrent_complete9  s    	 !!#&MM$c 23MM$d 34//LL!Q-/g 	sA3x(#qc(+sDIIK0 	"aV 45r   c                      fd} j                  |      } j                  |t        j                  d             j                  |t        j                  d             fd}|j	                   j                  | |                   } j                  |d        j                  d|j                                y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y wr  rb  rd  s    r   r   z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.genV  r  r  r\  r  c                     K   t        j                  t        g             d {   \  } }j                  | t	        g             j                  |t	                      y7 ?wr8   )r   rw  iterr]   r  r  s     r   r   z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.foob  sV     "),,tQF|"<<MD'T31v;/Wce, =s   $A)A'A A)r9   r  r  s   `    @@r    test_wait_with_iterator_of_tasksz.BaseTaskTests.test_wait_with_iterator_of_tasksT  s    	 !!#&MM$c 23MM$d 34	 %%dmmD#%&@Ab!tTYY[1r   c                 j     d  j                          fd}j                   |              y )Nc                    K   | S wr   r   )r   s    r   funcz/BaseTaskTests.test_wait_generator.<locals>.funcn  r  r2  c                  
  K   fdt        d      D        } t        j                  | t        j                         d {   \  }}j	                  t        |      d       j	                  t        |      d       y 7 >w)Nc              3   N   K   | ]  }j                   |              y wr   )rK   )r  ir>  rF   r-   s     r   r  zBBaseTaskTests.test_wait_generator.<locals>.main.<locals>.<genexpr>t  s      EaT]]4a1Es   "%r:  r  r   )r   r   rw  ALL_COMPLETEDr]   r+  )r   r   ry  r>  rF   r-   s      r   mainz/BaseTaskTests.test_wait_generator.<locals>.mains  s`     E59EE"),,u'BWBW"XXMD'SY+S\1- Ys   ?BB?BrW   rm   )r-   rC  r>  rF   s   ` @@r   test_wait_generatorz!BaseTaskTests.test_wait_generatorm  s/    	 !!#	. 	'r   c                   	
 d }| j                  |      	d	_        t               d
	
fd} |dd       |dd       |dd	      fd
}	j                  | j	                  	 |                   }| j                  d	j                                | j                  d|d d v        | j                  d|d d v        | j                  |d   d	       y )Nc               3   ,   K   d d d d y wNr   rI  r   r   r   r   r   z,BaseTaskTests.test_as_completed.<locals>.gen~  s     GGJG   g      ?Fc                    K   t        j                  |        d {    j                  |       sdv rdv rdj                  d       |S 7 4w)Nr   r  TgQ?)r   r   addr  )dtr  	completedrF   time_shifteds     r   r(  z0BaseTaskTests.test_as_completed.<locals>.sleeper  sS     --###MM!C9$4	9I#!!$'H $s   AA5ArI  r   r  r  r   c                     K   g } t        j                  g      D ]  }| j                  | d {           | S 7 wr   r   as_completedappend)valuesr   r   r  r   s     r   r   z,BaseTaskTests.test_as_completed.<locals>.foo  sD     F))1a)4 'Ag&'M &s   .A >
A r  )	rW   slow_callback_durationr  rm   rK   rc  r  rh   r]   )r-   r   r(  r   r  r   r  r   rM  rF   rN  s        @@@@@@r   test_as_completedzBaseTaskTests.test_as_completed|  s    	 !!#&&)#E		 D#D#D#	 %%dmmD#%&@AtTYY[1s2Aw's2Aw'Q%r   c                    d }| j                  |      j                  t        j                  dd            j                  t        j                  dd            fd}j	                  | j                   |                   }| j                  t        |      d|       | j                  |d   d	       | j                  |d
   d   d       | j                  |d
   d
   t        j                         | j                  dj                                j                  d       j	                  t        j                  g             y )Nc               3   ,   K   d  d d d y w)Nr   r\  r   r   r   r   r   z9BaseTaskTests.test_as_completed_with_timeout.<locals>.gen  s     GGIrI  r\  r   r  r  c                    K   g } t        j                  gd      D ]3  }| rj                  d       	 | d {   }| j                  d|f       5 | S 7 # t         j                  $ r}| j                  d|f       Y d }~ed }~ww xY ww)NQ?r2  g{Gz?r   r  )r   rQ  r  rR  rV  )rS  r   r;   r%   r   r  rF   s       r   r   z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foo  s     F))1a&$? ,%%d+,AMM1a&), M	  ++ ,MM1c(++,s>   2BAAABAB	,B?BB		Br  r   )r   r   r   rY  r:  )rW   r  r   r   rm   rK   r]   r+  r_   rV  rc  r  r  rw  )r-   r   r   r  r   r  rF   s       @@@r   test_as_completed_with_timeoutz,BaseTaskTests.test_as_completed_with_timeout  s   	 !!#&W]]345W]]456
	 %%dmmD#%&@AS1c*Q*QA&c!fQi)=)=>tTYY[1 	"aV 45r   c                      d } j                  |      }t        j                  dd       fd}|j                   j	                  | |                    y )Nc               3   $   K   d  d d y wrH  r   r   r   r   r   z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.gen  s     GJ   rI  r   c                     K   t        j                  gd      D ]  } |  d {   }j                  |d         y 7 w)Nr   r2  r   )r   rQ  r]   )r   r;   r   r-   s     r   r   z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo  s?     ))1#q9 )G  C()s   !A >A )rW   r   r   rm   rK   )r-   r   rF   r   r   s   `   @r   %test_as_completed_with_unused_timeoutz3BaseTaskTests.test_as_completed_with_unused_timeout  sL    	
 !!#&MM$$	)
 	dCE :;r   c                      d } j                  |      t        j                  dd      }t        j                  dd      }||h fd}j                   |              y )Nc               3   $   K   d d d y w)Nr   皙?r   r   r   r   r   z9BaseTaskTests.test_as_completed_reverse_wait.<locals>.gen  s     GJGr]  rb  r   r\  r  c                    K   t        t        j                              } j                  t	        |       d       | d    d {   }j                  |d       j                  dj                                j                  d       | d    d {   }j                  |d       j                  dj                                y 7 7 9w)Nr  r   r   rb  r   r  r\  )listr   rQ  r]   r+  rc  r  r  )futsr  yfsrF   r-   s      r   r   z:BaseTaskTests.test_as_completed_reverse_wait.<locals>.test  s     ,,R01DSY*1gAQ$""45d#1gAQ$""45  s%   ACCACC8CC)rW   r   r   rm   )r-   r   r   r  r   rg  rF   s   `    @@r   test_as_completed_reverse_waitz,BaseTaskTests.test_as_completed_reverse_wait  sZ    	
 !!#&MM$$MM$$V
	6 	'r   c                       fd}t        j                  dd      }t        j                  dd      }||h fd} j                  |      }|j                   |              y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y w)Nrb  r   rb  rd  s    r   r   z7BaseTaskTests.test_as_completed_concurrent.<locals>.gen  r  r  rb  r   r  c                  X  K   t        t        j                              } j                  t	        |       d       t        j
                  | D cg c]  }t        j                  |       c}       d {   \  }}j                  t        d |D              ddh       y c c}w 7 1w)Nr  c              3   <   K   | ]  }|j                           y wr   r   r  s     r   r  zKBaseTaskTests.test_as_completed_concurrent.<locals>.test.<locals>.<genexpr>  s      : :r  r   r  )rd  r   rQ  r]   r+  rw  r   r  )re  r   r   ry  rg  r-   s       r   r   z8BaseTaskTests.test_as_completed_concurrent.<locals>.test  s     ,,R01DSY*"),,7;<&&s+<# MD' S :T ::S#JG =s   AB*B#,
B*6B(72B*)r   r   rW   rm   )r-   r   r   r  r   rF   rg  s   `     @r   test_as_completed_concurrentz*BaseTaskTests.test_as_completed_concurrent  s[    	 MM$$MM$$V	H !!#&'r   c                    d fd}| j                  | j                   |             }| j                  j                  |       |j                         }| j	                  t        |      ddh       | j	                  t        |      d       y )Nc                    K   | S wr   r   r  s    r   rJ   zBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coro  r  r2  c                     K   g }  d      }t        j                  || d      g      D ]  }| j                  | d {           | S 7 w)Nhamr  rP  )r   r   r   rJ   s      r   r   zDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runner  sR     FUA))1af*>? 'Ag&'M &s   <AA
 Arq  r  r  )rK   rF   rm   r   r]   r  r+  )r-   r   r   r   rJ   s       @r   &test_as_completed_duplicate_coroutinesz4BaseTaskTests.test_as_completed_duplicate_coroutines  sn    		 mmDIIvx0		$$S)Vufo6Va(r   c                     d } |       }| j                  |j                         t        j                  |g      }| j	                  t
        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nc                     K   ywr8   r   r   r   r   rJ   zDBaseTaskTests.test_as_completed_coroutine_without_loop.<locals>.coro  r!  r   r   )r   r@   r   rQ  r   r   rd  )r-   rJ   r   re  s       r   (test_as_completed_coroutine_without_loopz6BaseTaskTests.test_as_completed_coroutine_without_loop  s_    	 F ##QC(##L2IJ 	J	 	 	s   A''A0c                 f      j                         }d  fd}|j                   |              y )Nc                     K   ywr8   r   r   r   r   rJ   zHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.coro,  r!  r   c                     K   t        t        j                          g            } j                  t	        |       d       j                  | d    d {   d       y 7 
w)Nr   r   r9   )rd  r   rQ  r]   r+  )re  rJ   r-   s    r   r   zHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.test/  sL     ,,dfX67DSY*47]B/]s   AA#A!A#rD  )r-   rF   r   rJ   s   `  @r   ,test_as_completed_coroutine_use_running_loopz:BaseTaskTests.test_as_completed_coroutine_use_running_loop)  s-    !!#		0
 	'r   c                 J     fd} j                  |      }d } j                  | |dd            }|j                  |        j                  |j	                                 j                  |j                         d        j                  d|j                                y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y w)Nrb  r\  rb  rd  s    r   r   z%BaseTaskTests.test_sleep.<locals>.gen8  s8     D""4.:D""3-Jr  c                    K   t        j                  | dz         d {    t        j                  | dz  |       d {   }|S 7 '7 w)Nr  r;  )rL  argr  s      r   r(  z)BaseTaskTests.test_sleep.<locals>.sleeperA  sA     --1%%%bdC00CJ &0s    A
A A
A A
A
r\  yeah)	rW   rK   rm   rh   r   r]   r   rc  r  )r-   r   rF   r(  rp   s   `    r   
test_sleepzBaseTaskTests.test_sleep6  s    	 !!#&	
 MM$V 45"!V,sDIIK0r   c                      fd} j                  |      } j                  |t        j                  dd            }d |j                  fd}||_        t        j                  |        j                  j                         |j                          t        j                  |        j                  j                         y )Nc               3   B   K   d } j                  d|        d y wra  rb  rd  s    r   r   z,BaseTaskTests.test_sleep_cancel.<locals>.genN  rf  rg  r[  r~  c                      | |g| S r   r   )delaycallbackr$   handleorig_call_laters      r   rT  z3BaseTaskTests.test_sleep_cancel.<locals>.call_laterZ  s    $UH<t<FMr   )rW   rK   r   r   rT  r   r  r?  
_cancelledrj   rh   )r-   r   rF   rp   rT  r  r  s   `    @@r   test_sleep_cancelzBaseTaskTests.test_sleep_cancelL  s    	
 !!#&MM$dF ;<//	
 %t$**+	
t$))*r   c                       fd} j                  |      d  fd} |       } j                  j                  |      d        j                  dj	                                y )Nc               3   n   K   d } j                  d|        d} j                  d|        d y w)Nr\  r     rb  rd  s    r   r   z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genj  s8     D""3-7D""4.Ir  c                 J   K   t        j                  |        d {    y 7 wr   r;  )rL  s    r   r   z;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleeps  r<  r=  c                     K   j                   d            } j                  d| j                         	 |  d {    y7 # t        j                  $ r Y yw xY ww)Nr  r\  zslept inrJ  )rK   rT  rj   r   rl   )r(  rF   r-   r   s    r   doitz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitv  sZ     mmD%+6GOOC0" "	 )) #"#s8   5AA AA AA AAAArJ  r\  )rW   r]   rm   rc  r  )r-   r   r  doerrF   r   s   `   @@r   test_task_cancel_sleeping_taskz,BaseTaskTests.test_task_cancel_sleeping_taskh  s^    	 !!#&	$	" v006DsDIIK0r   c                 :   | j                  | j                        fd}| j                  | j                   |             }t        j                  | j                         | j                  |j                         |j                          t        j                  | j                         | j                  t        j                  | j                  j                  |       | j                  |j                         | j                  j                                y )Nc                  &   K     d {    y 7 wr   r   r   s   r   rJ   z:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro  r  r   )rQ   rF   rK   r   r  r   r  rj   rk   r   rl   rm   r  rh   rJ  )r-   rJ   ra   r   s      @r   test_task_cancel_waiter_futurez,BaseTaskTests.test_task_cancel_waiter_future  s    oodii(	 }}TYY/tyy)d&&,tyy)""DII$@$@$	H$**+(r   c                    d } |       }| j                  | j                  |      }| j                  t        d      5  |j	                  d       d d d        | j                  t        d      5  |j                  t                      d d d        | j                  | j                  j                  |      d       y # 1 sw Y   mxY w# 1 sw Y   AxY w)Nc                     K   yw)Nr   r   r   r   r   r   z4BaseTaskTests.test_task_set_methods.<locals>.notmuch  r   r   znot support set_resultr   znot support set_exceptionr   )	rK   rF   r   r   r   set_exceptionr   r]   rm   )r-   r   r   ra   s       r   test_task_set_methodsz#BaseTaskTests.test_task_set_methods  s    	 i}}TYY,##L2JK 	"OOD!	" ##L2MN 	-z|,	- 	II((.		" 	"	- 	-s   B;-C;CCc                 :    G d dt         j                        } || j                        d fd}| j                  | j                   |             }t	        j
                  | j                         | j                  j                         t               }j                  |       t	        j
                  | j                         | j                  |       | j                  |j                                | j                  |j                                y )Nc                   (     e Zd Z fdZ fdZ xZS )2BaseTaskTests.test_step_result_future.<locals>.Futc                 2    d| _         t        |   |i | y NF)cb_addedrU   r   )r-   r$   kwdsrH   s      r   r   z;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__  s     % $/$/r   c                 2    d| _         t        |   |i | y rP  )r  rU   r   r-   r$   kwargsrH   s      r   r   zDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback  s     $)4:6:r   r2   r3   r4   r   r   __classcell__rH   s   @r   Futr    s    0; ;r   r  rN   c                  &   K     d {   y 7 wr   r   )r   r   s   r   wait_for_futurez>BaseTaskTests.test_step_result_future.<locals>.wait_for_future  s     YFYr   )r   rO   rF   rK   r   r  rh   r  objectr   r   r   r  r   )r-   r  r  rp   r  r   r   s        @@r   test_step_result_futurez%BaseTaskTests.test_step_result_future  s    	;'.. 	; tyy!	 MM$))_%67tyy)%hstyy)c6"!!((*%r   c                      fd} j                  |      }d t               fd} j                  | |             }t        j                  |       |j                           j                  |j                                 j                  t        t        j                  |        j                  |j                                 j                  |j                                 j                  |j                                y )Nc               3   B   K   d } j                  d|        d y wra  rb  rd  s    r   r   z;BaseTaskTests.test_baseexception_during_cancel.<locals>.gen  rf  rg  c                  J   K   t        j                  d       d {    y 7 wr9  r;  r   r   r   r(  z?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeper  r<  r=  c                  d   K   	          d {    y 7 # t         j                  $ r  w xY wwr   r  )base_excr(  s   r   notmutchz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch  s.     i)) s    0
  0 -0)rW   
SystemExitrK   r   r  rj   r?  r   rk   rh   rJ  r   rn   )r-   r   rF   r  ra   r  r(  s   `    @@r    test_baseexception_during_cancelz.BaseTaskTests.test_baseexception_during_cancel  s    	
 !!#&	$ <	 }}T8:.t$%*j&<&<dC		$)*dnn&1r   c                    d }| j                  t        j                  |             d }| j                  t        j                  |             d }| j                  t        j                  |             | j                  t        j                  t	        j
                                      | j                  t        j                  t	        j                                      y )Nc                       y r   r   r   r   r   fnz2BaseTaskTests.test_iscoroutinefunction.<locals>.fn  s    r   c               3      K   d  y wr   r   r   r   r   fn1z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1  s	     s   c                     K   y wr   r   r   r   r   fn2z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2  re   r   )r?  r   iscoroutinefunctionrh   r   Mock	AsyncMock)r-   r  r  r  s       r   test_iscoroutinefunctionz&BaseTaskTests.test_iscoroutinefunction  s    	 	44R89	44S9:	33C8944TYY[AB33DNN4DEFr   c                    d }| j                  t        j                  |              |       }| j                  t        j                  |             | j                  j                  |      }| j                  |d       y )Nc                     K   ywNr   r   r   r   r   r>  z;BaseTaskTests.test_coroutine_non_gen_function.<locals>.func  s	     r   r   )rh   r   r  iscoroutinerF   rm   r]   )r-   r>  rJ   r  s       r   test_coroutine_non_gen_functionz-BaseTaskTests.test_coroutine_non_gen_function  sb    	 	33D9:v++D12ii**40f%r   c                 l   | j                  | j                        fd}fd}| j                  | j                   |             }| j                  | j                   |             }| j                  j                  |      }| j	                  |       | j                  |j                                y )Nc                     K    S wr   r   r   s   r   r>  zIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.func  s     Js   c                  0   K    j                  d       y wr  r   r   s   r   rJ   zIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.coro  s     NN6"s   )rQ   rF   rK   rm   r]   r  r   )r-   r>  rJ   r  r  r  r   s         @r   -test_coroutine_non_gen_function_return_futurez;BaseTaskTests.test_coroutine_non_gen_function_return_future  s    oodii(		# ]]499df-]]499df-ii**2.c""))+&r   c                 ^     j                  t        j                   j                                fd} j	                   j                   | j                               j                  j                          j                  t        j                   j                               y )NrN   c                    K   j                  t        j                                j                  t        j                  d              j                  t        j                                y wr   )r   r   rG  )rF   r-   ra   s    r   rJ   z-BaseTaskTests.test_current_task.<locals>.coro  sN     MM'..0$7MM'..t4d;MM'..0$7   A/A2)r  r   rG  rF   rK   rm   r  s   ` @r   test_current_taskzBaseTaskTests.test_current_task  sr    '..DII>?	8 }}TYYTYY8		$$T*'..DII>?r   c                 f     j                  t        j                   j                                j	                   j                         j	                   j                         fd} fd} j                   j                   | j                               j                   j                   | j                               j                  j                  t        j                  f              j                  t        j                   j                               y )NrN   c                    K   j                  t        j                         u         d {    j                  t        j                         u        j                  d       y 7 ;wrP  rh   r   rG  r   )rF   r  r  r-   task1s    r   r  zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1#  sS     OOG002e;<JJOOG002e;<OOD! s   +A,A*<A,c                    K   j                  t        j                         u        j                  d        d {    j                  t        j                         u        y 7 *wrP  r  )rF   r  r  r-   task2s    r   r  zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)  sS     OOG002e;<OOD!JJOOG002e;< s   <A,A* +A,)r  r   rG  rF   rQ   rK   rm   rw  )r-   r  r  r  r  r  r  s   `  @@@@r   )test_current_task_with_interleaving_tasksz7BaseTaskTests.test_current_task_with_interleaving_tasks  s    '..DII>?tyy)tyy)	"	= diityy)9:diityy)9:		$$W\\5%.%AB'..DII>?r   c                     d j                   j                         fdfd}t        j                   |        j                        }t	        j
                   j                         |j                           j                  j                  |        j                  d        j                  j                                y )Nr   c                     K   	  d {    j                  d       y 7 # t        j                  $ r  dz    w xY ww)Nzgot past sleep() in inner()r   )r  r   rl   )proofr-   waiters   r   innerz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.inner=  sG     9
 		78 )) 
s#   A # !# A # =A c                  x   K   	           d {    dz  y 7 
# t         j                  $ r dz  Y y w xY ww)Nr:  r   r  r  r  s   r   r  z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outerG  sB     g 	 )) s(   :
  : 7:7:rN   e   )rQ   rF   r   r   r   r  rj   rm   r]   rh   rJ  r-   r  r   r  r  r  s   `  @@@r   test_yield_future_passes_cancelz-BaseTaskTests.test_yield_future_passes_cancel8  s    +	9	 !!%'		:tyy)	
		$$Q'$((*+r   c                     d j                   j                        fd fd}t        j                   |        j                        }t	        j
                   j                         |j                           j                  t        j                   j                  j                  |       j                  d        t	        j
                   j                          j                  d       y )Nr   c                  0   K    d {     dz   y 7 
wNr   r   r  r  s   r   r  zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.inner]       LLQJE    c                     K   j                  t              5  t        j                  t        j                                g       d {   \  } }d d d        dz  y 7 # 1 sw Y   xY wwNr   )assertWarnsDeprecationWarningr   rw  r  )dpr  r  r-   s     r   r  zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerb  sc     !!"45 J$\\7+>+>uw+G*HII1JSLE JJ Js.   A/2A#A!A#A/!A##A,(A/rN   r   rQ   rF   r   r   r   r  rj   rk   rl   rm   r   r]   r  s   `  @@@r   &test_yield_wait_does_not_shield_cancelz4BaseTaskTests.test_yield_wait_does_not_shield_cancelW  s     +	
	 !!%'		:tyy)	
""DII$@$@!	E$tyy)"r   c                     | j                  | j                        }t        j                  |      }|j	                  d       | j                  j                  |      }| j                  |d       y r8   )rQ   rF   r   shieldr   rm   r]   )r-   r  r  r  s       r   test_shield_resultz BaseTaskTests.test_shield_resultq  sT    		*u%ii**51b!r   c                 X   | j                  | j                        }t        j                  |      }t	        j
                  | j                         t        d      }|j                  |       t	        j
                  | j                         | j                  |j                         |       y )Nexpected)
rQ   rF   r   r  r   r  r   r  r   rn   )r-   r  r  r%   s       r   test_shield_exceptionz#BaseTaskTests.test_shield_exceptionx  ss    		*u%tyy):&C tyy)eoo'-r   c                 >   | j                  | j                        }t        j                  |      }t	        j
                  | j                         |j                          t	        j
                  | j                         | j                  |j                                y r   )	rQ   rF   r   r  r   r  rj   rh   rJ  r-   r  r  s      r   test_shield_cancel_innerz&BaseTaskTests.test_shield_cancel_inner  sb    		*u%tyy)tyy))*r   c                    | j                  | j                        }t        j                  |      }t	        j
                  | j                         |j                          t	        j
                  | j                         | j                  |j                                | j                  d|j                  d       y t        |j                               y rv  )rQ   rF   r   r  r   r  rj   rh   rJ  r]   
_callbacksr+  r  s      r   test_shield_cancel_outerz&BaseTaskTests.test_shield_cancel_outer  s    		*u%tyy)tyy))*!1!1!9AUs5CSCS?TUr   c                     | j                  | j                        }|j                  d       | j                  j                  t	        j
                  |            }| j                  |d       y r8   )rQ   rF   r   rm   r   r  r]   )r-   r   r  s      r   test_shield_shortcutz"BaseTaskTests.test_shield_shortcut  sM    oodii(rii**7>>#+>?b!r   c                 (   d| j                  | j                        fdfd}t        j                   |       | j                        }t	        j
                  | j                         |j                          | j                  t        j                        5  | j                  j                  |       d d d        j                  d        t	        j
                  | j                         | j                  d       y # 1 sw Y   LxY w)Nr   c                  0   K    d {     dz   y 7 
wr  r   r  s   r   r  z/BaseTaskTests.test_shield_effect.<locals>.inner  r  r  c                  `   K   t        j                                  d {    dz  y 7 
wr  r   r  r  s   r   r  z/BaseTaskTests.test_shield_effect.<locals>.outer  s)     ..)))SLE *s   .,.rN   r   r  r  s      @@@r   test_shield_effectz BaseTaskTests.test_shield_effect  s    +	
	
 !!%'		:tyy)	
w556 	,II((+	,$tyy)"		, 	,s   !DDc                 f   | j                  | j                        }| j                  | j                        }t        j                  ||      }t        j                  |      }t        j                  | j                         |j                          t        j                  | j                         | j                  |j                                |j                  d       |j                  d       t        j                  | j                         | j                  |j                         ddg       y Nr   r  )rQ   rF   r   r   r  r   r  rj   rh   rJ  r   r]   r   )r-   child1child2parentr  s        r   test_shield_gatherz BaseTaskTests.test_shield_gather  s    ++/v&tyy)tyy))*!!tyy)1a&1r   c                    | j                  | j                        }| j                  | j                        }t        j                  |      }t        j                  |      }t        j                  ||      }t        j                  | j                         |j                          t        j                  | j                         | j                  |j                         t        j                         | j                  |j                                | j                  |j                                |j                  d       |j                  d       t        j                  | j                         y r  )rQ   rF   r   r  r   r   r  rj   r_   rn   rl   rh   rJ  r   )r-   r  r   r  r  r  s         r   test_gather_shieldz BaseTaskTests.test_gather_shield  s    ++''/tyy)tyy)f..0'2H2HI((*+((*+!!tyy)r   c                     d } |       }| j                  |j                         | j                  t        d      5  t	        j
                  |       d d d        y # 1 sw Y   y xY w)Nc                     K   ywr8   r   r   r   r   rJ   z>BaseTaskTests.test_shield_coroutine_without_loop.<locals>.coro  r!  r   r   )r   r@   r   r   r   r  r-   rJ   r  s      r   "test_shield_coroutine_without_loopz0BaseTaskTests.test_shield_coroutine_without_loop  sR    	 $##L2IJ 	"NN5!	" 	" 	"s   AA$c                     d fd}| j                   j                   |             }| j                  |j                  | j                          | j                   j                  |      }| j                  |d       y )Nc                     K   ywr8   r   r   r   r   rJ   zBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.coro  r!  r   c                  @   K   t        j                                 S wr   r  r   s   r   r   zBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.test  s     >>$&))r   r9   )rF   rm   r]   r   )r-   r   r  r  rJ   s       @r   &test_shield_coroutine_use_running_loopz4BaseTaskTests.test_shield_coroutine_use_running_loop  s_    		*		,,TV4dii0ii**51b!r   c                 b   d }t        j                  | j                         | j                  t         j                  d        t        j                   |             }| j                  |j                  | j                         | j                  j                  |      }| j                  |d       y )Nc                     K   ywr8   r   r   r   r   rJ   zABaseTaskTests.test_shield_coroutine_use_global_loop.<locals>.coro  r!  r   r9   )r   r   rF   r   r  r]   r   rm   )r-   rJ   r  r  s       r   %test_shield_coroutine_use_global_loopz3BaseTaskTests.test_shield_coroutine_use_global_loop  s{    	 	tyy)..5tv&dii0ii**51b!r   c                 f   | j                  | j                        }| j                  t        | j                  j                  t        j                  |             t               }| j                  t        | j                  j                  t        j                  |             |j                          y r   )	rQ   rF   rk   r   rm   r   rQ  r   r@   r-   r   rJ   s      r   test_as_completed_invalid_argsz,BaseTaskTests.test_as_completed_invalid_args  s{    oodii( 	)TYY%A%A  %	'!#)TYY%A%A  &	(

r   c                    | j                  | j                        }| j                  t        | j                  j                  t        j                  |             t               }| j                  t        | j                  j                  t        j                  |             |j                          | j                  t        | j                  j                  t        j                  g              y r   )
rQ   rF   rk   r   rm   r   rw  r   r@   r   r  s      r   test_wait_invalid_argsz$BaseTaskTests.test_wait_invalid_args  s    oodii( 	)TYY%A%ALL	!#)TYY%A%ALL	 

 	*dii&B&BLL	r   c                      j                   j                  } fd}t        j                         } j                  j                  d        j                  j                  |        | j                        }t        j                  | j                        } j                  t        j                   j                        |h       t        j                  d         j                  j                           j                  t         j                  j                        d       d }|j                  }d }t!        j"                           j                  t        j                   j                        t%                      |j'                   j                  dt        j(                  |d       |j+                          y )Nc                 \   K   j                  |       }| d {    t        d      7 w)Nzcode never reached)rQ   r,  )rF   futurer-   s     r   kill_mez>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_me  s/     __T*FLL 011 s   ,*,TrN   r   z%Task was destroyed but it is pending!)messagera   r   )rH   rI   r   r  rF   r   set_exception_handlerr   r   r]   	all_tasksr   	_run_oncer+  _readyr   r   
gc_collectr  assert_called_withANY
reset_mock)r-   rI   r  mock_handlerrJ   ra   r   s   `      r   test_log_destroyed_pending_taskz-BaseTaskTests.test_log_destroyed_pending_task	  sG   ~~""	2 yy{		D!		''5 tyy!$$T		:**		:TFCt$ 			TYY--.211 	**		:CEB''		>HH 04
 	
 	!r   zasyncio.base_events.loggerc                      t        j                          j                         d  fd}j                   |               j	                  |j
                  j                         y )Nc                     K   t         wr   )r   r   r   r   rJ   zBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coro8  s     Or(  c                     K   j                                } t        j                  d       d {    | j                          d } y 7 w)Nrb  r  )ra   rJ   rF   r-   s    r   r   zDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner;  s>     ==tv.D--%%%KKMD &s   0AAA)r   r   r   rm   r?  errorcalled)r-   m_logr   rJ   rF   s   `  @@r   &test_tb_logger_not_called_after_cancelz4BaseTaskTests.test_tb_logger_not_called_after_cancel3  sS    %%'D!		 	)++,r   c                    | j                   j                  d       | j                  | j                   t                     }t	        j
                         j                  dz
  }| j                  |j                  t               | j                  |j                  d   d d t        |df       | j                   j                  |       y )NTr   r*  test_task_source_traceback)rF   r   rK   r   rU  	_getframef_linenor_   r   rd  r]   __file__rm   )r-   ra   r   s      r   r-  z(BaseTaskTests.test_task_source_tracebackD  s    		D!}}TYY(:(<=))A-d44d;//3BQ7" 68	9 			$$T*r   c                    t        j                         }| j                  |j                         | j	                  |      fd}|j                   |             dfd}j                  |       j                  d       |j                         | j                  d       | j                  j                                | j                  j                         dg       y)zYEnsure that a gathering future refuses to be cancelled once all
        children are donec                  t   K   fd} t        j                   |              }t        j                  |      S w)Nc                  $   K     d {   S 7 wr   r   r   s   r   
child_corozFBaseTaskTests.test_cancel_gather_1.<locals>.create.<locals>.child_coroZ  s      y ys   )r   r   r   )r4  gather_futurer   s     r   createz2BaseTaskTests.test_cancel_gather_1.<locals>.createW  s-     !#NN:<8M((77s   58Nc                 &    j                         y r   rQ  )r   cancel_resultgather_tasks    r   cancelling_callbackz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbacka  s    '..0Mr   r9   F)r   r   r   r@   rQ   rm   r   r   r]   r?  rJ  r   )r-   rF   r6  r:  r8  r   r9  s       @@@r   test_cancel_gather_1z"BaseTaskTests.test_cancel_gather_1P  s     %%'

#ood#	8 --fh7	1 	12r 	, 	...01++-t4r   c           	          g d}|D ]  \  } j                        5  t        j                          j                  j                         d  fd}	 j                   |               j                  d       d d d         y # t        j                  $ rT} j                  |j                  |       t        |      } j                  |t        j                  |df       Y d }~md }~ww xY w# 1 sw Y   xY w)Nrm  rq  c                     K   d} 	 | dz  } t        j                  t        j                  d      d       d {    | dkD  ry >7 w)Nr   Trb  return_exceptionsr   )r   r   r   )r  s    r   r   z0BaseTaskTests.test_cancel_gather_2.<locals>.test}  sS     D%nnW]]4-@?CE E E!8" Es   6AAAc                     K   j                                } t        j                  d       d {     | j                    |  d {    y 7 7 w)Nr  r  )qwerr  rF   r-   r   s    r   rC  z0BaseTaskTests.test_cancel_gather_2.<locals>.main  sI     --df5C!--,,,CJJ,II -s!   0AAAAAAzWgather() does not propagate CancelledError raised by inner task to the gather() caller.r   )r|  r   r   r   r@   rm   r  rl   r]   r$   r(   )	r-   r~  r  rC  r%   r  rr  rF   r   s	   `     @@@r   test_cancel_gather_2z"BaseTaskTests.test_cancel_gather_2p  s    
 +0 !	&K+6  --/

+#++DF3 IIG;   !	, -- $$SXX}=237F$$ //B +   s6   ;C;B5C;C8$A
C3.C;3C88C;;D	c                 Z     d  fd} j                   j                   |              y )Nc                     K   ddz   y w)Nr   r   r   r   r   r   r   z3BaseTaskTests.test_exception_traceback.<locals>.foo  s     Er(  c                     K   j                  j                                } t        j                  d       d {    j	                  | j                         j                         y 7 .wrv  )rK   rF   r   r   r   rn   __traceback__)ra   r   r-   s    r   rC  z4BaseTaskTests.test_exception_traceback.<locals>.main  sO     ==CE2D--"""  !1!?!?@ #s   :A.A,/A.r   )r-   rC  r   s   ` @r   test_exception_tracebackz&BaseTaskTests.test_exception_traceback  s$    		A
 			$$TV,r   c                    d }|| j                   _        d }| j                  |j                  j                         | j                  t              5   |       }	 | j                  | j                   |       |j                          	 d d d        t        j                          | j                  |j                  j                         |j                  j                  d   d   }| j                  d|       | j                  t        j                   | j                         t#                      y # |j                          w xY w# 1 sw Y   xY w)Nc                     t         r   r&  )r  r$   r  s      r   rj  z8BaseTaskTests.test_error_in_call_soon.<locals>.call_soon  s    r   c                     K   y wr   r   r   r   r   rJ   z3BaseTaskTests.test_error_in_call_soon.<locals>.coro  re   r   r   z$Task was destroyed but it is pending)rF   rj  r?  r'  r(  rk   r   rK   r@   rz   r{   rh   	call_argsrB  r]   r   r  r  )r-   r)  rj  rJ   r   r  s         r   test_error_in_call_soonz%BaseTaskTests.test_error_in_call_soon  s    	'			 	++,z* 	&Cdii-			 	

**+++''*1-<gF**4995su= 			 	s$   ED/7E/EEEc                     | j                  t        d      5  | j                  | j                  d       d d d        | j                  t        d      5  | j                  | j                  d       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nz!a coroutine was expected, got 123r   )r   r   rK   rF   r,   s    r   "test_create_task_with_noncoroutinez0BaseTaskTests.test_create_task_with_noncoroutine  s    ##I$GI 	*MM$))S)	* ##I$GI 	*MM$))S)	* 	*	* 	*	* 	*s   A8B8BBc                 j   d }| j                  | j                   |             }| j                  || j                         | j                  j	                  |       | j                  | j                   |             }| j                  || j                         | j                  j	                  |       y )Nc                     K   y wr   r   r   r   r   rJ   z@BaseTaskTests.test_create_task_with_async_function.<locals>.coro  re   r   )rK   rF   r_   rI   rm   r  s      r   $test_create_task_with_async_functionz2BaseTaskTests.test_create_task_with_async_function  s    	 }}TYY/dDII.		$$T* }}TYY/dDII.		$$T*r   c                    | j                  | j                  t                     }| j                  || j                         | j                  | j                  j                  |      d       | j                  | j                  t                     }| j                  || j                         | j                  | j                  j                  |      d       y r8   )rK   rF   r6   r_   rI   r]   rm   r`   s     r   (test_create_task_with_asynclike_functionz6BaseTaskTests.test_create_task_with_asynclike_function  s    }}TYY(89dDII.55d;R@ }}TYY(89dDII.55d;R@r   c                 Z     d  fd} j                   j                   |              y )Nc                     K   ywr  r   r   r   r   r  z2BaseTaskTests.test_bare_create_task.<locals>.inner  s	     r   c                     K   t        j                                } j                  | j                         |  d {   }j	                  d|       y 7 wr  )r   r  r_   rI   r]   )ra   retr  r-   s     r   rJ   z1BaseTaskTests.test_bare_create_task.<locals>.coro  sI     &&uw/D!!$		2*CQ$ s   <AA Ar   r  s   ` @r   test_bare_create_taskz#BaseTaskTests.test_bare_create_task  s#    		% 			$$TV,r   c                 Z     d  fd} j                   j                   |              y )Nc                     K   y wr   r   r   r   r   	coro_noopz<BaseTaskTests.test_bare_create_named_task.<locals>.coro_noop  re   r   c                     K   t        j                          d      } j                  | j                         d       |  d {    y 7 w)NzNo-opr  )r   r  r]   r  )ra   r[  r-   s    r   rJ   z7BaseTaskTests.test_bare_create_named_task.<locals>.coro  s8     &&y{ADT]]_g6JJs   AAAAr   )r-   rJ   r[  s   ` @r   test_bare_create_named_taskz)BaseTaskTests.test_bare_create_named_task  s#    		
 			$$TV,r   c                     t        j                  dd       fd fd}t        j                         	  j	                   |             }j                  |       j                          y # j                          w xY w)Ncvarnopedefaultc                     K   t        j                  d       d {    j                   j                         d        j	                  d       y 7 6w)NrI  r`  something else)r   r   r]   getr  )r_  r-   s   r   subz)BaseTaskTests.test_context_1.<locals>.sub	  sA     --%%%TXXZ0HH%& &s   AA7Ac                  6  K   j                  j                         d       j                                } j                  d       j                  j                         d       |  d {    j                  j                         d       y 7 %w)Nr`  yes)r]   re  rK   r  )subtaskr_  rF   r-   rf  s    r   rC  z*BaseTaskTests.test_context_1.<locals>.main	  sr     TXXZ0mmD#%0GHHUOTXXZ/MMTXXZ/ s   A.B1B2&B)contextvars
ContextVarr   r   rK   rm   r@   )r-   rC  ra   r_  rF   rf  s   `  @@@r   test_context_1zBaseTaskTests.test_context_1  sg    %%ff=	'
	0 %%'	==tv.D##D)JJLDJJLs   (A8 8B
c                 J    t        j                  dd       fd}t        j                         	  j	                   |             }j                  |       j                           j                  j                         d       y # j                          w xY w)Nr_  r`  ra  c            	      R  K   fd} j                  j                         d       t        d      D ]  }j                        }|j	                  |        j                  d|        j                  |j                  d        | d {    j                  j                         d|        t        d      D ]\  }j                  d| d|        t        j                  d       d {    j                  j                         d| d|        ^  y 7 7 1w)Nc                 (    j                  d       y )Nrd  )r  )r   r_  s    r   fut_on_donez?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_done	  s     )*r   r`  r  rh  r*  -MbP?)
r]   re  r   rQ   r   r  rj  r   r   r   )rp  jr   rA  r_  rF   r-   s       r   rC  z*BaseTaskTests.test_context_2.<locals>.main	  s    +
 TXXZ01X @ood+%%k23qc#s~~t4		  s1#Y7q @AHHs1#Qqc]+!--...$$TXXZ3qc1#?	@@
  /s%   BD'D#A$D'3D%40D'%D')	rj  rk  r   r   rK   rm   r@   r]   re  )r-   rC  ra   r_  rF   s   `  @@r   test_context_2zBaseTaskTests.test_context_2	  s|    %%ff=	@, %%'	==tv.D##D)JJLV, JJLs   (B B"c                 2    t        j                  dd       fdfd}t        j                         	 j	                   |              j                           j                  j                         d       y # j                          w xY w)Nr_  r   ra  c                   K   t        d      D ]j  }j                  | |z          t        j                  t	        j
                  dd             d {    j                  j                         | |z          l y 7 *w)Nr:  rr  rb  )r   r  r   r   randomuniformr]   re  )numrA  r_  r-   s     r   rf  z)BaseTaskTests.test_context_3.<locals>.sub=	  sd     2Y 6q!mmFNN5$$?@@@  S1W56@s   AA?A=+A?c            	         K   g } t        d      D ]?  }j                   t        j                  dd                  } | j                  |       A t        j                  |   d {    y 7 w)Nr   r   r:  )r   r  rw  randintrR  r   r   )r   rA  ra   rF   rf  s      r   rC  z*BaseTaskTests.test_context_3.<locals>.mainC	  sa     E3Z #''FNN1b,A(BCT"# ..%(((s   A%A0(A.)A0)rj  rk  r   r   rm   r@   r]   re  )r-   rC  r_  rF   rf  s   ` @@@r   test_context_3zBaseTaskTests.test_context_38	  sr     %%fb9	6	) %%'	##DF+JJLR( JJLs   B Bc                 <    t        j                  d      fd fd}t        j                         	  j	                   |             }j                  |      }j                           j                  g d|       y # j                          w xY w)Nr_  c                 n   K   t        j                  d       d {    j                  |        y 7 wrv  r   r   r  valr_  s    r   rJ   z*BaseTaskTests.test_context_4.<locals>.coroV	  )     --"""HHSM #   535c                    K   g } t        j                         }| j                  |j                               j	                   d      |      }| d {    | j                  |j                               j	                   d      |      }| d {    | j                  |j                               | S 7 j7 (wNr   r'   r  )rj  copy_contextrR  re  rK   )rW  ctxr  r  rJ   r_  rF   r-   s       r   rC  z*BaseTaskTests.test_context_4.<locals>.mainZ	  s     C**,CJJswwt}%tT!Wc:BHHJJswwt}%tT!Wc:BHHJJswwt}%J  s%   ACCACC'CCr  rj  rk  r   r   rK   rm   r@   r]   r-   rC  ra   rW  rJ   r_  rF   s   `   @@@r   test_context_4zBaseTaskTests.test_context_4S	  sz    %%f-	
	 %%'	==tv.D))$/CJJLs+ JJLs   (B	 	Bc                 4   t        j                  d      fdfd}t        j                         }	 | j	                  | |             }|j                  |      }|j                          | j                  g d|       y # |j                          w xY w)Nr_  c                 n   K   t        j                  d       d {    j                  |        y 7 wrv  r  r  s    r   rJ   z*BaseTaskTests.test_context_5.<locals>.coror	  r  r  c                    K   g } t        j                         }| j                  |j                               t	        j
                   d      |      }| d {    | j                  |j                               t	        j
                   d      |      }| d {    | j                  |j                               | S 7 m7 (wr  )rj  r  rR  re  r   r  )rW  r  r  r  rJ   r_  s       r   rC  z*BaseTaskTests.test_context_5.<locals>.mainv	  s     C**,CJJswwt}%$$T!Wc:BHHJJswwt}%$$T!Wc:BHHJJswwt}%J  s%   ACC
AC#C$'CCr  r  )r-   rC  rF   ra   rW  rJ   r_  s        @@r   test_context_5zBaseTaskTests.test_context_5o	  sz    %%f-	
	 %%'	==tv.D))$/CJJLs+ JJLs   (B Bc                 6   t        j                  d      fdfd}t        j                         	 j	                   |             }j                  |      }j                          | j                  g d|       y # j                          w xY w)Nr_  c                 n   K   t        j                  d       d {    j                  |        y 7 wrv  r  r  s    r   rJ   z*BaseTaskTests.test_context_6.<locals>.coro	  r  r  c                    K   g } t        j                         }| j                  |j                               j	                   d      |      }| d {    | j                  |j                               j	                   d      |      }| d {    | j                  |j                               | S 7 i7 (wr  )rj  r  rR  re  r  )rW  r  r  r  rJ   r_  rF   s       r   rC  z*BaseTaskTests.test_context_6.<locals>.main	  s     C**,CJJswwt}%!!$q'3!7BHHJJswwt}%!!$q'3!7BHHJJswwt}%J  s%   ACCACC'CCr  )rj  rk  r   r   r  rm   r@   r]   r  s       @@@r   test_context_6zBaseTaskTests.test_context_6	  sz    %%f-	
	 %%'	##DF+D))$/CJJLs+ JJLs   'B Bc                    t        j                         }t               }	 | j                  ||      }|j	                  |       | j                  |j                         |       |j                          y # |j                          w xY wr   )r   r   r   rK   rm   r   r   r@   )r-   rF   rJ   ra   s       r   test_get_corozBaseTaskTests.test_get_coro	  sb    %%'!#	==t,D##D)MM$--/40JJLDJJLs   AA4 4Bc                 >   t        j                         }t               }t        j                         }	 | j                  |||      }|j                  |       | j                  |j                         |       |j                          y # |j                          w xY w)Nr  )
r   r   r   rj  r  rK   rm   r   get_contextr@   )r-   rF   rJ   r'   ra   s        r   test_get_contextzBaseTaskTests.test_get_context	  sw    %%'!#**,	==tW==D##D)MM$**,g6JJLDJJLs   AB
 
B)TestTaskN)zr2   r3   r4   rI   rO   rK   rQ   rV   rb   rr   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r.  r6  rD  rK  r^  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r-  r3  r6  r;  rE  rU  rZ  r_  rh  rm  rr  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r   patchr*  r-  r;  rB  rG  rL  rN  rQ  rS  rX  r]  rl  rt  r|  r  r  r  r  r  r  r  s   @r   rD   rD   T   s   DFP0E2
=A	/"+>!*!*- (/81Sf)$
((+@ :+@0(TgR%* @D @D38:0%''((.(<%(%&")HO666:!NF+":J6:&06:6<2@686622(%&N"6H<$(6(0)$	(1,+818)""&<2@G"
&'@@6,>#4".+V"#02*""	"
"	("T TZZ,-- .- 
+5@)V- TZZ,-> .>0	*+	A-
-. -D)6,8,8,8	r   rD   c                     | j                   }| j                  }||| S  G d d      } G d d||      } G d d||      }d }|| _         || _        || _        d | _        | S )Nc                   (     e Zd Z fdZ fdZ xZS )(add_subclass_tests.<locals>.CommonFuturec                 Z    t        j                  d       | _        t        |   |i | y )Nc                       yrv  r   r   r   r   rT   zCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>	  s    r   )collectionsdefaultdictcallsrU   r   r  s      r   r   z1add_subclass_tests.<locals>.CommonFuture.__init__	  s'    $00;DJGd-f-r   c                 P    | j                   dxx   dz  cc<   t        |   |i |S )Nr   r   )r  rU   r   r  s      r   r   z:add_subclass_tests.<locals>.CommonFuture.add_done_callback	  s-    JJ*+q0+7,d=f==r   r  r  s   @r   CommonFuturer  	  s    	.	> 	>r   r  c                       e Zd Zy) add_subclass_tests.<locals>.TaskNr2   r3   r4   r   r   r   rI   r  	      r   rI   c                       e Zd Zy)"add_subclass_tests.<locals>.FutureNr  r   r   r   rO   r  	  r  r   rO   c                      j                   j                         fd} j                   |        j                        } j                  j                  |      } j	                  |d        j	                  t        |j                        ddi        j	                  t        j                        ddi       y )NrN   c                  `   K   j                   j                   fd         d {   S 7 w)Nc                  &     j                  d      S Nr  r  r   s   r   rT   zYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>	  s    v(> r   )rF   rj  )r   r-   s   r   r>  zGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func	  s$     II >?99s   $.,.r  r   r   )rO   rF   rI   rm   r]   dictr  )r-   r>  ra   r   r   s   `   @r   test_subclasses_ctask_cfuturez9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture	  s    kktyyk)	 yydiiy0--d3( !$	& 	O !$	&r   )rI   rO   r  r-  )clsBaseTask
BaseFuturer  rI   rO   r  s          r   add_subclass_testsr  	  sy    xxHJ:-
> >|X z &, CHCJ )FC%
 &*C"Jr   c                       e Zd Zd Zd Zy)SetMethodsTestc                    t        |       j                  }t        j                         x| j                  _        }d } |       }| j                  | j                  |      }|j                  |d       | j                  | j                  j                  |      d       |j                          |j                  d   d   d   }| j                  t        j                  d      5  |# 1 sw Y   nxY w|j                          y )Nc                  J   K   t        j                  d       d {    y7 wNr\  r:  r;  r   r   r   r   z@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foo	        --$$$ %r=  r  r   rn   step\(\): already done)r#   rO   r   r  rF   call_exception_handlerrK   r   r]   rm   assert_called_oncerK  r   r   InvalidStateErrorr@   )r-   rO   exc_handlerr   rJ   ra   r%   s          r   $test_set_result_causes_invalid_statez3SetMethodsTest.test_set_result_causes_invalid_state	  s    d""9=D		(;	 u}}TYY-$'II((.	 	&&(##A&q)+6##G$=$=$=? 	I	 	 	

s   #C&&C/c                 Z    G d dt               }t        |       j                  }t        j                         x| j
                  _        }d } |       }| j                  | j
                  |      }|j                  | |              | j                  |      5  | j
                  j                  |       d d d        |j                          |j                  d   d   d   }| j                  t        j                  d      5  |# 1 sw Y   QxY w# 1 sw Y   nxY w|j!                          y )Nc                       e Zd Zy)ESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcNr  r   r   r   MyExcr  
  s    r   r  c                  J   K   t        j                  d       d {    y7 wr  r;  r   r   r   r   zCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foo
  r  r=  r   rn   r  )r,  r#   rO   r   r  rF   r  rK   r  rk   rm   r  rK  r   r   r  r@   )r-   r  rO   r  r   rJ   ra   r%   s           r   'test_set_exception_causes_invalid_statez6SetMethodsTest.test_set_exception_causes_invalid_state
  s    	I 	 d""9=D		(;	 u}}TYY-T57+u% 	/II((.	/ 	&&(##A&q)+6##G$=$=$=? 	I	/ 	/
	 	 	

s   DDDDN)r2   r3   r4   r  r  r   r   r   r  r  	  s    0r   r  _CFuture_CTaskzrequires the C _asyncio modulec                   ^    e Zd Z eedd      Z eedd      Zej                  d        Z
d Zy)CTask_CFuture_Testsr  Nr  c                    t        j                  t        d      }d }| j                  | j                   |             }| j                  j                  |        |       }t        d      D ]?  }|j                   |       | j                         | j                  j                  |       A | j                   |       |z
  dd       y )Ngettotalrefcountc                     K   y wr   r   r   r   r   rJ   z@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.coro8
  re   r   r   rN   r   r:  )delta)	r   get_attributerU  rK   rF   rm   r   r   rc  )r-   r  rJ   ra   refs_beforerA  s         r   test_refleaks_in_task___init__z2CTask_CFuture_Tests.test_refleaks_in_task___init__5
  s    "006HI	}}TYY/		$$T*&(s 	/AMM$&tyyM1II((.	/ 	/1K?"Mr   c                     d }| j                  | j                   |             }| j                  j                  |       | j                  t              5  |`d d d        y # 1 sw Y   y xY w)Nc                     K   y wr   r   r   r   r   rJ   zHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coroC
  re   r   )rK   rF   rm   rk   AttributeError_log_destroy_pendingr  s      r   &test_del__log_destroy_pending_segfaultz:CTask_CFuture_Tests.test_del__log_destroy_pending_segfaultB
  sX    	}}TYY/		$$T*~. 	*)	* 	* 	*s   A!!A*)r2   r3   r4   getattrr   rI   r   rO   r   refcount_testr  r  r   r   r   r  r  ,
  s?     5(D)DWj$/F
N 
N*r   r  c                   4    e Zd Z eedd      Z eedd      Zy)CTask_CFuture_SubclassTestsr  Nr  )r2   r3   r4   r  r   rI   r   rO   r   r   r   r  r  K
  s      5(D)DWj$/Fr   r  c                   8    e Zd Z eedd      Zej                  Zy)CTaskSubclass_PyFuture_Testsr  N	r2   r3   r4   r  r   rI   r   	_PyFuturerO   r   r   r   r  r  U
  s    
 5(D)DFr   r  c                   8    e Zd Z eedd      Zej                  Zy)PyTask_CFutureSubclass_Testsr  N)	r2   r3   r4   r  r   rO   r   _PyTaskrI   r   r   r   r  r  ^
  s    
 Wj$/F==Dr   r  c                   8    e Zd Z eedd      Zej                  Zy)CTask_PyFuture_Testsr  Nr  r   r   r   r  r  g
  s     5(D)DFr   r  c                   8    e Zd Zej                  Z eedd      Zy)PyTask_CFuture_Testsr  N)	r2   r3   r4   r   r  rI   r  r   rO   r   r   r   r  r  o
  s     ==DWj$/Fr   r  c                   <    e Zd Zej                  Zej                  Zy)PyTask_PyFuture_TestsN	r2   r3   r4   r   r  rI   r   r  rO   r   r   r   r  r  w
  s     ==DFr   r  c                   <    e Zd Zej                  Zej                  Zy)PyTask_PyFuture_SubclassTestsNr  r   r   r   r  r  ~
  s    ==DFr   r  c                       e Zd Zd Zy)CTask_Future_Testsc                     G d dt         j                        }fd}t        j                         | _        	  || j                        | j                  j	                  dj
                  d       | j                  j                   |             }| j                  j                  |      }| j                  j                          | j                  |d       y # | j                  j                          w xY w)Nc                       e Zd Zed        Zy)+CTask_Future_Tests.test_foobar.<locals>.Futc                     t         r   )r  r,   s    r   r   z4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loop
  s    $$r   N)r2   r3   r4   propertyr   r   r   r   r  r  
  s    % %r   r  c                  &   K     d {    y7 wr  r   r   s   r   rJ   z,CTask_Future_Tests.test_foobar.<locals>.coro
  s     II r   rN   r\  r   r  )
r   rO   r   rF   rT  r   r  rm   r@   r]   )r-   r  rJ   ra   r  r   s        @r   test_foobarzCTask_Future_Tests.test_foobar
  s    	%'.. 	%
	 **,		499%CII  cnna899((0D))..t4CIIOOf% IIOOs   A5C C8N)r2   r3   r4   r  r   r   r   r  r  
  s    &r   r  c                   X    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y)BaseTaskIntrospectionTestsNc                 >    G fdd      } |       }t        j                         | j                  t        j                        t                      | j                  |       | j                  t        j                        |h       | j                  |       y )Nc                   (    e Zd Ze fd       Zd Zy)BBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLikec                     S r   r   rP   s    r   r   zHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loop
  s    r   c                      yr  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.done
      r   N)r2   r3   r4   r  r   r   rN   s   r   TaskLiker  
  s     r   r  r   r  r]   r   r  r  _register_task_unregister_taskr-   r  ra   rF   s      @r   test__register_task_1z0BaseTaskIntrospectionTests.test__register_task_1
  sw    	 	 zyy{**40#%8D!**404&9d#r   c                 >    G fdd      } |       }t        j                         | j                  t        j                        t                      | j                  |       | j                  t        j                        |h       | j                  |       y )Nc                       e Zd Z fdZd Zy)BBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLikec                     S r   r   rP   s    r   r   zKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loop
      r   c                      yr  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.done
  r  r   Nr2   r3   r4   r   r   rN   s   r   r  r  
  s    r   r  r  r   s      @r   test__register_task_2z0BaseTaskIntrospectionTests.test__register_task_2
  sw    	 	 zyy{**40#%8D!**404&9d#r   c                 L    G fdd      } |       }t        j                         | j                  t        j                        t                      | j                  |       | j                  t        j                        t                      | j                  |       y )Nc                       e Zd Z fdZd Zy)BBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikec                     S r   r   rP   s    r   r   zKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loop
  r  r   c                      yrP  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.done
  s    r   Nr  rN   s   r   r  r  
  s    r   r  r  r   s      @r   test__register_task_3z0BaseTaskIntrospectionTests.test__register_task_3
  sw    	 	 zyy{**40#%8D!**40#%8d#r   c                 .   t        j                         }t        j                         }| j                  t        j                  |             | j                  ||       | j                  t        j                  |      |       | j                  ||       y r   )r   r  r  r   rG  _enter_taskr   _leave_taskr-   ra   rF   s      r   test__enter_taskz+BaseTaskIntrospectionTests.test__enter_task
  sj    yy{yy{'..t45t$g**40$7t$r   c                    t        j                         }t        j                         }t        j                         }| j                  ||       | j                  t              5  | j                  ||       d d d        | j                  t        j                  |      |       | j                  ||       y # 1 sw Y   AxY wr   )	r   r  r  rk   r   r   r   rG  r  r-   r  r  rF   s       r   test__enter_task_failurez3BaseTaskIntrospectionTests.test__enter_task_failure
      				yy{u%|, 	*T5)	*g**40%8u%	* 	*   $B77C c                     t        j                         }t        j                         }| j                  ||       | j                  ||       | j	                  t        j                  |             y r   )r   r  r  r  r  r   rG  r  s      r   test__leave_taskz+BaseTaskIntrospectionTests.test__leave_task
  sQ    yy{yy{t$t$'..t45r   c                    t        j                         }t        j                         }t        j                         }| j                  ||       | j                  t              5  | j                  ||       d d d        | j                  t        j                  |      |       | j                  ||       y # 1 sw Y   AxY wr   )	r   r  r  rk   r   r  r   r   rG  r  s       r   test__leave_task_failure1z4BaseTaskIntrospectionTests.test__leave_task_failure1
  r  r  c                    t        j                         }t        j                         }| j                  t              5  | j	                  ||       d d d        | j                  t        j                  |             y # 1 sw Y   .xY wr   )r   r  rk   r   r  r  r   rG  r  s      r   test__leave_task_failure2z4BaseTaskIntrospectionTests.test__leave_task_failure2
  sd    yy{yy{|, 	)T4(	)'..t45	) 	)s   A>>Bc                    t        j                         }t        j                         fd|_        | j                  |       | j	                  |       | j                  t        j                        t                      y )Nc                       S r   r   rN   s   r   rT   zBBaseTaskIntrospectionTests.test__unregister_task.<locals>.<lambda>  s     r   )	r   r  r   r  r  r]   r   r  r  r  s     @r   test__unregister_taskz0BaseTaskIntrospectionTests.test__unregister_task
  sY    yy{yy{$D!d#**40#%8r   c                     t        j                         }t        j                         }| j                  |       | j                  t	        j
                  |      t                      y r   )r   r  r  r]   r   r  r  r  s      r   $test__unregister_task_not_registeredz?BaseTaskIntrospectionTests.test__unregister_task_not_registered  sC    yy{yy{d#**40#%8r   )r2   r3   r4   r  r  r  r  r  r	  r  r  r  r  r  r  r"  r$  r   r   r   r  r  
  sI    NKK$"$ $ %&6&699r   r  c                       e Zd Z eej
                        Z eej                        Z eej                        Z
 eej                        Zy)PyIntrospectionTestsN)r2   r3   r4   staticmethodr   _py_register_taskr  _py_unregister_taskr  _py_enter_taskr  _py_leave_taskr  r   r   r   r&  r&    sC    !%"9"9:N#E$=$=>u334Ku334Kr   r&  _c_register_taskc                       e Zd Z eed      rI eej                        Z eej                        Z	 eej                        Z eej                        ZydxZxZ	xZZy)CIntrospectionTestsr,  N)r2   r3   r4   ri   r   r'  r,  r  _c_unregister_taskr  _c_enter_taskr  _c_leave_taskr  r   r   r   r.  r.    se     u()%e&<&<='(@(@A"5#6#67"5#6#67HLLL)LK+r   r.  c                   :     e Zd ZdZ fdZd Zd Zd Zd Z xZ	S )BaseCurrentLoopTestsNc                     t         |           t        j                         | _        | j                  | j                         y r   rU   rV   r   r   rF   r   rZ   s    r   rV   zBaseCurrentLoopTests.setUp$  .    **,	DII&r   c                     t         r   )NotImplementedErrorr   s     r   rK   zBaseCurrentLoopTests.new_task)  s    !!r   c                 Z    | j                  | j                  | j                               y rM   )r  rG  rF   r,   s    r   !test_current_task_no_running_loopz6BaseCurrentLoopTests.test_current_task_no_running_loop,  s"    $+++;<r   c                 z    | j                  t        d      5  | j                          d d d        y # 1 sw Y   y xY w)Nzno running event loop)r   r   rG  r,   s    r   *test_current_task_no_running_loop_implicitz?BaseCurrentLoopTests.test_current_task_no_running_loop_implicit/  s4    ##L2IJ 	 	  	  	 s   1:c                       fd} j                   |              j                  j                          j                   j	                   j                               y )Nc                     K    j                   j                   j                                j                   j                  d               j                   j                                y wrM   )r   rG  rF   r`   s   r   rJ   zGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.coro4  sW     MM$+++;TBMM$++D148MM$++-t4r  rN   )rK   rF   rm   r  rG  r  s   ` @r   $test_current_task_with_implicit_loopz9BaseCurrentLoopTests.test_current_task_with_implicit_loop3  sL    	5 }}TV$		$$T*$+++;<r   )
r2   r3   r4   rG  rV   rK   r:  r<  r?  r  r  s   @r   r3  r3  !  s!    L'
"= 	=r   r3  c                   6    e Zd Z eej
                        Zd Zy)PyCurrentLoopTestsc                 D    t        j                  || j                        S rM   )r   r  rF   r   s     r   rK   zPyCurrentLoopTests.new_taskB  s    }}T		22r   N)r2   r3   r4   r'  r   _py_current_taskrG  rK   r   r   r   rA  rA  ?  s     6 67L3r   rA  _c_current_taskc                   T    e Zd Z eed      r eej                        Zd ZydZd Zy)CCurrentLoopTestsrD  Nc                 F     t        t        d      || j                        S )Nr  rN   )r  r   rF   r   s     r   rK   zCCurrentLoopTests.new_taskO  s    'wuh'499==r   )	r2   r3   r4   ri   r   r'  rD  rG  rK   r   r   r   rF  rF  F  s0     u'(#E$9$9:> >r   rF  c                   6    e Zd Zd Zej
                  d        Zy)GenericTaskTestsc                 r    | j                  t        t        j                  t        j                               y r   )rh   
issubclassr   rI   rO   r,   s    r   test_future_subclassz%GenericTaskTests.test_future_subclassU  s    
7<<@Ar   c                     	 dd l }dd l}dd l}	 dd l}y # t        $ r | j                  d       Y y w xY w# t        $ r | j                  d       Y y w xY w)Nr   z_asyncio module is missingzC modules are not available)
_functools_json_pickle_asyncioImportErrorr  skipTest)r-   rN  rO  rP  rQ  s        r   test_asyncio_module_compiledz-GenericTaskTests.test_asyncio_module_compiledX  sQ    
	88 8		678  	9MM78	9s   4  11AAN)r2   r3   r4   rL  r   cpython_onlyrT  r   r   r   rI  rI  S  s"    B 8 8r   rI  c                   H     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 xZS )	GatherTestsBasec                     t         |           | j                         | _        | j                         | _        | j                  | j                  d       y )NF)cleanup)rU   rV   rW   one_loopr   r   rZ   s    r   rV   zGatherTestsBase.setUpm  sC    **,,,.DMM59r   c                 b    |j                   r#t        j                  |       |j                   r"y y r   )r  r   r  rP   s     r   	_run_loopzGatherTestsBase._run_loops  s     kk""4( kkr   c                    t        d      D cg c]  }| j                  j                          c}\  }}} | j                  | j	                  |||      i |}t        j                         }|j                  |       |j                  d       |j                  d       | j                  | j                         | j                  |j                  d       | j                  |j                                |j                  d       | j                  | j                         |j                  |       | j                  |j                         g d       y c c}w )Nr*  r   r  F)r  r   r*  )r   rZ  rY   _gatherwrap_futuresr   MockCallbackr   r   r\  r]   r(  r?  r   assert_called_once_withr   )r-   r  rA  r   r  r   r   cbs           r   _check_successzGatherTestsBase._check_successw  s    :?(CQ4==..0C1adllD--aA6A&A$$&b!	Q	Qt}}%E*$	Qt}}%
""3'y1 Ds   !Ec                 H    | j                          | j                  d       y )NFr>  rc  r,   s    r   test_successzGatherTestsBase.test_success  s    e4r   c                 (    | j                  d       y )NTr>  re  r,   s    r   test_result_exception_successz-GatherTestsBase.test_result_exception_success  s    d3r   c           	         t        d      D cg c]  }| j                  j                          c}\  }}}}} | j                  | j	                  |||||       }t        j                         }|j                  |       t               }	|j                  d       |j                  |	       | j                  | j                         | j                  |j                                |j                  |       | j                  |j!                         |	       |j                  d       |j#                          |j                  t%                      |j!                          y c c}w Nrp  r   r*  )r   rZ  rY   r^  r_  r   r`  r   r  r   r  r\  rh   r   ra  r   rn   rj   r   )
r-   rA  r   r  r   r  er   rb  r%   s
             r   test_one_exceptionz"GatherTestsBase.test_one_exception  s    @EaI1446I1aAdllD--aAq!<=$$&b!!	Q	t}}%
#
""3'cmmos+	Q	
	'	 Js   !E!c                    t        d      D cg c]  }| j                  j                          c}\  }}}} | j                  | j	                  ||||      ddi}t        j                         }|j                  |       t               }t               }	|j                  d       |j                  |       |j                  d       | j                  | j                         | j                  |j                                |j                  |	       | j                  | j                         | j                  |j                                |j!                  |       | j#                  |j%                         dd||	g       y c c}w )N   r?  Tr   r*  )r   rZ  rY   r^  r_  r   r`  r   r  r   r   r  r\  r?  r   rh   ra  r]   r   )
r-   rA  r   r  r   r  r   rb  r%   exc2s
             r   test_return_exceptionsz&GatherTestsBase.test_return_exceptions  s(   =B1XFdmm113F
1adllD--aAq9 3-13$$&b!!~	Q		Qt}}%$	t}}%
#
""3'1c4'89! Gs   !Fc                 "   dj                  d      }t        dd|      \  }}}| j                  |j                         d       t        d|dd      \  }}}| j                  |j                         d       t        d|dd      \  }}}| j                  |j                         d	       t        dd|dd      \  }}}| j                  |j                         d       t        dd
dd|      \  }}}| j                  |j                         d	       y )N
)zimport asyncio.coroutinesz*print(asyncio.coroutines._is_debug_mode())z-Ez-cs   False )PYTHONASYNCIODEBUGPYTHONDEVMODE1s   Truez-Xdev)joinr	   r]   rstrip)r-   codestsstdoutstderrs        r   test_env_var_debugz"GatherTestsBase.test_env_var_debug  s   yy : ; /tT4@VV(3.tTBD=?AVV 	(3.tTBE=?AVV 	'2.tT4BE=?AVV 	(3 /tT5/3T;VV'2r   )r2   r3   r4   rV   r\  rc  rf  rh  rl  rp  r~  r  r  s   @r   rW  rW  k  s+    :)254$:&3r   rW  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)FutureGatherTestsc                     |S r   r   )r-   r   s     r   r_  zFutureGatherTests.wrap_futures  s    r   c                 ,    t        j                  |i |S r   r   r   )r-   r$   r  s      r   r^  zFutureGatherTests._gather  s    ~~t.v..r   c                     | j                  t        d      5  t        j                          d d d        y # 1 sw Y   y xY w)Nr   )r   r   r   r   r,   s    r   ,test_constructor_empty_sequence_without_loopz>FutureGatherTests.test_constructor_empty_sequence_without_loop  s2    ##L2IJ 	NN	 	 	s   5>c                    d }| j                   j                   |             }| j                  |t        j                         | j                  |j                  | j                          | j                  | j                          | j                  |j                                | j                  |j                         g        y )Nc                  2   K   t        j                         S wr   r  r   r   r   r   zRFutureGatherTests.test_constructor_empty_sequence_use_running_loop.<locals>.gather  s     >>##s   )rZ  rm   r_   r   rO   r   r   r\  rh   r   r]   r   )r-   r   r   s      r   0test_constructor_empty_sequence_use_running_loopzBFutureGatherTests.test_constructor_empty_sequence_use_running_loop  s    	$mm..vx8c7>>2cii/t}}%
#r*r   c                    t        j                  | j                         | j                  t         j                  d        t        j                         }| j                  |t         j                         | j                  |j                  | j                         | j                  | j                         | j                  |j                                | j                  |j                         g        y r   )r   r   rZ  r   r   r_   rO   r   r   r\  rh   r   r]   r   )r-   r   s     r   /test_constructor_empty_sequence_use_global_loopzAFutureGatherTests.test_constructor_empty_sequence_use_global_loop  s    t}}-..5nnc7>>2cii/t}}%
#r*r   c                     | j                   j                         }| j                  j                         }| j                  t              5  t        j                  ||       d d d        y # 1 sw Y   y xY wr   )rZ  rY   r   rk   r   r   r   )r-   r  r  s      r   %test_constructor_heterogenous_futuresz7FutureGatherTests.test_constructor_heterogenous_futures  sW    }}**,,,.z* 	'NN4&	' 	' 	's   
A**A3c                 6   t        d      D cg c]  }| j                  j                          }}t        j                  | }| j                  |j                  | j                         | j                  | j                         | j                  |j                                t        j                  | }| j                  |j                  | j                         | j                  | j                         | j                  |j                                y c c}w )Nr*  )
r   r   rY   r   r   r   r   r\  r?  r   )r-   rA  childrenr   s       r   #test_constructor_homogenous_futuresz5FutureGatherTests.test_constructor_homogenous_futures  s    =B1XFDOO113FFnnh'cii1t'$nnh'cii1t'$ Gs   !Dc                    t        d      D cg c]  }| j                  j                          c}\  }}}}}t        j                  |||||      }t        j                         }|j                  |       |j                  d       |j                          | j                  | j                         | j                  |j                                |j                  |       | j                  |j                                | j!                  |j#                         t        j$                         |j                  d       |j                          |j'                  t)                      |j#                          y c c}w rj  )r   rZ  rY   r   r   r   r`  r   r   rj   r\  rh   r   ra  r?  rJ  r_   rn   rl   r  r   )	r-   rA  r   r  r   r  rk  r   rb  s	            r   test_one_cancellationz'FutureGatherTests.test_one_cancellation  s   @EaI1446I1aAnnQ1a+$$&b!	Q	
t}}%
#
""3')cmmow/E/EF	Q	
	'	 Js   !E:c           	         t        d      D cg c]  }| j                  j                          c}\  }}}}}}t        j                  ||||||d      }t        j                         }	|j                  |	       |j                  d       t               }
|j                  |
       |j                          | j                  | j                         | j                  |j                                |j                  d       |j                          t               }|j                  |       | j                  j!                  |      }| j#                  |d   t        j$                         | j#                  |d   t        j$                         d x|d<   |d<   | j'                  |d|
d dd |g       |	j)                  |       y c c}w )Nr  Tr>  r   r*  r  rn  )r   rZ  rY   r   r   r   r`  r   r   r  r  rj   r\  r?  r   r   rm   r_   rl   r]   ra  )r-   rA  r   r  r   r  rk  r   r   rb  zderter  s                r   &test_result_exception_one_cancellationz8FutureGatherTests.test_result_exception_one_cancellation  sk   %*1X/ ! !MM779 /1aAqnnQ1aAF$$&b!	Q!		
t}}%$	Q	
n	mm..s3c!fg&<&<=c!fg&<&<=AQq#tQc:;
""3')/s   !GN)r2   r3   r4   r_  r^  r  r  r  r  r  r  r  r   r   r   r  r    s/    /+	+'	%$(r   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)CoroutineGatherTestsc                 N    g }|D ]  }|fd}|j                   |               |S )Nc                 "   K   |  d {   S 7 wr   r   r   s    r   rJ   z/CoroutineGatherTests.wrap_futures.<locals>.coro2  s      y yr  )rR  )r-   r   corosr   rJ   s        r   r_  z!CoroutineGatherTests.wrap_futures/  s3     	!C" !LL 	! r   c                 R    fd}| j                   j                   |             S )Nc                  6   K   t        j                   i S wr   r  )r$   r  s   r   rJ   z*CoroutineGatherTests._gather.<locals>.coro8  s     >>42622s   )rZ  rm   )r-   r$   r  rJ   s    `` r   r^  zCoroutineGatherTests._gather7  s    	3}}//77r   c                    d } |       }| j                  |j                          |       }| j                  |j                         | j                  t        d      5  t	        j
                  ||       d d d        y # 1 sw Y   y xY w)Nc                     K   ywr   r   r   r   r   rJ   z@CoroutineGatherTests.test_constructor_without_loop.<locals>.coro=  r   r   r   )r   r@   r   r   r   r   )r-   rJ   gen1gen2s       r   test_constructor_without_loopz2CoroutineGatherTests.test_constructor_without_loop<  si    	v

#v

###L2IJ 	'NN4&	' 	' 	's   A>>Bc                     d } |        |       fd}| j                   j                   |             }| j                  |j                  | j                          | j                   j                  |       y )Nc                     K   ywr   r   r   r   r   rJ   zDCoroutineGatherTests.test_constructor_use_running_loop.<locals>.coroG  r   r   c                  8   K   t        j                         S wr   r  )r  r  s   r   r   zFCoroutineGatherTests.test_constructor_use_running_loop.<locals>.gatherK  s     >>$--s   )rZ  rm   r   r   )r-   rJ   r   r   r  r  s       @@r   !test_constructor_use_running_loopz6CoroutineGatherTests.test_constructor_use_running_loopF  sY    	vv	.mm..vx8cii/((-r   c                 R   d }t        j                  | j                         | j                  t         j                  d         |       } |       }t        j                  ||      }| j                  |j                  | j                         | j                  j                  |       y )Nc                     K   ywr   r   r   r   r   rJ   zCCoroutineGatherTests.test_constructor_use_global_loop.<locals>.coroS  r   r   )r   r   r   r   r   r   r   rm   )r-   rJ   r  r  r   s        r    test_constructor_use_global_loopz5CoroutineGatherTests.test_constructor_use_global_loopQ  ss    	t/..5vvnnT4(cii1**3/r   c                     d } |d      }| j                  || |d      |      }| j                  | j                         | j                  |j	                         g d       y )Nc                    K   | S wr   r   r  s    r   rJ   z<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coro^  r  r2  r   def)r   r   r  r   )r^  r\  rZ  r]   r   )r-   rJ   r   r   s       r   test_duplicate_coroutinesz.CoroutineGatherTests.test_duplicate_coroutines]  sO    	Kll1aea0t}}%'CDr   c                    d| j                   j                         fd}t        j                   |       | j                         t        j                   |       | j                         d fd}t        j                   |       | j                         }t	        j
                  | j                          | j                  |j                                | j                  t        j                        5  | j                   j                  |       d d d        | j                  j                                | j                  j                                | j                  j                                | j                  j                                t	        j
                  | j                          | j                  d       y # 1 sw Y   xY w)Nr   c                  0   K    d {     dz   y 7 
wr  r   r  s   r   r  z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerj  r  r  rN   c                  \   K   t        j                          d {    dz  y 7 
wr  r  )r  r   gathererr  s   r   r  z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outers  s,     ~~ff5HNNSLE s   ,*,)rZ  rY   r   r   r   r  rh   rj   rk   rl   rm   r?  rJ  r]   )	r-   r  r  r   r  r   r  r  r  s	       @@@@@r   test_cancellation_broadcastz0CoroutineGatherTests.test_cancellation_broadcaste  sJ   ,,.	
 &&uwT]]C&&uwT]]C	 !!%'>t}}-
#w556 	0MM,,Q/	0*+((*+((*+((*+t}}-"	0 	0s   GGc                    d | j                   j                         | j                   j                         fd}t        j                   |       | j                         }t	        j
                  | j                          j                  d        t	        j
                  | j                          j                  d        t	        j
                  | j                          | j                  |j                         t               y )Nc                 8   K   |  d {    t        d      7 w)Nzshould not be ignoredr  r  s    r   r  z:CoroutineGatherTests.test_exception_marking.<locals>.inner  s     GG677 s   c                  f   K   t        j                                        d {    y 7 wr   r  )r   r  r  s   r   r  z:CoroutineGatherTests.test_exception_marking.<locals>.outer  s#     ..q58444s   &1/1rN   )
rZ  rY   r   r   r   r  r   r_   rn   r   )r-   r  r   r   r  r  s      @@@r   test_exception_markingz+CoroutineGatherTests.test_exception_marking  s    	8 MM'')MM'')	5 !!%'>t}}-	Tt}}-	Tt}}-akkm\:r   c                 d   t        j                  d      5  d } |d      }| j                  t              5  | j	                  |i        d d d        | j                  | j                         | j                  j                  j                          d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nz8asyncio.base_events.BaseEventLoop.call_exception_handlerc                    K   | S wr   r   r  s    r   rJ   z2CoroutineGatherTests.test_issue46672.<locals>.coro  s     r2  r   )	r   r  rk   r   r^  r\  rZ  r  assert_not_called)r-   rJ   r   s      r   test_issue46672z$CoroutineGatherTests.test_issue46672  s    ZZF
 	EUA""9- $Q#$NN4==)MM00BBD	E 	E$ $	E 	Es#   !B&B
AB&B#	B&&B/N)r2   r3   r4   r_  r^  r  r  r  r  r  r  r  r   r   r   r  r  -  s2    8
'	.
0E#@;*Er   r  c                   T     e Zd ZdZ fdZd
dZ	 	 ddZd Zd Zd Z	d Z
d	 Z xZS )RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.c                     t         |           t        j                         | _        | j                  | j                         y r   r5  rZ   s    r   rV   z!RunCoroutineThreadsafeTests.setUp  r6  r   c                   K   t        j                  d       d{    |rt        d      |rJt        j                  | j                        j                          t        j                  d       d{    ||z   S 7 b7 w)z"Wait 0.05 second and return a + b.rb  NFail!r   )r   r   r   rG  rF   rj   )r-   r   r  r  rj   s        r   rK  zRunCoroutineThreadsafeTests.add  sj     mmD!!!w''  +224--"""1u 	"
 #s"   BA>AB4B 5
B Bc                 z   | j                  dd||      }t        j                  || j                        }|r&| j                  j	                  |j
                  d       	 |j                  |      |j                         xs |j                          S  S # |j                         xs |j                          w  w xY w)z$Run add coroutine in the event loop.r   r  )r  rj   N)	rK  r   run_coroutine_threadsaferF   call_soon_threadsafer<   r   r   rj   )r-   r  rj   rM  advance_cororJ   r  s          r   targetz"RunCoroutineThreadsafeTests.target  s     xx14x711$		B II**499d;	-==)KKM,V]]_,FKKM,V]]_,s   B &B:c                     | j                   j                  d| j                        }| j                   j                  |      }| j	                  |d       y)z9Test coroutine submission from a thread to an event loop.Nr*  )rF   run_in_executorr  rm   r]   )r-   r  r   s      r   test_run_coroutine_threadsafez9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafe  s@    **4=--f5#r   c                 (   | j                   j                  d| j                  d      }| j                  t              5 }| j                   j                  |       ddd       | j                  dj                  j                         y# 1 sw Y   0xY w)z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTr  )	rF   r  r  rk   r   rm   rB  rn   r$   )r-   r  exc_contexts      r   ,test_run_coroutine_threadsafe_with_exceptionzHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exception  sq     **4dC|, 	1II((0	1g{4499:	1 	1s   BBc                      fd} j                   j                  d|      } j                  t        j                        5   j                   j                  |       ddd       t        j                   j                          t        j                   j                         D ]!  } j                  |j                                # y# 1 sw Y   lxY w)zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.c                  (     j                  d      S )Nr   r2  r  r,   s   r   rT   zXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>  s    4;;q;1 r   N)rF   r  rk   r   rV  rm   r   r  r  rh   r   )r-   r  r  ra   s   `   r   *test_run_coroutine_threadsafe_with_timeoutzFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout  s     2**4:w334 	1II((0	1tyy)%%dii0 	)DOODIIK(	)		1 	1s   C		Cc                       fd} j                   j                  d|      } j                  t        j                        5   j                   j                  |       ddd       y# 1 sw Y   yxY w)z\Test coroutine submission from a thread to an event loop
        when the task is cancelled.c                  (     j                  d      S )NTrQ  r  r,   s   r   rT   zZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>  s    4;;d;3 r   N)rF   r  rk   r   rl   rm   )r-   r  r  s   `  r   ,test_run_coroutine_threadsafe_task_cancelledzHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled  s[     4**4:w556 	1II((0	1 	1 	1s   A''A0c                     d } j                   j                  d fd      }t        j                         } j                   j	                  |        j                   j                   j                   j                   j                                 j                   j                  |        j                  t              5 } j                   j                  |       ddd        j                  t        |j                        d       |j                  \  \  }}} j                  |d   j                         y# 1 sw Y   `xY w)zjTest coroutine submission from a thread to an event loop
        when the task factory raise an exception.c                     t         r   )	NameError)rF   rJ   s     r   task_factoryzfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factory  s    Or   Nc                  (     j                  d      S )NT)r  r  r,   s   r   rT   zbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>  s    $++4+8 r   r   rn   )rF   r  r   r`  r  r   rX   get_task_factoryrk   r  rm   r]   r+  call_args_listrK  rn   )r-   r  r   r  r  rF   r'   r  s   `       r   4test_run_coroutine_threadsafe_task_factory_exceptionzPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception  s   	 ii''8: **,		''1 			22		224	6		""<0 y) 	.[II((-	. 	X445q9"*"4"4w-{/D/DE	. 	.s   D<<E)FF)FFNF)r2   r3   r4   __doc__rV   rK  r  r  r  r  r  r  r  r  s   @r   r  r    s7    9'
 8<!-"$;
)1Fr   r  c                   .     e Zd Z fdZ fdZd Z xZS )
SleepTestsc                     t         |           t        j                         | _        | j                  | j                         y r   r5  rZ   s    r   rV   zSleepTests.setUp  r6  r   c                 d    | j                   j                          d | _         t        |           y r   rF   r@   rU   tearDownrZ   s    r   r  zSleepTests.tearDown  #    			r   c                      dfd fd} j                   j                   |               j                  d       y )Nr   c                     | z  y r   r   )ry  r   s    r   
inc_resultz.SleepTests.test_sleep_zero.<locals>.inc_result  s    cMFr   c                     K   j                   j                  d       j                  d       t        j                  dd       d {   } j                  d        |        y 7 w)Nr   r   r:  r   )rF   rj  r]   r   r   )ry  r  r   r-   s    r   rJ   z(SleepTests.test_sleep_zero.<locals>.coro  sZ     II
A.VQ'a33CVQ'sO 4s   A	A.A, A.   )rF   rm   r]   )r-   rJ   r  r   s   ` @@r   test_sleep_zerozSleepTests.test_sleep_zero  s8    		 			$$TV,$r   )r2   r3   r4   rV   r  r  r  r  s   @r   r  r    s    '

%r   r  c                   (     e Zd Z fdZ fdZ xZS )CompatibilityTestsc                     t         |           t        j                         | _        | j                  | j                         y r   r5  rZ   s    r   rV   zCompatibilityTests.setUp,  r6  r   c                 d    | j                   j                          d | _         t        |           y r   r  rZ   s    r   r  zCompatibilityTests.tearDown1  r  r   )r2   r3   r4   rV   r  r  r  s   @r   r  r  (  s    '
 r   r  __main__)F);r  r  rj  rz   r   rw  r   rU  r  r   unittestr   r   r   r   r   test.test_asyncior   r   r   r   test.support.script_helperr	   r   r   r    r(   r*   r6   rD   r  r  
skipUnlessri   TestCaser  r  r  r  r  r  r  r  r  r  r&  r.  r3  rA  rF  rI  rW  r  r  r  r  r  r2   rC  r   r   r   <module>r     s      	 	  	 
         1  7(	
?(   f% f%RK7t2 2j WWj1 .UH-57*-$--*7*8 WWj1 .UH-57 0-1D1D 0 70 WUH-57=*2E2E  7 WWj157=*2E2E  7 WUH-57=**=*= 7 WWj1570=**=*= 070M>&// M:3F3F  
 WUH-57&,, &7&0m9 m9`5:..0J 5 WU$6757M*--/I M7M= =<3-z/B/B 3 WUH- 7U$5657>,j.A.A >7>8z** 80c3 c3LY()<)< Y(xyE?J,?,? yEx_F*"5"5 _FD%$$ %:,,  zHMMO r   