
    <eo                       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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d
lmZ d Zd ZdJd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          o e%ed          d           G d de!e#ej&                              Z' ej$         e%ed          o e%ed          d          e" G d de!ej&                                          Z( ej$         e%ed          d          e" G d  d!e!ej&                                          Z) ej$         e%ed          d          e" G d" d#e!ej&                                          Z* ej$         e%ed          d           G d$ d%e!ej&                              Z+ ej$         e%ed          d           G d& d'e!ej&                              Z, G d( d)e!e#ej&                  Z-e" G d* d+e!ej&                              Z. ej$         e%ed          d           G d, d-ej&                              Z/ G d. d/          Z0 G d0 d1ej&        e0          Z1 ej$         e%ed2          d           G d3 d4ej&        e0                      Z2 G d5 d6          Z3 G d7 d8e3ej&                  Z4 ej$         e%ed          d           G d9 d:e3ej&                              Z5 G d; d<ej&                  Z6 G d= d>          Z7 G d? d@e7ej&                  Z8 G dA dBe7ej&                  Z9 G dC dDej&                  Z: G dE dFej&                  Z; G dG dHej&                  Z<e=dIk    r ej>                     dS dS )KzTests for tasks.py.    N)mock)GenericAlias)
coroutines)futures)tasks)utils)support)assert_python_okc                  .    t          j        d            d S N)asyncioset_event_loop_policy     3/usr/lib/python3.11/test/test_asyncio/test_tasks.pytearDownModuler      s    !$'''''r   c                  
   K   d S r   r   r   r   r   coroutine_functionr      s      Dr   Fc                     |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    #   s     &u%# $88UUUCCCq588= 	> $
 *2555###>>r   c                 Z    d}	 | j         }|n|} |dz  }t          |           | j        |fS )zP
    Return information about the innermost exception context in the chain.
    r   TNr   )__context__typeargs)excdepthcontexts      r   get_innermost_contextr(   0   sG     E/?
 IIsx''r   c                       e Zd Zd Zd ZdS )Dummyc                     dS )Nz<Dummy>r   selfs    r   __repr__zDummy.__repr__B   s    yr   c                     d S r   r   )r-   r$   s     r   __call__zDummy.__call__E       r   N)__name__
__module____qualname__r.   r0   r   r   r   r*   r*   @   s2              r   r*   c                   &    e Zd Zd Zd Zd Zd ZdS )CoroLikeObjectc                      t          d          N*   )StopIteration)r-   vs     r   sendzCoroLikeObject.sendJ   s    Br   c                     d S r   r   )r-   r%   s     r   throwzCoroLikeObject.throwM   r1   r   c                     d S r   r   r,   s    r   closezCoroLikeObject.closeP   r1   r   c                     | S r   r   r,   s    r   	__await__zCoroLikeObject.__await__S   s    r   N)r2   r3   r4   r<   r>   r@   rB   r   r   r   r6   r6   I   sP                     r   r6   c                       e Zd ZdZdZdrd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/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z` eajb        d_          d`             Zcda Zddb Zedc Zfdd Zg eajb        d_          de             Zhdf Zidg Zjdh Zkdi Zldj Zmdk Zndl Zodm Zpdn Zqdo Zrdp Zsdq Zt xZuS )sBaseTaskTestsNTestTaskc                 >    | j                             ||||          S )N)loopnamer'   )	__class__Task)r-   rG   cororH   r'   s        r   new_taskzBaseTaskTests.new_task\   s!    ~""4dw"OOOr   c                 8    | j                             |          S NrG   )rI   Futurer-   rG   s     r   
new_futurezBaseTaskTests.new_future_   s    ~$$$$///r   c                      t                                                                                         _         j                             j                    fd j        _        d S )Nc                  8                           j                  S r   )rR   rG   r,   s   r   <lambda>z%BaseTaskTests.setUp.<locals>.<lambda>f   s    $//$)*D*D r   )supersetUpnew_test_looprG   set_task_factoryrL   create_futurer-   rI   s   `r   rW   zBaseTaskTests.setUpb   sY    &&((		""4=111"D"D"D"D	r   c                     | j         j        t                   }|                     |j        t          f           |                     |t                     d S r   )rI   rJ   strassertEqual__args__assertIsInstancer   r-   tasks     r   test_generic_aliasz BaseTaskTests.test_generic_aliash   sG    ~"3'///dL11111r   c                    d }|                      | j         |                      }|                     t          |d                     |                     |j        d            |                    d           |                     |j        d           |                     t          j	                  5 }| j        
                    |           d d d            n# 1 swxY w Y   |                     d|j        j        d                    d S )Nc                  
   K   d S r   r   r   r   r   rK   z;BaseTaskTests.test_task_cancel_message_getter.<locals>.coron         Dr   _cancel_message
my messager   )rL   rG   
assertTruehasattrr^   rg   cancelassertRaisesr   CancelledErrorrun_until_complete	exceptionr$   r-   rK   tcms       r   test_task_cancel_message_getterz-BaseTaskTests.test_task_cancel_message_getterm   s4   	 	 	MM$)TTVV,,#455666*D111	*L999w566 	,"I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	r|'8';<<<<<s   4CC"Cc                    d }|                      | j         |                      }|                    d           d|_        |                     |j        d           |                     t          j                  5 }| j                            |           d d d            n# 1 swxY w Y   |                     d|j	        j
        d                    d S )Nc                  
   K   d S r   r   r   r   r   rK   z;BaseTaskTests.test_task_cancel_message_setter.<locals>.coro}   rf   r   rh   zmy new messager   )rL   rG   rk   rg   r^   rl   r   rm   rn   ro   r$   rp   s       r   test_task_cancel_message_setterz-BaseTaskTests.test_task_cancel_message_setter|   s   	 	 	MM$)TTVV,,	,*,<===w566 	,"I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	)2<+<Q+?@@@@@s   =B$$B(+B(c                       G d d          fd j                             t          j         fdt	          d          D                         d S )Nc                       e Zd Zd ZdS )1BaseTaskTests.test_task_del_collect.<locals>.Evilc                 ,    t          j                     d S r   )gccollectr,   s    r   __del__z9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__   s    
r   N)r2   r3   r4   r}   r   r   r   Evilry      s#            r   r~   c                     K                 S r   r   )r~   s   r   runz0BaseTaskTests.test_task_del_collect.<locals>.run   s      466Mr   c                 V    g | ]%}                     j                               &S r   )rL   rG   ).0_r   r-   s     r   
<listcomp>z7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>   s<       45di//  r   d   )rG   rn   r   gatherrange)r-   r~   r   s   `@@r   test_task_del_collectz#BaseTaskTests.test_task_del_collect   s    	 	 	 	 	 	 	 		 	 	 	 	 		$$N     9>s   	 	 	 	 	r   c                 d   t          j                    }|                     |          }d }	 |                     t          d          5  | j                             ||                     d d d            n# 1 swxY w Y   |                                 d S # |                                 w xY w)Nc                    K   |  d {V  d S r   r   futs    r   r   z1BaseTaskTests.test_other_loop_future.<locals>.run   s      IIIIIIIIIr   zTask .* got Future .* attached)r   new_event_looprR   assertRaisesRegexRuntimeErrorrG   rn   r@   )r-   
other_loopr   r   s       r   test_other_loop_futurez$BaseTaskTests.test_other_loop_future   s    +--
ooj))	 	 		''(IK K 7 7	,,SSXX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 Js/   B $A8,B 8A<<B ?A< B B/c                     fd}t          j         |            | j                  |                     t          d          5  | j                                       d d d            d S # 1 swxY w Y   d S )Nc                     K     d {V  d S r   r   )rb   s   r   testz6BaseTaskTests.test_task_awaits_on_itself.<locals>.test   s      JJJJJJJJJr   rO   zTask cannot await on itself)r   ensure_futurerG   r   r   rn   )r-   r   rb   s     @r   test_task_awaits_on_itselfz(BaseTaskTests.test_task_awaits_on_itself   s    	 	 	 	 	 $TTVV$)<<<##L$AC C 	/ 	/I((...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A--A14A1c                    d }|                      | j         |                      }| j                            |           |                     |                                           |                     |                                d           |                     |j        | j                   |                     |	                                | j                   t          j                    }|                     |           |                      | |                      }|                     |j        |           |                    |           |                                 d S )Nc                  
   K   dS Nokr   r   r   r   notmuchz.BaseTaskTests.test_task_class.<locals>.notmuch         4r   r   )rL   rG   rn   ri   doner^   resultassertIs_loopget_loopr   r   set_event_loopr@   )r-   r   rq   rG   s       r   test_task_classzBaseTaskTests.test_task_class   s&   	 	 	MM$)WWYY//	$$Q'''!!!T***agty)))ajjllDI...%''D!!!MM$		**agt$$$"""

r   c                 X   d t          j                     | j                  }|                     |j        | j                   | j                            |           |                     |                                           |                     |	                                d                        }| 
                    |j                   |                     t          d          5  t          j        |           d d d            n# 1 swxY w Y   fd}| j                             |                      }|                     |j        | j                   | j                            |           |                     |                                           |                     |	                                d           t          j        | j                   | 
                    t           j        d            t          j                               }|                     |j        | j                   | j                            |           |                     |                                           |                     |	                                d           d S )Nc                  
   K   dS r   r   r   r   r   r   z;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuch   r   r   rO   r   no current event loopc                  @   K   t          j                                S r   r   r   )r   s   r   r   z8BaseTaskTests.test_ensure_future_coroutine.<locals>.test   s      (333r   )r   r   rG   r   r   rn   ri   r   r^   r   
addCleanupr@   r   r   r   )r-   rq   ar   r   s       @r   test_ensure_future_coroutinez*BaseTaskTests.test_ensure_future_coroutine   sy   	 	 	!''))$)<<<agty)))	$$Q'''!!!T***GII   ##L2IJJ 	% 	%!!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	4 	4 	4 	4 	4I((00agty)))	$$Q'''!!!T*** 	ty))).555!'')),,agty)))	$$Q'''!!!T*****s   0DDDc                    |                      | j                  }|                    d           t          j        |          }| j                            |           |                     |                                           |                     |	                                d           | 
                    ||           t          j                    }|                     |           |                     t                    5  t          j        ||          }d d d            n# 1 swxY w Y   |                                 t          j        || j                  }| 
                    ||           d S )NkorO   )rR   rG   
set_resultr   r   rn   ri   r   r^   r   r   r   r   rl   
ValueErrorr@   )r-   f_origfrG   s       r   test_ensure_future_futurez'BaseTaskTests.test_ensure_future_future   s{   ++$!&))	$$Q'''!!!T***a   %''D!!!z** 	9 	9%f4888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	

!&ty999a     s   D((D,/D,c                    d }|                      | j         |                      }t          j        |          }| j                            |           |                     |                                           |                     |                                d           | 	                    ||           t          j
                    }|                     |           |                     t                    5  t          j        ||          }d d d            n# 1 swxY w Y   |                                 t          j        || j                  }| 	                    ||           d S )Nc                  
   K   dS r   r   r   r   r   r   z6BaseTaskTests.test_ensure_future_task.<locals>.notmuch   r   r   r   rO   )rL   rG   r   r   rn   ri   r   r^   r   r   r   r   rl   r   r@   )r-   r   t_origrq   rG   s        r   test_ensure_future_taskz%BaseTaskTests.test_ensure_future_task   s~   	 	 	ty''))44!&))	$$Q'''!!!T***a   %''D!!!z** 	9 	9%f4888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	

!&ty999a     s   <DD#&D#c                 >    G d d          }d }t          j                    }|                     |           t          j         | |                      |          }|                    |           |                     |                                d           d S )Nc                       e Zd Zd Zd ZdS )6BaseTaskTests.test_ensure_future_awaitable.<locals>.Awc                     || _         d S r   rK   r-   rK   s     r   __init__z?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__  s     			r   c                 4    | j                                         S r   )rK   rB   r,   s    r   rB   z@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__  s    y**,,,r   N)r2   r3   r4   r   rB   r   r   r   Awr   
  s2        ! ! !- - - - -r   r   c                  
   K   dS r   r   r   r   r   rK   z8BaseTaskTests.test_ensure_future_awaitable.<locals>.coro  r   r   rO   r   )r   r   r   r   rn   r^   r   )r-   r   rK   rG   r   s        r   test_ensure_future_awaitablez*BaseTaskTests.test_ensure_future_awaitable	  s    	- 	- 	- 	- 	- 	- 	- 	-	 	 	 %''D!!!#BBttvvJJT:::$$$t,,,,,r   c                     |                      t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S r   )rl   	TypeErrorr   r   r,   s    r   test_ensure_future_neitherz(BaseTaskTests.test_ensure_future_neither  s    y)) 	( 	(!$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   =AAc                    t          j                    }|                     | j                  }|                     t
          d          5  t          j        ||           d d d            n# 1 swxY w Y   |                                 d S )NzRThe future belongs to a different loop than the one specified as the loop argumentrO   )r   r   rR   rG   r   r   r   r@   )r-   rG   r   s      r   test_ensure_future_error_msgz*BaseTaskTests.test_ensure_future_error_msg  s    %''OODI&&##J 18 9 9 	0 	0 !!$////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	

s   	A,,A03A0c                 z     d fd fd fd} j                              |                       d S )Nc                  ,   K                  d {V  d S r   r   )bars   r   fooz)BaseTaskTests.test_get_stack.<locals>.foo)  s"      #%%KKKKKKKKKr   c                  l  K                        d          } 	                     | d         j        j        d           d } n# d } w xY wt	          j                    }                    d|           |                    d           |                                }	                    |d           d S )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>.bar,  s      !$$A  1!4e<<<D ;==DMMM---IIaLLLBR!344444s   &A Ac                  b   K   t          j                     j                     d {V  d S rN   )r   r   rG   )r   r   r-   s   r   runnerz,BaseTaskTests.test_get_stack.<locals>.runner;  s9      %ccee$)<<<AGGGGGGGGGr   rG   rn   )r-   r   r   r   r   s   ` @@@r   test_get_stackzBaseTaskTests.test_get_stack&  s    	 	 	 	 		5 	5 	5 	5 	5 	5	 	 	 	 	 	 	
 		$$VVXX.....r   c                    | j                             d           d }|                     |j        d           |                     |j        d           |                     |j        t                     t          j        |          \  }}|d|} |            }d}|                     |j        d           |                     |j        |           | 	                    | j         |          }|
                    t                                 t          |d||j        d	          }|                     t          |          d
|z             |                                 |                     t          |          d|z             |                     t"          j        | j         j        |           t          |d||j                  }|                     t          |          d|z             | 	                    | j          |                      }| j                             |           t          |d||j                  }|                     t          |          d|z             d S )NFc                  
   K   dS Nabcr   r   r   r   r   z-BaseTaskTests.test_task_repr.<locals>.notmuchE        5r   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'>)rG   	set_debugr^   r2   r   r4   r3   
test_utilsget_function_sourcerL   add_done_callbackr*   r    _source_tracebackreprrk   rl   r   rm   rn   )	r-   r   filenamelinenor   gencoro_qualnamerq   rK   s	            r   test_task_reprzBaseTaskTests.test_task_reprB  s   	E"""	 	 	 	)9555-?	A 	A 	A+X666%9'BB&!66* giiGy111)=999 MM$)S))	EGG$$$y# ! 3tE E EaKdR	T 	T 	T 	



aNQUU	W 	W 	W 	'0)6	; 	; 	;vs ! 35 5a>E	G 	G 	G MM$)WWYY//	$$Q'''vs ! 35 5aJTQ	S 	S 	S 	S 	Sr   c                    d }|                      | j         |            d           }|                      | j         |            d           }|                     t          |          t          |                     t	          j        dt          |                    }|                     |           t	          j        dt          |                    }|                     |           |                     t          |	                    d                    t          |	                    d                               | j        
                    |           | j        
                    |           d S )Nc                  
   K   dS N{   r   r   r   r   r   z;BaseTaskTests.test_task_repr_autogenerated.<locals>.notmuchv        3r   z ^<Task pending name='Task-(\d+)'r   )rL   rG   assertNotEqualr   rematchassertIsNotNone
assertLessintgrouprn   )r-   r   t1t2match1match2s         r   test_task_repr_autogeneratedz*BaseTaskTests.test_task_repr_autogeneratedu  s3   	 	 	 ]]49ggii66]]49ggii66DHHd2hh///=tBxxHHV$$$=tBxxHHV$$$ 	FLLOO,,c&,,q//.B.BCCC	$$R(((	$$R(((((r   c                    d }|                      | j         |                      }|                    dh           |                     |                                d           | j                            |           d S )Nc                  
   K   dS r   r   r   r   r   r   z:BaseTaskTests.test_task_repr_name_not_str.<locals>.notmuch  r   r      z{6})rL   rG   set_namer^   get_namern   )r-   r   rq   s      r   test_task_repr_name_not_strz)BaseTaskTests.test_task_repr_name_not_str  sy    	 	 	 MM$)WWYY//	

