Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/test_tasks.cpython-39.pyc

a

XC?h��@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddl
mZddl
mZddlZddlmZddlmZddlmZddlmZdd	lmZdd
lmZdd�Zd
d�Zejdd��ZdSdd�Z dd�Z!Gdd�d�Z"Gdd�d�Z#Gdd�d�Z$dd�Z%Gdd�d�Z&e
�'e(ed ��ode(ed!�d"�Gd#d$�d$e$e&ej)��Z*e
�'e(ed ��o�e(ed!�d"�e%Gd%d&�d&e$ej)���Z+e
�'e(ed!�d"�e%Gd'd(�d(e$ej)���Z,e
�'e(ed �d"�e%Gd)d*�d*e$ej)���Z-e
�'e(ed!�d"�Gd+d,�d,e$ej)��Z.e
�'e(ed �d"�Gd-d.�d.e$ej)��Z/Gd/d0�d0e$e&ej)�Z0e%Gd1d2�d2e$ej)��Z1e
�'e(ed!�d"�Gd3d4�d4ej)��Z2Gd5d6�d6�Z3Gd7d8�d8ej)e3�Z4e
�'e(ed9�d"�Gd:d;�d;ej)e3��Z5Gd<d=�d=�Z6Gd>d?�d?e6ej)�Z7e
�'e(ed!�d"�Gd@dA�dAe6ej)��Z8GdBdC�dCej)�Z9GdDdE�dE�Z:GdFdG�dGe:ej)�Z;GdHdI�dIe:ej)�Z<GdJdK�dKej)�Z=GdLdM�dMej)�Z>GdNdO�dOej)�Z?GdPdQ�dQej)�Z@eAdRk�r�e
�B�dS)TzTests for tasks.py.�N)�mock)�GenericAlias)�
coroutines)�futures)�tasks)�utils)�support)�assert_python_okcCst�d�dS�N)�asyncioZset_event_loop_policy�rr�A/opt/alt/python39/lib64/python3.9/test/test_asyncio/test_tasks.py�tearDownModulesrc�sdSr
rrrrr
�coroutine_function!srccs0tj}|j}z||_dVW||_n||_0dSr
)rr�_DEBUG)ZenabledrZ	old_debugrrr
�set_coroutine_debug%srFcCsR|rd|}nd|}|dur@|d}d||||d|dfSd|||fSdS)Nz%sz%s, defined���z%coro=<%s() %s at %s> created at %s:%sr�zcoro=<%s() %s at %s>r)�qualname�state�src�source_traceback�	generator�framerrr
�format_coroutine1s
�rcCs2d}|j}|durq"|}|d7}qt|�|j|fS)zP
    Return information about the innermost exception context in the chain.
    rNr)�__context__�type�args)�exc�depth�contextrrr
�get_innermost_context>s
r!c@seZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r��selfrrr
�__repr__PszDummy.__repr__cGsdSr
r)r$rrrr
�__call__SszDummy.__call__N)�__name__�
__module__�__qualname__r%r&rrrr
r"Nsr"c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CoroLikeObjectcCstd��dS�N�*)�
StopIteration)r$�vrrr
�sendXszCoroLikeObject.sendcGsdSr
r)r$rrrr
�throw[szCoroLikeObject.throwcCsdSr
rr#rrr
�close^szCoroLikeObject.closecCs|Sr
rr#rrr
�	__await__aszCoroLikeObject.__await__N)r'r(r)r/r0r1r2rrrr
r*Wsr*cs�eZdZdZdZd�dd�Zdd�Z�fdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4dcdd�Z5dedf�Z6dgdh�Z7didj�Z8dkdl�Z9dmdn�Z:dodp�Z;dqdr�Z<dsdt�Z=dudv�Z>dwdx�Z?dydz�Z@d{d|�ZAd}d~�ZBdd��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbec�dd��d�d���Zeec�dd¡d�dĄ�Zfd�dƄZgd�dȄZhd�dʄZid�d̄Zjd�d΄Zkec�dd��d�dЄ�Zld�d҄Zmd�dԄZnd�dքZod�d؄Zpd�dڄZqd�d܄Zrd�dބZsd�d�Ztd�d�Zud�d�Zv�ZwS)��
BaseTaskTestsN�TestTaskcCs|jj|||d�S)N)�loop�name)�	__class__�Task)r$r5�coror6rrr
�new_taskjszBaseTaskTests.new_taskcCs|jj|d�S�N�r5)r7�Future�r$r5rrr
�
new_futuremszBaseTaskTests.new_futurecs6t�������_�j��j��fdd��j_dS)Ncs���j�Sr
)r?r5rr#rr
�<lambda>t�z%BaseTaskTests.setUp.<locals>.<lambda>)�super�setUp�
new_test_loopr5�set_task_factoryr:�
create_futurer#�r7r#r
rCps

zBaseTaskTests.setUpcCs,|jjt}|�|jtf�|�|t�dSr
)r7r8�str�assertEqual�__args__�assertIsInstancer�r$�taskrrr
�test_generic_aliasvsz BaseTaskTests.test_generic_aliascCs�dd�}|�|j|��}|�t|d��|�|jd�|�d�|�|jd�|�tj	��|j�
|�Wd�n1s|0YdS)Nc�sdSr
rrrrr
r9|sz;BaseTaskTests.test_task_cancel_message_getter.<locals>.coro�_cancel_message�
my message)r:r5�
assertTrue�hasattrrIrO�cancel�assertRaisesr�CancelledError�run_until_complete�r$r9�trrr
�test_task_cancel_message_getter{s
z-BaseTaskTests.test_task_cancel_message_gettercCsrdd�}|�|j|��}|�d�d|_|�|jd�|�tj��|j�|�Wd�n1sd0YdS)Nc�sdSr
rrrrr
r9�sz;BaseTaskTests.test_task_cancel_message_setter.<locals>.cororPzmy new message)	r:r5rSrOrIrTrrUrVrWrrr
�test_task_cancel_message_setter�s
z-BaseTaskTests.test_task_cancel_message_settercsDGdd�d���fdd���j�tj��fdd�td�D���dS)Nc@seZdZdd�ZdS)z1BaseTaskTests.test_task_del_collect.<locals>.EvilcSst��dSr
)�gc�collectr#rrr
�__del__�sz9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__N)r'r(r)r]rrrr
�Evil�sr^c�s��Sr
rr)r^rr
�run�sz0BaseTaskTests.test_task_del_collect.<locals>.runcsg|]}���j����qSr)r:r5)�.0�_)r_r$rr
�
<listcomp>�sz7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>�d)r5rVr�gather�ranger#r)r^r_r$r
�test_task_del_collect�s��z#BaseTaskTests.test_task_del_collectcCsrt��}|�|�}dd�}zH|�td�� |j�||��Wd�n1sN0YW|��n
|��0dS)Nc�s|IdHdSr
r��futrrr
r_�sz1BaseTaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)r�new_event_loopr?�assertRaisesRegex�RuntimeErrorr5rVr1)r$�
other_looprhr_rrr
�test_other_loop_future�s
�0z$BaseTaskTests.test_other_loop_futurecsZ�fdd�}tj|�|jd��|�td��|j���Wd�n1sL0YdS)Nc�s�IdHdSr
rr�rMrr
�test�sz6BaseTaskTests.test_task_awaits_on_itself.<locals>.testr<zTask cannot await on itself)r�
ensure_futurer5rjrkrV)r$rorrnr
�test_task_awaits_on_itself�s�z(BaseTaskTests.test_task_awaits_on_itselfcCs�dd�}|�|j|��}|j�|�|�|���|�|��d�|�|j|j�|�|�	�|j�t
��}|�|�|�||��}|�|j|�|�|�|�
�dS)Nc�sdS�N�okrrrrr
�notmuch�sz.BaseTaskTests.test_task_class.<locals>.notmuchrs)r:r5rVrQ�donerI�result�assertIs�_loop�get_looprri�set_event_loopr1�r$rtrXr5rrr
�test_task_class�s

zBaseTaskTests.test_task_classcCs�|�t��tjdd��}Wd�n1s.0Ytj|�|jd�}|j�|�|�|���|�	|�
�d�|�|j|j�t�
�}|�|�tj|�|d�}|�|j|�|�|�|��dS)NcSsdSrrrrrrr
rt�sz;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuchr<rs)�assertWarns�DeprecationWarningr�	coroutinerpr5rVrQrurIrvrwrxrirzr1r{rrr
�test_ensure_future_coroutine�s(

z*BaseTaskTests.test_ensure_future_coroutinecCs�|�|j�}|�d�t�|�}|j�|�|�|���|�|�	�d�|�
||�t��}|�|�|�
t��tj||d�}Wd�n1s�0Y|��tj||jd�}|�
||�dS)N�kor<)r?r5�
set_resultrrprVrQrurIrvrwrirzrT�
ValueErrorr1)r$Zf_orig�fr5rrr
�test_ensure_future_future�s


,z'BaseTaskTests.test_ensure_future_futurecCs�dd�}|�|j|��}t�|�}|j�|�|�|���|�|��d�|�	||�t�
�}|�|�|�t
��tj||d�}Wd�n1s�0Y|��tj||jd�}|�	||�dS)Nc�sdSrrrrrrr
rt�sz6BaseTaskTests.test_ensure_future_task.<locals>.notmuchrsr<)r:r5rrprVrQrurIrvrwrirzrTr�r1)r$rtZt_origrXr5rrr
�test_ensure_future_task�s

,z%BaseTaskTests.test_ensure_future_taskcCs�Gdd�d�}|�t��tjdd��}Wd�n1s<0Yt��}|�|�tj||��|d�}|�|�|��dks�J�dS)Nc@seZdZdd�Zdd�ZdS)z6BaseTaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dSr
�r9�r$r9rrr
�__init__sz?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHSr
r�r#rrr
r2
sz@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)r'r(r)r�r2rrrr
�Awsr�cSsdSrrrrrrr
r9sz8BaseTaskTests.test_ensure_future_awaitable.<locals>.coror<rs)	r}r~rrrirzrprVrv)r$r�r9r5rhrrr
�test_ensure_future_awaitables(

z*BaseTaskTests.test_ensure_future_awaitablecCs8|�t��t�d�Wd�n1s*0YdSrr)rT�	TypeErrorrrpr#rrr
�test_ensure_future_neithersz(BaseTaskTests.test_ensure_future_neithercCsZt��}|�|j�}|�td��tj||d�Wd�n1sD0Y|��dS)NzRThe future belongs to a different loop than the one specified as the loop argumentr<)rrir?r5rjr�rpr1)r$r5r�rrr
�test_ensure_future_error_msgs
,z*BaseTaskTests.test_ensure_future_error_msgcs@d��fdd����fdd�����fdd�}�j�|��dS)Nc�s��IdHdSr
rr)�barrr
�foo(sz)BaseTaskTests.test_get_stack.<locals>.fooc�sh�jdd�}z��|djjd�Wd}nd}0t��}�jd|d�|�d�|��}��	|d�dS)Nr)�limitrr�)r��filezfoo\(\) running)
Z	get_stackrI�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)r�r��tb)�Tr$rr
r�+s
z)BaseTaskTests.test_get_stack.<locals>.barc�s tj���jd���IdHdSr;)rrpr5r)r�r�r$rr
�runner:sz,BaseTaskTests.test_get_stack.<locals>.runner�r5rV)r$r�r)r�r�r�r$r
�test_get_stack%s
zBaseTaskTests.test_get_stackc	CsX|j�d�dd�}|�|jd�|�|jd�|�|jt�t�|�\}}d||f}|�}d}|�|jd�|�|j|�|�	|j|�}|�
t��t|d||j
dd	�}|�t|�d
|�|��|�t|�d|�|�tj|jj|�t|d||j
�}|�t|�d
|�|�	|j|��}|j�|�t|d||j
�}|�t|�d|�dS)NFc�sdS�N�abcrrrrr
rtDsz-BaseTaskTests.test_task_repr.<locals>.notmuchrtz#\w+.test_task_repr.<locals>.notmuch�%s:%s�runningT�r�0<Task pending name='TestTask' %s cb=[<Dummy>()]>z3<Task cancelling name='TestTask' %s cb=[<Dummy>()]>ruz#<Task cancelled name='TestTask' %s>z/<Task finished name='TestTask' %s result='abc'>)r5�	set_debugrIr'r�r)r(�
test_utils�get_function_sourcer:�add_done_callbackr"r�_source_traceback�reprrSrTrrUrV)	r$rt�filename�linenor�gen�
coro_qualnamerXr9rrr
�test_task_reprAsT��
�
���
��
�zBaseTaskTests.test_task_reprcCs�dd�}|�|j|�d�}|�|j|�d�}|�t|�t|��t�dt|��}|�|�t�dt|��}|�|�|�t|�	d��t|�	d���|j�
|�|j�
|�dS)Nc�sdS�N�{rrrrr
rtusz;BaseTaskTests.test_task_repr_autogenerated.<locals>.notmuchz ^<Task pending name='Task-(\d+)'r)r:r5ZassertNotEqualr��re�match�assertIsNotNoneZ
assertLess�int�grouprV)r$rt�t1�t2Zmatch1Zmatch2rrr
�test_task_repr_autogeneratedts

 z*BaseTaskTests.test_task_repr_autogeneratedcCsDdd�}|�|j|��}|�dh�|�|��d�|j�|�dS)Nc�sdSr�rrrrr