A3u---	$$Q'''''r   c           	         | j                             d           d }|                     | j                   }|                     | j          ||                    }t	          j        | j                    |                     t          |          dt          j	        t          |                    z             |
                    d            | j                             |           d S )NFc                    K   |  d {V S r   r   r   s    r   wait_forz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_for  s      999999r   z<Task .* wait_for=%s>)rG   r   rR   rL   r   run_brieflyr   r   r   escaper   rn   )r-   r  r   rb   s       r   test_task_repr_wait_forz%BaseTaskTests.test_task_repr_wait_for  s    	E"""	 	 	 oodi((}}TY66ty)))d029T#YY3G3GG	I 	I 	I 	t	$$T*****r   c                     fd}d d  |            }|                      | j                            |          d           d S )Nc                  R   K                 d {V }               d {V }| |z   S r   r   )r   binner1inner2s     r   outerz-BaseTaskTests.test_task_basics.<locals>.outer  s>      fhhAfhhAQ3Jr   c                  
   K   dS r8   r   r   r   r   r  z.BaseTaskTests.test_task_basics.<locals>.inner1        2r   c                  
   K   dS )Ni  r   r   r   r   r  z.BaseTaskTests.test_task_basics.<locals>.inner2  r   r   i  )r^   rG   rn   )r-   r  rq   r  r  s      @@r   test_task_basicszBaseTaskTests.test_task_basics  sy    	 	 	 	 	 	
	 	 		 	 	 EGG55a88$?????r   c                 2    t          j                                                    d  fd}	                       |                      }                    |                                            d S #                                  w xY w)Nc                     K   t           r   r   r   r   r   raise_errorzFBaseTaskTests.test_exception_chaining_after_await.<locals>.raise_error  s      r   c                    K   	 t          d          # t          $ r}                                            }	 | d {V  nw# t          $ rj}                     t	          |           t
                     | j        }                    t	          |          |j        ft           df           Y d } ~ nd } ~ ww xY wY d } ~ d S Y d } ~ d S d } ~ ww xY w)N   )r  )KeyError	ExceptionrL   r^   r#   r   r"   r$   )r%   rb   chainedrG   r  r-   s      r   r   z>BaseTaskTests.test_exception_chaining_after_await.<locals>.run  s     
*qkk! * * *}}T;;==99*JJJJJJJJ  * * *$$T#YY
;;;!oG$$d7mmW\%B!4(* * * * * * * ** JJJJJ* * * * * **s>    
CC	AC	
B:A B50C	5B::C		C)r   r   r   rL   rn   r@   )r-   r   rb   rG   r  s   `  @@r   #test_exception_chaining_after_awaitz1BaseTaskTests.test_exception_chaining_after_await  s     %''D!!!	 	 		* 	* 	* 	* 	* 	* 	*	==ssuu--D##D)))JJLLLLLDJJLLLLs   3B   Bc                 h    d t          j                                                    d  fd}	                       |                      }                    |                                            n#                                  w xY w                     d           d S )Nc                 
   K   | r   r   )r%   s    r   process_exczYBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.process_exc  s      Ir   c                    K   	 t          d          # t          $ ra}                      |                     }	 | d {V  n'# t          $ r} | | j        u d | _        Y d } ~ nd } ~ ww xY wY d } ~ d S Y d } ~ d S d } ~ ww xY w)Nr   )r  r  rL   BaseExceptionr"   )r%   rb   	has_cyclerG   r!  r-   s     r   r   zQBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.run  s      	+smm# + + +}}T;;s+;+;<<+JJJJJJJJ$ + + +!$!7I&*COOOOOO+ JJJJJ $OOOOO+s=    
A?A:AA:
A+A&!A:&A++A::A?F)r   r   r   rL   rn   r@   r^   )r-   r   rb   r$  rG   r!  s   `  @@@r   6test_exception_chaining_after_await_with_context_cyclezDBaseTaskTests.test_exception_chaining_after_await_with_context_cycle  s     	%''D!!!	 	 		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	==ssuu--D##D)))JJLLLLDJJLLLLE*****s   3B Bc                 &   t          j                    }d }	 |                     | |                      }|                     |                                           |                     dt          |                     |                     |                                           |                     |                                           | 	                    dt          |                     |                     |                                           | 
                    t           j                  5  |                    |           d d d            n# 1 swxY w Y   |                                 d S # |                                 w xY w)Nc                  >   K   t          j        d           d {V  d S N
   r   sleepr   r   r   rb   z+BaseTaskTests.test_cancelling.<locals>.task  .      -###########r    cancelling )r   r   rL   assertFalse
cancellingassertNotInr   ri   rk   assertInrl   rm   rn   r@   r-   rG   rb   rq   s       r   test_cancellingzBaseTaskTests.test_cancelling  s   %''	$ 	$ 	$	dDDFF++AQ\\^^,,,^T!WW555OOAHHJJ'''OOALLNN+++MM.$q''222
 OOAHHJJ'''""7#9:: + +''***+ + + + + + + + + + + + + + + JJLLLLLDJJLLLLs0   DE: 7EE: EE:  E!E: :Fc                 `   t          j                    }d }	 |                     | |                      }|                    t          j        d                     |                     |                                           |                     dt          |                     | 	                    |
                                d           |                     |                                           |                    t          j        d                     |                     dt          |                     | 	                    |
                                d           |                     |                                           |                     |                                           | 	                    |
                                d           |                     |                                           |                     t           j                  5  |                    |           d d d            n# 1 swxY w Y   |                     |                                           |                     |                                           |                                 |                     |                                           |                     |                                           |                                 d S # |                                 w xY w)Nc                     K   	 t          j        d           d {V  d S # t           j        $ rC t          j                                                     t          j        d           d {V  Y d S w xY wr(  )r   r+  rm   current_taskuncancelr   r   r   rb   z/BaseTaskTests.test_uncancel_basic.<locals>.task  s      (mB''''''''''') ( ( ($&&//111mB''''''''''''(s     AA21A2{Gz?r-  r   r   )r   r   rL   rn   r+  ri   rk   r1  r   r^   r/  r.  	cancelledr0  rl   rm   r   r7  r@   r2  s       r   test_uncancel_basicz!BaseTaskTests.test_uncancel_basic  s   %''	( 	( 	(	dDDFF++A##GM$$7$7888 OOAHHJJ'''MM.$q''222Q\\^^Q///Q[[]]+++##GM$$7$7888 ^T!WW555Q\\^^Q///Q[[]]+++ OOAHHJJ'''Q\\^^Q///Q[[]]+++""7#9:: + +''***+ + + + + + + + + + + + + + +OOAKKMM***OOAFFHH%%% JJLLLOOAKKMM***OOAFFHH%%%JJLLLLLDJJLLLLs1   HL $I:L I

L I
B3L L-c                 6    t          j                    }dt          dt          f fd}	                      | |dd                    }|                    |          \  }}}                     |                                |                                |                                |                                d                                | |dd                    }|                    |          \  }}}                     |                                |                                |                                |                                d           |	                                 d S # |	                                 w xY w)Nr+  timeoutc                   K   t          j                                                    }dd}d}fd}|                    ||          }	 	 t          j        |            d {V  d}|                                 rD                                dk    r,t          j                    d         t           j	        u rt          n_# |                                 rD                                dk    r,t          j                    d         t           j	        u rt          w xY wn%# t          $ r 	                               Y nw xY wd}t          j        d           d {V  ||fS )NFc                  4    d                                   d S NTrk   )rb   	timed_outs   r   
on_timeoutzdBaseTaskTests.test_uncancel_structured_blocks.<locals>.make_request_with_timeout.<locals>.on_timeoutF  s     	r   Tr   )r   r6  r   
call_laterr+  rk   r7  sysexc_inform   TimeoutErrorri   )
r+  r<  rG   structured_block_finishedouter_code_reachedrB  timeout_handlerb   rA  r-   s
          @@r   make_request_with_timeoutzPBaseTaskTests.test_uncancel_structured_blocks.<locals>.make_request_with_timeout>  s     '))D==??DI(-%!&     
 "__WjAAN++(+!-.........04-"))+++!"+ MMOOq00LNN1-1GGG> +*G #))+++!"+ MMOOq00LNN1-1GGG> +***** + + +	*****+ "&-"""""""""79KKKs&   C -AD( AD$$D( (E
	E
      $@皙?)r+  r<  r   )
r   r   floatrL   rn   ri   r.  r^   r/  r@   )r-   rG   rJ  r   rA  rG  rH  r   s   `       r   test_uncancel_structured_blocksz-BaseTaskTests.test_uncancel_structured_blocks.  s    %''>	Le >	Le >	L >	L >	L >	L >	L >	L@	t%>%>TSV%W%W%WXXB''++ EI02D OOI&&&6777OO./// R]]__a000 t%>%>QPT%U%U%UVVB''++ EI02D Y'''OO5666OO.///R]]__a000JJLLLLLDJJLLLLs   EF Fc                 4     fd}                      |          }d }                     | |                      }|                    |j                                        t
          j                  5  |                    |           d d d            n# 1 swxY w Y                        |	                                                                |
                                                                |                                           d S )Nc               3   H   K   d V }                      d|            dV  d S NrK  r   assertAlmostEqualwhenr-   s    r   r   z&BaseTaskTests.test_cancel.<locals>.gen  3      55D""4...GGGGGr   c                  >   K   t          j        d           d {V  dS )NrK     r*  r   r   r   rb   z'BaseTaskTests.test_cancel.<locals>.task  s-      -%%%%%%%%%2r   )rX   rL   	call_soonrk   rl   r   rm   rn   ri   r   r9  r.  )r-   r   rG   rb   rq   s   `    r   test_cancelzBaseTaskTests.test_cancel  sE   	 	 	 	 	
 !!#&&	 	 	 MM$''qx   w566 	' 	'##A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'!!!&&&$$$$$s   6BBBc                 h   	
 g d}|D ]%\  }                                5  t          j                    	                     	           d 
	 
fd}                     	 |                      }                     t          j                  5 }	                    |           d d d            n# 1 swxY w Y   |j        } 	                    |j
        |           t          |          } 	                    |t          j        |df           d d d            n# 1 swxY w Y   'd S )N)r   r   )r   r   )rh   r]  )   r^  cancel_argsc                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r+  zHBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.sleep  .      !-+++++++++++r   c                     K                                               } t          j        d           d {V   | j          t          j        | g           d {V \  }}|                                  d S Nr   )rL   r   r+  rk   waitr   rb   r   pendingra  rG   r-   r+  s      r   rK   zGBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.coro  s      ==uuww77D!-*********DK--*1,v*>*>$>$>$>$>$>$>MD'KKMMMMMr   r   subTestr   r   r   rL   rl   rm   rn   ro   r^   r$   r(   r-   casesexpected_argsrK   rb   rr   r%   actualra  rG   r+  s   `       @@@r   +test_cancel_with_message_then_future_resultz9BaseTaskTests.test_cancel_with_message_then_future_result  s   
 
 
 +0 	@ 	@&K+66 @ @-//##D))), , ," " " " " " " " }}T446622&&w'=>> 2"++D1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2l  =999.s33  +]A>@ @ @+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@7   A1D%B:.D%:B>>D%B>AD%%D)	,D)	c                 h   	
 g d}|D ]%\  }                                5  t          j                    	                     	           d 
	 
fd}                     	 |                      }                     t          j                  5 }	                    |           d d d            n# 1 swxY w Y   |j        } 	                    |j
        |           t          |          } 	                    |t          j        |df           d d d            n# 1 swxY w Y   'd S )Nr\  r`  c                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r+  zKBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.sleep  rc  r   c                     K                                               } t          j        d           d {V   | j          t          j        | g           d {V \  }}|                                  d S re  rL   r   r+  rk   rf  ro   rg  s      r   rK   zJBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.coro  s      ==uuww77D!-*********DK--*1,v*>*>$>$>$>$>$>$>MD'NN$$$$$r   r   ri  rk  s   `       @@@r   .test_cancel_with_message_then_future_exceptionz<BaseTaskTests.test_cancel_with_message_then_future_exception  s   
 
 
 +0 	@ 	@&K+66 @ @-//##D))), , ,% % % % % % % % }}T446622&&w'=>> 2"++D1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2l  =999.s33  +]A>@ @ @+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@rp  c                     t          j                                                                                    fd fd}                      |                      }                     t                    5 }                    |           d d d            n# 1 swxY w Y   |j        } 	                    |j
        d           t          |          } 	                    |t           j        ddf           d S )Nc                  j   K                         d            t          j        d           d {V  d S r(  )r   r   r+  r   s   r   r+  z@BaseTaskTests.test_cancellation_exception_context.<locals>.sleep  sA      NN4   -###########r   c                     K                                               }  d {V                      | j        d           	 |  d {V  d S # t          j        $ r}t          d          |d }~ww xY w)Nmsgr9  )rL   rY  rk   r   rm   r   )
inner_taskexr   rG   r-   r+  s     r   rK   z?BaseTaskTests.test_cancellation_exception_context.<locals>.coro  s      tUUWW55JIIIIIIINN:,e4446          ) 6 6 6 --256s   A A4A//A4)r9  )ry  r   )r   r   r   rZ   rL   rl   r   rn   ro   r^   r$   r(   rm   )	r-   rK   rb   rr   r%   rn  r   rG   r+  s	   `     @@@r   #test_cancellation_exception_contextz1BaseTaskTests.test_cancellation_exception_context  sl   %''D!!!  ""	$ 	$ 	$ 	$ 	$	6 	6 	6 	6 	6 	6 	6 	6 }}T4466**z** 	*b##D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*l>222&s++#Xq1	3 	3 	3 	3 	3s   B((B,/B,c                     t          j                                                    d  fd}                      |                      }                     t           j                  5 }                    |           d d d            n# 1 swxY w Y   |j        }                     |j	        d           t          |          }                     |t           j        ddf           d S )Nc                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r+  zJBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.sleep  r,  r   c                     K                                               } |                     d           t          j        | g           d {V \  }}|                                  d S )Nrh   )rL   rk   r   rf  ro   )rb   r   rh  rG   r-   r+  s      r   rK   zIBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.coro  so      ==uuww//DKK%%%"),v"6"6666666MD'NNr   r]  r   )r   r   r   rL   rl   rm   rn   ro   r^   r$   r(   )r-   rK   rb   rr   r%   rn  rG   r+  s   `     @@r   -test_cancel_with_message_before_starting_taskz;BaseTaskTests.test_cancel_with_message_before_starting_task  sN   %''D!!!	$ 	$ 	$	 	 	 	 	 	 	 }}T4466**w566 	*"##D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*l?333&s++#_a8	: 	: 	: 	: 	:s   3BBBc                    d }|                      | j         |                      }t          j        | j                   |                                 |                     t          j        | j        j        |           | 	                    |
                                           | 	                    |                                           |                     |                                           d S )Nc                  r   K   t          j        d           d {V  t          j        d           d {V  dS )Nr   rX  r*  r   r   r   rb   z-BaseTaskTests.test_cancel_yield.<locals>.task%  sO      -"""""""""-"""""""""2r   )rL   rG   r   r  rk   rl   r   rm   rn   ri   r   r9  r.  )r-   rb   rq   s      r   test_cancel_yieldzBaseTaskTests.test_cancel_yield$  s    	 	 	
 MM$)TTVV,,ty)))	


"DI$@!	E 	E 	E!!!&&&$$$$$r   c                 $   |                      | j                  fd}|                     | j         |                      }t          j        | j                                                    |                     t          j                  5  | j        	                    |           d d d            n# 1 swxY w Y   | 
                                                               | 
                    |                                           d S )Nc                     K     d {V  dS NrX  r   r   s   r   rb   z4BaseTaskTests.test_cancel_inner_future.<locals>.task6        GGGGGGG2r   )rR   rG   rL   r   r  rk   rl   r   rm   rn   ri   r9  r-   rb   rq   r   s      @r   test_cancel_inner_futurez&BaseTaskTests.test_cancel_inner_future3  s(   OODI&&	 	 	 	 	 MM$)TTVV,,ty)))	


w566 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,&&&&&&&&s   B77B;>B;c                    |                      | j                  fd}|                     | j         |                      }t          j        | j                                                    |                                 |                     t          j                  5  | j        	                    |           d d d            n# 1 swxY w Y   | 
                    |                                           | 
                                                               | 
                    |                                           d S )Nc                     K     d {V  dS r  r   r  s   r   rb   zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.taskE  r  r   )rR   rG   rL   r   r  rk   rl   r   rm   rn   ri   r   r9  r  s      @r   &test_cancel_both_task_and_inner_futurez4BaseTaskTests.test_cancel_both_task_and_inner_futureB  sQ   OODI&&	 	 	 	 	 MM$)TTVV,,ty)))	


	


w566 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	!!!&&&&&&&&s   $CCCc                    |                      | j                  |                      | j                  fd}|                     | j         |                      }t          j        | j                   |                     |j                                       d            t          j        | j                   |                     |j                   |                                 | 	                    
                                           | j                            |          }|                     |d           |                     |
                                           d S )Nc                  Z   K     d {V  	  d {V  d S # t           j        $ r Y dS w xY wr8   r   rm   )fut1fut2s   r   rb   z5BaseTaskTests.test_cancel_task_catching.<locals>.taskZ  sW      JJJJJJJ








)   rrs    **r9   rR   rG   rL   r   r  r   _fut_waiterr   rk   ri   r9  rn   r^   r.  )r-   rb   rq   resr  r  s       @@r   test_cancel_task_catchingz'BaseTaskTests.test_cancel_task_catchingV  s?   ty))ty))	 	 	 	 	 	 MM$)TTVV,,ty)))amT***ty)))amT***	


(()))i**1--b!!!'''''r   c                    |                      | j                  |                      | j                  |                      | j                  fd}|                     | j         |                      }t          j        | j                   |                     |j                                       d            t          j        | j                   |                     |j                   |                                 | 	                    
                                           t          j        | j                   |                     |j                                       d           | j                            |          }|                     |d           |                     
                                           |                     |
                                           d S )Nc                  j   K    d {V  	  d {V  n# t           j        $ r Y nw xY w d {V } | S r   r  )r  r  r  fut3s    r   rb   z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr  si      JJJJJJJ







)   ******CJs    ((r9   r  )r-   rb   rq   r  r  r  r  s       @@@r   test_cancel_task_ignoringz'BaseTaskTests.test_cancel_task_ignoringm  s   ty))ty))ty))	 	 	 	 	 	 	 MM$)TTVV,,ty)))amT***ty)))amT***	


(()))ty)))amT***i**1--b!!!))***'''''r   c                 Z    t          j                    }                     |            fd}                     | |                                                                                                           t           j        |j                    	                    
                                            	                                                                                    j                                                                                   d S )Nc                     K                                                          j                   t          j        d           d {V  dS )Nr   rX  )rk   ri   _must_cancelr   r+  r-   rq   s   r   rb   z4BaseTaskTests.test_cancel_current_task.<locals>.task  sO      HHJJJOOAN+++-$$$$$$$$$2r   r   r   r   rL   r.  r9  rl   rm   rn   ri   r   r  rk   r2  s   `  @r   test_cancel_current_taskz&BaseTaskTests.test_cancel_current_task  s   %''D!!!	 	 	 	 	 	 MM$'''''"D$;Q	@ 	@ 	@!!!&&&((($$$$$r   c                 Z    t          j                    }                     |            fd}                     | |                                                                                                           t           j        |j                    	                    
                                            	                                                                                    j                                                                                   dS )z+coroutine end right after task is cancelledc                  h   K                                                          j                   dS r  )rk   ri   r  r  s   r   rb   z.BaseTaskTests.test_cancel_at_end.<locals>.task  s-      HHJJJOOAN+++2r   Nr  r2  s   `  @r   test_cancel_at_endz BaseTaskTests.test_cancel_at_end  s   %''D!!!	 	 	 	 	 	
 MM$'''''"D$;Q	@ 	@ 	@!!!&&&((($$$$$r   c                 t    t          j                                         fd           d x                               fd fd}                      |                                           t           j                  5                                 d d d            n# 1 swxY w Y                        	                                                                	                                                                	                                           d S )Nc                  ,                                      S r   )r@   rO   s   r   rU   z8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>  s    

 r   c                     K     d {V  d S r   r   r   s   r   nestedz6BaseTaskTests.test_cancel_awaited_task.<locals>.nested        IIIIIIIIIr   c                     K                                                t          j        d           d {V                                    d {V  d S re  rL   r   r+  rk   )rG   r  nested_taskr-   rb   s   r   rK   z4BaseTaskTests.test_cancel_awaited_task.<locals>.coro  ss       --ffhh77K-""""""""" KKMMM r   )
r   r   r   rR   rL   rl   rm   rn   ri   r9  )r-   rK   r   rG   r  r  rb   s   ` @@@@@r   test_cancel_awaited_taskz&BaseTaskTests.test_cancel_awaited_task  s    %'',,,,---!!{ood##	 	 	 	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 }}T4466**w566 	* 	*##D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	(()))--//000(((((s   B88B<?B<c                 :    ||vrt          d|d| d          d S )Nztext z not found in:
>>>z<<<r   )r-   textsubstrs      r   assert_text_containsz"BaseTaskTests.assert_text_contains  s7    MvMMDMMMNNN r   c                     t          j                                                    d  fd}                      |                      }	                     |                                d           d S # t           j        $ rC t          j                    } 	                    |d            	                    |d           Y d S w xY w)Nc                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r  zEBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.nested  .      -###########r   c                     K                                               } t          j        d           d {V  |                                  |  d {V  d S re  r  )rb   rG   r  r-   s    r   rK   zCBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.coro  sd      ==vvxx00D-"""""""""KKMMMJJJJJJJJJr   CancelledError did not occurawait asyncio.sleep(10)zawait task  # search target
r   r   r   rL   rn   failrm   	traceback
format_excr  r-   rK   rb   r   rG   r  s   `   @@r   'test_cancel_traceback_for_future_resultz5BaseTaskTests.test_cancel_traceback_for_future_result  s    %''D!!!	$ 	$ 	$	 	 	 	 	 	 	 }}T4466**	6##D))) II455555 % 	I 	I 	I%''B%%b*CDDD%%b*GHHHHHH		I   B ACCc                     t          j                                                    d  fd}                      |                      }	                     |                                d           d S # t           j        $ rC t          j                    } 	                    |d            	                    |d           Y d S w xY w)Nc                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r  zHBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.nested  r  r   c                    K                                               } t          j        d           d {V  |                                  t          j        | g           d {V \  }}|                                  d S re  rt  )rb   r   rh  rG   r  r-   s      r   rK   zFBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.coro  s      ==vvxx00D-"""""""""KKMMM"),v"6"6666666MD'NNr   r  r  z!task.exception()  # search targetr  r  s   `   @@r   *test_cancel_traceback_for_future_exceptionz8BaseTaskTests.test_cancel_traceback_for_future_exception  s    %''D!!!	$ 	$ 	$	 	 	 	 	 	 	 }}T4466**		6##D))) II455555 % 	5 	5 	5%''B%%b*CDDD%%b35 5 5 5 5 5		5r  c                      fd}                      |          dfd}                      |                      }                     t                    5 }                    |           d d d            n# 1 swxY w Y                        t          |j                  d                                |	                                                                d            
                    d                                           |                                                      t          j        j        |           d S )Nc               3      K   d V }                      d|            dV }                      d|            dV }                      d|            dV  d S )NrL  皙?333333?rR  rT  s    r   r   z:BaseTaskTests.test_stop_while_run_in_complete.<locals>.gen  sq      55D""3---99D""3---99D""3---IIIIIr   r   c                     K   dk     rAt          j        d           d {V  dz  dk    r                                  dk     ?d S d S )Nr)  rL  r      )r   r+  stop)rG   xs   r   rb   z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.task!  sd      b&&mC(((((((((Q66IIKKK	 b&&&&&&r   z+Event loop stopped before Future completed.r  r  )rX   rL   rl   r   rn   r^   r]   ro   r.  r   rS  timerk   r   rm   )r-   r   rb   rq   rr   rG   r  s   `    @@r   test_stop_while_run_in_completez-BaseTaskTests.test_stop_while_run_in_complete  s   	 	 	 	 	 !!#&&	  	  	  	  	  	  MM$''|,, 	'##A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'R\**F	H 	H 	H"""AsDIIKK000	


'0$2I1MMMMMs   B  BBc                     d }|                      | j         |                      }|                     t          d          5  d|_        d d d            n# 1 swxY w Y   | j                            |           d S )Nc                  
   K   d S r   r   r   r   r   rK   z.BaseTaskTests.test_log_traceback.<locals>.coro6  rf   r   zcan only be set to FalseT)rL   rG   r   r   _log_tracebackrn   r-   rK   rb   s      r   test_log_tracebackz BaseTaskTests.test_log_traceback5  s    	 	 	 }}TY//##J0JKK 	' 	'"&D	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'	$$T*****s   AAAc                      fd}                      |          }                     |t          j        d                                         |t          j        d                     fd}|                                         | |                                }                     |d                                d|                                           |                                         | |                                }                     d|                                                                |d           d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S NrL  r   333333?rR  rT  s    r   r   z$BaseTaskTests.test_wait.<locals>.gen@  R      55D""3---77D""4...JJJJJr   rL  r  c                     K   t          j        g           d {V \  } }                    | t          g                                         |t                                 dS r8   r   rf  r^   setr   rh  r   r  r-   s     r   r   z$BaseTaskTests.test_wait.<locals>.fooL  so      "),1v"6"6666666MD'T31v;;///Wcee,,,2r   r9   rX   rL   r   r+  rn   r^   rS  r  r-   r   rG   r   r  r   r  s   `    @@r   	test_waitzBaseTaskTests.test_wait>  sP   	 	 	 	 	 !!#&&MM$c 2 233MM$d 3 344	 	 	 	 	 	 	 %%dmmD##%%&@&@AAb!!!tTYY[[111 %%dmmD##%%&@&@AAtTYY[[111b!!!!!r   c                    d }| j                              |d                    }|                     | j         t          j        ||| j                              |d                    g                    }| j                             |          \  }}|                     |           |                     t          d |D                       ddh           d S )Nc                 
   K   | S r   r   ss    r   rK   z:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.coro]        Hr   r   spamc              3   >   K   | ]}|                                 V  d S r   r   r   r   s     r   	<genexpr>z?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>g  s*      66AQXXZZ666666r   )	rG   create_taskrL   r   rf  rn   r.  r^   r  )r-   rK   crb   r   rh  s         r   test_wait_duplicate_coroutinesz,BaseTaskTests.test_wait_duplicate_coroutines[  s    	 	 	I!!$$v,,//}}IL!Q	 5 5dd6ll C CDEEG G 	44T::g!!!66666668HIIIIIr   c                 X   |                      t          | j        j        t	          j        t                                           t	          j        d          }t	          j        |gd          }|                      t          | j        j        |           |                                 d S )NrK  r   return_when)	rl   r   rG   rn   r   rf  r  r+  r@   )r-   
sleep_coro	wait_coros      r   test_wait_errorszBaseTaskTests.test_wait_errorsi  s    	4L	! 	! 	!
 ]4((
L*2>>>	*)6		C 	C 	C 	r   c                      fd}                      |          }                     |t          j        d                    }                     |t          j        d                    }                     |t          j        ||gt          j                            }|                    |          \  }}                     |h|                                |h|                                |	                                            
                    |	                                                                |                                                                d|                                           |                    d           |                    t          j        ||g                     d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S )NrK  r   rL  rR  rT  s    r   r   z4BaseTaskTests.test_wait_first_completed.<locals>.genx  sR      55D""4...77D""3---IIIIIr   rK  rL  r  r)  )rX   rL   r   r+  rf  FIRST_COMPLETEDrn   r^   r.  r   ri   assertIsNoner   rS  r  advance_time)r-   r   rG   r   r  rb   r   rh  s   `       r   test_wait_first_completedz'BaseTaskTests.test_wait_first_completedv  s   	 	 	 	 	 !!#&&MM$d 3 344MM$c 2 233}}L!QW-DEEEG G //55g!d###!g&&&"""!!!!((**%%%sDIIKK000 	"aV 4 455555r   c                    d }d }|                      | j         |                      }|                      | j         |                      }|                      | j        t          j        ||gt          j                            }| j                            |          \  }}|                     ||h|           |                     |                                           | 	                    |
                                           |                     |                                           | 	                    |
                                           d S )Nc                  >   K   t          j        d           d {V  d S re  r*  r   r   r   coro1z2BaseTaskTests.test_wait_really_done.<locals>.coro1  s.      -"""""""""""r   c                  r   K   t          j        d           d {V  t          j        d           d {V  d S re  r*  r   r   r   coro2z2BaseTaskTests.test_wait_really_done.<locals>.coro2  sP      -"""""""""-"""""""""""r   r  )rL   rG   r   rf  r  rn   r^   ri   r   r  r   )r-   r  r  r   r  rb   r   rh  s           r   test_wait_really_donez#BaseTaskTests.test_wait_really_done  s2   	# 	# 	#	# 	# 	# MM$)UUWW--MM$)UUWW--}}IL!QW-DEEEG G 	44T::g!Q&&&!!!!((**%%%!!!!((**%%%%%r   c                      fd}                      |          }                     |t          j        d                    }d }                     | |                      }                     |t          j        ||gt          j                            }|                    |          \  }}                     |h|                                |h|                                d|	                                           |
                    d           |                    t          j        ||g                     d S )Nc               3   H   K   d V }                      d|            dV  d S rQ  rR  rT  s    r   r   z4BaseTaskTests.test_wait_first_exception.<locals>.gen  rV  r   rK  c                  $   K   t          d          )Nerr)ZeroDivisionErrorr   r   r   r%   z4BaseTaskTests.test_wait_first_exception.<locals>.exc  s      #E***r   r  r   r)  rX   rL   r   r+  rf  FIRST_EXCEPTIONrn   r^   rS  r  r  	r-   r   rG   r   r%   r  rb   r   rh  s	   `        r   test_wait_first_exceptionz'BaseTaskTests.test_wait_first_exception  sP   	 	 	 	 	
 !!#&& MM$d 3 344	+ 	+ 	+ MM$&&}}L!QW-DEEEG G //55g!d###!g&&&q$))++... 	"aV 4 455555r   c                 j     fd}                      |          }                     |t          j        d                    }d }                     | |                      }t          j        ||gt          j                  }|                    |          \  }}                     |h|                                |h|                                d|	                                           |
                    d           |                    t          j        ||g                     d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S )NrK  r   r8  rR  rT  s    r   r   z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.gen  R      55D""4...77D""4...JJJJJr   rK  c                  X   K   t          j        d           d {V  t          d          )Nr8  r   r   r+  r  r   r   r   r%   z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.exc  s6      -%%%%%%%%%#E***r   r  r8  r)  r  r  s	   `        r   !test_wait_first_exception_in_waitz/BaseTaskTests.test_wait_first_exception_in_wait  s8   	 	 	 	 	 !!#&& MM$d 3 344	+ 	+ 	+ MM$&&|QF0GHHH//55g!d###!g&&&tTYY[[111 	"aV 4 455555r   c                 D     fd}                      |          }                     |t          j        d                    d }                     | |                       fd}|                                         | |                                                      d|                                           |                                         | |                                                      d|                                           d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S r  rR  rT  s    r   r   z3BaseTaskTests.test_wait_with_exception.<locals>.gen  r  r   rL  c                  X   K   t          j        d           d {V  t          d          )Nr  reallyr
  r   r   r   sleeperz7BaseTaskTests.test_wait_with_exception.<locals>.sleeper  s6      -%%%%%%%%%#H---r   c                  L  K   t          j        g           d {V \  } }                    t          |           d                               |t	                                 t	          d | D                       }                    t          |          d           d S )Nr  c              3   B   K   | ]}|                                 |V  d S r   )ro   r  s     r   r  zFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>  s/      FFqAKKMM,E,E,E,E,EFFr   r   )r   rf  r^   lenr  )r   rh  errorsr   r  r-   s      r   r   z3BaseTaskTests.test_wait_with_exception.<locals>.foo  s      "),1v"6"6666666MD'SYY***Wcee,,,FFDFFFFFFS[[!,,,,,r   r  )rX   rL   r   r+  rn   rS  r  )r-   r   rG   r  r   r   r  s   `    @@r   test_wait_with_exceptionz&BaseTaskTests.test_wait_with_exception  s1   	 	 	 	 	 !!#&&MM$c 2 233	. 	. 	. MM$		**	- 	- 	- 	- 	- 	- 	- 	dCCEE : :;;;tTYY[[111dCCEE : :;;;tTYY[[11111r   c                      fd}                      |          }                     |t          j        d                                         |t          j        d                     fd}|                                         | |                                                      d|                                           |                    d           |                    t          j        g                     d S )Nc               3      K   d V }                      d|            dV }                      d|            dV }                      d|            dV  d S )NrL  r   r  )\(?rR  rT  s    r   r   z1BaseTaskTests.test_wait_with_timeout.<locals>.gen  sq      55D""3---77D""4...77D""4...JJJJJr   rL  r  c                     K   t          j        gd           d {V \  } }                    | t          g                                         |t          g                     d S )Nr  r<  r  r  s     r   r   z1BaseTaskTests.test_wait_with_timeout.<locals>.foo  sw      "),1vt"D"D"DDDDDDDMD'T3s88,,,Wc1#hh/////r   r  r)  )	rX   rL   r   r+  rn   rS  r  r  rf  )r-   r   rG   r   r   r  s   `   @@r   test_wait_with_timeoutz$BaseTaskTests.test_wait_with_timeout  s   	 	 	 	 	 !!#&&MM$c 2 233MM$d 3 344	0 	0 	0 	0 	0 	0 	0
 	dCCEE : :;;;tTYY[[111 	"aV 4 455555r   c                      fd}                      |          }                     |t          j        d                    }                     |t          j        d                    }|                    t          j        ||gd                    \  }}                     |t          |g                                          |t          |g                                          d|	                                           |
                    d           |                    t          j        ||g                     d S )Nc               3      K   d V }                      d|            dV }                      d|            dV }                      d|            dV  d S r  rR  rT  s    r   r   z8BaseTaskTests.test_wait_concurrent_complete.<locals>.gen$  sq      55D""3---77D""4...77D""3---IIIIIr   rL  r  r  r)  )rX   rL   r   r+  rn   rf  r^   r  rS  r  r  )r-   r   rG   r   r  r   rh  s   `      r   test_wait_concurrent_completez+BaseTaskTests.test_wait_concurrent_complete"  s4   	 	 	 	 	 !!#&&MM$c 2 233MM$d 3 344//L!Q---/ /g 	sA3xx(((#qc((+++sDIIKK000 	"aV 4 455555r   c                      fd}                      |          }                     |t          j        d                                         |t          j        d                     fd}|                                         | |                                }                     |d                                d|                                           d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S r  rR  rT  s    r   r   z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.gen?  r  r   rL  r  c                     K   t          j        t          g                     d {V \  } }                    | t	          g                                         |t	                                 dS r8   )r   rf  iterr^   r  r  s     r   r   z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.fooK  su      "),tQF||"<"<<<<<<<MD'T31v;;///Wcee,,,2r   r9   r  r  s   `    @@r    test_wait_with_iterator_of_tasksz.BaseTaskTests.test_wait_with_iterator_of_tasks=  s    	 	 	 	 	 !!#&&MM$c 2 233MM$d 3 344	 	 	 	 	 	 	 %%dmmD##%%&@&@AAb!!!tTYY[[11111r   c                 :  	
 d }|                      |          	d	_        t                      d
	
fd} |dd           |dd           |dd	          fd
}	                    |                     	 |                                }|                     d	                                           |                     d|d d         v            |                     d|d d         v            |                     |d         d	           d S )Nc               3   *   K   dV  dV  dV  dV  d S Nr   r8  r   r   r   r   r   z,BaseTaskTests.test_as_completed.<locals>.genW  s.      GGGGGGJJJGGGGGr   g      ?Fc                    K   t          j        |            d {V                      |           sdv rdv rd                    d           |S )Nr   r  TgQ?)r   r+  addr  )dtr  	completedrG   time_shifteds     r   r  z0BaseTaskTests.test_as_completed.<locals>.sleeperc  su      -#########MM! (C9$4$4	9I9I#!!$'''Hr   r8  r   r  r  r  c                  z   K   g } t          j        g          D ]}|                     | d {V            | S r   r   as_completedappend)valuesr   r   r  r  s     r   r   z,BaseTaskTests.test_as_completed.<locals>.foop  sR      F)1a)44 ' 'Agggggg&&&&Mr   r  )	rX   slow_callback_durationr  rn   rL   rS  r  ri   r^   )r-   r   r  r   r  r   r  r  r*  rG   r+  s        @@@@@@r   test_as_completedzBaseTaskTests.test_as_completedU  s`   	 	 	 !!#&&&)#EE		 	 	 	 	 	 	 GD#GD#GD#	 	 	 	 	 	 	 %%dmmD##%%&@&@AAtTYY[[111s2A2w'''s2A2w'''Q%%%%%r   c                 4   d }|                      |                              t          j        dd                                        t          j        dd                    fd}                    |                      |                                }|                     t          |          d|           |                     |d         d	           |                     |d
         d         d           |                     |d
         d
         t          j	                   | 
                    d                                                               d                               t          j        g                     d S )Nc               3   *   K   d V  dV  dV  dV  d S )Nr   rL  r   r   r   r   r   z9BaseTaskTests.test_as_completed_with_timeout.<locals>.gen~  s.      EEEGGGGGGIIIIIr   rL  r   r  r  c                    K   g } t          j        gd          D ]l}| r                    d           	 | d {V }|                     d|f           :# t           j        $ r!}|                     d|f           Y d }~ed }~ww xY w| S )NQ?r  g{Gz?r   r  )r   r.  r  r/  rF  )r0  r   r;   r%   r   r  rG   s       r   r   z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foo  s      F)1a&$??? , , ,%%d+++,AMM1a&))))+ , , ,MM1c(++++++++,Ms   AB'BBr  r   )r   r   r   r6  r)  )rX   r  r   r+  rn   rL   r^   r  r`   rF  rS  r  r  rf  )r-   r   r   r  r   r  rG   s       @@@r   test_as_completed_with_timeoutz,BaseTaskTests.test_as_completed_with_timeout|  s   	 	 	 !!#&&W]34455W]45566
	 
	 
	 
	 
	 
	 
	 %%dmmD##%%&@&@AAS1c***Q***QA&&&c!fQi)=>>>tTYY[[111 	"aV 4 455555r   c                      d }                      |          }t          j        dd           fd}|                                         | |                                 d S )Nc               3   "   K   d V  dV  dV  d S r&  r   r   r   r   r   z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.gen  s%      EEEGGGJJJJJr   r8  r   c                  |   K   t          j        gd          D ] } |  d {V }                    |d           !d S )Nr   r  r   )r   r.  r^   )r   r;   r   r-   s     r   r   z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo  s\      )1#q999 ) )GGGGGG  C(((() )r   )rX   r   r+  rn   rL   )r-   r   rG   r   r   s   `   @r   %test_as_completed_with_unused_timeoutz3BaseTaskTests.test_as_completed_with_unused_timeout  s    	 	 	
 !!#&&M$$$	) 	) 	) 	) 	) 	)
 	dCCEE : :;;;;;r   c                      d }                      |          t          j        dd          }t          j        dd          }||h fd}                     |                       d S )Nc               3   "   K   dV  dV  dV  d S )Nr   皙?r   r   r   r   r   z9BaseTaskTests.test_as_completed_reverse_wait.<locals>.gen  s%      GGGJJJGGGGGr   r>  r   rL  r  c                    K   t          t          j                            }                     t	          |           d           | d          d {V }                    |d                               d                                                               d           | d          d {V }                    |d                               d                                           d S )Nr  r   r   r>  r   r  rL  )listr   r.  r^   r  rS  r  r  )futsr  yfsrG   r-   s      r   r   z:BaseTaskTests.test_as_completed_reverse_wait.<locals>.test  s      ,R0011DSYY***1gAQ$$$""4555d###1gAQ$$$""455555r   )rX   r   r+  rn   )r-   r   r   r  r   rC  rG   s   `    @@r   test_as_completed_reverse_waitz,BaseTaskTests.test_as_completed_reverse_wait  s    	 	 	
 !!#&&M$$$M$$$V
	6 
	6 
	6 
	6 
	6 
	6 
	6 	'''''r   c                       fd}t          j        dd          }t          j        dd          }||h fd}                     |          }|                     |                       d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S )Nr>  r   rR  rT  s    r   r   z7BaseTaskTests.test_as_completed_concurrent.<locals>.gen  r  r   r>  r   r  c                  @  K   t          t          j                            }                     t	          |           d           t          j        d | D                        d {V \  }}                    t          d |D                       ddh           d S )Nr  c                 6    g | ]}t          j        |          S r   r   )r   r   s     r   r   zLBaseTaskTests.test_as_completed_concurrent.<locals>.test.<locals>.<listcomp>  s#    <<<&s++<<<r   c              3   >   K   | ]}|                                 V  d S r   r  r  s     r   r  zKBaseTaskTests.test_as_completed_concurrent.<locals>.test.<locals>.<genexpr>  s*       : : : : : : : :r   r   r  )r@  r   r.  r^   r  rf  r  )rA  r   rh  rC  r-   s      r   r   z8BaseTaskTests.test_as_completed_concurrent.<locals>.test  s      ,R0011DSYY***"),<<t<<<# #      MD' S : :T : : :::S#JGGGGGr   )r   r+  rX   rn   )r-   r   r   r  r   rG   rC  s   `     @r   test_as_completed_concurrentz*BaseTaskTests.test_as_completed_concurrent  s    	 	 	 	 	 M$$$M$$$V	H 	H 	H 	H 	H 	H !!#&&'''''r   c                 J   d fd}|                      | j         |                      }| j                            |           |                                }|                     t          |          ddh           |                     t          |          d           d S )Nc                 
   K   | S r   r   r  s    r   rK   zBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coro  r  r   c                     K   g }  d          }t          j        || d          g          D ]}|                     | d {V            | S )Nhamr  r-  )r   r  r   rK   s      r   r   zDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runner  sh      FUA)1af*>?? ' 'Agggggg&&&&Mr   rN  r  r  )rL   rG   rn   r   r^   r  r  )r-   r   r   r   rK   s       @r   &test_as_completed_duplicate_coroutinesz4BaseTaskTests.test_as_completed_duplicate_coroutines  s    	 	 		 	 	 	 	 mmDIvvxx00	$$S)))Vufo666Va(((((r   c                    d } |            }|                      |j                   t          j        |g          }|                     t
          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                  
   K   dS r8   r   r   r   r   rK   zDBaseTaskTests.test_as_completed_coroutine_without_loop.<locals>.coro  r  r   r   )r   r@   r   r.  r   r   r@  )r-   rK   r   rA  s       r   (test_as_completed_coroutine_without_loopz6BaseTaskTests.test_as_completed_coroutine_without_loop  s    	 	 	 DFF   #QC((##L2IJJ 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A55A9<A9c                 ~                                       }d  fd}|                     |                       d S )Nc                  
   K   dS r8   r   r   r   r   rK   zHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.coro  r  r   c                     K   t          t          j                     g                    }                     t	          |           d                               | d          d {V d           d S )Nr   r   r9   )r@  r   r.  r^   r  )rA  rK   r-   s    r   r   zHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.test  so      ,ddffX6677DSYY***47]]]]]]B/////r   )rX   rn   )r-   rG   r   rK   s   `  @r   ,test_as_completed_coroutine_use_running_loopz:BaseTaskTests.test_as_completed_coroutine_use_running_loop  sd    !!##	 	 		0 	0 	0 	0 	0 	0
 	'''''r   c                      fd}                      |          }d }                     | |dd                    }|                    |                                |                                                                |                                d                                d|                                           d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S )Nr>  rL  rR  rT  s    r   r   z%BaseTaskTests.test_sleep.<locals>.gen  sR      55D""4...::D""3---JJJJJr   c                    K   t          j        | dz             d {V  t          j        | dz  |           d {V }|S )Nr  r*  )r)  argr  s      r   r  z)BaseTaskTests.test_sleep.<locals>.sleeper  sX      -1%%%%%%%%%bdC00000000CJr   rL  yeah)	rX   rL   rn   ri   r   r^   r   rS  r  )r-   r   rG   r  rq   s   `    r   
test_sleepzBaseTaskTests.test_sleep  s    	 	 	 	 	 !!#&&	 	 	
 MM$V 4 455"""!!!V,,,sDIIKK00000r   c                      fd}                      |          }                     |t          j        dd                    }d |j        fd}||_        t          j        |                                j                   |	                                 t          j        |            
                    j                   d S )Nc               3   H   K   d V }                      d|            dV  d S rQ  rR  rT  s    r   r   z,BaseTaskTests.test_sleep_cancel.<locals>.gen'  rV  r   rK  r[  c                      | |g|R  S r   r   )delaycallbackr$   handleorig_call_laters      r   rC  z3BaseTaskTests.test_sleep_cancel.<locals>.call_later3  s!    $_UH<t<<<FMr   )rX   rL   r   r+  rC  r   r  r.  
_cancelledrk   ri   )r-   r   rG   rq   rC  rb  rc  s   `    @@r   test_sleep_cancelzBaseTaskTests.test_sleep_cancel%  s    	 	 	 	 	
 !!#&&MM$dF ; ;<</	 	 	 	 	 	
 %t$$$*+++	


t$$$)*****r   c                 
     fd}                      |          d  fd} |            }                                         |          d                                d                                           d S )Nc               3   |   K   d V }                      d|            dV }                      d|            dV  d S )NrL  r     rR  rT  s    r   r   z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genC  sR      55D""3---77D""4...IIIIIr   c                 >   K   t          j        |            d {V  d S r   r*  )r)  s    r   r+  z;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepL  r,  r   c                     K                         d                    }                     d| j                   	 |  d {V  dS # t          j        $ r Y dS w xY w)Nrh  rL  zslept inr9  )rL   rC  rk   r   rm   )r  rG   r-   r+  s    r   doitz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitO  s|      mmD%%++66GOOC000" "z ) # # #"{{#s   A	 	AAr9  rL  )rX   r^   rn   rS  r  )r-   r   rk  doerrG   r+  s   `   @@r   test_task_cancel_sleeping_taskz,BaseTaskTests.test_task_cancel_sleeping_taskA  s    	 	 	 	 	 !!#&&	$ 	$ 	$	" 	" 	" 	" 	" 	" 	" tvv0066DDDsDIIKK00000r   c                 &   |                      | j                  fd}|                     | j         |                      }t          j        | j                   |                     |j                   |                                 t          j        | j                   |                     t          j
        | j        j        |           |                     |j                   |                                                                d S )Nc                     K     d {V  d S r   r   r   s   r   rK   z:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro`  r  r   )rR   rG   rL   r   r  r   r  rk   rl   r   rm   rn   r  ri   r9  )r-   rK   rb   r   s      @r   test_task_cancel_waiter_futurez,BaseTaskTests.test_task_cancel_waiter_future]  s    oodi((	 	 	 	 	 }}TY//ty)))d&,,,ty)))"DI$@$	H 	H 	H$*+++(((((r   c                    d } |            }|                      | j        |          }|                     t          d          5  |                    d           d d d            n# 1 swxY w Y   |                     t          d          5  |                    t                                 d d d            n# 1 swxY w Y   |                     | j                            |          d           d S )Nc                  
   K   dS )Nr   r   r   r   r   r   z4BaseTaskTests.test_task_set_methods.<locals>.notmucho  r   r   znot support set_resultr   znot support set_exceptionr   )	rL   rG   r   r   r   set_exceptionr   r^   rn   )r-   r   r   rb   s       r   test_task_set_methodsz#BaseTaskTests.test_task_set_methodsn  sq   	 	 	 gii}}TY,,##L2JKK 	" 	"OOD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ##L2MNN 	- 	-z||,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	I((..	 	 	 	 	s$   A&&A*-A*"B::B>B>c                 X    G d dt           j                  } || j                  d fd}|                     | j         |                      }t	          j        | j                   |                     j                   t                      }	                    |           t	          j        | j                   | 
                    |           |                     |                                           |                     |                                           d S )Nc                   (     e Zd Z fdZ fdZ xZS )2BaseTaskTests.test_step_result_future.<locals>.Futc                 H    d| _          t                      j        |i | d S NF)cb_addedrV   r   )r-   r$   kwdsrI   s      r   r   z;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__  s,     %  $/$/////r   c                 H    d| _          t                      j        |i | d S r?  )rz  rV   r   r-   r$   kwargsrI   s      r   r   zDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback  s,     $))4:6:::::r   r2   r3   r4   r   r   __classcell__rI   s   @r   Futrw    sQ        0 0 0 0 0; ; ; ; ; ; ; ; ;r   r  rO   c                     K     d {V d S r   r   )r   r   s   r   wait_for_futurez>BaseTaskTests.test_step_result_future.<locals>.wait_for_future  s      YYYYYYFFFr   )r   rP   rG   rL   r   r  ri   rz  objectr   r   r   r  r   )r-   r  r  rq   r  r   r   s        @@r   test_step_result_futurez%BaseTaskTests.test_step_result_future  s-   	; 	; 	; 	; 	;'. 	; 	; 	; cty!!!	 	 	 	 	 	 MM$)__%6%677ty)))%%%hhsty)))c6"""!!!!((**%%%%%r   c                      fd}                      |          }d t                      fd}                     | |                      }t          j        |           |                                                      |                                                                t          t          j        |            	                    |                                                                |
                                                                |                                           d S )Nc               3   H   K   d V }                      d|            dV  d S rQ  rR  rT  s    r   r   z;BaseTaskTests.test_baseexception_during_cancel.<locals>.gen  rV  r   c                  >   K   t          j        d           d {V  d S r(  r*  r   r   r   r  z?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeper  r,  r   c                  X   K   	               d {V  d S # t           j        $ r  w xY wr   r  )base_excr  s   r   notmutchz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch  sJ      gii)   s    ))rX   
SystemExitrL   r   r  rk   r.  r   rl   ri   r9  r   ro   )r-   r   rG   r  rb   r  r  s   `    @@r    test_baseexception_during_cancelz.BaseTaskTests.test_baseexception_during_cancel  s7   	 	 	 	 	
 !!#&&	$ 	$ 	$ <<	 	 	 	 	 	 }}T88::..t$$$%%%*j&<dCCC		$$$))***dnn&&11111r   c                    d }|                      t          j        |                     d }|                      t          j        |                     d }|                     t          j        |                     |                      t          j        t	          j                                         |                     t          j        t	          j                                         d S )Nc                      d S r   r   r   r   r   fnz2BaseTaskTests.test_iscoroutinefunction.<locals>.fn  s    Dr   c               3      K   d V  d S r   r   r   r   r   fn1z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1  s      EEEEEr   c                  
   K   d S r   r   r   r   r   fn2z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2  rf   r   )r.  r   iscoroutinefunctionri   r   Mock	AsyncMock)r-   r  r  r  s       r   test_iscoroutinefunctionz&BaseTaskTests.test_iscoroutinefunction  s    	 	 	 	4R88999	 	 	4S99:::	 	 	3C889994TY[[AABBB3DN4D4DEEFFFFFr   c                    d }|                      t          j        |                      |            }|                      t          j        |                     | j                            |          }|                     |d           d S )Nc                  
   K   dS Nr   r   r   r   r   funcz;BaseTaskTests.test_coroutine_non_gen_function.<locals>.func  s      6r   r   )ri   r   r  iscoroutinerG   rn   r^   )r-   r  rK   r  s       r   test_coroutine_non_gen_functionz-BaseTaskTests.test_coroutine_non_gen_function  s    	 	 	 	3D99:::tvv+D11222i**400f%%%%%r   c                    |                      | j                  fd}fd}|                     | j         |                      }|                     | j         |                      }| j                            |          }|                     |           |                     |                                           d S )Nc                     K    S r   r   r   s   r   r  zIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.func  s      Jr   c                  6   K                         d           d S r  r   r   s   r   rK   zIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.coro  s      NN6"""""r   )rR   rG   rL   rn   r^   r  r   )r-   r  rK   r   r   r  r   s         @r   -test_coroutine_non_gen_function_return_futurez;BaseTaskTests.test_coroutine_non_gen_function_return_future  s    oodi((	 	 	 	 		# 	# 	# 	# 	# ]]49ddff--]]49ddff--i**2..c""""))++&&&&&r   c                 P                          t          j         j                              fd}                      j         | j                             j                                                             t          j         j                             d S )NrO   c                    K                        t          j                                                    t          j        d                                           t          j                               d S r   )r   r   r6  )rG   r-   rb   s    r   rK   z-BaseTaskTests.test_current_task.<locals>.coro  sf      MM'.00$777MM'.t44d;;;MM'.00$77777r   )r  r   r6  rG   rL   rn   r  s   ` @r   test_current_taskzBaseTaskTests.test_current_task  s    '.DI>>>???	8 	8 	8 	8 	8 	8 }}TYTY88	$$T***'.DI>>>?????r   c                 L                          t          j         j                                                   j                                        j                   fd} fd}                      j         | j                                                  j         | j                             j                            t          j        f                                           t          j         j                             d S )NrO   c                    K                        t          j                    u             d {V                       t          j                    u                                d           d S r?  ri   r   r6  r   )rG   r  r  r-   task1s    r   r  zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1  sp      OOG022e;<<<JJJJJJJOOG022e;<<<OOD!!!!!r   c                    K                        t          j                    u                                d            d {V                       t          j                    u            d S r?  r  )rG   r  r  r-   task2s    r   r  zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2  sp      OOG022e;<<<OOD!!!JJJJJJJOOG022e;<<<<<r   )r  r   r6  rG   rR   rL   rn   rf  )r-   r  r  r  r  r  r  s   `  @@@@r   )test_current_task_with_interleaving_tasksz7BaseTaskTests.test_current_task_with_interleaving_tasks  s3   '.DI>>>???ty))ty))	" 	" 	" 	" 	" 	" 	" 	"	= 	= 	= 	= 	= 	= 	= 	= dity)9)9::dity)9)9::	$$W\5%.%A%ABBB'.DI>>>?????r   c                     d                       j                   fdfd}t          j         |             j                  }t	          j         j                   |                                  j                            |                                d            	                    
                                           d S )Nr   c                  z   K   	  d {V                       d           d S # t          j        $ r  dz    w xY w)Nzgot past sleep() in inner()r   )r  r   rm   )proofr-   waiters   r   innerz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.inner  sd      9
 		788888	 )   
s   $ :c                  n   K   	                d {V  dz  d S # t           j        $ r	 dz  Y d S w xY w)Nr)  r   r  r  r  s   r   r  z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outer   sa      egg  )   s    44rO   e   )rR   rG   r   r   r   r  rk   rn   r^   ri   r9  r-   r  r   r  r  r  s   `  @@@r   test_yield_future_passes_cancelz-BaseTaskTests.test_yield_future_passes_cancel  s    ++	9 	9 	9 	9 	9 	9 	9	 	 	 	 	 	 !%%''	:::ty)))	


	$$Q'''$$$((**+++++r   c                     d                       j                  fd fd}t          j         |             j                  }t	          j         j                   |                                                      t          j         j        j	        |           
                    d            t	          j         j                                        d           d S )Nr   c                  &   K    d {V   dz   d S Nr   r   r  r  s   r   r  zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.inner6  %      LLLLLLLQJEEEr   c                     K                        t                    5  t          j        t          j                               g           d {V \  } }d d d            n# 1 swxY w Y   dz  d S Nr   )assertWarnsDeprecationWarningr   rf  r  )dpr  r  r-   s     r   r  zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outer;  s      !!"455 J J$\7+>uuww+G+G*HIIIIIIII1J J J J J J J J J J J J J J JSLEEEs   9A##A'*A'rO   r   rR   rG   r   r   r   r  rk   rl   rm   rn   r   r^   r  s   `  @@@r   &test_yield_wait_does_not_shield_cancelz4BaseTaskTests.test_yield_wait_does_not_shield_cancel0  s    ++	 	 	 	 	 	
	 	 	 	 	 	 	 !%%''	:::ty)))	