rt�sz:BaseTaskTests.test_task_repr_name_not_str.<locals>.notmuch�z{6})r:r5Zset_namerI�get_namerV)r$rtrXrrr
�test_task_repr_name_not_str�s
z)BaseTaskTests.test_task_repr_name_not_strcCs�|j�d�|�t��tjdd��}Wd�n1s:0Y|�|jd�|�|j	d�|�|j
t�|�}d}d}|�|j|�|�|j	|�tj�rtjr�t
�|�\}}|jd}d||||d|d	f}n|j}	d
||	j|	jf}|�t|�d|�|�|j|�}
|
�t��tj�r8dt
�|�}n|j}	d|	j|	jf}t|d
||
jtjd�}|�t|
�d|�|j�|
�dS)NFcSsdSr�rrrrr
rt�sz<BaseTaskTests.test_task_repr_coro_decorator.<locals>.notmuchrtz4\w+.test_task_repr_coro_decorator\.<locals>\.notmuchrz0%s() running, defined at %s:%s, created at %s:%srrz%s() running at %s:%sz<CoroWrapper %s>r�r�r�r�)r5r�r}r~rrrIr'r�r)r(rrr�r�r��gi_code�co_filename�co_firstlinenor�r:r�r"rrV)r$rtr�Z	coro_namer�r�r�rr9�coderXrrrr
�test_task_repr_coro_decorator�sX(�
�����
�z+BaseTaskTests.test_task_repr_coro_decoratorcCsv|j�d�dd�}|�|j�}|�|j||��}t�|j�|�t|�dt�	t|���|�
d�|j�|�dS)NFc�s
|IdHSr
rrgrrr
�wait_for�sz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_forz<Task .* wait_for=%s>)r5r�r?r:r��run_brieflyr�r�r��escaper�rV)r$r�rhrMrrr
�test_task_repr_wait_for�s
�
z%BaseTaskTests.test_task_repr_wait_forc	Cs�td���|j�d�dd�}|�t��"t�t�|d��}Wd�n1sP0Y|j�	|d��}d|_
|�|jj
�Wd�n1s�0Yt|j�}d}|�||�dS)NTc�st�d�IdHdS�Nr�r�sleep)�x�yrrr
�func�sz>BaseTaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzL<coroutine object \w+\.test_task_repr_partial_corowrapper\.<locals>\.func at)rr5r�r}r~rr�	functools�partial�create_task�_log_destroy_pending�
addCleanupZ_coror1r�r�)r$r�Zpartial_funcrMZ	coro_repr�expectedrrr
�"test_task_repr_partial_corowrapper�s
0,
�z0BaseTaskTests.test_task_repr_partial_corowrappercs<��fdd�}dd��dd��|�}|�|j�|�d�dS)Nc�s ��IdH}��IdH}||Sr
r)�a�b��inner1�inner2rr
�outer�sz-BaseTaskTests.test_task_basics.<locals>.outerc�sdSr+rrrrr
r��sz.BaseTaskTests.test_task_basics.<locals>.inner1c�sdS)Ni�rrrrr
r��sz.BaseTaskTests.test_task_basics.<locals>.inner2i)rIr5rV)r$r�rXrr�r
�test_task_basics�s
zBaseTaskTests.test_task_basicscs^t�������dd�����fdd�}z$���|��}��|�W���n
���0dS)Nc�st�dSr
�r�rrrr
�raise_errorszFBaseTaskTests.test_exception_chaining_after_await.<locals>.raise_errorc
�s�ztd��Wn�ty�}z~������}z|IdHWnTty�}z<��t|�t�|j}��t|�|jftdf�WYd}~n
d}~00WYd}~n
d}~00dS)N�)r�)�KeyError�	Exceptionr:rIrr�rr)rrMZchained�r5r�r$rr
r_s�z>BaseTaskTests.test_exception_chaining_after_await.<locals>.run)rrirzr:rVr1�r$r_rMrr�r
�#test_exception_chaining_after_awaits

z1BaseTaskTests.test_exception_chaining_after_awaitcspd�t�������dd������fdd�}z$���|��}��|�W���n
���0���d�dS)Nc�s|�dSr
r)rrrr
�process_exc(szYBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.process_excc
�s�ztd��Wnxty�}z`����|��}z|IdHWn4tyn}z||ju�d|_WYd}~n
d}~00WYd}~n
d}~00dS)Nr�)r�r�r:�
BaseExceptionr)rrM�Z	has_cycler5r�r$rr
r_+s
zQBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.runF)rrirzr:rVr1rIr�rr�r
�6test_exception_chaining_after_await_with_context_cycle!s

zDBaseTaskTests.test_exception_chaining_after_await_with_context_cyclecs��fdd�}��|�}dd�}��||��}|�|j���tj��|�|�Wd�n1sd0Y��|�	����|�
����|���dS)Nc3sdV}��d|�dVdS�N�$@r��assertAlmostEqual�Zwhenr#rr
r�Bsz&BaseTaskTests.test_cancel.<locals>.genc�st�d�IdHdS)Nr��r�rrrr
rMIsz'BaseTaskTests.test_cancel.<locals>.task)rDr:�	call_soonrSrTrrUrVrQru�	cancelled�assertFalse)r$r�r5rMrXrr#r
�test_cancel@s
(zBaseTaskTests.test_cancelc
s�gd�}|D]�\�}�j�d���t�������dd������fdd�}���|��}��tj��}��|�Wd�n1s�0Y|j}��	|j
d�t|�}��	|tj|df�Wd�q1s�0YqdS)	N�)rr)r
r)�rPr�)��r���cancel_argsc�st�d�IdHdS�N�
r�rrrr
r�cszHBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.sleepc�sJ������}t�d�IdH|j��t�|g�IdH\}}|��dSr�)r:rr�rS�waitrv�rMru�pending�r�r5r$r�rr
r9fs

zGBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.cororr���subTestrrirzr:rTrUrV�	exceptionrIrr!�r$�cases�
expected_argsr9rM�cmr�actualrr�r
�+test_cancel_with_message_then_future_resultUs 
(
�z9BaseTaskTests.test_cancel_with_message_then_future_resultc
s�gd�}|D]�\�}�j�d���t�������dd������fdd�}���|��}��tj��}��|�Wd�n1s�0Y|j}��	|j
d�t|�}��	|tj|df�Wd�q1s�0YqdS)	Nr�r�c�st�d�IdHdSr�r�rrrr
r��szKBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.sleepc�sJ������}t�d�IdH|j��t�|g�IdH\}}|��dSr��r:rr�rSr�rr�r�rr
r9�s

zJBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.cororr�r�rrr�r
�.test_cancel_with_message_then_future_exceptionws 
(
�z<BaseTaskTests.test_cancel_with_message_then_future_exceptioncs�t�������dd�����fdd�}���|��}��tj��}��|�Wd�n1sd0Y|j}��|j	d�t
|�}��|tjddf�dS)Nc�st�d�IdHdSr�r�rrrr
r��szJBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.sleepc�s:������}|�d�t�|g�IdH\}}|��dS)NrP)r:rSrr�rr��r5r$r�rr
r9�s
zIBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.cororr�r�)rrirzr:rTrUrVrrIrr!)r$r9rMrrrrr	r
�-test_cancel_with_message_before_starting_task�s
(
�z;BaseTaskTests.test_cancel_with_message_before_starting_taskcCs�|�t��tjdd��}Wd�n1s.0Y|�|j|��}t�|j�|��|�	tj
|jj|�|�|�
��|�|���|�|���dS)NcssdVdVdS�Nr�rrrrr
rM�sz-BaseTaskTests.test_cancel_yield.<locals>.task)r}r~rrr:r5r�r�rSrTrUrVrQrur�r��r$rMrXrrr
�test_cancel_yield�s(�zBaseTaskTests.test_cancel_yieldcs�|�|j���fdd�}|�|j|��}t�|j����|�tj��|j�	|�Wd�n1sj0Y|�
����|�
|���dS)Nc�s�IdHdSrrr�r�rr
rM�s
z4BaseTaskTests.test_cancel_inner_future.<locals>.task)r?r5r:r�r�rSrTrrUrVrQr�rrrr
�test_cancel_inner_future�s*z&BaseTaskTests.test_cancel_inner_futurecs�|�|j���fdd�}|�|j|��}t�|j����|��|�tj��|j�	|�Wd�n1sr0Y|�
|���|�
����|�
|���dS)Nc�s�IdHdSrrrrrr
rM�s
zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task)
r?r5r:r�r�rSrTrrUrVrQrur�rrrr
�&test_cancel_both_task_and_inner_future�s*z4BaseTaskTests.test_cancel_both_task_and_inner_futurecs�|�|j��|�|j����fdd�}|�|j|��}t�|j�|�|j����d�t�|j�|�|j��|��|�	��
��|j�|�}|�|d�|�
|�
��dS)Nc�s4�IdHz�IdHWntjy.YdS0dSr+�rrUr��fut1�fut2rr
rM�s

z5BaseTaskTests.test_cancel_task_catching.<locals>.taskr,�r?r5r:r�r�rw�_fut_waiterr�rSrQr�rVrIr��r$rMrX�resrrr
�test_cancel_task_catching�s
z'BaseTaskTests.test_cancel_task_catchingcs�|�|j��|�|j��|�|j�����fdd�}|�|j|��}t�|j�|�|j����d�t�|j�|�|j��|��|�	��
��t�|j�|�|j����d�|j�|�}|�|d�|�
��
��|�
|�
��dS)Nc�s<�IdHz�IdHWntjy,Yn0�IdH}|Sr
r)r�rrZfut3rr
rMs

z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr,rrrrr
�test_cancel_task_ignoring�s&	

z'BaseTaskTests.test_cancel_task_ignoringcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)Nc�s(������j�t�d�IdHdS)Nrcr�)rSrQ�_must_cancelrr�r�r$rXrr
rMsz4BaseTaskTests.test_cancel_current_task.<locals>.task�
rrirzr:r�r�rTrUrVrQrurrS�r$r5rMrrr
�test_cancel_current_tasks

�z&BaseTaskTests.test_cancel_current_taskcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)z+coroutine end right after task is cancelledc�s������j�dSr)rSrQrrrrr
rM3sz.BaseTaskTests.test_cancel_at_end.<locals>.taskNrrrrr
�test_cancel_at_end.s

�z BaseTaskTests.test_cancel_at_endcs�t������fdd��d��������fdd�������fdd�}���|�����tj������Wd�n1s�0Y����	������	������	��dS)Ncs���Sr
�r1rr<rr
r@IrAz8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>c�s�IdHdSr
rrrgrr
�nestedNsz6BaseTaskTests.test_cancel_awaited_task.<locals>.nestedc�s4�������t�d�IdH����IdHdSr��r:rr�rSr)r5r#�nested_taskr$rMrr
r9Qsz4BaseTaskTests.test_cancel_awaited_task.<locals>.coro)
rrir�r?r:rTrUrVrQr�r�r)rhr5r#r%r$rMr
�test_cancel_awaited_taskAs
(z&BaseTaskTests.test_cancel_awaited_taskcCs"||vrtd|�d|�d���dS)Nztext z not found in:
>>>z<<<�rk)r$�textZsubstrrrr
�assert_text_containsesz"BaseTaskTests.assert_text_containscs�t�������dd�����fdd�}���|��}z��|�Wn4tjyzt��}��|d���|d�Yn0��	d�dS)Nc�st�d�IdHdSr�r�rrrr
r#oszEBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.nestedc�s4������}t�d�IdH|��|IdHdSr�r$rn�r5r#r$rr
r9sszCBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.coro�await asyncio.sleep(10)zawait task  # search target�CancelledError did not occur�
rrirzr:rVrU�	traceback�
format_excr)�fail�r$r9rMr�rr*r
�'test_cancel_traceback_for_future_resultis
z5BaseTaskTests.test_cancel_traceback_for_future_resultcs�t�������dd�����fdd�}���|��}z��|�Wn4tjyzt��}��|d���|d�Yn0��	d�dS)Nc�st�d�IdHdSr�r�rrrr
r#�szHBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.nestedc�sH������}t�d�IdH|��t�|g�IdH\}}|��dSr�rr�r*rr
r9�s
zFBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.coror+z!task.exception()  # search targetr,r-r1rr*r
�*test_cancel_traceback_for_future_exception�s
�
z8BaseTaskTests.test_cancel_traceback_for_future_exceptioncs��fdd�}��|��d���fdd�}���|��}��t��}��|�Wd�n1s`0Y��t|j�d���|�	�����d���
d����|����t
j�j|�dS)	Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)N皙�����?皙�����?�333333�?r�r�r#rr
r��sz:BaseTaskTests.test_stop_while_run_in_complete.<locals>.genrc�s6�dkr2t�d�IdH�d7��dkr���qdS)Nr�r4rr�)rr��stopr)r5r�rr
rM�s
z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.taskz+Event loop stopped before Future completed.r�r6)rDr:rTrkrVrIrHrr�rur��timerSrrU)r$r�rMrXrr)r5r$r�r
�test_stop_while_run_in_complete�s	
(�z-BaseTaskTests.test_stop_while_run_in_completecCsZdd�}|�|j|��}|�td��d|_Wd�n1s@0Y|j�|�dS)Nc�sdSr
rrrrr
r9�sz.BaseTaskTests.test_log_traceback.<locals>.corozcan only be set to FalseT)r:r5rjr�Z_log_tracebackrV�r$r9rMrrr
�test_log_traceback�s
$z BaseTaskTests.test_log_tracebackcs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||���}��|d���d|���|���||���}��d|�����|d�dS)Nc3s.dV}��d|�dV}��d|�dVdS�Nr4r�333333�?r�r�r#rr
r��s
z$BaseTaskTests.test_wait.<locals>.genr4r=c�s>t���g�IdH\}}��|t��g����|t��dSr+�rr�rI�set�rur��r�r�r$rr
r��sz$BaseTaskTests.test_wait.<locals>.foor,�rDr:rr�rVrIr�r8�r$r�r5r�rrrAr
�	test_wait�s
zBaseTaskTests.test_waitcsx�fdd�}��|�}��|t�d�����|t�d������fdd�}t�|�|���||���}��|d�dS)Nc3s.dV}��d|�dV}��d|�dVdS)N�{�G�z�?r���Q��?r�r�r#rr
r��s
z5BaseTaskTests.test_wait_with_global_loop.<locals>.genrErFc�s>t���g�IdH\}}��|t��g����|t��dSr+r>r@rArr
r��sz5BaseTaskTests.test_wait_with_global_loop.<locals>.foor,)rDr:rr�rzrVrIrCrrAr
�test_wait_with_global_loop�s

�z(BaseTaskTests.test_wait_with_global_loopc	Cs�|�t��tjdd��}Wd�n1s.0Y|d�}|�|jt�|||d�g��}|�t�� |j�|�\}}Wd�n1s�0Y|�|�|�	t
dd�|D��ddh�dS)NcSs|Sr
r��srrr
r9sz:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.cororo�spamcss|]}|��VqdSr
�rv�r`r�rrr
�	<genexpr>rAz?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)r}r~rrr:r5r�rVr�rIr?)r$r9�crMrur�rrr
�test_wait_duplicate_coroutiness(�.
z,BaseTaskTests.test_wait_duplicate_coroutinescCsR|�t|jjt�t���t�d�}tj|gdd�}|�t|jj|�|��dS)Nr�r�Zreturn_when)	rTr�r5rVrr�r?r�r1)r$Z
sleep_coroZ	wait_cororrr
�test_wait_errorss
�
�zBaseTaskTests.test_wait_errorscs��fdd�}��|�}��|t�d��}��|t�d��}��|tj||gtjd��}|�|�\}}��|h|���|h|���|�	����
|�	����|�����
d|���|�d�|�t�||g��dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nr�rr4r�r�r#rr
r�$s
z4BaseTaskTests.test_wait_first_completed.<locals>.genr�r4rPr�)rDr:rr�r��FIRST_COMPLETEDrVrIr�rurQ�assertIsNonervr�r8�advance_time)r$r�r5r�r�rMrur�rr#r
�test_wait_first_completed"s"
�
z'BaseTaskTests.test_wait_first_completedcCs�dd�}dd�}|�|j|��}|�|j|��}|�|jtj||gtjd��}|j�|�\}}|�||h|�|�|���|�	|�
��|�|���|�	|�
��dS)Nc�st�d�IdHdSr�r�rrrr
�coro1Csz2BaseTaskTests.test_wait_really_done.<locals>.coro1c�s$t�d�IdHt�d�IdHdSr�r�rrrr
�coro2Fsz2BaseTaskTests.test_wait_really_done.<locals>.coro2rP)r:r5rr�rRrVrIrQrurSrv)r$rVrWr�r�rMrur�rrr
�test_wait_really_done?s�z#BaseTaskTests.test_wait_really_donec	s��fdd�}��|�}��|t�d��}dd�}��||��}��|tj||gtjd��}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3sdV}��d|�dVdSr�r�r�r#rr
r�Ysz4BaseTaskTests.test_wait_first_exception.<locals>.genr�c�std��dS)N�err)�ZeroDivisionErrorrrrr
rcsz4BaseTaskTests.test_wait_first_exception.<locals>.excrPrr��rDr:rr�r�ZFIRST_EXCEPTIONrVrIr�r8rT�	r$r�r5r�rr�rMrur�rr#r
�test_wait_first_exceptionWs
�
z'BaseTaskTests.test_wait_first_exceptionc	s��fdd�}��|�}��|t�d��}dd�}��||��}tj||gtjd�}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Nr�rrEr�r�r#rr
r�vs
z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.genr�c�st�d�IdHtd��dS)NrErY�rr�rZrrrr
r�sz<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.excrPrEr�r[r\rr#r
�!test_wait_first_exception_in_waitts

z/BaseTaskTests.test_wait_first_exception_in_waitcs��fdd�}��|�}��|t�d���dd�}��||������fdd�}|���||�����d|���|���||�����d|���dS)	Nc3s.dV}��d|�dV}��d|�dVdSr<r�r�r#rr
r��s
z3BaseTaskTests.test_wait_with_exception.<locals>.genr4c�st�d�IdHtd��dS)Nr=Zreallyr^rrrr
�sleeper�sz7BaseTaskTests.test_wait_with_exception.<locals>.sleeperc�s\t���g�IdH\}}��t|�d���|t��tdd�|D��}��t|�d�dS)Nr�css|]}|��dur|VqdSr
)rrLrrr
rM�rAzFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�rI�lenr?)rur��errorsrArr
r��s
z3BaseTaskTests.test_wait_with_exception.<locals>.foor=)rDr:rr�rVr�r8)r$r�r5r`r�rrAr
�test_wait_with_exception�s
z&BaseTaskTests.test_wait_with_exceptioncs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||�����d|���|�d�|�t���g��dS)	Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)Nr4rr=�)\��(�?r�r�r#rr
r��sz1BaseTaskTests.test_wait_with_timeout.<locals>.genr4r=c�sDtj��gdd�IdH\}}��|t�g����|t�g��dS)Nrd��timeoutr>r@rArr
r��sz1BaseTaskTests.test_wait_with_timeout.<locals>.foordr�)	rDr:rr�rVr�r8rTr�)r$r�r5r�rrAr
�test_wait_with_timeout�s	

z$BaseTaskTests.test_wait_with_timeoutcs��fdd�}��|�}��|t�d��}��|t�d��}|�tj||gdd��\}}��|t|g����|t|g����d|�	��|�
d�|�t�||g��dS)Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdSr<r�r�r#rr
r��sz8BaseTaskTests.test_wait_concurrent_complete.<locals>.genr4r=rer�)rDr:rr�rVr�rIr?r�r8rT)r$r�r5r�r�rur�rr#r
�test_wait_concurrent_complete�s	
�
z+BaseTaskTests.test_wait_concurrent_completecs~�fdd�}��|�}��|t�d�����|t�d������fdd�}|���||���}��|d���d|���dS)Nc3s.dV}��d|�dV}��d|�dVdSr<r�r�r#rr
r��s
z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.genr4r=c�sBt�t��g��IdH\}}��|t��g����|t��dSr+)rr��iterrIr?r@rArr
r��sz;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.foor,rBrCrrAr
� test_wait_with_iterator_of_tasks�s
z.BaseTaskTests.test_wait_with_iterator_of_taskscs�dd�}|�|��d�_t��d�|�t��&tj���fdd��}Wd�n1sX0Y|dd��|dd	��|d
d������fdd
�}|�t��$}��|��|���}Wd�n1s�0Y|�	|j
djt�|�
d
����|�d|dd�v�|�d	|dd�v�|�	|dd�|�t��$��|��|���}Wd�n1�sf0Y|�
d
����dS)NcssdVdVdVdVdS�NrrErrrrr
r�sz,BaseTaskTests.test_as_completed.<locals>.geng�?Fc3s@t�|�EdH��|��s<d�vr<d�vr<d���d�|S)Nr�r�Tg�Q���?)rr��addrT)�dtr�)�	completedr5�time_shiftedrr
r`s

z0BaseTaskTests.test_as_completed.<locals>.sleeperrEr�r�r=rNc�s2g}tj���g�d�D]}|�|IdH�q|Sr;)r�as_completed�append)�valuesr�)r�r�rNr5rr
r�sz,BaseTaskTests.test_as_completed.<locals>.foorr�)rDZslow_callback_durationr?r}r~rrrVr:rI�warningsr��__file__r�r8rQ)r$r�r`r��wrr)r�r�rNrnr5ror
�test_as_completeds,
0	