"DI$@!	E 	E 	E$ty)))"""""r   c                     |                      | j                  }t          j        |          }|                    d           | j                            |          }|                     |d           d S r8   )rR   rG   r   shieldr   rn   r^   )r-   r  r  r  s       r   test_shield_resultz BaseTaskTests.test_shield_resultJ  si    	**u%%i**511b!!!!!r   c                 ^   |                      | j                  }t          j        |          }t	          j        | j                   t          d          }|                    |           t	          j        | j                   |                     |	                                |           d S )Nexpected)
rR   rG   r   r  r   r  r   rs  r   ro   )r-   r  r  r%   s       r   test_shield_exceptionz#BaseTaskTests.test_shield_exceptionQ  s    	**u%%ty))):&&C   ty)))eoo''-----r   c                 <   |                      | j                  }t          j        |          }t	          j        | j                   |                                 t	          j        | j                   |                     |                                           d S r   )	rR   rG   r   r  r   r  rk   ri   r9  r-   r  r  s      r   test_shield_cancel_innerz&BaseTaskTests.test_shield_cancel_innerZ  sy    	**u%%ty)))ty)))))*****r   c                    |                      | j                  }t          j        |          }t	          j        | j                   |                                 t	          j        | j                   |                     |                                           | 	                    d|j
        dnt          |j
                             d S re  )rR   rG   r   r  r   r  rk   ri   r9  r^   
_callbacksr  r  s      r   test_shield_cancel_outerz&BaseTaskTests.test_shield_cancel_outerb  s    	**u%%ty)))ty)))))***!1!9AAs5CS?T?TUUUUUr   c                     |                      | j                  }|                    d           | j                            t	          j        |                    }|                     |d           d S r8   )rR   rG   r   rn   r   r  r^   )r-   r   r  s      r   test_shield_shortcutz"BaseTaskTests.test_shield_shortcutk  sb    oodi((ri**7>#+>+>??b!!!!!r   c                 &   d|                      | j                  fdfd}t          j         |            | j                  }t	          j        | j                   |                                 |                     t          j                  5  | j        	                    |           d d d            n# 1 swxY w Y   
                    d            t	          j        | j                   |                     d           d S )Nr   c                  &   K    d {V   dz   d S r  r   r  s   r   r  z/BaseTaskTests.test_shield_effect.<locals>.innerv  r  r   c                  Z   K   t          j                                 d {V  dz  d S r  r   r  r  s   r   r  z/BaseTaskTests.test_shield_effect.<locals>.outer{  s<      .)))))))))SLEEEr   rO   r   r  r  s      @@@r   test_shield_effectz BaseTaskTests.test_shield_effectq  s]   ++	 	 	 	 	 	
	 	 	 	 	 	
 !%%''	:::ty)))	


w566 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,$ty)))"""""s   CC	Cc                 t   |                      | j                  }|                      | j                  }t          j        ||          }t          j        |          }t          j        | j                   |                                 t          j        | j                   |                     |	                                           |
                    d           |
                    d           t          j        | j                   |                     |                                ddg           d S Nr   r  )rR   rG   r   r   r  r   r  rk   ri   r9  r   r^   r   )r-   child1child2parentr  s        r   test_shield_gatherz BaseTaskTests.test_shield_gather  s    ++++//v&&ty)))ty)))))***!!ty)))1a&11111r   c                    |                      | j                  }|                      | j                  }t          j        |          }t          j        |          }t          j        ||          }t          j        | j                   |                                 t          j        | j                   |                     |	                                t          j
                   |                     |                                           |                     |                                           |                    d           |                    d           t          j        | j                   d S r  )rR   rG   r   r  r   r   r  rk   r`   ro   rm   ri   r9  r   )r-   r  r  r  r  r  s         r   test_gather_shieldz BaseTaskTests.test_gather_shield  s,   ++++''''//ty)))ty)))f..00'2HIII((**+++((**+++!!ty)))))r   c                     d } |            }|                      |j                   |                     t          d          5  t	          j        |           d d d            d S # 1 swxY w Y   d S )Nc                  
   K   dS r8   r   r   r   r   rK   z>BaseTaskTests.test_shield_coroutine_without_loop.<locals>.coro  r  r   r   )r   r@   r   r   r   r  r-   rK   r  s      r   "test_shield_coroutine_without_loopz0BaseTaskTests.test_shield_coroutine_without_loop  s    	 	 	 $$$##L2IJJ 	" 	"N5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A%%A),A)c                     d fd}| j                              |                      }|                     |j        | j                    | j                             |          }|                     |d           d S )Nc                  
   K   dS r8   r   r   r   r   rK   zBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.coro  r  r   c                  @   K   t          j                                S r   r  r   s   r   r   zBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.test  s      >$$&&)))r   r9   )rG   rn   r^   r   )r-   r   r  r  rK   s       @r   &test_shield_coroutine_use_running_loopz4BaseTaskTests.test_shield_coroutine_use_running_loop  s    	 	 		* 	* 	* 	* 	*	,,TTVV44di000i**511b!!!!!r   c                 V   d }t          j        | j                   |                     t           j        d            t          j         |                      }|                     |j        | j                   | j                            |          }|                     |d           d S )Nc                  
   K   dS r8   r   r   r   r   rK   zABaseTaskTests.test_shield_coroutine_use_global_loop.<locals>.coro  r  r   r9   )r   r   rG   r   r  r^   r   rn   )r-   rK   r  r  s       r   %test_shield_coroutine_use_global_loopz3BaseTaskTests.test_shield_coroutine_use_global_loop  s    	 	 	 	ty))).555ttvv&&di000i**511b!!!!!r   c                 ^   |                      | j                  }|                     t          | j        j        t          j        |                     t                      }|                     t          | j        j        t          j        |                     |                                 d S r   )	rR   rG   rl   r   rn   r   r.  r   r@   r-   r   rK   s      r   test_as_completed_invalid_argsz,BaseTaskTests.test_as_completed_invalid_args  s    oodi(( 	)TY%A %%	' 	' 	'!##)TY%A &&	( 	( 	(

r   c                    |                      | j                  }|                     t          | j        j        t          j        |                     t                      }|                     t          | j        j        t          j        |                     |                                 |                     t          | j        j        t          j        g                      d S r   )
rR   rG   rl   r   rn   r   rf  r   r@   r   r  s      r   test_wait_invalid_argsz$BaseTaskTests.test_wait_invalid_args  s    oodi(( 	)TY%AL	 	 	!##)TY%AL	  	  	 

 	*di&BL	 	 	 	 	r   c                 J     j         j        } fd}t          j                    } j                            d            j                            |            | j                  }t          j        | j                  } 	                    t          j
         j                  |h           t          j        d             j                                          	                    t           j        j                  d           d }|j        }d }t!          j                      	                    t          j
         j                  t%                                 |                     j        dt          j        |d           |                                 d S )Nc                 `   K                        |           }| d {V  t          d          )Nzcode never reached)rR   r  )rG   futurer-   s     r   kill_mez>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_me  s:      __T**FLLLLLLL 0111r   TrO   r   z%Task was destroyed but it is pending!)messagerb   r   )rI   rJ   r   r  rG   r   set_exception_handlerr   r   r^   	all_tasksr   	_run_oncer  _readyr   r	   