24zBaseTaskTests.test_as_completedcsdd�}|�|����t�dd�����t�dd������fdd�}|�t��$��|��|���}Wd�n1sz0Y|�t	|�d	|�|�|d
d�|�|dd
d	�|�
|ddtj�|�d
��
����d���t���g��dS)NcssdVdVdVdVdS)Nrr4rrrrr
r�2sz9BaseTaskTests.test_as_completed_with_timeout.<locals>.genr4r�r=r�c�s�g}tj��gd�d�D]d}|r*��d�z|IdH}|�d|f�Wqtjyz}z|�d|f�WYd}~qd}~00q|S)N���Q��?�rfr5g{�G�z�?rr�)rrprTrq�TimeoutError)rrr�r.r�r�r�r5rr
r�=s

&z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foor�r)rr�rrwr�)rDr�rr�r}r~rVr:rIrarKryr�r8rTr�)r$r�r�rrrzr
�test_as_completed_with_timeout0s
2
z,BaseTaskTests.test_as_completed_with_timeoutcspdd�}��|��t�dd�����fdd�}��t��$�����|���Wd�n1sb0YdS)NcssdVdVdVdSrkrrrrr
r�Wsz@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.genrEr�c�s2tj�gd�d�D]}|IdH}��|d�qdS)Nrrxr�)rrprI)r�r.�r�r5r$rr
r�`s
z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo)rDrr�r}r~rVr:)r$r�r�rr|r
�%test_as_completed_with_unused_timeoutUs
z3BaseTaskTests.test_as_completed_with_unused_timeoutc	Cs�dd�}|�|�}t�dd�}t�dd�}||h}|�t��"ttj||d��}Wd�n1sd0Y|�t|�d�|�	|d	�}|�|d�|�
d|���|�d�|�	|d
�}|�|d�|�
d|���dS)NcssdVdVdVdS)Nr皙�����?rrrrr
r�jsz9BaseTaskTests.test_as_completed_reverse_wait.<locals>.genr~r�r4r�r<r�rr)
rDrr�r}r~�listrprIrarVr�r8rT)	r$r�r5r�r��fs�futsr�r�rrr
�test_as_completed_reverse_waiths
0
z,BaseTaskTests.test_as_completed_reverse_waitc
s��fdd�}��|�}t�dd�}t�dd�}||h}��t��"ttj||d��}Wd�n1sh0Y��t|�d�t�	|�}��t��|�
|�\}}	Wd�n1s�0Y��tdd	�|D��ddh�dS)
Nc3s.dV}��d|�dV}��d|�dVdS)Nr~rr�r�r#rr
r��s
z7BaseTaskTests.test_as_completed_concurrent.<locals>.genr~r�r�r<r�css|]}|��VqdSr
rKrLrrr
rM�rAz=BaseTaskTests.test_as_completed_concurrent.<locals>.<genexpr>)rDrr�r}r~rrprIrar�rVr?)
r$r�r5r�r�r�r��waiterrur�rr#r
�test_as_completed_concurrent�s
0
,z*BaseTaskTests.test_as_completed_concurrentcs���t��tjdd���Wd�n1s.0Y��t��$tj��fdd��}Wd�n1sl0Y��t��,���j|��}�j�|�Wd�n1s�0Y|��}��t	|�ddh���t
|�d�dS)NcSs|Sr
rrHrrr
r9�szBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3s@g}�d�}tj||�d�g�jd�D]}|�|EdH�q&|S)N�hamrJr<)rrpr5rq)rvrNr��r9r$rr
r��s�
zDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr�rJr�)r}r~rrr:r5rVrvrIr?ra)r$r�rhrvrr�r
�&test_as_completed_duplicate_coroutines�s(.*z4BaseTaskTests.test_as_completed_duplicate_coroutinescsl�fdd�}��|�}dd�}��||dd��}|�|���|�����|��d���d|���dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nr~r4r�r�r#rr
r��s
z%BaseTaskTests.test_sleep.<locals>.genc�s.t�|d�IdHt�|d|�IdH}|S)Nr�r�)rm�argrrrr
r`�sz)BaseTaskTests.test_sleep.<locals>.sleeperr4�yeah)	rDr:rVrQrurIrvr�r8)r$r�r5r`rXrr#r
�
test_sleep�s

zBaseTaskTests.test_sleepcs��fdd�}��|�}��|t�dd��}d�|j���fdd�}||_t�|����j�|�	�t�|���
�j�dS)Nc3sdV}��d|�dVdSr�r�r�r#rr
r��sz,BaseTaskTests.test_sleep_cancel.<locals>.genr�r�cs�||g|�R���Sr
r)Zdelay�callbackr)�handle�orig_call_laterrr
�
call_later�sz3BaseTaskTests.test_sleep_cancel.<locals>.call_later)rDr:rr�r�r�r�r�Z
_cancelledrSrQ)r$r�r5rXr�r)r�r�r$r
�test_sleep_cancel�s


zBaseTaskTests.test_sleep_cancelcsZ�fdd�}��|��dd�����fdd�}|�}����|�d���d����dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Nr4r�r�r�r#rr
r��s
z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genc�st�|�IdHdSr
r�)rmrrr
r��sz;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepc�sL����d��}��d|j�z|IdHWntjyBYdS0dSdS)Nr�r4r�zslept in)r:r�rSrrU)r`r	rr
�doit�sz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitr�r4)rDrIrVr�r8)r$r�r�Zdoerrr	r
�test_task_cancel_sleeping_task�s

z,BaseTaskTests.test_task_cancel_sleeping_taskcs�|�|j���fdd�}|�|j|��}t�|j�|�|j��|��t�|j�|�t	j
|jj|�|�|j�|�
����dS)Nc�s�IdHdSr
rrrgrr
r9sz:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro)r?r5r:r�r�rwrrSrTrrUrVrSrQr�r:rrgr
�test_task_cancel_waiter_future�s�z,BaseTaskTests.test_task_cancel_waiter_futurecCs�dd�}|�}|�|j|�}|�td��|�d�Wd�n1sH0Y|�td��|�t��Wd�n1s�0Y|�|j�|�d�dS)Nc�sdS)Nr�rrrrr
rtsz4BaseTaskTests.test_task_set_methods.<locals>.notmuchznot support set_resultrsznot support set_exceptionr�)	r:r5rjrkr��
set_exceptionr�rIrV)r$rtr�rMrrr
�test_task_set_methodss(*
�z#BaseTaskTests.test_task_set_methodscCsP|�t��tjdd��}Wd�n1s.0Y|�t|jj|��dS)NcssdVdVdS)Nrr�rrrrr
rt"sz/BaseTaskTests.test_step_result.<locals>.notmuch�r}r~rrrTrkr5rV)r$rtrrr
�test_step_result s(�zBaseTaskTests.test_step_resultcs�Gdd�dtj�}||jd��d���fdd�}|�|j|��}t�|j�|��j�t�}��	|�t�|j�|�
|��|�|���|�|�
��dS)Ncs(eZdZ�fdd�Z�fdd�Z�ZS)z2BaseTaskTests.test_step_result_future.<locals>.Futcsd|_t�j|i|��dS�NF)�cb_addedrBr�)r$r�kwdsrGrr
r�/sz;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j|i|��dS�NT)r�rBr��r$r�kwargsrGrr
r�3szDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback�r'r(r)r�r��
__classcell__rrrGr
�Fut.sr�r<c�s�IdH�dSr
rr�rhrvrr
�wait_for_future:sz>BaseTaskTests.test_step_result_future.<locals>.wait_for_future)rr=r5r:r�r�rQr��objectr�rwrurSrv)r$r�r�rXrrr�r
�test_step_result_future+s	
z%BaseTaskTests.test_step_result_futurecs��fdd�}��|�}dd��t����fdd�}��||��}t�|�|����|�����ttj|���	|�����|�
����|����dS)Nc3sdV}��d|�dVdSr�r�r�r#rr
r�Ksz;BaseTaskTests.test_baseexception_during_cancel.<locals>.genc�st�d�IdHdSr�r�rrrr
r`Rsz?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeperc�s.z��IdHWntjy(��Yn0dSr
rr)�base_excr`rr
�notmutchWsz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch)
rD�
SystemExitr:r�r�rSr�rurTrQr�rwr)r$r�r5r�rMr)r�r$r`r
� test_baseexception_during_cancelIs

z.BaseTaskTests.test_baseexception_during_cancelcCs�dd�}|�t�|��dd�}|�t�|��|�t��tjdd��}Wd�n1s^0Y|�t�|��|�t�t����dS)NcSsdSr
rrrrr
�fnjsz2BaseTaskTests.test_iscoroutinefunction.<locals>.fncss
dVdSr
rrrrr
�fn1osz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1css
dVdSr
rrrrr
�fn2tsz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2)	r�r�iscoroutinefunctionr}r~rrQr�Mock)r$r�r�r�rrr
�test_iscoroutinefunctionis(z&BaseTaskTests.test_iscoroutinefunctioncs�|�|j��|�t��"tj�fdd��}Wd�n1s>0Y|�}|�t��|j�|�Wd�n1sz0Y|�	��
��dS)Nc3s
�VdSr
rrrgrr
r�sz?BaseTaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)r?r5r}r~rrrTrkrVr�ru�r$r�rMrrgr
�test_yield_vs_yield_from{s,*z&BaseTaskTests.test_yield_vs_yield_fromcs�|�t��tjdd���Wd�n1s.0Y|�t��"tj�fdd��}Wd�n1sj0Y|�}|�t|jj|�dS)Ncss
dVdSr
rrrrr
r9�sz>BaseTaskTests.test_yield_vs_yield_from_generator.<locals>.coroc3s(��}z|VW|��n
|��0dSr
r")r�r�rr
r��szIBaseTaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_futurer�r�rr�r
�"test_yield_vs_yield_from_generator�s(,�z0BaseTaskTests.test_yield_vs_yield_from_generatorcCsz|�t��tjdd��}Wd�n1s.0Y|�t�|��|�}|�t�|��|j�|�}|�	|d�dS)NcSsdS�Nrorrrrr
r��sz;BaseTaskTests.test_coroutine_non_gen_function.<locals>.funcro)
r}r~rrrQr��iscoroutiner5rVrI)r$r�r9rrrr
�test_coroutine_non_gen_function�s(z-BaseTaskTests.test_coroutine_non_gen_functioncs�|�|j��|�t��"tj�fdd��}Wd�n1s>0Y�fdd�}|�|j|��}|�|j|��}|j�|�}|�|d�|�	|�
��dS)Ncs�Sr
rrrgrr
r��szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.funcc�s��d�dSr��r�rrgrr
r9�szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.cororo)r?r5r}r~rrr:rVrIrSrv)r$r�r9r�r�rrrgr
�-test_coroutine_non_gen_function_return_future�s,z;BaseTaskTests.test_coroutine_non_gen_function_return_futurecsZ��tj�jd����fdd�}���j|�j����j�����tj�jd��dS)Nr<c�s:��tj|d�����t�d�����t����dSr;)rwr�current_taskr<rLrr
r9�sz-BaseTaskTests.test_current_task.<locals>.coro)rSrr�r5r:rVr�rrLr
�test_current_task�s
zBaseTaskTests.test_current_taskcs���tj�jd�����j�����j������fdd�}����fdd�}���j|�j������j|�j����j�t���f����tj�jd��dS)Nr<c�sD��tj|d��u��IdH��tj|d��u���d�dS�Nr<T�rQrr�r�r<)rrr$�task1rr
rV�s
zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c�sD��tj|d��u���d��IdH��tj|d��u�dSr�r�r<)rrr$�task2rr
rW�s

zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)rSrr�r5r?r:rVr�)r$rVrWr)rrr$r�r�r
�)test_current_task_with_interleaving_tasks�sz7BaseTaskTests.test_current_task_with_interleaving_taskscs~d����j�����fdd����fdd�}tj|��jd�}t��j�|���j�|����d���	��
��dS)Nrc�s<z�IdHWntjy,�d7��Yn0��d�dS)Nrzgot past sleep() in inner())rrUr0r)�proofr$r�rr
�inner�sz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.innerc�s:z��IdHWntjy,�d7�Yn
0�d7�dS)Nrcr�rr�r�r�rr
r��s
z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outerr<�e)r?r5rrpr�r�rSrVrIrQr��r$r�r�r�r�r�r$r�r
�test_yield_future_passes_cancel�s
	z-BaseTaskTests.test_yield_future_passes_cancelcs�d����j����fdd�����fdd�}tj|��jd�}t��j�|����tj�jj	|���
d�t��j����d�dS)Nrc�s�IdH�d7�dS�Nrrr�r�r�rr
r�	s
zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc�sN��t��(t���g�IdH\}}Wd�n1s80Y�d7�dS�Nrc)r}r~rr�)�d�p)r�r�r$rr
r�s6zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerr<r�r?r5rrpr�r�rSrTrUrVr�rIr�rr�r
�&test_yield_wait_does_not_shield_cancels�
z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<|�|j�}t�|�}|�d�|j�|�}|�|d�dSr+)r?r5r�shieldr�rVrI)r$r�r�rrrr
�test_shield_results


z BaseTaskTests.test_shield_resultcCsT|�|j�}t�|�}t�|j�td�}|�|�t�|j�|�|�	�|�dS)Nr�)
r?r5rr�r�r�rkr�rwr)r$r�r�rrrr
�test_shield_exception$s

z#BaseTaskTests.test_shield_exceptioncCsH|�|j�}t�|�}t�|j�|��t�|j�|�|���dSr
)	r?r5rr�r�r�rSrQr��r$r�r�rrr
�test_shield_cancel_inner-s
z&BaseTaskTests.test_shield_cancel_innercCsh|�|j�}t�|�}t�|j�|��t�|j�|�|���|�	d|j
durXdnt|j
��dSr�)r?r5rr�r�r�rSrQr�rIZ
_callbacksrar�rrr
�test_shield_cancel_outer5s
z&BaseTaskTests.test_shield_cancel_outercCs8|�|j�}|�d�|j�t�|��}|�|d�dSr+)r?r5r�rVrr�rI)r$rhrrrr
�test_shield_shortcut>s
z"BaseTaskTests.test_shield_shortcutcs�d�|�|j����fdd����fdd�}tj|�|jd�}t�|j�|��|�tj��|j�	|�Wd�n1s�0Y��
d�t�|j�|��d�dS)Nrc�s�IdH�d7�dSr�rrr�rr
r�Is
z/BaseTaskTests.test_shield_effect.<locals>.innerc�st����IdH�d7�dSr�)rr�rr�rr
r�Nsz/BaseTaskTests.test_shield_effect.<locals>.outerr<rr�r�r)r�r�r�r
�test_shield_effectDs*
z BaseTaskTests.test_shield_effectcCs�|�|j�}|�|j�}t�||�}t�|�}t�|j�|��t�|j�|�|�	��|�
d�|�
d�t�|j�|�|��ddg�dS�Nrr�)
r?r5rrdr�r�r�rSrQr�r�rIrv)r$�child1�child2�parentr�rrr
�test_shield_gather\s


z BaseTaskTests.test_shield_gathercCs�|�|j�}|�|j�}t�|�}t�|�}t�||�}t�|j�|��t�|j�|�|�	�tj
�|�|���|�|���|�
d�|�
d�t�|j�dSr�)r?r5rr�rdr�r�rSrKrrUrQr�r�)r$r�r�r�r�r�rrr
�test_gather_shieldjs



z BaseTaskTests.test_gather_shieldcCsZ|�|j�}|�t|jjtj||jd��t�}|�t|jjtj||jd��|��dSr;)	r?r5rTr�rVrrprr1�r$rhr9rrr
�test_as_completed_invalid_args{s��z,BaseTaskTests.test_as_completed_invalid_argscCsf|�|j�}|�t|jjt�|��t�}|�t|jjt�|��|��|�t	|jjt�g��dSr
)
r?r5rTr�rVrr�rr1r�r�rrr
�test_wait_invalid_args�s���z$BaseTaskTests.test_wait_invalid_argscsl�fdd�}td��|�Wd�n1s00Ytd��|�Wd�n1s^0YdS)Ncs���t��&tj���fdd��}Wd�n1s60Y���j����d�|����t������	�j
tj���
�j���	�jtj��j������j
�dS)Nc3s���j��EdHdSr
)rQ�
gi_runningr)rhr�r$rr
r9�szKBaseTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coro)r}r~rrr?r5r�rQr�rK�gi_frame�types�	FrameTyper�r�r��CodeTyperVrSr�r#)rhr�r
�check�s0
z=BaseTaskTests.test_corowrapper_mocks_generator.<locals>.checkFT�r�r$r�rr#r
� test_corowrapper_mocks_generator�s

$
z.BaseTaskTests.test_corowrapper_mocks_generatorc	std�����t��"tj�fdd��}Wd�n1s<0Y��t��$tj��fdd���Wd�n1sz0Y��t��tjdd���Wd�n1s�0Y���j|��}�j�|�}��|d�Wd�n1s�0YdS)	NTc3s��EdHSr
rr)r�rr
r��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t1c3s(���j�}���j�|��|EdHSr
)r?r5r:r)r$�t3rr
r��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t2cSs|�d�dS)N�rr�r�r�rrrr
r��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t3r�)	rr}r~rrr:r5rVrI)r$r�rM�valr)r$r�r�r
�test_yield_from_corowrapper�s
,.(z)BaseTaskTests.test_yield_from_corowrappercs8dd���fdd�}|�|d�d�|�|d�d�dS)Ncss
dV}|Sr
r)r�rrr
r��sz;BaseTaskTests.test_yield_from_corowrapper_send.<locals>.fooc
sbtj����}|�d�z|�|�Wn.tyT}z|jdWYd}~Sd}~00td��dS)NrzStopIteration was expected)rr�CoroWrapperr/r-r�AssertionError)r��cwZex�r�rr
�call�s
 z<BaseTaskTests.test_yield_from_corowrapper_send.<locals>.call)rr�rJ)rI)r$r�rr�r
� test_yield_from_corowrapper_send�s
z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0t��}dd�}tj�|��}||d<d|_dS)NcssgEdHdSr
rrrrr
r��rAz3BaseTaskTests.test_corowrapper_weakref.<locals>.foor�)�weakrefZWeakValueDictionaryrrr�r�)r$Zwdr�r�rrr
�test_corowrapper_weakref�s
z&BaseTaskTests.test_corowrapper_weakrefcCs�dd�}td�}tj�|��}|�d�|�||�|��tj�|��}|�d�|�||�t|��tj�|��}|�d�|�td�}|�|t�|�|j	d�tj�|��}|�d�|�tdd�}|�|t�|�|j	d�dS)Nc
ss>d}z
|V}Wqty6}z|}WYd}~qd}~00qdSr
)r�)�value�errr
r��s

z1BaseTaskTests.test_corowrapper_throw.<locals>.foor�r�)
r�rrr�r/rwr0rKrIr)r$r�rr�rrr
�test_corowrapper_throw�s$



z$BaseTaskTests.test_corowrapper_throwcs�jj}��t��"tj�fdd��}Wd�n1s:0Yt��}�j�	d��j�
|�|�j�}tj|�jd�}��tj
�jd�|h�t�d��j����t�jj�d�|jjd=d}|j}d}t����tj
�jd�t��|��jdtj|d��|��dS)	Nc3s ��|�}|EdHtd��dS)Nzcode never reached)r?r�)r5�futurer#rr
�kill_mes

z>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_meTr<rr�z%Task was destroyed but it is pending!)�messagerMr)r7r8r}r~rrrr�r5r��set_exception_handlerrprI�	all_tasksrzZ	_run_oncera�_readyr��f_localsr�r�
gc_collectr?Zassert_called_with�ANYZ
reset_mock)r$r8r�Zmock_handlerr9rMrrr#r
�test_log_destroyed_pending_tasks2,



�z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsHt�������dd�����fdd�}��|����|jj�dS)Nc�st�dSr
)r�rrrr
r9?szBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc�s.������}t�d�IdH|��d}dS)Nr~r$rn�r9r5r$rr
r�BszDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rrirzrVr��error�called)r$�m_logr�rr�r
�&test_tb_logger_not_called_after_cancel:s
z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc		Cs�td��H|�t��tjdd��}Wd�n1s80YWd�n1sV0Yt}t��jd}|�t	�
�|�|jj
�|jjdd}t�|�\}}dt�|j�t�|�|t�|�|f}|�|t�|tj��dS)NTcSsdSr
rrrrr
�	coro_noopOsz=BaseTaskTests.test_coroutine_never_yielded.<locals>.coro_noopr�rz�^<CoroWrapper %s\(?\)? .* at %s:%s, .*> was never yielded from\nCoroutine object created at \(most recent call last, truncated to \d+ last lines\):\n.*\n  File "%s", line %s, in test_coroutine_never_yielded\n    coro_noop\(\)$)rr}r~rrrt�sys�	_getframe�f_linenorr�rQrr�	call_argsr�r�r�r�r)r��compile�DOTALL)	r$rrZtb_filename�	tb_linenor�Z
func_filenameZfunc_linenoZregexrrr
�test_coroutine_never_yieldedKs$
F


��
z*BaseTaskTests.test_coroutine_never_yieldedcsl�fdd�}td��|�Wd�n1s00Ytd��|�Wd�n1s^0YdS)z�Return of @asyncio.coroutine()-wrapped function generator object
        from @asyncio.coroutine()-wrapped function should have same effect as
        returning generator object or Future.csZ��t��"tj�fdd��}Wd�n1s20Y�j�|��}��|d�dS)Ncs>��t��tjdd��}Wd�n1s.0Y|�S)NcSsdSr�rrrrr
�
inner_cororsziBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)r}r~rr)r
r#rr
�
outer_coroos(zUBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror�r}r~rrr5rVrI)rrvr#rr
r�ms
,zABaseTaskTests.test_return_coroutine_from_coroutine.<locals>.checkFNTr�r�rr#r
�$test_return_coroutine_from_coroutineis

$
z2BaseTaskTests.test_return_coroutine_from_coroutinecCsh|j�d�|�|jt��}t��jd}|�|jt	�|�
|jddd�t|df�|j�|�dS)NTr���r��test_task_source_traceback)
r5r�r:rrrrrKr�rrIrtrV)r$rMr�rrr
r�s��z(BaseTaskTests.test_task_source_tracebackcs�t��}|�|j�|�|���fdd�}|�t�� tj|�|d�}Wd�n1sZ0Ytj||d��d���fdd�}��	|���
d�|���|��d�|�
����|����dg�dS)	zYEnsure that a gathering future refuses to be cancelled once all
        children are donec3s
�EdHSr
rrrgrr
�
child_coro�sz6BaseTaskTests.test_cancel_gather_1.<locals>.child_coror<Ncs����dSr
�rS)ra)�
cancel_result�gather_taskrr
�cancelling_callback�sz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbackr,F)rrir�r1r?r}r~rdrpr�r�rVrIr�r�rv)r$r5rZ
gather_futurerr)rrhrr
�test_cancel_gather_1�s
.


z"BaseTaskTests.test_cancel_gather_1cs�gd�}|D]�\�}�j�d���t������j���fdd������fdd�}z��|��Wndtjy�}zJ��|jd�t	|�\}}}��||ftj|f���
|d�WYd}~nd}~00��d	�Wd�q1s�0YqdS)
Nr�r�c�sdd}|d7}��t��,tjt�d�d�d�IdHWd�n1sH0Y|dkrdSqdS)Nrr~T)�return_exceptionsr5r)r}r~rrdr�)r8)r5r$rr
ro�s�*z0BaseTaskTests.test_cancel_gather_2.<locals>.testc�s6������}t�d�IdH|j��|IdHdS)Nr5r$)Zqwe�r�r5r$rorr
�main�s
z0BaseTaskTests.test_cancel_gather_2.<locals>.mainr)r�r�z1gather did not propagate the cancellation request)r�rrir�r1rVrUrIrr!�assertInr0)r$rrrr�exc_typeZexc_argsrrrr
�test_cancel_gather_2�s"
�"z"BaseTaskTests.test_cancel_gather_2cs(dd����fdd�}�j�|��dS)Nc�sdddS)Nrrrrrrr
r��sz3BaseTaskTests.test_exception_traceback.<locals>.fooc�s4���j���}t�d�IdH��|��j�dSr�)r:r5rr�r�r�
__traceback__rn�r�r$rr
r�sz4BaseTaskTests.test_exception_traceback.<locals>.mainr��r$rrr r
�test_exception_traceback�sz&BaseTaskTests.test_exception_tracebackc	Cs�dd�}||j_|�t��tjdd��}Wd�n1s>0Y|�|jj�|�	t
��<|�}z|�|j|�W|��n
|��0Wd�n1s�0Yt
��|�|jj�|jjdd}|�d|�|�t�|j�t��dS)Nc_st�dSr
r�)r�rr�rrr
r��sz8BaseTaskTests.test_error_in_call_soon.<locals>.call_sooncSsdSr
rrrrr
r9�sz3BaseTaskTests.test_error_in_call_soon.<locals>.cororz$Task was destroyed but it is pending)r5r�r}r~rrr�rrrTr�r:r1r[r\rQrrrIr�r?)r$rr�r9r�r�rrr
�test_error_in_call_soon�s (2z%BaseTaskTests.test_error_in_call_sooncCsx|�td��|�|jd�Wd�n1s00Y|�td��|�|jd�Wd�n1sj0YdS)Nz!a coroutine was expected, got 123r�)rjr�r:r5r#rrr
�"test_create_task_with_noncoroutine	s�,�z0BaseTaskTests.test_create_task_with_noncoroutinecCs�|�t��tjdd��}Wd�n1s.0Y|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)NcSsdSr
rrrrr
r9	szDBaseTaskTests.test_create_task_with_oldstyle_coroutine.<locals>.coro)	r}r~rrr:r5rKr8rVr:rrr
�(test_create_task_with_oldstyle_coroutine	s(z6BaseTaskTests.test_create_task_with_oldstyle_coroutinecCs`dd�}|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)Nc�sdSr
rrrrr
r9	sz@BaseTaskTests.test_create_task_with_async_function.<locals>.coro)r:r5rKr8rVr:rrr
�$test_create_task_with_async_function	sz2BaseTaskTests.test_create_task_with_async_functioncCsh|�|jt��}|�||j�|�|j�|�d�|�|jt��}|�||j�|�|j�|�d�dSr+)r:r5r*rKr8rIrVrLrrr
�(test_create_task_with_asynclike_function,	sz6BaseTaskTests.test_create_task_with_asynclike_functioncs(dd����fdd�}�j�|��dS)Nc�sdSr�rrrrr
r�9	sz2BaseTaskTests.test_bare_create_task.<locals>.innerc�s4t����}��|�j�|IdH}��d|�dSr�)rr�rKr8rI)rMZret�r�r$rr
r9<	s
z1BaseTaskTests.test_bare_create_task.<locals>.coror�r�rr(r
�test_bare_create_task7	sz#BaseTaskTests.test_bare_create_taskcs(dd����fdd�}�j�|��dS)Nc�sdSr
rrrrr
rF	sz<BaseTaskTests.test_bare_create_named_task.<locals>.coro_noopc�s.tj��dd�}��|��d�|IdHdS)NzNo-op)r6)rr�rIr�rn�rr$rr
r9I	sz7BaseTaskTests.test_bare_create_named_task.<locals>.coror�r�rr*r
�test_bare_create_named_taskD	sz)BaseTaskTests.test_bare_create_named_taskcsjtjddd����fdd������fdd�}t���z$���|��}��|�W���n
���0dS)N�cvar�nope��defaultc�s.t�d�IdH�����d���d�dS)NrEr-�something else)rr�rI�getr?r�r,r$rr
�subS	sz)BaseTaskTests.test_context_1.<locals>.subc�sV�����d�������}��d������d�|IdH�����d�dS)Nr-�yes)rIr1r:r?)Zsubtask�r,r5r$r3rr
rX	s