gc_collectr  assert_called_withANY
reset_mock)r-   rJ   r  mock_handlerrK   rb   r   s   `      r   test_log_destroyed_pending_taskz-BaseTaskTests.test_log_destroyed_pending_task  s   ~"	2 	2 	2 	2 	2 y{{	D!!!	''555 wty!!$T	:::*	:::TFCCCt$$$ 		TY-..2221 	*	:::CEEBBB''	>H 04
 4
 	 	 	
 	!!!!!r   zasyncio.base_events.loggerc                      t          j                                                    d  fd}                     |                                            |j        j                   d S )Nc                     K   t           r   )r   r   r   r   rK   zBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coro  s      Or   c                     K                                               } t          j        d           d {V  |                                  d } d S )Nr>  r  )rb   rK   rG   r-   s    r   r   zDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner  sX      ==ttvv..D-%%%%%%%%%KKMMMDDDr   )r   r   r   rn   r.  errorcalled)r-   m_logr   rK   rG   s   `  @@r   &test_tb_logger_not_called_after_cancelz4BaseTaskTests.test_tb_logger_not_called_after_cancel  s    %''D!!!	 	 		 	 	 	 	 	 	 	)))+,,,,,r   c                    | j                             d           |                     | j         t                                }t	          j                    j        dz
  }|                     |j        t                     | 
                    |j        d         d d         t          |df           | j                             |           d S )NTr   r  test_task_source_traceback)rG   r   rL   r   rD  	_getframef_linenor`   r   r@  r^   __file__rn   )r-   rb   r   s      r   r	  z(BaseTaskTests.test_task_source_traceback  s    	D!!!}}TY(:(<(<==)A-d4d;;;/3BQB7" 68	9 	9 	9 		$$T*****r   c                 .   t          j                    }|                     |j                   |                     |          fd}|                     |                      dfd}                    |                               d           |                               |                     d           | 	                    
                                           |                                                     dg           dS )zYEnsure that a gathering future refuses to be cancelled once all
        children are donec                  r   K   fd} t          j         |                       }t          j        |          S )Nc               3      K    E d {V S r   r   r   s   r   
child_corozFBaseTaskTests.test_cancel_gather_1.<locals>.create.<locals>.child_coro3  s      #&'r   )r   r   r   )r  gather_futurer   s     r   createz2BaseTaskTests.test_cancel_gather_1.<locals>.create0  sF      ( ( ( ( (#N::<<88M(777r   Nc                 0                                     d S r   r@  )r   cancel_resultgather_tasks    r   cancelling_callbackz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callback:  s    '..00MMMr   r9   F)r   r   r   r@   rR   rn   r   r   r^   r.  r9  r   )r-   rG   r  r  r  r   r  s       @@@r   test_cancel_gather_1z"BaseTaskTests.test_cancel_gather_1)  s2    %''
###ood##	8 	8 	8 	8 	8 --ffhh77	1 	1 	1 	1 	1 	1 	1222r 	,,, 	.....00111++--t44444r   c           	      0    g d}|D ]	\  }                                5  t          j                                         j                   d  fd}	                      |                                            d           ni# t          j        $ rW}                     |j	        |           t          |          }                     |t          j        |df           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   d S )Nr\  r`  c                     K   d} 	 | dz  } t          j        t          j        d          d           d {V  | dk    rd S <)Nr   Tr>  return_exceptionsr   )r   r   r+  )r  s    r   r   z0BaseTaskTests.test_cancel_gather_2.<locals>.testV  s|      D#%nW]4-@-@?CE E E E E E E E E E!88"F#r   c                     K                                               } t          j        d           d {V   | j          |  d {V  d S )Nr  r  )qwera  rG   r-   r   s    r   mainz0BaseTaskTests.test_cancel_gather_2.<locals>.main_  sf      --ddff55C!-,,,,,,,,,CJ,,IIIIIIIIIr   zWgather() does not propagate CancelledError raised by inner task to the gather() caller.r   )rj  r   r   r   r@   rn   r  rm   r^   r$   r(   )	r-   rl  rm  r  r%   rn  ra  rG   r   s	   `     @@@r   test_cancel_gather_2z"BaseTaskTests.test_cancel_gather_2I  s   
 
 
 +0 !	 !	&K+66    -//
+++# # #       ++DDFF333 IIG    -   $$SX}===2377F$$ /B       +                             !	 !	s<   9D	!B>D	C:#AC50D	5C::D		D	D	c                 `     d  fd} j                              |                       d S )Nc                     K   ddz   d S )Nr   r   r   r   r   r   r   z3BaseTaskTests.test_exception_traceback.<locals>.foow  s      EEEEr   c                     K                        j                               } t          j        d           d {V                      |                                 j                   d S re  )rL   rG   r   r+  r   ro   __traceback__)rb   r   r-   s    r   r  z4BaseTaskTests.test_exception_traceback.<locals>.mainz  sk      ==CCEE22D-"""""""""  !1!1!?@@@@@r   r   )r-   r  r   s   ` @r   test_exception_tracebackz&BaseTaskTests.test_exception_tracebackt  s[    	 	 		A 	A 	A 	A 	A 	A
 		$$TTVV,,,,,r   c                    d }|| j         _        d }|                     |j        j                   |                     t                    5   |            }	 |                     | j         |           |                                 n# |                                 w xY w	 d d d            n# 1 swxY w Y   t          j
                     |                     |j        j                   |j        j        d         d         }|                     d|           |                     t          j        | j                   t#                                 d S )Nc                     t           r   r  )ra  r$   r~  s      r   rY  z8BaseTaskTests.test_error_in_call_soon.<locals>.call_soon  s    r   c                  
   K   d S r   r   r   r   r   rK   z3BaseTaskTests.test_error_in_call_soon.<locals>.coro  rf   r   r   z$Task was destroyed but it is pending)rG   rY  r.  r  r  rl   r   rL   r@   r{   r|   ri   	call_argsr1  r^   r   r  r  )r-   r  rY  rK   r   r  s         r   test_error_in_call_soonz%BaseTaskTests.test_error_in_call_soon  sq   	 	 	'		 	 	 	+,,,z** 	 	$&&Cdi---					 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