z*BaseTaskTests.test_context_1.<locals>.main)�contextvars�
ContextVarrrir:rVr1�r$rrMrr5r
�test_context_1P	szBaseTaskTests.test_context_1csjtjddd�����fdd�}t���z$���|��}��|�W���n
���0�����d�dS)Nr,r-r.c	�s��fdd�}�����d�td�D]�}����}|�|���d|�����|jd�|IdH�����d|���td�D]F}��d|�d|���t�	d�IdH�����d|�d|���q�q$dS)	Ncs��d�dS)Nr0)r?rg)r,rr
�fut_on_donek	sz?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_doner-r�r4r��-���MbP?)
rIr1rer?r�r?r�r�rr�)r:�jrh�i�r,r5r$rr
rj	s


z*BaseTaskTests.test_context_2.<locals>.main)	r6r7rrir:rVr1rIr1r8rr?r
�test_context_2g	szBaseTaskTests.test_context_2csjtjddd����fdd����fdd�}t���z��|��W���n
���0�����d�dS)Nr,rr.c�sLtd�D]>}��||�t�t�dd��IdH�����||�qdS)Nr�r<r~)rer?rr��randomZuniformrIr1)�numr>r2rr
r3�	sz)BaseTaskTests.test_context_3.<locals>.subc�sFg}td�D]$}���t�dd���}|�|�qtj|�IdHdS)Nrcrr�)rer�rAZrandintrqrrd)rr>rM)r5r3rr
r�	s
z*BaseTaskTests.test_context_3.<locals>.main)r6r7rrirVr1rIr1r!rr5r
�test_context_3�	szBaseTaskTests.test_context_3cCsPt��}t�}z2|�||�}|�|�|�|��|�W|��n
|��0dSr
)rrirr:rVrwZget_coror1)r$r5r9rMrrr
�
test_get_coro�	s
zBaseTaskTests.test_get_coro)r4)xr'r(r)r8r=r:r?rCrNrYrZrfrmrqr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
r
rrrrr r!r&r)r2r3r9r;rDrGrOrQrUrXr]r_rcrgrhrjrvr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�patchrrrrrrr"r#r$r%r&r'r)r+r9r@rCrDr�rrrGr
r3es�


	3	>""$#	
 /% 
		(.

+


"r3cCsv|j}|j}|dus|dur |SGdd�d�}Gdd�d||�}Gdd�d||�}dd�}||_||_||_d|_|S)	Ncs(eZdZ�fdd�Z�fdd�Z�ZS)z(add_subclass_tests.<locals>.CommonFuturecs&t�dd��|_t�j|i|��dS)NcSsdSr�rrrrr
r@�	rAzCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>)�collections�defaultdict�callsrBr�r�rGrr
r��	sz1add_subclass_tests.<locals>.CommonFuture.__init__cs$|jdd7<t�j|i|��S)Nr�r)rHrBr�r�rGrr
r��	sz:add_subclass_tests.<locals>.CommonFuture.add_done_callbackr�rrrGr
�CommonFuture�	srIc@seZdZdS)z add_subclass_tests.<locals>.TaskN�r'r(r)rrrr
r8�	sr8c@seZdZdS)z"add_subclass_tests.<locals>.FutureNrJrrrr
r=�	sr=csv�j�jd����fdd�}�j|��jd�}�j�|�}��|d���t|j�ddi���t�j�ddi�dS)Nr<c�s�j��fdd���IdHS)Ncs
��d�S�NrJr�rrgrr
r@�	rAzYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>)r5r�r�rhr$rr
r��	szGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.funcrJr�r)r=r5r8rVrI�dictrH)r$r�rMrvrrLr
�test_subclasses_ctask_cfuture�	s��z9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture)r8r=rNr)�clsZBaseTaskZ
BaseFuturerIr8r=rNrrr
�add_subclass_tests�	s	rPc@seZdZdd�Zdd�ZdS)�SetMethodsTestcCs�t|�j}t��|j_}dd�}|�}|�|j|�}|�|d�|�|j�	|�d�|�
�|jddd}|�t
jd��|�Wd�n1s�0Y|��dS)Nc�st�d�IdHdS�Nr4r�r�rrrr
r��	sz@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foorJrr�step\(\): already done)rr=rr�r5�call_exception_handlerr:r�rIrV�assert_called_oncerrjr�InvalidStateErrorr1)r$r=�exc_handlerr�r9rMrrrr
�$test_set_result_causes_invalid_state�	s"

��"z3SetMethodsTest.test_set_result_causes_invalid_statecCs�Gdd�dt�}t|�j}t��|j_}dd�}|�}|�|j|�}|�||��|�	|��|j�
|�Wd�n1s�0Y|��|jddd}|�
tjd��|�Wd�n1s�0Y|��dS)Nc@seZdZdS)zESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcNrJrrrr
�MyExc
srYc�st�d�IdHdSrRr�rrrr
r�

szCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foorrrS)r�rr=rr�r5rTr:r�rTrVrUrrjrrVr1)r$rYr=rWr�r9rMrrrr
�'test_set_exception_causes_invalid_state
s 
*�"z6SetMethodsTest.test_set_exception_causes_invalid_stateN)r'r(r)rXrZrrrr
rQ�	srQ�_CFuture�_CTaskzrequires the C _asyncio modulec@s:eZdZeedd�Zeedd�Zej	dd��Z
dd�ZdS)�CTask_CFuture_Testsr\Nr[cCs|t�td�}dd�}|�|j|��}|j�|�|�}td�D]"}|j|�|jd�|j�|�q>|j|�|ddd�dS)	N�gettotalrefcountc�sdSr
rrrrr
r9*
sz@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.cororcr<rr�)Zdelta)	rZ
get_attributerr:r5rVrer�r�)r$r^r9rMZrefs_beforer>rrr
�test_refleaks_in_task___init__'
sz2CTask_CFuture_Tests.test_refleaks_in_task___init__cCsVdd�}|�|j|��}|j�|�|�t��|`Wd�n1sH0YdS)Nc�sdSr
rrrrr
r95
szHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coro)r:r5rVrT�AttributeErrorr�r:rrr
�&test_del__log_destroy_pending_segfault4
s
z:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault)r'r(r)�getattrrr8rr=rZ
refcount_testr_rarrrr
r]
s

r]c@s$eZdZeedd�Zeedd�ZdS)�CTask_CFuture_SubclassTestsr\Nr[)r'r(r)rbrr8rr=rrrr
rc=
srcc@seZdZeedd�ZejZdS)�CTaskSubclass_PyFuture_Testsr\N�	r'r(r)rbrr8r�	_PyFuturer=rrrr
rdG
srdc@seZdZeedd�ZejZdS)�PyTask_CFutureSubclass_Testsr[N)	r'r(r)rbrr=r�_PyTaskr8rrrr
rgP
srgc@seZdZeedd�ZejZdS)�CTask_PyFuture_Testsr\Nrerrrr
riY
sric@seZdZejZeedd�ZdS)�PyTask_CFuture_Testsr[N)	r'r(r)rrhr8rbrr=rrrr
rja
srjc@seZdZejZejZdS)�PyTask_PyFuture_TestsN�	r'r(r)rrhr8rrfr=rrrr
rki
srkc@seZdZejZejZdS)�PyTask_PyFuture_SubclassTestsNrlrrrr
rmp
srmc@seZdZdd�ZdS)�CTask_Future_Testscs�Gdd�dtj�}�fdd�}t��|_zF||jd��|j�d�jd�|j�|��}|j�|�}W|j��n|j��0|�	|d�dS)	Nc@seZdZedd��ZdS)z+CTask_Future_Tests.test_foobar.<locals>.FutcSst�dSr
)r`r#rrr
ry|
sz4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loopN)r'r(r)�propertyryrrrr
r�{
sr�c�s�IdHdSrKrrrgrr
r9�
s
z,CTask_Future_Tests.test_foobar.<locals>.coror<r4rrJ)
rr=rir5r�r�r�rVr1rI)r$r�r9rMrrrgr
�test_foobarz
s
zCTask_Future_Tests.test_foobarN)r'r(r)rprrrr
rnv
srnc@sleZdZdZdZdZdZdd�Zdd�Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�ZdS)�BaseTaskIntrospectionTestsNcs`G�fdd�d�}|�}t���|�t���t��|�|�|�t���|h�|�|�dS)Ncs$eZdZe�fdd��Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLikecs�Sr
rr#r<rr
rx�
szHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loopcSsdSr�rr#rrr
ru�
szGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.doneN)r'r(r)rorxrurr<rr
�TaskLike�
srr�rr�rIrr�r?�_register_task�_unregister_task�r$rrrMrr<r
�test__register_task_1�
s
z0BaseTaskIntrospectionTests.test__register_task_1cs`G�fdd�d�}|�}t���|�t���t��|�|�|�t���|h�|�|�dS)Ncs eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLikecs�Sr
rr#r<rr
ry�
szKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loopcSsdSr�rr#rrr
ru�
szGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.doneN�r'r(r)ryrurr<rr
rr�
srrrsrvrr<r
�test__register_task_2�
s
z0BaseTaskIntrospectionTests.test__register_task_2cs`G�fdd�d�}|�}t���|�t���t��|�|�|�t���t��|�|�dS)Ncs eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikecs�Sr
rr#r<rr
ry�
szKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loopcSsdSr�rr#rrr
ru�
szGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.doneNrxrr<rr
rr�
srrrsrvrr<r
�test__register_task_3�
s
z0BaseTaskIntrospectionTests.test__register_task_3cCsNt��}t��}|�t�|��|�||�|�t�|�|�|�||�dSr
)rr�rSrr��_enter_taskrw�_leave_task�r$rMr5rrr
�test__enter_task�
sz+BaseTaskIntrospectionTests.test__enter_taskcCs|t��}t��}t��}|�||�|�t��|�||�Wd�n1sP0Y|�t�|�|�|�||�dSr
)	rr�r{rTrkrwrr�r|�r$r�r�r5rrr
�test__enter_task_failure�
s*z3BaseTaskIntrospectionTests.test__enter_task_failurecCs<t��}t��}|�||�|�||�|�t�|��dSr
)rr�r{r|rSrr�r}rrr
�test__leave_task�
s
z+BaseTaskIntrospectionTests.test__leave_taskcCs|t��}t��}t��}|�||�|�t��|�||�Wd�n1sP0Y|�t�|�|�|�||�dSr
)	rr�r{rTrkr|rwrr�rrrr
�test__leave_task_failure1�
s*z4BaseTaskIntrospectionTests.test__leave_task_failure1cCsZt��}t��}|�t��|�||�Wd�n1s<0Y|�t�|��dSr
)rr�rTrkr|rSrr�r}rrr
�test__leave_task_failure2�
s
*z4BaseTaskIntrospectionTests.test__leave_task_failure2csJt��}t����fdd�|_|�|�|�|�|�t���t��dS)Ncs�Sr
rrr<rr
r@�
rAzBBaseTaskIntrospectionTests.test__unregister_task.<locals>.<lambda>)	rr�ryrtrurIrr�r?rLrr<r
�test__unregister_task�
s

z0BaseTaskIntrospectionTests.test__unregister_taskcCs2t��}t��}|�|�|�t�|�t��dSr
)rr�rurIrr�r?r}rrr
�$test__unregister_task_not_registered�
s
z?BaseTaskIntrospectionTests.test__unregister_task_not_registered)r'r(r)rtrur{r|rwryrzr~r�r�r�r�r�r�rrrr
rq�
s

rqc@s4eZdZeej�Zeej�Zeej	�Z
eej�ZdS)�PyIntrospectionTestsN)
r'r(r)�staticmethodrZ_py_register_taskrtZ_py_unregister_taskruZ_py_enter_taskr{Z_py_leave_taskr|rrrr
r�s


r��_c_register_taskc@sPeZdZeed�r<eej�Zeej�Z	eej
�Zeej�Z
ndZZ	ZZ
dS)�CIntrospectionTestsr�N)r'r(r)rRrr�r�rtZ_c_unregister_taskruZ
_c_enter_taskr{Z
_c_leave_taskr|rrrr
r�s



r�cs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�BaseCurrentLoopTestscs$t���t��|_|�|j�dSr
�rBrCrrir5rzr#rGrr
rCs

zBaseCurrentLoopTests.setUpcCst�dSr
)�NotImplementedErrorr�rrr
r:szBaseCurrentLoopTests.new_taskcCs|�tj|jd��dSr;)rSrr�r5r#rrr
�!test_current_task_no_running_loopsz6BaseCurrentLoopTests.test_current_task_no_running_loopcCs6|�t��t��Wd�n1s(0YdSr
)rTrkrr�r#rrr
�*test_current_task_no_running_loop_implicit sz?BaseCurrentLoopTests.test_current_task_no_running_loop_implicitcs>��fdd�}��|����j�����tj�jd��dS)Nc�s<��tj�jd�����t�d�����t����dSr;)rwrr�r5rrLrr
r9%szGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.coror<)r:r5rVrSrr�r�rrLr
�$test_current_task_with_implicit_loop$sz9BaseCurrentLoopTests.test_current_task_with_implicit_loop)	r'r(r)rCr:r�r�r�r�rrrGr
r�s
r�c@seZdZdd�ZdS)�PyCurrentLoopTestscCstj||jd�Sr;)rrhr5r�rrr
r:2szPyCurrentLoopTests.new_taskN�r'r(r)r:rrrr
r�0sr�c@seZdZdd�ZdS)�CCurrentLoopTestscCsttd�||jd�S)Nr\r<)rbrr5r�rrr
r::szCCurrentLoopTests.new_taskNr�rrrr
r�6sr�c@s"eZdZdd�Zejdd��ZdS)�GenericTaskTestscCs|�ttjtj��dSr
)rQ�
issubclassrr8r=r#rrr
�test_future_subclass@sz%GenericTaskTests.test_future_subclasscCshzddl}ddl}ddl}Wnty8|�d�Yn,0zddl}Wntyb|�d�Yn0dS)NrzC modules are not availablez_asyncio module is missing)�
_functools�_json�_pickle�ImportErrorZskipTest�_asyncior0)r$r�r�r�r�rrr
�test_asyncio_module_compiledCsz-GenericTaskTests.test_asyncio_module_compiledN)r'r(r)r�rZcpython_onlyr�rrrr
r�>sr�csTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�GatherTestsBasecs2t���|��|_|��|_|j|jdd�dS)NF�Zcleanup)rBrCrD�one_looprlrzr#rGrr
rCXs


zGatherTestsBase.setUpcCs|jrt�|�qdSr
)r�r�r�r>rrr
�	_run_loop^szGatherTestsBase._run_loopcs��fdd�td�D�\}}}tj��|||�i|��}t��}|�|�|�d�|�d����j	���
|jd���|�
��|�d����j	�|�|���
|��gd��dS)Ncsg|]}�j���qSr�r�rF�r`r>r#rr
rbcrAz2GatherTestsBase._check_success.<locals>.<listcomp>r�rr�F)r�rr�)rerrd�wrap_futuresr��MockCallbackr�r�r�r�rIrr�ru�assert_called_once_withrv)r$r�r�r�rNrh�cbrr#r
�_check_successbs




zGatherTestsBase._check_successcCs|��|jdd�dS)NF�r�r�r#rrr
�test_successqszGatherTestsBase.test_successcCs|jdd�dS)NTr�r�r#rrr
�test_result_exception_successusz-GatherTestsBase.test_result_exception_successc	s��fdd�td�D�\}}}}}tj��|||||��}t��}|�|�t�}|�d�|�	|���
�j���|�
��|�|���|��|�|�d�|��|�	t��|��dS)Ncsg|]}�j���qSrr�r�r#rr
rbyrAz6GatherTestsBase.test_one_exception.<locals>.<listcomp>r�rr�)rerrdr�r�r�r�rZr�r�r�r�rQrur�rwrrSrk)	r$r�r�rNr�r�rhr�rrr#r
�test_one_exceptionxs 




z"GatherTestsBase.test_one_exceptionc	s��fdd�td�D�\}}}}tj��||||�ddi�}t��}|�|�t�}t�}|�	d�|�
|�|�	d����j���
|���|�
|����j���|���|�|���|��dd||g�dS)Ncsg|]}�j���qSrr�r�r#rr
rb�rAz:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>�rTrr�)rerrdr�r�r�r�rZrkr�r�r�r�r�rurQr�rIrv)	r$r�r�rNr�rhr�rZexc2rr#r
�test_return_exceptions�s$�





z&GatherTestsBase.test_return_exceptionscCs�d�d�}tdd|�\}}}|�|��d�td|ddd�\}}}|�|��d�td|ddd�\}}}|�|��d	�tdd|ddd�\}}}|�|��d�tdd
dd|�\}}}|�|��d	�dS)N�
)zimport asyncio.coroutinesz print(asyncio.coroutines._DEBUG)z-E�-csFalse�)�PYTHONASYNCIODEBUGZ
PYTHONDEVMODE�1sTruez-XZdev)�joinr	rI�rstrip)r$r��sts�stdout�stderrrrr
�test_env_var_debug�s,
����
z"GatherTestsBase.test_env_var_debug)r'r(r)rCr�r�r�r�r�r�r�r�rrrGr
r�Vsr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|Sr
r)r$rrrr
r��szFutureGatherTests.wrap_futurescCs�t�|j�|�tjd�tj|�}|�|tj�|�|j|j�|�	|j�|�
|���|�|�
�g�|�t��"tj|d|ji�}Wd�n1s�0Y|�|j|j�dS)Nr5)rrzr�r�rdrKr=rwrxr�rQrurIrvr}r~rl)r$Zseq_or_iterrhrrr
�_check_empty_sequence�s
0z'FutureGatherTests._check_empty_sequencecCs2|�g�|�d�|�t��|�td��dS)Nrr�)r�r?rir#rrr
�test_constructor_empty_sequence�s

z1FutureGatherTests.test_constructor_empty_sequencec	Cs�|j��}|j��}|�t��t�||�Wd�n1s@0Y|�t��J|�t�� tj||jd�Wd�n1s�0YWd�n1s�0YdSr;)	r�rFrlrTr�rrdr}r~)r$rrrrr
�%test_constructor_heterogenous_futures�s

*z7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}��|j�j����j���|�����	t
��"tj|d�ji�}Wd�n1s|0Y��|j�j����j���|���dS)Ncsg|]}�j���qSr)rlrFr�r#rr
rb�rAzIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>r�r5)rerrdrwrxrlr�r�rur}r~)r$Zchildrenrhrr#r
�#test_constructor_homogenous_futures�s
0z5FutureGatherTests.test_constructor_homogenous_futurescs��fdd�td�D�\}}}}}t�|||||�}t��}|�|�|�d�|�����j	���
|���|�|���
|�����|��tj�|�d�|��|�t��|��dS)Ncsg|]}�j���qSrr�r�r#rr
rb�rAz;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r�rr�)rerrdr�r�r�r�rSr�r�rQrur�r�r�rKrrUr�rk)r$r�r�rNr�r�rhr�rr#r
�test_one_cancellation�s 