*++++'*1-<gFFF*4955suu=====s*   B.B3B.BB..B25B2c                 @   |                      t          d          5  |                     | j        d           d d d            n# 1 swxY w Y   |                      t          d          5  |                     | j        d           d d d            d S # 1 swxY w Y   d S )Nz!a coroutine was expected, got 123r   )r   r   rL   rG   r,   s    r   "test_create_task_with_noncoroutinez0BaseTaskTests.test_create_task_with_noncoroutine  s#   ##I$GI I 	* 	*MM$)S)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ##I$GI I 	* 	*MM$)S)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s#   AAA*BBBc                 l   d }|                      | j         |                      }|                     || j                   | j                            |           |                      | j         |                      }|                     || j                   | j                            |           d S )Nc                  
   K   d S r   r   r   r   r   rK   z@BaseTaskTests.test_create_task_with_async_function.<locals>.coro  rf   r   )rL   rG   r`   rJ   rn   r  s      r   $test_create_task_with_async_functionz2BaseTaskTests.test_create_task_with_async_function  s    	 	 	 }}TY//dDI...	$$T*** }}TY//dDI...	$$T*****r   c                    |                      | j        t                                }|                     || j                   |                     | j                            |          d           |                      | j        t                                }|                     || j                   |                     | j                            |          d           d S r8   )rL   rG   r6   r`   rJ   r^   rn   ra   s     r   (test_create_task_with_asynclike_functionz6BaseTaskTests.test_create_task_with_asynclike_function  s    }}TY(8(899dDI...55d;;R@@@ }}TY(8(899dDI...55d;;R@@@@@r   c                 `     d  fd} j                              |                       d S )Nc                  
   K   dS r  r   r   r   r   r  z2BaseTaskTests.test_bare_create_task.<locals>.inner  s      1r   c                     K   t          j                               }                     | j                   |  d {V }                    d|           d S r  )r   r  r`   rJ   r^   )rb   retr  r-   s     r   rK   z1BaseTaskTests.test_bare_create_task.<locals>.coro  sb      &uuww//D!!$	222******CQ$$$$$r   r   r  s   ` @r   test_bare_create_taskz#BaseTaskTests.test_bare_create_task  sU    	 	 		% 	% 	% 	% 	% 	% 		$$TTVV,,,,,r   c                 `     d  fd} j                              |                       d S )Nc                  
   K   d S r   r   r   r   r   	coro_noopz<BaseTaskTests.test_bare_create_named_task.<locals>.coro_noop  rf   r   c                     K   t          j                     d          }                     |                                 d           |  d {V  d S )NzNo-op)rH   )r   r  r^   r  )rb   r8  r-   s    r   rK   z7BaseTaskTests.test_bare_create_named_task.<locals>.coro  sU      &yy{{AAADT]]__g666JJJJJJJJJr   r   )r-   rK   r8  s   ` @r   test_bare_create_named_taskz)BaseTaskTests.test_bare_create_named_task  sU    	 	 		 	 	 	 	 	
 		$$TTVV,,,,,r   c                 >    t          j        dd           fd fd}t          j                    	                       |                      }                    |                                            d S #                                  w xY w)Ncvarnopedefaultc                     K   t          j        d           d {V                                                       d                                d           d S )Nr8  r=  something else)r   r+  r^   getr  )r<  r-   s   r   subz)BaseTaskTests.test_context_1.<locals>.sub  s`      -%%%%%%%%%TXXZZ000HH%&&&&&r   c                  r  K                                                        d                                                      }                     d                                                                d           |  d {V                                                       d           d S )Nr=  yes)r^   rB  rL   r  )subtaskr<  rG   r-   rC  s    r   r  z*BaseTaskTests.test_context_1.<locals>.main  s      TXXZZ000mmD##%%00GHHUOOOTXXZZ///MMMMMMMTXXZZ/////r   )contextvars
ContextVarr   r   rL   rn   r@   )r-   r  rb   r<  rG   rC  s   `  @@@r   test_context_1zBaseTaskTests.test_context_1  s    %ff===	' 	' 	' 	' 	' 	'
	0 	0 	0 	0 	0 	0 	0 	0 %''	==ttvv..D##D)))JJLLLLLDJJLLLLs   3B Bc                     t          j        dd           fd}t          j                    	                       |                      }                    |                                            n#                                  w xY w                                                     d           d S )Nr<  r=  r>  c            	        K   fd}                                                      d           t          d          D ]}                              }|                    |                                d|                                |j        d            | d {V                                                       d|            t          d          D ]e}                    d| d|            t          j	        d           d {V                                                       d| d|            f
d S )Nc                 2                         d           d S )NrA  )r  )r   r<  s    r   fut_on_donez?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_done  s     )*****r   r=  r  rE  r  -MbP?)
r^   rB  r   rR   r   r  rY  r   r   r+  )rM  jr   ir<  rG   r-   s       r   r  z*BaseTaskTests.test_context_2.<locals>.main  su     + + + + +
 TXXZZ0001XX @ @ood++%%k222q###s~t444							  Y1YY777q @ @AHH]1]]q]]+++!-.........$$TXXZZq1????	@@ @r   )	rG  rH  r   r   rL   rn   r@   r^   rB  )r-   r  rb   r<  rG   s   `  @@r   test_context_2zBaseTaskTests.test_context_2  s    %ff===	@ 	@ 	@ 	@ 	@ 	@ 	@, %''	==ttvv..D##D)))JJLLLLDJJLLLLV,,,,,s   3A= =Bc                 `    t          j        dd           fdfd}t          j                    	                      |                                                        n#                                  w xY w                                                     d           d S )Nr<  r   r>  c                   K   t          d          D ]r}                    | |z              t          j        t	          j        dd                     d {V                                                      | |z              sd S )Nr)  rO  r>  )r   r  r   r+  randomuniformr^   rB  )numrQ  r<  r-   s     r   rC  z)BaseTaskTests.test_context_3.<locals>.sub	  s      2YY 6 6q!!!mFN5$$?$?@@@@@@@@@  S1W55556 6r   c            	         K   g } t          d          D ]C}                     t          j        dd                              } | j        |           Dt          j        |   d {V  d S )Nr   r   r)  )r   r  rU  randintr/  r   r   )r   rQ  rb   rG   rC  s      r   r  z*BaseTaskTests.test_context_3.<locals>.main	  s      E3ZZ # #''FN1b,A,A(B(BCCT"""".%((((((((((r   )rG  rH  r   r   rn   r@   r^   rB  )r-   r  r<  rG   rC  s   ` @@@r   test_context_3zBaseTaskTests.test_context_3	  s     %fb999	6 	6 	6 	6 	6 	6	) 	) 	) 	) 	) 	) %''	##DDFF+++JJLLLLDJJLLLLR(((((s   A- -Bc                 j    t          j        d          fd fd}t          j                    	                       |                      }                    |          }                                 n#                                  w xY w                     g d|           d S )Nr<  c                 j   K   t          j        d           d {V                      |            d S re  r   r+  r  valr<  s    r   rK   z*BaseTaskTests.test_context_4.<locals>.coro/	  <      -"""""""""HHSMMMMMr   c                    K   g } t          j                    }|                     |                                                              d          |          }| d {V  |                     |                                                              d          |          }| d {V  |                     |                                         | S Nr   )r'   r  )rG  copy_contextr/  rB  rL   )r4  ctxr   r   rK   r<  rG   r-   s       r   r  z*BaseTaskTests.test_context_4.<locals>.main3	  s      C*,,CJJswwt}}%%%tTT!WWc::BHHHHHHHJJswwt}}%%%tTT!WWc::BHHHHHHHJJswwt}}%%%Jr   r  rG  rH  r   r   rL   rn   r@   r^   r-   r  rb   r4  rK   r<  rG   s   `   @@@r   test_context_4zBaseTaskTests.test_context_4,	  s    %f--	 	 	 	 	
	 
	 
	 
	 
	 
	 
	 
	 %''	==ttvv..D))$//CJJLLLLDJJLLLLs+++++s   3B Bc                 b   t          j        d          fdfd}t          j                    }	 |                     | |                      }|                    |          }|                                 n# |                                 w xY w|                     g d|           d S )Nr<  c                 j   K   t          j        d           d {V                      |            d S re  r]  r^  s    r   rK   z*BaseTaskTests.test_context_5.<locals>.coroK	  r`  r   c                    K   g } t          j                    }|                     |                                         t	          j         d          |          }| d {V  |                     |                                         t	          j         d          |          }| d {V  |                     |                                         | S rb  )rG  rc  r/  rB  r   r  )r4  rd  r   r   rK   r<  s       r   r  z*BaseTaskTests.test_context_5.<locals>.mainO	  s      C*,,CJJswwt}}%%%$TT!WWc:::BHHHHHHHJJswwt}}%%%$TT!WWc:::BHHHHHHHJJswwt}}%%%Jr   r  re  )r-   r  rG   rb   r4  rK   r<  s        @@r   test_context_5zBaseTaskTests.test_context_5H	  s    %f--	 	 	 	 	
	 
	 
	 
	 
	 
	 %''	==ttvv..D))$//CJJLLLLDJJLLLLs+++++s   3A> >Bc                 d   t          j        d          fdfd}t          j                    	                      |                      }                    |          }                                 n#                                  w xY w|                     g d|           d S )Nr<  c                 j   K   t          j        d           d {V                      |            d S re  r]  r^  s    r   rK   z*BaseTaskTests.test_context_6.<locals>.corog	  r`  r   c                    K   g } t          j                    }|                     |                                                              d          |          }| d {V  |                     |                                                              d          |          }| d {V  |                     |                                         | S rb  )rG  rc  r/  rB  r  )r4  rd  r   r   rK   r<  rG   s       r   r  z*BaseTaskTests.test_context_6.<locals>.maink	  s      C*,,CJJswwt}}%%%!!$$q''3!77BHHHHHHHJJswwt}}%%%!!$$q''3!77BHHHHHHHJJswwt}}%%%Jr   r  )rG  rH  r   r   r  rn   r@   r^   rf  s       @@@r   test_context_6zBaseTaskTests.test_context_6d	  s    %f--	 	 	 	 	
	 
	 
	 
	 
	 
	 
	 %''	##DDFF++D))$//CJJLLLLDJJLLLLs+++++s   2A? ?Bc                 J   t          j                    }t                      }	 |                     ||          }|                    |           |                     |                                |           |                                 d S # |                                 w xY wr   )r   r   r   rL   rn   r   get_coror@   )r-   rG   rK   rb   s       r   test_get_corozBaseTaskTests.test_get_coro	  s    %''!##	==t,,D##D)))MM$--//4000JJLLLLLDJJLLLLs   AB B")rE   N)vr2   r3   r4   rJ   rP   rL   rR   rW   rc   rs   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r%  r3  r:  rN  rZ  ro  ru  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#  r2  r7  r;  rD  rJ  rO  rR  rV  r\  re  rm  rp  rt  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  r  r$  r)  r+  r.  r0  r5  r:  rI  rR  rZ  rg  rk  ro  rr  r  r  s   @r   rD   rD   W   s!       DFP P P P0 0 0E E E E E2 2 2
= = =A A A    	/ 	/ 	/  "+ + +>! ! !*! ! !*- - - ( ( (  / / /81S 1S 1Sf) ) )$( ( (+ + +@ @ @   :+ + +@  0( ( (Tg g gR% % %* @  @  @D @  @  @D3 3 38: : :0% % %' ' '' ' '(( ( (.( ( (<% % %(% % %&") ") ")HO O O6 6 666 6 6:!N !N !NF+ + +" " ":J J J  6 6 6:& & &06 6 6:6 6 6<2 2 2@6 6 686 6 662 2 20%& %& %&N"6 "6 "6H< < <$( ( (6( ( (0) ) )$	 	 	( ( (1 1 1,+ + +81 1 18) ) )"  "& & &<2 2 2@G G G"
& 
& 
&' ' '@ @ @@ @ @6, , ,># # #4" " ". . .+ + +V V V" " "# # #02 2 2* * *"" " "	" 	" 	"
" 
" 
"	 	 	  (" (" ("T TZ,--- - .-- 
+ 
+ 
+5 5 5@) ) )V- - - TZ,--> > .->0	* 	* 	*+ + +	A 	A 	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                 n    t          j        d           | _         t                      j        |i | d S )Nc                      dS re  r   r   r   r   rU   zCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>	  s     r   )collectionsdefaultdictcallsrV   r   r}  s      r   r   z1add_subclass_tests.<locals>.CommonFuture.__init__	  s9    $0;;DJEGGd-f-----r   c                 `    | j         dxx         dz  cc<    t                      j        |i |S )Nr   r   )r{  rV   r   r}  s      r   r   z:add_subclass_tests.<locals>.CommonFuture.add_done_callback	  s>    J*+++q0+++,577,d=f===r   r  r  s   @r   CommonFuturerv  	  sQ        	. 	. 	. 	. 	.	> 	> 	> 	> 	> 	> 	> 	> 	>r   r}  c                       e Zd ZdS ) add_subclass_tests.<locals>.TaskNr2   r3   r4   r   r   r   rJ   r  	          r   rJ   c                       e Zd ZdS )"add_subclass_tests.<locals>.FutureNr  r   r   r   rP   r  	  r  r   rP   c                                            j                   fd}                      |             j                  } j                            |          }                     |d                                t          |j                  ddi                                t          j                  ddi           d S )NrO   c                  R   K   j                              fd             d {V S )Nc                  .                          d          S Nr  r  r   s   r   rU   zYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>	  s    v(>(> r   )rG   rY  )r   r-   s   r   r  zGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func	  s9      I > > > >???999999r   r  r   r   )rP   rG   rJ   rn   r^   dictr{  )r-   r  rb   r   r   s   `   @r   test_subclasses_ctask_cfuturez9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture	  s    kktyk))	 	 	 	 	 	 yydiy00--d33((( !$	& 	& 	& 	OO !$	& 	& 	& 	& 	&r   )rJ   rP   r  r	  )clsBaseTask
BaseFuturer}  rJ   rP   r  s          r   add_subclass_testsr  	  s    xHJ:-
> > > > > > > >    |X       z   & & &, CHCJ )FC%
 &*C"Jr   c                       e Zd Zd Zd ZdS )SetMethodsTestc                 "   t          |           j        }t          j                    x| j        _        }d } |            }|                     | j        |          }|                    |d           |                     | j        	                    |          d           |
                                 |j        d         d         d         }|                     t          j        d          5  |# 1 swxY w Y   |                                 d S )Nc                  >   K   t          j        d           d {V  dS NrL  r)  r*  r   r   r   r   z@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foo	  -      -$$$$$$$$$2r   r  r   ro   step\(\): already done)r#   rP   r   r  rG   call_exception_handlerrL   r   r^   rn   assert_called_oncer(  r   r   InvalidStateErrorr@   )r-   rP   exc_handlerr   rK   rb   r%   s          r   $test_set_result_causes_invalid_statez3SetMethodsTest.test_set_result_causes_invalid_state	  s-   d"9=D	(;	 	 	 suu}}TY--$'''I((..	 	 	 	&&(((#A&q)+6##G$=$=? ? 	 	I	 	 	 	 	 	 	 	 	

s   -C00C47C4c                     G d dt                     }t          |           j        }t          j                    x| j        _        }d } |            }|                     | j        |          }|                    | |                       | 	                    |          5  | j        
                    |           d d d            n# 1 swxY w Y   |                                 |j        d         d         d         }|                     t          j        d          5  |# 1 swxY w Y   |                                 d S )Nc                       e Zd ZdS )ESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcNr  r   r   r   MyExcr  	  s        Dr   r  c                  >   K   t          j        d           d {V  dS r  r*  r   r   r   r   zCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foo	  r  r   r   ro   r  )r  r#   rP   r   r  rG   r  rL   rs  rl   rn   r  r(  r   r   r  r@   )r-   r  rP   r  r   rK   rb   r%   s           r   'test_set_exception_causes_invalid_statez6SetMethodsTest.test_set_exception_causes_invalid_state	  s   	 	 	 	 	I 	 	 	 d"9=D	(;	 	 	 suu}}TY--T5577+++u%% 	/ 	/I((...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	&&(((#A&q)+6##G$=$=? ? 	 	I	 	 	 	 	 	 	 	 	

s$   "C		CC!D$$D(+D(N)r2   r3   r4   r  r  r   r   r   r  r  	  s2          0    r   r  _CFuture_CTaskzrequires the C _asyncio modulec                   h    e Zd Z eedd          Z eedd          Zej	        d             Z
d ZdS )CTask_CFuture_Testsr  Nr  c                    t          j        t          d          }d }|                     | j         |                      }| j                            |            |            }t          d          D ]@}|                     |            | j                   | j                            |           A|                      |            |z
  dd           d S )Ngettotalrefcountc                  
   K   d S r   r   r   r   r   rK   z@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.coro
  rf   r   r   rO   r   r)  )delta)	r	   get_attributerD  rL   rG   rn   r   r   rS  )r-   r  rK   rb   refs_beforerQ  s         r   test_refleaks_in_task___init__z2CTask_CFuture_Tests.test_refleaks_in_task___init__
  s    "06HII	 	 	}}TY//	$$T***&&((s 	/ 	/AMM$$&&tyM111I((....//11K?"MMMMMr   c                     d }|                      | j         |                      }| j                            |           |                     t                    5  |`d d d            d S # 1 swxY w Y   d S )Nc                  
   K   d S r   r   r   r   r   rK   zHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coro
  rf   r   )rL   rG   rn   rl   AttributeError_log_destroy_pendingr  s      r   &test_del__log_destroy_pending_segfaultz:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault
  s    	 	 	}}TY//	$$T***~.. 	* 	*)	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A++A/2A/)r2   r3   r4   getattrr   rJ   r   rP   r	   refcount_testr  r  r   r   r   r  r  	  sk         75(D))DWWj$//F
N 
N 
N* * * * *r   r  c                   B    e Zd Z eedd          Z eedd          ZdS )CTask_CFuture_SubclassTestsr  Nr  )r2   r3   r4   r  r   rJ   r   rP   r   r   r   r  r  
  s6         75(D))DWWj$//FFFr   r  c                   6    e Zd Z eedd          Zej        ZdS )CTaskSubclass_PyFuture_Testsr  N	r2   r3   r4   r  r   rJ   r   	_PyFuturerP   r   r   r   r  r  #
  s+        
 75(D))DFFFr   r  c                   6    e Zd Z eedd          Zej        ZdS )PyTask_CFutureSubclass_Testsr  N)	r2   r3   r4   r  r   rP   r   _PyTaskrJ   r   r   r   r  r  ,
  s*        
 WWj$//F=DDDr   r  c                   6    e Zd Z eedd          Zej        ZdS )CTask_PyFuture_Testsr  Nr  r   r   r   r  r  5
  s+         75(D))DFFFr   r  c                   6    e Zd Zej        Z eedd          ZdS )PyTask_CFuture_Testsr  N)	r2   r3   r4   r   r  rJ   r  r   rP   r   r   r   r  r  =
  s*         =DWWj$//FFFr   r  c                   *    e Zd Zej        Zej        ZdS )PyTask_PyFuture_TestsN	r2   r3   r4   r   r  rJ   r   r  rP   r   r   r   r  r  E
  s         =DFFFr   r  c                   *    e Zd Zej        Zej        ZdS )PyTask_PyFuture_SubclassTestsNr  r   r   r   r  r  L
  s        =DFFFr   r  c                       e Zd Zd ZdS )CTask_Future_Testsc                     G d dt           j                  }fd}t          j                    | _        	  || j                  | j                            dj        d           | j                             |                      }| j                            |          }| j                                         n# | j                                         w xY w| 	                    |d           d S )Nc                   $    e Zd Zed             ZdS )+CTask_Future_Tests.test_foobar.<locals>.Futc                     t           r   )r  r,   s    r   r   z4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loopX
  s    $$r   N)r2   r3   r4   propertyr   r   r   r   r  r  W
  s-        % % X% % %r   r  c                     K     d {V  dS r  r   r   s   r   rK   z,CTask_Future_Tests.test_foobar.<locals>.coro\
  s      IIIIIII6r   rO   rL  r   r  )
r   rP   r   rG   rC  r   r  rn   r@   r^   )r-   r  rK   rb   r  r   s        @r   test_foobarzCTask_Future_Tests.test_foobarV
  s   	% 	% 	% 	% 	%'. 	% 	% 	%
	 	 	 	 	 *,,		#49%%%CI  cna8889((00D)..t44CIOODIOOf%%%%%s   A.C   CN)r2   r3   r4   r  r   r   r   r  r  R
  s#        & & & & &r   r  c                   Z    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd ZdS )BaseTaskIntrospectionTestsNc                 n    G fdd          } |            }t          j                    |                     t          j                  t                                 |                     |           |                     t          j                  |h           |                     |           d S )Nc                   0    e Zd Ze fd            Zd ZdS )BBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLikec                     S r   r   rQ   s    r   r   zHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loopt
  s    r   c                     dS ry  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.donex
      ur   N)r2   r3   r4   r  r   r   rO   s   r   TaskLiker  s
  sG            X    r   r  r   r  r^   r   r  r  _register_task_unregister_taskr-   r  rb   rG   s      @r   test__register_task_1z0BaseTaskIntrospectionTests.test__register_task_1r
  s    	 	 	 	 	 	 	 	 	 	 xzzy{{*400#%%888D!!!*4004&999d#####r   c                 n    G fdd          } |            }t          j                    |                     t          j                  t                                 |                     |           |                     t          j                  |h           |                     |           d S )Nc                        e Zd Z fdZd ZdS )BBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLikec                     S r   r   rQ   s    r   r   zKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loop
      r   c                     dS ry  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.done
  r  r   Nr2   r3   r4   r   r   rO   s   r   r  r  
  s=                r   r  r  r  s      @r   test__register_task_2z0BaseTaskIntrospectionTests.test__register_task_2
  s    	 	 	 	 	 	 	 	 	 	 xzzy{{*400#%%888D!!!*4004&999d#####r   c                     G fdd          } |            }t          j                    |                     t          j                  t                                 |                     |           |                     t          j                  t                                 |                     |           d S )Nc                        e Zd Z fdZd ZdS )BBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikec                     S r   r   rQ   s    r   r   zKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loop
  r  r   c                     dS r?  r   r,   s    r   r   zGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.done
  s    tr   Nr  rO   s   r   r  r  
  s=                r   r  r  r  s      @r   test__register_task_3z0BaseTaskIntrospectionTests.test__register_task_3
  s    	 	 	 	 	 	 	 	 	 	 xzzy{{*400#%%888D!!!*400#%%888d#####r   c                 H   t          j                    }t          j                    }|                     t          j        |                     |                     ||           |                     t          j        |          |           |                     ||           d S r   )r   r  r  r   r6  _enter_taskr   _leave_taskr-   rb   rG   s      r   test__enter_taskz+BaseTaskIntrospectionTests.test__enter_task
  s    y{{y{{'.t44555t$$$g*400$777t$$$$$r   c                    t          j                    }t          j                    }t          j                    }|                     ||           |                     t                    5  |                     ||           d d d            n# 1 swxY w Y   |                     t          j        |          |           |                     ||           d S r   )	r   r  r  rl   r   r   r   r6  r  r-   r  r  rG   s       r   test__enter_task_failurez3BaseTaskIntrospectionTests.test__enter_task_failure
      		y{{u%%%|,, 	* 	*T5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*g*400%888u%%%%%   *BBBc                     t          j                    }t          j                    }|                     ||           |                     ||           |                     t          j        |                     d S r   )r   r  r  r  r  r   r6  r  s      r   test__leave_taskz+BaseTaskIntrospectionTests.test__leave_task
  si    y{{y{{t$$$t$$$'.t4455555r   c                    t          j                    }t          j                    }t          j                    }|                     ||           |                     t                    5  |                     ||           d d d            n# 1 swxY w Y   |                     t          j        |          |           |                     ||           d S r   )	r   r  r  rl   r   r  r   r   r6  r  s       r   test__leave_task_failure1z4BaseTaskIntrospectionTests.test__leave_task_failure1
  r  r  c                 0   t          j                    }t          j                    }|                     t                    5  |                     ||           d d d            n# 1 swxY w Y   |                     t          j        |                     d S r   )r   r  rl   r   r  r  r   r6  r  s      r   test__leave_task_failure2z4BaseTaskIntrospectionTests.test__leave_task_failure2
  s    y{{y{{|,, 	) 	)T4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)'.t4455555s   A$$A(+A(c                 $   t          j                    }t          j                    fd|_        |                     |           |                     |           |                     t          j                  t                                 d S )Nc                       S r   r   rO   s   r   rU   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    y{{y{{$D!!!d###*400#%%88888r   c                     t          j                    }t          j                    }|                     |           |                     t	          j        |          t                                 d S r   )r   r  r  r^   r   r  r  r  s      r   $test__unregister_task_not_registeredz?BaseTaskIntrospectionTests.test__unregister_task_not_registered
  sW    y{{y{{d###*400#%%88888r   )r2   r3   r4   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  l
  s        NKK$ $ $"$ $ $ $ $ $ % % %& & &6 6 6& & &6 6 69 9 99 9 9 9 9r   r  c                       e Zd Z eej                  Z eej                  Z eej	                  Z
 eej                  ZdS )PyIntrospectionTestsN)r2   r3   r4   staticmethodr   _py_register_taskr  _py_unregister_taskr  _py_enter_taskr  _py_leave_taskr  r   r   r   r  r  
  sW        !\%"9::N#|E$=>>,u344K,u344KKKr   r  _c_register_taskc                       e Zd Z eed          rB eej                  Z eej                  Z	 eej
                  Z eej                  ZdS dxZxZ	xZZdS )CIntrospectionTestsr  N)r2   r3   r4   rj   r   r   r  r  _c_unregister_taskr  _c_enter_taskr  _c_leave_taskr  r   r   r   r  r  
  s         wu()) M%e&<=='<(@AA"l5#677"l5#677HLLL)LK+++r   r  c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )BaseCurrentLoopTestsc                     t                                                       t          j                    | _        |                     | j                   d S r   rV   rW   r   r   rG   r   r[   s    r   rW   zBaseCurrentLoopTests.setUp
  @    *,,	DI&&&&&r   c                     t           r   )NotImplementedErrorr   s     r   rL   zBaseCurrentLoopTests.new_task
  s    !!r   c                 `    |                      t          j        | j                             d S rN   )r  r   r6  rG   r,   s    r   !test_current_task_no_running_loopz6BaseCurrentLoopTests.test_current_task_no_running_loop
  s,    '.DI>>>?????r   c                     |                      t          d          5  t          j                     d d d            d S # 1 swxY w Y   d S )Nzno running event loop)r   r   r   r6  r,   s    r   *test_current_task_no_running_loop_implicitz?BaseCurrentLoopTests.test_current_task_no_running_loop_implicit
  s    ##L2IJJ 	# 	# """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   =AAc                       fd}                       |                       j                                                            t	          j         j                             d S )Nc                    K                         t          j         j                                                   t          j        d                                            t          j                               d S rN   )r   r   r6  rG   ra   s   r   rK   zGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.coro  sm      MM'.DI>>>EEEMM'.t44d;;;MM'.00$77777r   rO   )rL   rG   rn   r  r   r6  r  s   ` @r   $test_current_task_with_implicit_loopz9BaseCurrentLoopTests.test_current_task_with_implicit_loop   s{    	8 	8 	8 	8 	8 	8 }}TTVV$$	$$T***'.DI>>>?????r   )	r2   r3   r4   rW   rL   r  r  r  r  r  s   @r   r  r  
  s~        ' ' ' ' '
" " "@ @ @# # #	@ 	@ 	@ 	@ 	@ 	@ 	@r   r  c                       e Zd Zd ZdS )PyCurrentLoopTestsc                 8    t          j        || j                  S rN   )r   r  rG   r   s     r   rL   zPyCurrentLoopTests.new_task  s    }T	2222r   Nr2   r3   r4   rL   r   r   r   r  r    s#        3 3 3 3 3r   r  c                       e Zd Zd ZdS )CCurrentLoopTestsc                 L     t          t          d          || j                  S )Nr  rO   )r  r   rG   r   s     r   rL   zCCurrentLoopTests.new_task  s#    'wuh''49====r   Nr  r   r   r   r  r    s#        > > > > >r   r  c                   4    e Zd Zd Zej        d             ZdS )GenericTaskTestsc                 t    |                      t          t          j        t          j                             d S r   )ri   
issubclassr   rJ   rP   r,   s    r   test_future_subclassz%GenericTaskTests.test_future_subclass  s(    
7<@@AAAAAr   c                     	 dd l }dd l}dd l}	 dd l}d S # t          $ r |                     d           Y d S w xY w# t          $ r |                     d           Y d S w xY w)Nr   z_asyncio module is missingzC modules are not available)
_functools_json_pickle_asyncioImportErrorr  skipTest)r-   r'  r(  r)  r*  s        r   test_asyncio_module_compiledz-GenericTaskTests.test_asyncio_module_compiled  s    
	8LLLNNN8 8 8 8		67777778  	9 	9 	9MM7888888	9s   ;  88AAN)r2   r3   r4   r%  r	   cpython_onlyr-  r   r   r   r"  r"    sE        B B B 8 8 8 8 8r   r"  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        d           d S )NF)cleanup)rV   rW   rX   one_loopr   r   r[   s    r   rW   zGatherTestsBase.setUp4  s[    **,,,,..DM599999r   c                 N    |j         rt          j        |           |j         d S d S r   )r  r   r  rQ   s     r   	_run_loopzGatherTestsBase._run_loop:  s=    k 	)"4((( k 	) 	) 	) 	) 	)r   c                      fdt          d          D             \  }}}  j                             |||          i |}t          j                    }|                    |           |                    d           |                    d                                 j                    	                    |j
        d                                |                                           |                    d                                 j                   |                    |            	                    |                                g d           d S )Nc                 B    g | ]}j                                         S r   r3  rZ   r   rQ  r-   s     r   r   z2GatherTestsBase._check_success.<locals>.<listcomp>?  s'    CCCQ4=..00CCCr   r  r   r  F)r  r   r  )r   _gatherwrap_futuresr   MockCallbackr   r   r5  r3  r^   r  r.  r   assert_called_once_withr   )r-   r~  r   r  r  r   cbs   `      r   _check_successzGatherTestsBase._check_success>  s7   CCCC%((CCC1adlD--aA66A&AA$&&b!!!	Q	Qt}%%%E***$$$	Qt}%%%
""3'''yyy11111r   c                 Z    |                                   |                      d           d S )NFr  r?  r,   s    r   test_successzGatherTestsBase.test_successM  s1    e44444r   c                 2    |                      d           d S )NTr  rA  r,   s    r   test_result_exception_successz-GatherTestsBase.test_result_exception_successQ  s    d33333r   c           	           fdt          d          D             \  }}}}}  j                             |||||           }t          j                    }|                    |           t                      }|                    d           |                    |            	                     j
                                        |                                           |                    |                                |                                |           |                    d           |                                 |                    t#                                 |                                 d S )Nc                 B    g | ]}j                                         S r   r8  r9  s     r   r   z6GatherTestsBase.test_one_exception.<locals>.<listcomp>U  '    III14466IIIr   r_  r   r  )r   r:  r;  r   r<  r   r  r   rs  r5  r3  ri   r   r=  r   ro   rk   r   )	r-   r   r  r  r  er   r>  r%   s	   `        r   test_one_exceptionz"GatherTestsBase.test_one_exceptionT  s?   IIIIaIII1aAdlD--aAq!<<=$&&b!!!!!	Q	t}%%%

###
""3'''cmmoos+++	Q	


	'''	r   c                 D     fdt          d          D             \  }}}}  j                             ||||          ddi}t          j                    }|                    |           t                      }t                      }|                    d           |	                    |           |                    d            
                     j                                        |                                           |	                    |            
                     j                                        |                                           |                    |                                |                                dd||g           d S )Nc                 B    g | ]}j                                         S r   r8  r9  s     r   r   z:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>g  s'    FFFdm1133FFFr      r  Tr   r  )r   r:  r;  r   r<  r   r  r   r   rs  r5  r3  r.  r   ri   r=  r^   r   )	r-   r   r  r  r  r   r>  r%   exc2s	   `        r   test_return_exceptionsz&GatherTestsBase.test_return_exceptionsf  sr   FFFFU1XXFFF
1adlD--aAq99 3-13 3$&&b!!!!!~~	Q		Qt}%%%$$$	t}%%%

###
""3'''1c4'899999r   c                    d                     d          }t          dd|          \  }}}|                     |                                d           t          d|dd          \  }}}|                     |                                d           t          d|dd          \  }}}|                     |                                d	           t          dd|dd          \  }}}|                     |                                d           t          dd
dd|          \  }}}|                     |                                d	           d S )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_debugy  ss   yy : ; ; /tT4@@VV(333.tTBD=?A A AVV 	(333.tTBE=?A A AVV 	'222.tT4BE=?A A AVV 	(333 /tT5/3T; ;VV'22222r   )r2   r3   r4   rW   r5  r?  rB  rD  rI  rN  r\  r  r  s   @r   r0  r0  2  s        : : : : :) ) )2 2 25 5 54 4 4  $: : :&3 3 3 3 3 3 3r   r0  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )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                     |                      t          d          5  t          j                     d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   r   r,   s    r   ,test_constructor_empty_sequence_without_loopz>FutureGatherTests.test_constructor_empty_sequence_without_loop  s    ##L2IJJ 	 	N	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                    d }| j                              |                      }|                     |t          j                   |                     |j        | j                    |                     | j                    |                     |	                                           | 
                    |                                g            d S )Nc                  ,   K   t          j                    S r   ra  r   r   r   r   zRFutureGatherTests.test_constructor_empty_sequence_use_running_loop.<locals>.gather  s      >###r   )r3  rn   r`   r   rP   r   r   r5  ri   r   r^   r   )r-   r   r   s      r   0test_constructor_empty_sequence_use_running_loopzBFutureGatherTests.test_constructor_empty_sequence_use_running_loop  s    	$ 	$ 	$m..vvxx88c7>222ci///t}%%%