z'FutureGatherTests.test_one_cancellationc	s�fdd�td�D�\}}}}}}tj||||||dd�}t��}|�|�|�d�t�}	|�|	�|�	���
�j���|�
��|�d�|�	�t�}
|�|
��j�|�}��|dtj���|d	tj�d|d<|d	<��|d|	ddd|
g�|�|�dS)
Ncsg|]}�j���qSrr�r�r#rr
rb�s�zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>r�Tr�rr�r�r�)rerrdr�r�r�r�rZr�rSr�r�r�rurkrVrKrUrIr�)r$r�r�rNr�r�r�rhr�ZzdeZrterrr#r
�&test_result_exception_one_cancellation�s,
�




z8FutureGatherTests.test_result_exception_one_cancellationN)
r'r(r)r�r�r�r�r�r�r�rrrr
r��s
	r�csTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�CoroutineGatherTestscst���t�|j�dSr
)rBrCrrzr�r#rGrr
rCs
zCoroutineGatherTests.setUpcGs*g}|D]}|fdd�}|�|��q|S)Nc�s
|IdHSr
rrgrrr
r9sz/CoroutineGatherTests.wrap_futures.<locals>.coro)rq)r$rZcorosrhr9rrr
r�s
z!CoroutineGatherTests.wrap_futurescs��fdd�}|j�|��S)Nc�stj�i���Sr
�rrdr�rr�rr
r9"sz*CoroutineGatherTests._gather.<locals>.coro)r�rV)r$rr�r9rr�r
�_gather!szCoroutineGatherTests._gathercCs�dd�}|�}|�}t�||�}|�|j|j�|j�|�|j|jdd�|�}|�}|�t	��"tj|||jd�}Wd�n1s�0Y|�|j|j�|j�|�dS)Nc�sdSr�rrrrr
r9'szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.coroFr�r<)
rrdrwrxr�rVrzrlr}r~)r$r9Zgen1Zgen2rhZgen3Zgen4rrrr
�test_constructor_loop_selection&s0z4CoroutineGatherTests.test_constructor_loop_selectioncCs�|�t��tjdd��}Wd�n1s.0Y|d�}|�t��*tj|||d�||jd�}Wd�n1sz0Y|�|j�|�|��gd��dS)NcSs|Sr
rrHrrr
r99sz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coror��defr<)r�r�r�r�)	r}r~rrrdr�r�rIrv)r$r9rNrhrrr
�test_duplicate_coroutines7s(8z.CoroutineGatherTests.test_duplicate_coroutinescsd�|j�����fdd�}tj|�|jd��tj|�|jd��d�����fdd�}tj|�|jd�}t�|j�|�|���|�tj	��|j�
|�Wd�n1s�0Y|�����|�����|�����|�����t�|j�|�
�d�dS)Nrc�s�IdH�d7�dSr�rrr�rr
r�Gs
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerr<c�s"t������IdH�d7�dSr�r�r)r�r��gathererr�rr
r�Ps
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)r�rFrrpr�r�rQrSrTrUrVr�r�rI)r$r�r�r�r)r�r�r�r�r�r
�test_cancellation_broadcastBs$
*z0CoroutineGatherTests.test_cancellation_broadcastcs�dd��|j���|j������fdd�}tj|�|jd�}t�|j���d�t�|j���d�t�|j�|�|��t	�dS)Nc�s|IdHtd��dS)Nzshould not be ignoredr'rrrr
r�es
z:CoroutineGatherTests.test_exception_marking.<locals>.innerc�st��������IdHdSr
r�r�r�r�r�rr
r�lsz:CoroutineGatherTests.test_exception_marking.<locals>.outerr<)
r�rFrrpr�r�r�rKrrkr�rr�r
�test_exception_markingbs



z+CoroutineGatherTests.test_exception_markingc	Cs�t�d��ndd�}|d�}|�t��|�|i�Wd�n1sH0Y|�|j�|jj��Wd�n1s~0YdS)Nz8asyncio.base_events.BaseEventLoop.call_exception_handlerc�s|Sr
rrHrrr
r9{sz2CoroutineGatherTests.test_issue46672.<locals>.coror�)	rrErTr�r�r�r�rTZassert_not_called)r$r9rNrrr
�test_issue46672ws�*z$CoroutineGatherTests.test_issue46672)r'r(r)rCr�r�r�r�r�r�r�r�rrrGr
r�s r�cs\eZdZdZ�fdd�Zddd�Zddd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Z�ZS)�RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cs$t���t��|_|�|j�dSr
r�r#rGrr
rC�s

z!RunCoroutineThreadsafeTests.setUpFc�sHt�d�IdH|rtd��|r@t�|j���t�d�IdH||S)z"Wait 0.05 second and return a + b.r~N�Fail!r)rr�rkr�r5rS)r$r�r�r0rSrrr
rl�szRunCoroutineThreadsafeTests.addNcCsl|jdd||d�}t�||j�}|r4|j�|jd�z |�|�W|��pN|��Sn|��pd|��0dS)z$Run add coroutine in the event loop.rr�)r0rSN)	rlrZrun_coroutine_threadsafer5Zcall_soon_threadsafer/rvrurS)r$r0rSrf�advance_coror9r�rrr
�target�s
�z"RunCoroutineThreadsafeTests.targetcCs,|j�d|j�}|j�|�}|�|d�dS)z9Test coroutine submission from a thread to an event loop.Nr�)r5�run_in_executorr�rVrI)r$r�rvrrr
�test_run_coroutine_threadsafe�sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafecCs\|j�d|jd�}|�t��}|j�|�Wd�n1s>0Y|�d|jj�dS)z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTr�)	r5r�r�rTrkrVrrr)r$r��exc_contextrrr
�,test_run_coroutine_threadsafe_with_exception�s*zHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptioncs��fdd�}�j�d|�}��tj���j�|�Wd�n1sH0Yt��j�t��j�D]}��	|�
��qjdS)zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.cs�jdd�S)Nrre�r�rr#rr
r@�rAzXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>N)r5r�rTrryrVr�r�r�rQru)r$r�r�rMrr#r
�*test_run_coroutine_threadsafe_with_timeout�s*zFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutcsV�fdd�}�j�d|�}��tj���j�|�Wd�n1sH0YdS)z\Test coroutine submission from a thread to an event loop
        when the task is cancelled.cs�jdd�S)NTrr�rr#rr
r@�rAzZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>N)r5r�rTrrUrV)r$r�r�rr#r
�,test_run_coroutine_threadsafe_task_cancelled�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledcs�dd�}�j�d�fdd��}t��}�j�|����jj�j����j�|���t	��}�j�
|�Wd�n1s�0Y��t|j
�d�|j\\}}}��|d|j�dS)zjTest coroutine submission from a thread to an event loop
        when the task factory raise an exception.cSst�dSr
)�	NameError)r5r9rrr
�task_factory�szfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factoryNcs�jdd�S)NT)r�r�rr#rr
r@�rAzbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>rr)r5r�r�r�r�r�rEZget_task_factoryrTr�rVrIraZcall_args_listrr)r$r�r_r�r�r5r r�rr#r
�4test_run_coroutine_threadsafe_task_factory_exception�s�
�*zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF)
r'r(r)�__doc__rCrlr�r�r�r�r�r�r�rrrGr
r��s

�
r�cs8eZdZ�fdd�Z�fdd�Zdd�Zdd�Z�ZS)	�
SleepTestscs$t���t��|_|�|j�dSr
r�r#rGrr
rC�s

zSleepTests.setUpcs|j��d|_t���dSr
�r5r1rB�tearDownr#rGrr
r��s
zSleepTests.tearDowncs>d��fdd�����fdd�}�j�|�����d�dS)Nrcs�|7�dSr
r�rBrKrr
�
inc_result�sz.SleepTests.test_sleep_zero.<locals>.inc_resultc�sF�j��d����d�tjddd�IdH}���d��|�dS)Nrrr�rK)r5r�rIrr�r��r�rvr$rr
r9�s
z(SleepTests.test_sleep_zero.<locals>.coro�)r5rVrIr�rr�r
�test_sleep_zero�s
zSleepTests.test_sleep_zerocCsF|�t��(|j�tjd|jd��Wd�n1s80YdS�NrEr<)r}r~r5rVrr�r#rrr
� test_loop_argument_is_deprecated
sz+SleepTests.test_loop_argument_is_deprecated)r'r(r)rCr�r�r�r�rrrGr
r��sr�cs@eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Z�ZS)�	WaitTestscs$t���t��|_|�|j�dSr
r�r#rGrr
rC

s

zWaitTests.setUpcs|j��d|_t���dSr
r�r#rGrr
r�
s
zWaitTests.tearDowncCsJ|�t��,|j�tjt�g|jd��Wd�n1s<0YdSr;)r}r~r5rVrr�rr#rrr
�(test_loop_argument_is_deprecated_in_wait
s�z2WaitTests.test_loop_argument_is_deprecated_in_waitcCsJ|�t��,|j�tjt�d|jd��Wd�n1s<0YdSr�)r}r~r5rVrr�rr#rrr
�,test_loop_argument_is_deprecated_in_wait_for
s�z6WaitTests.test_loop_argument_is_deprecated_in_wait_forcCs�|�t��&|j�t�t�g��Wd�n1s60Y|j�t��}|�t��(|j�t�|t�g��Wd�n1s�0YdSr
)r}r~r5rVrr�rr�rLrrr
�test_coro_is_deprecated_in_wait#
s�"�z)WaitTests.test_coro_is_deprecated_in_wait)	r'r(r)rCr�r�r�r�r�rrrGr
r�
s
r�cs@eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Z�ZS)�CompatibilityTestscs$t���t��|_|�|j�dSr
r�r#rGrr
rC3
s

zCompatibilityTests.setUpcs|j��d|_t���dSr
r�r#rGrr
r�8
s
zCompatibilityTests.tearDowncCsV|�t��tjdd��}Wd�n1s.0Y|j�|��}|�d|�dS)Ncsst�d�EdHdS)Nrrsr�rrrr
r9@
sz:CompatibilityTests.test_yield_from_awaitable.<locals>.cororsr)r$r9rvrrr
�test_yield_from_awaitable=
s
(z,CompatibilityTests.test_yield_from_awaitablecs�|�t��tjdd���Wd�n1s.0Y|�t��tjdd���Wd�n1sf0Y��fdd�}|j�|��}|�ddg|�dS)	NcSsdS)N�ok1rrrrr
rVK
sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro1csst�d�EdHdS)Nr�ok2r�rrrr
rWP
sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro2c�st������IdHSr
r�r�rVrWrr
r�U
sz;CompatibilityTests.test_await_old_style_coro.<locals>.innerr�r�r)r$r�rvrr�r
�test_await_old_style_coroH
s((z,CompatibilityTests.test_await_old_style_corocCst�d�}tdd|dd�dS)Nz�
            import asyncio

            async def native_coro():
                pass

            @asyncio.coroutine
            def old_style_coro():
                yield from native_coro()

            asyncio.run(old_style_coro())
        z-Wignore::DeprecationWarningr�r�)r�)�textwrap�dedentr	)r$r�rrr
�test_debug_mode_interop[
s

�z*CompatibilityTests.test_debug_mode_interop)	r'r(r)rCr�r�r�r�r�rrrGr
r�/
s
r��__main__)F)Cr�rF�
contextlibr6r�r[r�rAr�rr�r�r.Zunittestr�rrrrrrZtest.test_asynciorr�rorZtest.support.script_helperr	rr�contextmanagerrrr!r"r*r3rPrQZ
skipUnlessrRZTestCaser]rcrdrgrirjrkrmrnrqr�r�r�r�r�r�r�r�r�r�r�r�r�r'rrrrr
�<module>s�


	\:5���������p�
�fWsd"#?