###r*****r   c                    t          j        | j                   |                     t           j        d            t          j                    }|                     |t           j                   |                     |j        | j                   | 	                    | j                   | 
                    |                                           |                     |                                g            d S r   )r   r   r3  r   r   r`   rP   r   r   r5  ri   r   r^   r   )r-   r   s     r   /test_constructor_empty_sequence_use_global_loopzAFutureGatherTests.test_constructor_empty_sequence_use_global_loop  s    t}---.555nc7>222ci///t}%%%

###r*****r   c                     | j                                         }| j                                        }|                     t                    5  t          j        ||           d d d            d S # 1 swxY w Y   d S r   )r3  rZ   r   rl   r   r   r   )r-   r  r  s      r   %test_constructor_heterogenous_futuresz7FutureGatherTests.test_constructor_heterogenous_futures  s    }**,,,,..z** 	' 	'N4&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A00A47A4c                      fdt          d          D             }t          j        | }                     |j         j                                         j                                        |                                           t          j        | }                     |j         j                                         j                                        |                                           d S )Nc                 B    g | ]}j                                         S r   )r   rZ   r9  s     r   r   zIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>  s'    FFFDO1133FFFr   r  )	r   r   r   r   r   r   r5  r.  r   )r-   childrenr   s   `  r   #test_constructor_homogenous_futuresz5FutureGatherTests.test_constructor_homogenous_futures  s    FFFFU1XXFFFnh'ci111t'''$$$nh'ci111t'''$$$$$r   c                 6     fdt          d          D             \  }}}}}t          j        |||||          }t          j                    }|                    |           |                    d           |                                                       j	                    
                    |                                           |                    |                                |                                                                |                                t          j                   |                    d           |                                 |                    t'                                 |                                 d S )Nc                 B    g | ]}j                                         S r   r8  r9  s     r   r   z;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>  rG  r   r_  r   r  )r   r   r   r   r<  r   r   rk   r5  r3  ri   r   r=  r.  r9  r`   ro   rm   rs  r   )r-   r   r  r  r  rH  r   r>  s   `       r   test_one_cancellationz'FutureGatherTests.test_one_cancellation  sC   IIIIaIII1aAnQ1a++$&&b!!!	Q	


t}%%%

###
""3''')))cmmoow/EFFF	Q	


	'''	r   c           	           fdt          d          D             \  }}}}}}t          j        ||||||d          }t          j                    }|                    |           |                    d           t                      }	|                    |	           |	                                  
                     j                                        |                                           |                    d           |	                                 t                      }
|                    |
            j                            |          }                     |d         t          j                                        |d         t          j                   d x|d<   |d<                        |d|	d dd |
g           |                    |           d S )	Nc                 B    g | ]}j                                         S r   r8  r9  s     r   r   zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>  s7     / / / ! !M7799 / / /r   r  Tr  r   r  r  rL  )r   r   r   r   r<  r   r   r  rs  rk   r5  r3  r.  r   r   rn   r`   rm   r^   r=  )r-   r   r  r  r  rH  r   r   r>  zderter  s   `           r   &test_result_exception_one_cancellationz8FutureGatherTests.test_result_exception_one_cancellation  s   / / / /%*1XX/ / /1aAqnQ1aAFFF$&&b!!!	Q!!		


t}%%%$$$	Q	


nn	m..s33c!fg&<===c!fg&<===AQq#tQc:;;;
""3'''''r   N)r2   r3   r4   r;  r:  rc  rf  rh  rj  rn  rq  rv  r   r   r   r^  r^    s          / / /  + + +	+ 	+ 	+' ' '	% 	% 	%  $( ( ( ( (r   r^  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )CoroutineGatherTestsc                 X    g }|D ]$}|fd}|                      |                       %|S )Nc                    K   |  d {V S r   r   r   s    r   rK   z/CoroutineGatherTests.wrap_futures.<locals>.coro  s       yyyyyy r   )r/  )r-   r   corosr   rK   s        r   r;  z!CoroutineGatherTests.wrap_futures  sM     	! 	!C" ! ! ! !LL    r   c                 V    fd}| j                              |                      S )Nc                  *   K   t          j         i S r   ra  )r$   r~  s   r   rK   z*CoroutineGatherTests._gather.<locals>.coro  s      >426222r   )r3  rn   )r-   r$   r~  rK   s    `` r   r:  zCoroutineGatherTests._gather  s>    	3 	3 	3 	3 	3 	3}//777r   c                 .   d } |            }|                      |j                    |            }|                      |j                   |                     t          d          5  t	          j        ||           d d d            d S # 1 swxY w Y   d S )Nc                  
   K   dS r   r   r   r   r   rK   z@CoroutineGatherTests.test_constructor_without_loop.<locals>.coro  r   r   r   )r   r@   r   r   r   r   )r-   rK   gen1gen2s       r   test_constructor_without_loopz2CoroutineGatherTests.test_constructor_without_loop  s    	 	 	tvv
###tvv
#####L2IJJ 	' 	'N4&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   'B

BBc                     d } |             |            fd}| j                              |                      }|                     |j        | j                    | j                             |           d S )Nc                  
   K   dS r   r   r   r   r   rK   zDCoroutineGatherTests.test_constructor_use_running_loop.<locals>.coro  r   r   c                  2   K   t          j                   S r   ra  )r  r  s   r   r   zFCoroutineGatherTests.test_constructor_use_running_loop.<locals>.gather  s      >$---r   )r3  rn   r   r   )r-   rK   r   r   r  r  s       @@r   !test_constructor_use_running_loopz6CoroutineGatherTests.test_constructor_use_running_loop  s    	 	 	tvvtvv	. 	. 	. 	. 	. 	.m..vvxx88ci///((-----r   c                 D   d }t          j        | j                   |                     t           j        d             |            } |            }t          j        ||          }|                     |j        | j                   | j                            |           d S )Nc                  
   K   dS r   r   r   r   r   rK   zCCoroutineGatherTests.test_constructor_use_global_loop.<locals>.coro  r   r   )r   r   r   r   r   r   r   rn   )r-   rK   r  r  r   s        r    test_constructor_use_global_loopz5CoroutineGatherTests.test_constructor_use_global_loop  s    	 	 	t///.555tvvtvvnT4((ci111**3/////r   c                     d } |d          }|                      || |d          |          }|                     | j                   |                     |                                g d           d S )Nc                 
   K   | S r   r   r  s    r   rK   z<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coro%  r  r   r   def)r   r   r  r   )r:  r5  r3  r^   r   )r-   rK   r  r   s       r   test_duplicate_coroutinesz.CoroutineGatherTests.test_duplicate_coroutines$  s|    	 	 	DKKll1aea00t}%%%'C'C'CDDDDDr   c                    d| j                                         fd}t          j         |            | j                   t          j         |            | j                   d fd}t          j         |            | j                   }t	          j        | j                    |                     |                                           |                     t          j	                  5  | j         
                    |           d d d            n# 1 swxY w Y   |                                                                |                                                                |                                                                |                                                                t	          j        | j                    |                     d           d S )Nr   c                  &   K    d {V   dz   d S r  r   r  s   r   r  z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.inner1  r  r   rO   c                  P   K   t          j                    d {V  dz  d S r  ra  )r  r  gathererr  s   r   r  z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer:  s6      ~ff55HNNNNNNNSLEEEr   )r3  rZ   r   r   r   r  ri   rk   rl   rm   rn   r.  r9  r^   )	r-   r  r  r   r  r  r  r  r  s	       @@@@@r   test_cancellation_broadcastz0CoroutineGatherTests.test_cancellation_broadcast,  s   ,,..	 	 	 	 	 	
 &uuwwT]CCC&uuwwT]CCC	 	 	 	 	 	 	 	 !%%''>>>t}---

###w566 	0 	0M,,Q///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0**+++((**+++((**+++((**+++t}---"""""s   9D  D$'D$c                    d | j                                         | j                                         fd}t          j         |            | j                   }t	          j        | j                                        d            t	          j        | j                                        d            t	          j        | j                    |                     |                                t                     d S )Nc                 4   K   |  d {V  t          d          )Nzshould not be ignoredr  r  s    r   r  z:CoroutineGatherTests.test_exception_marking.<locals>.innerO  s&      GGGGGGG6777r   c                  f   K   t          j                                          d {V  d S r   ra  )r   r  r  s   r   r  z:CoroutineGatherTests.test_exception_marking.<locals>.outerV  sA      .q558844444444444r   rO   )
r3  rZ   r   r   r   r  r   r`   ro   r   )r-   r  r   r   r  r  s      @@@r   test_exception_markingz+CoroutineGatherTests.test_exception_markingL  s    	8 	8 	8 M''))M''))	5 	5 	5 	5 	5 	5 	5 !%%''>>>t}---	Tt}---	Tt}---akkmm\:::::r   c                 |   t          j        d          5  d } |d          }|                     t                    5  |                     |i            d d d            n# 1 swxY w Y   |                     | j                   | j        j                                         d d d            d S # 1 swxY w Y   d S )Nz8asyncio.base_events.BaseEventLoop.call_exception_handlerc                 
   K   | S r   r   r  s    r   rK   z2CoroutineGatherTests.test_issue46672.<locals>.coroe  s      r   r   )	r   rs  rl   r   r:  r5  r3  r  assert_not_called)r-   rK   r  s      r   test_issue46672z$CoroutineGatherTests.test_issue46672a  sS   ZF
 
 	E 	E  UA""9-- $ $Q###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $NN4=)))M0BBDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es4   )B1A!B1!A%	%B1(A%	);B11B58B5N)r2   r3   r4   r;  r:  r  r  r  r  r  r  r  r   r   r   rx  rx    s          8 8 8
' ' '	. 	. 	.
0 
0 
0E E E# # #@; ; ;*E E E E Er   rx  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                   d S r   r  r[   s    r   rW   z!RunCoroutineThreadsafeTests.setUps  r  r   Fc                    K   t          j        d           d{V  |rt          d          |rEt          j        | j                                                   t          j        d           d{V  ||z   S )z"Wait 0.05 second and return a + b.r>  NFail!r   )r   r+  r   r6  rG   rk   )r-   r   r  r  rk   s        r   r(  zRunCoroutineThreadsafeTests.addx  s      mD!!!!!!!!! 	(w''' 	# ++22444-"""""""""1ur   Nc                    |                      dd||          }t          j        || j                  }|r | j                            |j        d           	 |                    |          |                                p|                                 S  S # |                                p|                                 w  w xY w)z$Run add coroutine in the event loop.r   r  )r  rk   N)	r(  r   run_coroutine_threadsaferG   call_soon_threadsafer<   r   r   rk   )r-   r  rk   r<  advance_cororK   r  s          r   targetz"RunCoroutineThreadsafeTests.target  s     xx14x771$	BB 	< I**49d;;;	-==))KKMM,V]]____,,FKKMM,V]]____,,s   B ,Cc                     | j                             d| j                  }| j                             |          }|                     |d           dS )z9Test coroutine submission from a thread to an event loop.Nr  )rG   run_in_executorr  rn   r^   )r-   r  r   s      r   test_run_coroutine_threadsafez9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafe  sL    **4==--f55#####r   c                     | j                             d| j        d          }|                     t                    5 }| j                             |           ddd           n# 1 swxY w Y   |                     d|j        j                   dS )z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTr  )	rG   r  r  rl   r   rn   r1  ro   r$   )r-   r  exc_contexts      r   ,test_run_coroutine_threadsafe_with_exceptionzHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exception  s     **4dCC|,, 	1I((000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1g{49:::::s   A##A'*A'c                      fd} j                             d|          }                     t          j                  5   j                             |           ddd           n# 1 swxY w Y   t          j         j                    t          j         j                   D ])} 	                    |
                                           *dS )zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.c                  0                          d          S )Nr   r  r  r,   s   r   rU   zXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>  s    4;;q;11 r   N)rG   r  rl   r   rF  rn   r   r  r  ri   r   )r-   ra  r  rb   s   `   r   *test_run_coroutine_threadsafe_with_timeoutzFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout  s    2111**4::w344 	1 	1I((000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1ty)))%di00 	) 	)DOODIIKK((((	) 	)s   A((A,/A,c                       fd} j                             d|          }                     t          j                  5   j                             |           ddd           dS # 1 swxY w Y   dS )z\Test coroutine submission from a thread to an event loop
        when the task is cancelled.c                  0                          d          S )NTr@  r  r,   s   r   rU   zZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>  s    4;;d;33 r   N)rG   r  rl   r   rm   rn   )r-   ra  r  s   `  r   ,test_run_coroutine_threadsafe_task_cancelledzHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled  s     4333**4::w566 	1 	1I((000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   A))A-0A-c                     d } j                             d fd          }t          j                    } j                             |                                 j         j         j                                                     j                             |                                t                    5 } j         
                    |           ddd           n# 1 swxY w Y                        t          |j                  d           |j        \  \  }}}                     |d         |j                   dS )zjTest coroutine submission from a thread to an event loop
        when the task factory raise an exception.c                     t           r   )	NameError)rG   rK   s     r   task_factoryzfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factory  s    Or   Nc                  0                          d          S )NT)r  r  r,   s   r   rU   zbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>  s    $++4+88 r   r   ro   )rG   r  r   r<  r  r   rY   get_task_factoryrl   r  rn   r^   r  call_args_listr(  ro   )r-   r  r   ra  r  rG   r'   r~  s   `       r   4test_run_coroutine_threadsafe_task_factory_exceptionzPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception  s|   	 	 	 i''8888: : *,,	''111 		2	2244	6 	6 	6	""<000 y)) 	.[I((---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	X455q999"*"4w-{/DEEEEEs   ;C""C&)C&)FF)FFNF)r2   r3   r4   __doc__rW   r(  r  r  r  r  r  r  r  r  s   @r   r  r  p  s        99' ' ' ' '
    8<!- - - -"$ $ $; ; ;
) 
) 
)1 1 1F F F F F F Fr   r  c                   .     e Zd Z fdZ fdZd Z xZS )
SleepTestsc                     t                                                       t          j                    | _        |                     | j                   d S r   r  r[   s    r   rW   zSleepTests.setUp  r  r   c                     | j                                          d | _         t                                                       d S r   rG   r@   rV   tearDownr[   s    r   r  zSleepTests.tearDown  8    		r   c                      dfd fd} j                              |                                            d           d S )Nr   c                     | z  d S r   r   )rW  r   s    r   
inc_resultz.SleepTests.test_sleep_zero.<locals>.inc_result  s    cMFFFr   c                     K   j                             d                               d           t          j        dd           d {V }                     d            |            d S )Nr   r   r)  r  )rG   rY  r^   r   r+  )rW  r  r   r-   s    r   rK   z(SleepTests.test_sleep_zero.<locals>.coro  s      I
A...VQ'''a333333333CVQ'''JsOOOOOr      )rG   rn   r^   )r-   rK   r  r   s   ` @@r   test_sleep_zerozSleepTests.test_sleep_zero  s    	 	 	 	 		 	 	 	 	 	 	 		$$TTVV,,,$$$$$r   )r2   r3   r4   rW   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                   d S r   r  r[   s    r   rW   zCompatibilityTests.setUp  r  r   c                     | j                                          d | _         t                                                       d S r   r  r[   s    r   r  zCompatibilityTests.tearDown  r  r   )r2   r3   r4   rW   r  r  r  s   @r   r  r    sQ        ' ' ' ' '
        r   r  __main__)F)?r  ry  
contextlibrG  	functoolsr{   r   rU  r   rD  textwrapr  unittestr   typesr   r   r   r   r   test.test_asyncior   r   r   r	   test.support.script_helperr
   r   r   r    r(   r*   r6   rD   r  r  
skipUnlessrj   TestCaser  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r0  r^  rx  r  r  r  r2   r  r   r   r   <module>r     s                     				 				  				 



                                      1 1 1 1 1 1       7 7 7 7 7 7( ( (	 	 	
? 
? 
? 
?( ( (               q$ q$ q$ q$ q$ q$ q$ q$hI7 7 7t2 2 2 2 2 2 2 2j WWWj11 .WUH--57 7* * * * *-$-* *7 7*8 WWWj11 .WUH--57 7 0 0 0 0 0-1D 0 0 7 70 WWUH--57 7    =*2E   7 7 WWWj1157 7    =*2E   7 7 WWUH--57 7    =**=  7 7 WWWj1157 70 0 0 0 0=**= 0 07 70    M>&/       M:3F   
 WWUH--57 7& & & & &, & &7 7&0m9 m9 m9 m9 m9 m9 m9 m9`5 5 5 5 5:.0J 5 5 5 WWU$67757 7M M M M M*-/I M M7 7M@ @ @ @ @ @ @ @:3 3 3 3 3-z/B 3 3 3 WWUH--57 7> > > > >,j.A > >7 7>8 8 8 8 8z* 8 8 80c3 c3 c3 c3 c3 c3 c3 c3LY( Y( Y( Y( Y()< Y( Y( Y(xyE yE yE yE yE?J,? yE yE yEx_F _F _F _F _F*"5 _F _F _FD% % % % %$ % % %:    ,    zHMOOOOO r   