HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/test_asyncio/__pycache__/test_tasks.cpython-310.opt-1.pyc
o

�i7��@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 �o�e(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�dSdS)TzTests for tasks.py.�N)�mock)�GenericAlias)�
coroutines)�futures)�tasks)�utils)�support)�assert_python_okcCst�d�dS�N)�asyncioZset_event_loop_policy�rr�9/usr/local/lib/python3.10/test/test_asyncio/test_tasks.py�tearDownModule�rc���dSr
rrrrr
�coroutine_function!��rccs0�tj}|j}z||_dVW||_dS||_wr
)rr�_DEBUG)ZenabledrZ	old_debugrrr
�set_coroutine_debug%s�rFcCsN|rd|}nd|}|dur |d}d||||d|dfSd|||fS)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
�rcCs4d}	|j}|durn|}|d7}qt|�|j|fS)zP
    Return information about the innermost exception context in the chain.
    rTNr)�__context__�type�args)�exc�depth�contextrrr
�get_innermost_context>s�r$c@�eZdZdd�Zdd�ZdS)�DummycC�dS)Nz<Dummy>r��selfrrr
�__repr__P�zDummy.__repr__cG�dSr
r)r)r rrr
�__call__Sr+zDummy.__call__N)�__name__�
__module__�__qualname__r*r-rrrr
r&Nsr&c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CoroLikeObjectcCstd���N�*)�
StopIteration)r)�vrrr
�sendXszCoroLikeObject.sendcGr,r
r)r)r!rrr
�throw[r+zCoroLikeObject.throwcCr,r
rr(rrr
�close^r+zCoroLikeObject.closecC�|Sr
rr(rrr
�	__await__ar+zCoroLikeObject.__await__N)r.r/r0r6r7r8r:rrrr
r1Ws
r1cs�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��Zbd�d��Zcd�d„Zdd�dĄZed�dƄZfd�dȄZgd�dʄZhei�jdˡd�d̈́�Zkei�jdΡd�dЄ�Zld�d҄Zmd�dԄZnd�dքZod�d؄Zpd�dڄZqei�jdˡd�d܄�Zrd�dބZsd�d�Ztd�d�Zud�d�Zvd�d�Zwd�d�Zxd�d�Zyd�d�Zzd�d�Z{d�d�Z|�Z}S)��
BaseTaskTestsN�TestTaskcCs|jj|||d�S)N)�loop�name)�	__class__�Task)r)r=�coror>rrr
�new_taskjszBaseTaskTests.new_taskcCs|jj|d�S�N�r=)r?�Future�r)r=rrr
�
new_futuremrzBaseTaskTests.new_futurecs6t�������_�j��j��fdd��j_dS)Ncs���j�Sr
)rGr=rr(rr
�<lambda>t�z%BaseTaskTests.setUp.<locals>.<lambda>)�super�setUp�
new_test_loopr=�set_task_factoryrB�
create_futurer(�r?r(r
rKps

zBaseTaskTests.setUpcCs,|jjt}|�|jtf�|�|t�dSr
)r?r@�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�dS1s?wYdS)Nc�rr
rrrrr
rA|rz;BaseTaskTests.test_task_cancel_message_getter.<locals>.coro�_cancel_message�
my message)rBr=�
assertTrue�hasattrrQrW�cancel�assertRaisesr�CancelledError�run_until_complete�r)rA�trrr
�test_task_cancel_message_getter{s
"�z-BaseTaskTests.test_task_cancel_message_gettercCstdd�}|�|j|��}|�d�d|_|�|jd�|�tj��|j�|�Wd�dS1s3wYdS)Nc�rr
rrrrr
rA�rz;BaseTaskTests.test_task_cancel_message_setter.<locals>.cororXzmy new message)	rBr=r[rWrQr\rr]r^r_rrr
�test_task_cancel_message_setter�s
"�z-BaseTaskTests.test_task_cancel_message_settercsDGdd�d���fdd���j�tj��fdd�td�D���dS)Nc@�eZdZdd�ZdS)z1BaseTaskTests.test_task_del_collect.<locals>.EvilcSst��dSr
)�gc�collectr(rrr
�__del__�sz9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__N)r.r/r0rfrrrr
�Evil�srgc�s���Sr
rr)rgrr
�run�s�z0BaseTaskTests.test_task_del_collect.<locals>.runcsg|]
}���j����qSr)rBr=)�.0�_)rhr)rr
�
<listcomp>�s�z7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>�d)r=r^r�gather�ranger(r)rgrhr)r
�test_task_del_collect�s��z#BaseTaskTests.test_task_del_collectcCs~t��}|�|�}dd�}z,|�td��|j�||��Wd�n1s'wYW|��dSW|��dS|��w)Nc�s�|IdHdSr
r��futrrr
rh���z1BaseTaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)r�new_event_looprG�assertRaisesRegex�RuntimeErrorr=r^r8)r)�
other_looprqrhrrr
�test_other_loop_future�s
���z$BaseTaskTests.test_other_loop_futurecs\�fdd�}tj|�|jd��|�td��|j���Wd�dS1s'wYdS)Nc����IdHdSr
rr�rUrr
�test�rrz6BaseTaskTests.test_task_awaits_on_itself.<locals>.testrDzTask cannot await on itself)r�
ensure_futurer=rtrur^)r)rzrryr
�test_task_awaits_on_itself�s�"�z(BaseTaskTests.test_task_awaits_on_itselfcCs�dd�}|�|j|��}|j�|�|�|���|�|��d�|�|j|j�|�|�	�|j�t
��}|�|�|�||��}|�|j|�|�|�|�
�dS)Nc���dS�N�okrrrrr
�notmuch�rz.BaseTaskTests.test_task_class.<locals>.notmuchr)rBr=r^rY�donerQ�result�assertIs�_loop�get_looprrs�set_event_loopr8)r)r�r`r=rrr
�test_task_class�s

zBaseTaskTests.test_task_classcsTdd��tj��|jd�}|�|j|j�|j�|�|�|���|�|�	�d���}|�
|j�|�t
d��
t�|�Wd�n1sIwY�fdd�}|j�|��}|�|j|j�|j�|�|�|���|�|�	�d�t�|j�|�
tjd�t����}|�|j|j�|j�|�|�|���|�|�	�d�dS)Nc�r}r~rrrrr
r��rz;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuchrDr�no current event loopc���t����Sr
�rr{r�r�rr
rz���z8BaseTaskTests.test_ensure_future_coroutine.<locals>.test)rr{r=r�r�r^rYr�rQr��
addCleanupr8rtrur��r)r`�arzrr�r
�test_ensure_future_coroutine�s0�z*BaseTaskTests.test_ensure_future_coroutinecs�|�t��tjdd���Wd�n1swYtj��|jd�}|�|j|j�|j�|�|�	|�
��|�|��d���}|�
|j�|�td��
t�|�Wd�n1sawY�fdd�}|j�|��}|�|j|j�|j�|�|�	|�
��|�|��d�t�|j�|�
tjd�t����}|�|j|j�|j�|�|�	|�
��|�|��d�dS)NcSr'r~rrrrr
r���z=BaseTaskTests.test_ensure_future_coroutine_2.<locals>.notmuchrDrzThere is no current event loopc�r�r
r�rr�rr
rz�r�z:BaseTaskTests.test_ensure_future_coroutine_2.<locals>.test)�assertWarns�DeprecationWarningr�	coroutiner{r=r�r�r^rYr�rQr�r�r8rtrur�r�rr�r
�test_ensure_future_coroutine_2�s6��z,BaseTaskTests.test_ensure_future_coroutine_2cCs�|�|j�}|�d�t�|�}|j�|�|�|���|�|�	�d�|�
||�t��}|�|�|�
t��tj||d�}Wd�n1sKwY|��tj||jd�}|�
||�dS)N�korD)rGr=�
set_resultrr{r^rYr�rQr�r�rsr�r\�
ValueErrorr8)r)Zf_orig�fr=rrr
�test_ensure_future_future
s


�z'BaseTaskTests.test_ensure_future_futurecCs�dd�}|�|j|��}t�|�}|j�|�|�|���|�|��d�|�	||�t�
�}|�|�|�t
��tj||d�}Wd�n1sLwY|��tj||jd�}|�	||�dS)Nc�r}r~rrrrr
r� rz6BaseTaskTests.test_ensure_future_task.<locals>.notmuchrrD)rBr=rr{r^rYr�rQr�r�rsr�r\r�r8)r)r�Zt_origr`r=rrr
�test_ensure_future_tasks

�z%BaseTaskTests.test_ensure_future_taskcCs�Gdd�d�}|�t��tjdd��}Wd�n1swYt��}|�|�tj||��|d�}|�|�|�|�	�d�dS)Nc@r%)z6BaseTaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dSr
�rA�r)rArrr
�__init__6s
z?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css�|jEdHSr
r�r(rrr
r:8r�z@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)r.r/r0r�r:rrrr
�Aw5sr�cSr'r~rrrrr
rA<r�z8BaseTaskTests.test_ensure_future_awaitable.<locals>.cororDr)
r�r�rr�rsr�r{r^rQr�)r)r�rAr=rqrrr
�test_ensure_future_awaitable4s�

z*BaseTaskTests.test_ensure_future_awaitablecCs:|�t��t�d�Wd�dS1swYdSr~)r\�	TypeErrorrr{r(rrr
�test_ensure_future_neitherFs"�z(BaseTaskTests.test_ensure_future_neithercCsZt��}|�|j�}|�td��tj||d�Wd�n1s"wY|��dS)NzRThe future belongs to a different loop than the one specified as the loop argumentrD)rrsrGr=rtr�r{r8)r)r=r�rrr
�test_ensure_future_error_msgJs�z*BaseTaskTests.test_ensure_future_error_msgcs@d��fdd����fdd�����fdd�}�j�|��dS)Nc�s���IdHdSr
rr)�barrr
�fooV��z)BaseTaskTests.test_get_stack.<locals>.fooc�sj��jdd�}z��|djjd�Wd}nd}wt��}�jd|d�|�d�|��}��	|d�dS)Nr)�limitrr�)r��filezfoo\(\) running)
Z	get_stackrQ�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)r�r��tb)�Tr)rr
r�Ys�
z)BaseTaskTests.test_get_stack.<locals>.barc�s"�tj���jd���IdHdSrC)rr{r=r)r�r�r)rr
�runnerhs�z,BaseTaskTests.test_get_stack.<locals>.runner�r=r^)r)r�r)r�r�r�r)r
�test_get_stackSs
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�r}�N�abcrrrrr
r�rrz-BaseTaskTests.test_task_repr.<locals>.notmuchr�z#\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>()]>r�z#<Task cancelled name='TestTask' %s>z/<Task finished name='TestTask' %s result='abc'>)r=�	set_debugrQr.r�r0r/�
test_utils�get_function_sourcerB�add_done_callbackr&r�_source_traceback�reprr[r\rr]r^)	r)r��filename�linenor�gen�
coro_qualnamer`rArrr
�test_task_reprosT��
�
���
��
�zBaseTaskTests.test_task_reprcCs�dd�}|�|j|�d�}|�|j|�d�}|�t|�t|��t�dt|��}|�|�t�dt|��}|�|�|�t|�	d��t|�	d���|j�
|�|j�
|�dS)Nc�r}�N�{rrrrr
r��rz;BaseTaskTests.test_task_repr_autogenerated.<locals>.notmuchz ^<Task pending name='Task-(\d+)'r)rBr=ZassertNotEqualr��re�match�assertIsNotNoneZ
assertLess�int�groupr^)r)r��t1�t2Zmatch1Zmatch2rrr
�test_task_repr_autogenerated�s

 z*BaseTaskTests.test_task_repr_autogeneratedcCsDdd�}|�|j|��}|�dh�|�|��d�|j�|�dS)Nc�r}r�rrrrr
r��rz:BaseTaskTests.test_task_repr_name_not_str.<locals>.notmuch�z{6})rBr=�set_namerQ�get_namer^)r)r�r`rrr
�test_task_repr_name_not_str�s
z)BaseTaskTests.test_task_repr_name_not_strcCs�|j�d�|�t��tjdd��}Wd�n1swY|�|jd�|�|j	d�|�|j
t�|�}d}d}|�|j|�|�|j	|�tjr�tjrlt
�|�\}}|jd}d||||d|d	f}n|j}	d
||	j|	jf}|�t|�d|�|�|j|�}
|
�t��tjr�dt
�|�}n|j}	d|	j|	jf}t|d
||
jtjd�}|�t|
�d|�|j�|
�dS)NFcSr'r�rrrrr
r��sz<BaseTaskTests.test_task_repr_coro_decorator.<locals>.notmuchr�z4\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�)r=r�r�r�rr�rQr.r�r0r/rrr�r�r��gi_code�co_filename�co_firstlinenor�rBr�r&rr^)r)r�r�Z	coro_namer�r�r�rrA�coder`rrrr
�test_task_repr_coro_decorator�sZ��
�����
�z+BaseTaskTests.test_task_repr_coro_decoratorcCsv|j�d�dd�}|�|j�}|�|j||��}t�|j�|�t|�dt�	t|���|�
d�|j�|�dS)NFc���|IdHSr
rrprrr
�wait_for���
z7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_forz<Task .* wait_for=%s>)r=r�rGrBr��run_brieflyr�r�r��escaper�r^)r)r�rqrUrrr
�test_task_repr_wait_for�s
�
z%BaseTaskTests.test_task_repr_wait_forc	Cs�td��B|j�d�dd�}|�t��t�t�|d��}Wd�n1s(wY|j�	|d��}d|_
|�|jj
�Wd�n1sIwYt|j�}d}|�||�dS)NTc���t�d�IdHdS�Nr�r�sleep)�x�yrrr
�func��z>BaseTaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzL<coroutine object \w+\.test_task_repr_partial_corowrapper\.<locals>\.func at)rr=r�r�r�rr��	functools�partial�create_task�_log_destroy_pendingr�Z_coror8r�r�)r)r�Zpartial_funcrUZ	coro_repr�expectedrrr
�"test_task_repr_partial_corowrapper
s
��
�z0BaseTaskTests.test_task_repr_partial_corowrappercs<��fdd�}dd��dd��|�}|�|j�|�d�dS)Nc�s"���IdH}��IdH}||Sr
r)r��b��inner1�inner2rr
�outer$s�z-BaseTaskTests.test_task_basics.<locals>.outerc�r}r2rrrrr
r�)rz.BaseTaskTests.test_task_basics.<locals>.inner1c�r})Ni�rrrrr
r�,rz.BaseTaskTests.test_task_basics.<locals>.inner2i)rQr=r^)r)r�r`rr�r
�test_task_basics"s
zBaseTaskTests.test_task_basicscs\t�������dd�����fdd�}z���|��}��|�W���dS���w)Nc���t�r
�r�rrrr
�raise_error9rzFBaseTaskTests.test_exception_chaining_after_await.<locals>.raise_errorc
�s��ztd��tyX}zG������}z|IdHWn*tyE}z��t|�t�|j}��t|�|jftdf�WYd}~nd}~wwWYd}~dSWYd}~dSd}~ww)N�)r�)�KeyError�	ExceptionrBrQrr�rr )r!rUZchained�r=r�r)rr
rh<s&�������z>BaseTaskTests.test_exception_chaining_after_await.<locals>.run)rrsr�rBr^r8�r)rhrUrr�r
�#test_exception_chaining_after_await2s

z1BaseTaskTests.test_exception_chaining_after_awaitcspd�t�������dd������fdd�}z���|��}��|�W���n���w���d�dS)Nc�s�|�r
r)r!rrr
�process_excVrzYBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.process_excc
�s��ztd��tyI}z8����|��}z|IdHWnty6}z||ju�d|_WYd}~nd}~wwWYd}~dSWYd}~dSd}~ww)Nr�)r�r�rB�
BaseExceptionr)r!rU�Z	has_cycler=r�r)rr
rhYs �
�����zQBaseTaskTests.test_exception_chaining_after_await_with_context_cycle.<locals>.runF)rrsr�rBr^r8rQr�rrr
�6test_exception_chaining_after_await_with_context_cycleOs

zDBaseTaskTests.test_exception_chaining_after_await_with_context_cyclecs��fdd�}��|�}dd�}��||��}|�|j���tj��
|�|�Wd�n1s2wY��|�	����|�
����|���dS)Nc3��dV}��d|�dVdS�N�$@r��assertAlmostEqual�Zwhenr(rr
r�p��
z&BaseTaskTests.test_cancel.<locals>.genc���t�d�IdHdS)Nr�r�rrrr
rUw��z'BaseTaskTests.test_cancel.<locals>.task)rLrB�	call_soonr[r\rr]r^rYr��	cancelled�assertFalse)r)r�r=rUr`rr(r
�test_cancelns
�zBaseTaskTests.test_cancelc
��gd�}|D]j\�}�j�d��Xt�������dd������fdd�}���|��}��tj��
}��|�Wd�n1sDwY|j}��	|j
d�t|�}��	|tj|df�Wd�n1skwYqdS)	N�)rr)r
r)�rXr)��r��cancel_argsc�r��N�
r�rrrr
r��r�zHBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.sleepc��L�������}t�d�IdH|j��t�|g�IdH\}}|��dSr�)rBrr�r[�waitr��rUr��pending�rr=r)r�rr
rA���
zGBaseTaskTests.test_cancel_with_message_then_future_result.<locals>.cororr���subTestrrsr�rBr\r]r^�	exceptionrQr r$�r)�cases�
expected_argsrArU�cmr!�actualrrr
�+test_cancel_with_message_then_future_result��(
�
����z9BaseTaskTests.test_cancel_with_message_then_future_resultc
r)	Nrrc�r�rr�rrrr
r��r�zKBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.sleepc�rr��rBrr�r[rr!rrrr
rA�rzJBaseTaskTests.test_cancel_with_message_then_future_exception.<locals>.cororr�rr"rrr
�.test_cancel_with_message_then_future_exception�r(z<BaseTaskTests.test_cancel_with_message_then_future_exceptioncs�t�������dd�����fdd�}���|��}��tj��
}��|�Wd�n1s2wY|j}��|j	d�t
|�}��|tjddf�dS)Nc�r�rr�rrrr
r��r�zJBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.sleepc�s<�������}|�d�t�|g�IdH\}}|��dS)NrX)rBr[rrr!r�r=r)r�rr
rA�s
�
zIBaseTaskTests.test_cancel_with_message_before_starting_task.<locals>.cororrr�)rrsr�rBr\r]r^r!rQr r$)r)rArUr%r!r&rr+r
�-test_cancel_with_message_before_starting_task�s
�
�z;BaseTaskTests.test_cancel_with_message_before_starting_taskcCs�|�t��tjdd��}Wd�n1swY|�|j|��}t�|j�|��|�	tj
|jj|�|�|�
��|�|���|�|���dS)Ncss�dVdVdS�Nr
rrrrr
rU���z-BaseTaskTests.test_cancel_yield.<locals>.task)r�r�rr�rBr=r�r�r[r\r]r^rYr�r
r�r)rUr`rrr
�test_cancel_yield�s��zBaseTaskTests.test_cancel_yieldcs�|�|j���fdd�}|�|j|��}t�|j����|�tj��|j�	|�Wd�n1s5wY|�
����|�
|���dS)Nc����IdHdSr-rr�r�rr
rU���
z4BaseTaskTests.test_cancel_inner_future.<locals>.task)rGr=rBr�r�r[r\rr]r^rYr
r/rr2r
�test_cancel_inner_future�s�z&BaseTaskTests.test_cancel_inner_futurecs�|�|j���fdd�}|�|j|��}t�|j����|��|�tj��|j�	|�Wd�n1s9wY|�
|���|�
����|�
|���dS)Nc�r1r-rrr2rr
rUr3zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task)
rGr=rBr�r�r[r\rr]r^rYr�r
r/rr2r
�&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�IdHWdStjyYdSwr2�rr]r��fut1�fut2rr
rUs�
�z5BaseTaskTests.test_cancel_task_catching.<locals>.taskr3�rGr=rBr�r�r��_fut_waiterr�r[rYr
r^rQr�r)rUr`�resrr7r
�test_cancel_task_catchings
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�IdHWn
tjyYnw�IdH}|Sr
r6)r=�r8r9Zfut3rr
rU/s�
�
z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr3r:r<rr?r
�test_cancel_task_ignoring*s&	

z'BaseTaskTests.test_cancel_task_ignoringcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)Nc�s*�������j�t�d�IdHdS)Nrlr
)r[rY�_must_cancelrr�r�r)r`rr
rULs
�z4BaseTaskTests.test_cancel_current_task.<locals>.task�
rrsr�rBrr
r\r]r^rYr�rAr[�r)r=rUrrBr
�test_cancel_current_taskHs

�z&BaseTaskTests.test_cancel_current_taskcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)z+coroutine end right after task is cancelledc�s�������j�dSr-)r[rYrArrBrr
rUas�z.BaseTaskTests.test_cancel_at_end.<locals>.taskNrCrDrrBr
�test_cancel_at_end\s

�z BaseTaskTests.test_cancel_at_endcs�t������fdd��d��������fdd�������fdd�}���|�����tj��
����Wd�n1sCwY����	������	������	��dS)Ncs���Sr
�r8rrDrr
rHwsz8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>c�rxr
rrrprr
�nested|rrz6BaseTaskTests.test_cancel_awaited_task.<locals>.nestedc�s6��������t�d�IdH����IdHdSr��rBrr�r[r)r=rH�nested_taskr)rUrr
rAs
�z4BaseTaskTests.test_cancel_awaited_task.<locals>.coro)
rrsr�rGrBr\r]r^rYr
r�r)rqr=rHrJr)rUr
�test_cancel_awaited_taskos
�z&BaseTaskTests.test_cancel_awaited_taskcCs"||vrtd|�d|�d���dS)Nztext z not found in:
>>>z<<<�ru)r)�text�substrrrr
�assert_text_contains�s�z"BaseTaskTests.assert_text_containsc�t�������dd�����fdd�}���|��}z��|�Wntjy>t��}��|d���|d�YdSw��	d�dS)Nc�r�rr�rrrr
rH���zEBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.nestedc�s6�������}t�d�IdH|��|IdHdSr�rIry�r=rHr)rr
rA�s
�zCBaseTaskTests.test_cancel_traceback_for_future_result.<locals>.coro�await asyncio.sleep(10)zawait task  # search target�CancelledError did not occur�
rrsr�rBr^r]�	traceback�
format_excrO�fail�r)rArUr�rrRr
�'test_cancel_traceback_for_future_result�s
�z5BaseTaskTests.test_cancel_traceback_for_future_resultcrP)Nc�r�rr�rrrr
rH�rQzHBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.nestedc�sJ�������}t�d�IdH|��t�|g�IdH\}}|��dSr�r)rrRrr
rA�s�zFBaseTaskTests.test_cancel_traceback_for_future_exception.<locals>.cororSz!task.exception()  # search targetrTrUrYrrRr
�*test_cancel_traceback_for_future_exception�s

��z8BaseTaskTests.test_cancel_traceback_for_future_exceptioncs��fdd�}��|��d���fdd�}���|��}��t��
}��|�Wd�n1s0wY��t|j�d���|�	�����d���
d����|����t
j�j|�dS)	Nc3sB�dV}��d|�dV}��d|�dV}��d|�dVdS)N皙�����?皙�����?�333333�?rrr(rr
r����
z:BaseTaskTests.test_stop_while_run_in_complete.<locals>.genrc�sB��dkrt�d�IdH�d7��dkr����dksdSdS)Nrr\rr�)rr��stopr)r=r�rr
rU�s��z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.taskz+Event loop stopped before Future completed.r�r^)rLrBr\rur^rQrPr!rr�r�timer[rr])r)r�rUr`r%r)r=r)r�r
�test_stop_while_run_in_complete�s 
	��z-BaseTaskTests.test_stop_while_run_in_completecCsZdd�}|�|j|��}|�td��d|_Wd�n1s wY|j�|�dS)Nc�rr
rrrrr
rA�rz.BaseTaskTests.test_log_traceback.<locals>.corozcan only be set to FalseT)rBr=rtr�Z_log_tracebackr^�r)rArUrrr
�test_log_traceback�s�z BaseTaskTests.test_log_tracebackcs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||���}��|d���d|���|���||���}��d|�����|d�dS)Nc3�0�dV}��d|�dV}��d|�dVdS�Nr\r�333333�?rrr(rr
r����
z$BaseTaskTests.test_wait.<locals>.genr\rgc�s@�t���g�IdH\}}��|t��g����|t��dSr2�rrrQ�set�r�r�r�r�r)rr
r�	s
�z$BaseTaskTests.test_wait.<locals>.foor3�rLrBrr�r^rQrra�r)r�r=r�r=rrlr
�	test_wait�s
zBaseTaskTests.test_waitc	Cs�|�t��tjdd��}Wd�n1swY|d�}|�|jt�|||d�g��}|�t��|j�|�\}}Wd�n1sGwY|�|�|�	t
dd�|D��ddh�dS)NcSr9r
r��srrr
rAr�z:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.cororz�spamcs��|]}|��VqdSr
�r��rir�rrr
�	<genexpr>'��z?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)r�r�rr�rBr=rr^rrQrj)r)rA�crUr�rrrr
�test_wait_duplicate_coroutiness���
"z,BaseTaskTests.test_wait_duplicate_coroutinescCsR|�t|jjt�t���t�d�}tj|gdd�}|�t|jj|�|��dS)Nrr��return_when)	r\r�r=r^rrrjr�r8)r)Z
sleep_coroZ	wait_cororrr
�test_wait_errors)s
�
�zBaseTaskTests.test_wait_errorscs��fdd�}��|�}��|t�d��}��|t�d��}��|tj||gtjd��}|�|�\}}��|h|���|h|���|�	����
|�	����|�����
d|���|�d�|�t�||g��dS)Nc3re)Nrrr\rrr(rr
r�8rhz4BaseTaskTests.test_wait_first_completed.<locals>.genrr\rzr)rLrBrr�r�FIRST_COMPLETEDr^rQrr�rY�assertIsNoner�rra�advance_time)r)r�r=r�r�rUr�rrr(r
�test_wait_first_completed6s"
�
z'BaseTaskTests.test_wait_first_completedcCs�dd�}dd�}|�|j|��}|�|j|��}|�|jtj||gtjd��}|j�|�\}}|�||h|�|�|���|�	|�
��|�|���|�	|�
��dS)Nc�r�r�r�rrrr
�coro1Wr�z2BaseTaskTests.test_wait_really_done.<locals>.coro1c�s&�t�d�IdHt�d�IdHdSr�r�rrrr
�coro2Zs�z2BaseTaskTests.test_wait_really_done.<locals>.coro2rz)rBr=rrr}r^rQrYr�r~r�)r)r�r�r�r�rUr�rrrr
�test_wait_really_doneSs�z#BaseTaskTests.test_wait_really_donec	s��fdd�}��|�}��|t�d��}dd�}��||��}��|tj||gtjd��}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3rrrrr(rr
r�mrz4BaseTaskTests.test_wait_first_exception.<locals>.genrc�s
�td��)N�err)�ZeroDivisionErrorrrrr
r!w��z4BaseTaskTests.test_wait_first_exception.<locals>.excrzrr�rLrBrr�r�FIRST_EXCEPTIONr^rQrrar�	r)r�r=r�r!r�rUr�rrr(r
�test_wait_first_exceptionks
�
z'BaseTaskTests.test_wait_first_exceptionc	s��fdd�}��|�}��|t�d��}dd�}��||��}tj||gtjd�}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3re)Nrr�{�G�z�?rrr(rr
r��rhz<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.genrc���t�d�IdHtd��)Nr�r��rr�r�rrrr
r!���z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.excrzr�rr�r�rr(r
�!test_wait_first_exception_in_wait�s

z/BaseTaskTests.test_wait_first_exception_in_waitcs��fdd�}��|�}��|t�d���dd�}��||������fdd�}|���||�����d|���|���||�����d|���dS)	Nc3rerfrrr(rr
r��rhz3BaseTaskTests.test_wait_with_exception.<locals>.genr\c�r�)NrgZreallyr�rrrr
�sleeper�r�z7BaseTaskTests.test_wait_with_exception.<locals>.sleeperc�s^�t���g�IdH\}}��t|�d���|t��tdd�|D��}��t|�d�dS)Nr�css �|]}|��dur|VqdSr
)r!rurrr
rv�s�zFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rrrQ�lenrj)r�r�errorsrlrr
r��s�z3BaseTaskTests.test_wait_with_exception.<locals>.foorg)rLrBrr�r^rra)r)r�r=r�r�rrlr
�test_wait_with_exception�s
z&BaseTaskTests.test_wait_with_exceptioncs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||�����d|���|�d�|�t���g��dS)	Nc3sB�dV}��d|�dV}��d|�dV}��d|�dVdS)Nr\rrg�)\��(�?rrr(rr
r��r_z1BaseTaskTests.test_wait_with_timeout.<locals>.genr\rgc�sF�tj��gdd�IdH\}}��|t�g����|t�g��dS)Nr���timeoutrirkrlrr
r��s�z1BaseTaskTests.test_wait_with_timeout.<locals>.foor�r)	rLrBrr�r^rrarr�r)r�r=r�rrlr
�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)Nc3sB�dV}��d|�dV}��d|�dV}��d|�dVdSrfrrr(rr
r��r_z8BaseTaskTests.test_wait_concurrent_complete.<locals>.genr\rgr�r)rLrBrr�r^rrQrjrrar)r)r�r=r�r�r�rrr(r
�test_wait_concurrent_complete�s
	�
z+BaseTaskTests.test_wait_concurrent_completecs~�fdd�}��|�}��|t�d�����|t�d������fdd�}|���||���}��|d���d|���dS)Nc3rerfrrr(rr
r��rhz;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.genr\rgc�sD�t�t��g��IdH\}}��|t��g����|t��dSr2)rr�iterrQrjrkrlrr
r�s
�z;BaseTaskTests.test_wait_with_iterator_of_tasks.<locals>.foor3rmrnrrlr
� test_wait_with_iterator_of_tasks�s
z.BaseTaskTests.test_wait_with_iterator_of_taskscsdd�}|�|��d�_t��d�|�t��tj���fdd��}Wd�n1s,wY|dd��|dd	��|d
d�����fdd
�}��|��|���}|�	d
��
��|�d|dd�v�|�d	|dd�v�|�|dd���|��|���}|�	d
��
��dS)Ncss�dVdVdVdVdS�Nrr�rrrrr
r��
�
z,BaseTaskTests.test_as_completed.<locals>.geng�?Fc3sB�t�|�EdH��|��sd�vrd�vrd���d�|S)Nr�r�Tg�Q���?)rr��addr)�dtr�)�	completedr=�time_shiftedrr
r�$s�

z0BaseTaskTests.test_as_completed.<locals>.sleeperr�r�r�rgrxc�s0�g}t����g�D]
}|�|IdH�q|Sr
�r�as_completed�append)�valuesr�)r�r�rxrr
r�2s
�z,BaseTaskTests.test_as_completed.<locals>.foor�)
rLZslow_callback_durationrjr�r�rr�r^rBrrarYrQ)r)r�r�r�r=r)r�r�rxr�r=r�r
�test_as_completeds(
�


zBaseTaskTests.test_as_completedcs�dd�}|�|����t�dd�����t�dd������fdd�}��|��|���}|�t|�d	|�|�|d
d�|�|dd
d	�|�|ddtj	�|�
d
������d���t�
��g��dS)Ncss�dVdVdVdVdS)Nrr\rrrrr
r�Dr�z9BaseTaskTests.test_as_completed_with_timeout.<locals>.genr\r�rgr�c�s��g}tj��gdd�D]1}|r��d�z|IdH}|�d|f�Wqtjy=}z
|�d|f�WYd}~qd}~ww|S)N���Q��?r�g{�G�z�?rr�)rr�rr��TimeoutError)r�r�r5r!�r�r�r=rr
r�Os�

��z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foor�r)rr�rr�r)rLr�rr�r^rBrQr�rSr�rrarr)r)r�r�r=rr�r
�test_as_completed_with_timeoutBs

z,BaseTaskTests.test_as_completed_with_timeoutcsDdd�}��|�}t�dd����fdd�}|���||���dS)Ncss�dVdVdVdSr�rrrrr
r�h��
z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.genr�r�c�s2�tj�gdd�D]
}|IdH}��|d�q	dS)Nrr�r�)rr�rQ)r�r5�r�r)rr
r�qs
�
�z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo)rLrr�r^rBr�rr�r
�%test_as_completed_with_unused_timeoutfs

z3BaseTaskTests.test_as_completed_with_unused_timeoutcsRdd�}��|��t�dd�}t�dd�}||h����fdd�}��|��dS)	Ncss�dVdVdVdS)Nr皙�����?rrrrr
r�zr�z9BaseTaskTests.test_as_completed_reverse_wait.<locals>.genr�r�r\r�c�s��tt����}��t|�d�|dIdH}��|d���d������d�|dIdH}��|d���d����dS)Nr�rr�r�rr�r\)�listrr�rQr�rrar)�futsr�r���fsr=r)rr
rz�s�
z:BaseTaskTests.test_as_completed_reverse_wait.<locals>.test)rLrr�r^)r)r�r�r�rzrr�r
�test_as_completed_reverse_waitxs
z,BaseTaskTests.test_as_completed_reverse_waitcsT�fdd�}t�dd�}t�dd�}||h���fdd�}��|�}|�|��dS)Nc3s0�dV}��d|�dV}��d|�dVdS)Nr�rrrr(rr
r��rhz7BaseTaskTests.test_as_completed_concurrent.<locals>.genr�r�r�c�s��tt����}��t|�d�t�|�}��t��}|IdH\}}Wd�n1s,wY��|jdj	t
���tdd�|D��ddh�dS)Nr�rcsrsr
rtrurrr
rv�rwzKBaseTaskTests.test_as_completed_concurrent.<locals>.test.<locals>.<genexpr>r�r�)r�rr�rQr�rr�r��warningsr��__file__rj)r��waiterr%r�r�r�r)rr
rz�s�
�"z8BaseTaskTests.test_as_completed_concurrent.<locals>.test)rr�rLr^)r)r�r�r�rzr=rr�r
�test_as_completed_concurrent�s

z*BaseTaskTests.test_as_completed_concurrentcs�|�t��tjdd���Wd�n1swY|�t��tj�fdd��}Wd�n1s5wY|�|j|��}|j�|�|��}|�t	|�ddh�|�t
|�d�dS)NcSr9r
rrprrr
rA�r�zBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3s<�g}�d�}t�||�d�g�D]
}|�|EdH�q|S)N�hamrrr�)r�rxr�r�rr
r��s�zDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr�rrr�)r�r�rr�rBr=r^r�rQrjr�)r)r�rqr�rr�r
�&test_as_completed_duplicate_coroutines�s��	z4BaseTaskTests.test_as_completed_duplicate_coroutinescCs`dd�}|�}|�|j�t�|g�}|�td��
t|�Wd�dS1s)wYdS)Nc�r}r2rrrrr
rA�rzDBaseTaskTests.test_as_completed_coroutine_without_loop.<locals>.coror�)r�r8rr�rtrur�)r)rAr�r�rrr
�(test_as_completed_coroutine_without_loop�s
"�z6BaseTaskTests.test_as_completed_coroutine_without_loopcs.���}dd����fdd�}|�|��dS)Nc�r}r2rrrrr
rA�rzHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.coroc�s>�tt���g��}��t|�d���|dIdHd�dS)Nrrr3)r�rr�rQr�)r��rAr)rr
rz�s�zHBaseTaskTests.test_as_completed_coroutine_use_running_loop.<locals>.test)rLr^)r)r=rzrr�r
�,test_as_completed_coroutine_use_running_loop�sz:BaseTaskTests.test_as_completed_coroutine_use_running_loopcCsddd�}|��}t�|�|�tjd�tt�|�g��}|�t|�d�|�|�|d�d�dS)Nc�r}r2rrrrr
rA�rzGBaseTaskTests.test_as_completed_coroutine_use_global_loop.<locals>.cororrr3)	rLrr�r�r�r�rQr�r^)r)rAr=r�rrr
�+test_as_completed_coroutine_use_global_loop�s
z9BaseTaskTests.test_as_completed_coroutine_use_global_loopcsl�fdd�}��|�}dd�}��||dd��}|�|���|�����|��d���d|���dS)Nc3s0�dV}��d|�dV}��d|�dVdS)Nr�r\rrr(rr
r��rhz%BaseTaskTests.test_sleep.<locals>.genc�s0�t�|d�IdHt�|d|�IdH}|S)Nr�r�)r��argr=rrr
r��s�z)BaseTaskTests.test_sleep.<locals>.sleeperr\�yeah)	rLrBr^rYr�rQr�rra)r)r�r=r�r`rr(r
�
test_sleep�s

zBaseTaskTests.test_sleepcs��fdd�}��|�}��|t�dd��}d�|j���fdd�}||_t�|����j�|�	�t�|���
�j�dS)Nc3rrrrr(rr
r��rz,BaseTaskTests.test_sleep_cancel.<locals>.genrr�cs�||g|�R���Sr
r)�delay�callbackr )�handle�orig_call_laterrr
�
call_latersz3BaseTaskTests.test_sleep_cancel.<locals>.call_later)rLrBrr�r�r�r�rZ
_cancelledr[rY)r)r�r=r`r�r)r�r�r)r
�test_sleep_cancel�s


zBaseTaskTests.test_sleep_cancelcsZ�fdd�}��|��dd�����fdd�}|�}����|�d���d����dS)	Nc3s0�dV}��d|�dV}��d|�dVdS)Nr\r�rrr(rr
r�rhz9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genc�s�t�|�IdHdSr
r�)r�rrr
r�$r�z;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepc�sH�����d��}��d|j�z|IdHWdStjy#YdSw)Nr�r\r
zslept in)rBr�r[rr])r�r+rr
�doit's���z:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitr
r\)rLrQr^rra)r)r�r�Zdoerrr+r
�test_task_cancel_sleeping_tasks

z,BaseTaskTests.test_task_cancel_sleeping_taskcs�|�|j���fdd�}|�|j|��}t�|j�|�|j��|��t�|j�|�t	j
|jj|�|�|j�|�
����dS)Nc�rxr
rrrprr
rA8rrz:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro)rGr=rBr�r�r�r;r[r\rr]r^r~rYr
rcrrpr
�test_task_cancel_waiter_future5s�z,BaseTaskTests.test_task_cancel_waiter_futurecCs�dd�}|�}|�|j|�}|�td��
|�d�Wd�n1s$wY|�td��|�t��Wd�n1s@wY|�|j�|�d�dS)Nc�r})Nr�rrrrr
r�Grz4BaseTaskTests.test_task_set_methods.<locals>.notmuchznot support set_resultrznot support set_exceptionr�)	rBr=rtrur��
set_exceptionr�rQr^)r)r�r�rUrrr
�test_task_set_methodsFs��
�z#BaseTaskTests.test_task_set_methodscCsP|�t��tjdd��}Wd�n1swY|�t|jj|��dS)Ncss�dVdVdS)Nrr�rrrrr
r�Yr.z/BaseTaskTests.test_step_result.<locals>.notmuch�r�r�rr�r\rur=r^)r)r�rrr
�test_step_resultWs��zBaseTaskTests.test_step_resultcs�Gdd�dtj�}||jd��d���fdd�}|�|j|��}t�|j�|��j�t�}��	|�t�|j�|�
|��|�|���|�|�
��dS)Nc�(eZdZ�fdd�Z�fdd�Z�ZS)z2BaseTaskTests.test_step_result_future.<locals>.Futc�d|_t�j|i|��dS�NF)�cb_addedrJr�)r)r �kwdsrOrr
r�f�z;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__cr��NT)r�rJr��r)r �kwargsrOrr
r�jr�zDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback�r.r/r0r�r��
__classcell__rrrOr
�Fute�r�rDc�s��IdH�dSr
rr�rqr�rr
�wait_for_futureqs�z>BaseTaskTests.test_step_result_future.<locals>.wait_for_future)rrEr=rBr�r�rYr��objectr�r�r�r~r�)r)r�r�r`r=rr�r
�test_step_result_futurebs	
z%BaseTaskTests.test_step_result_futurecs��fdd�}��|�}dd��t����fdd�}��||��}t�|�|����|�����ttj|���	|�����|�
����|����dS)Nc3rrrrr(rr
r��rz;BaseTaskTests.test_baseexception_during_cancel.<locals>.genc�r�rr�rrrr
r��r�z?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeperc�s*�z	��IdHWdStjy��wr
r6r)�base_excr�rr
�notmutch�s��z@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch)
rL�
SystemExitrBr�r�r[rr�r\rYr
r�r!)r)r�r=r�rUr)r�r)r�r
� test_baseexception_during_cancel�s

z.BaseTaskTests.test_baseexception_during_cancelcCs�dd�}|�t�|��dd�}|�t�|��|�t��tjdd��}Wd�n1s/wY|�t�|��|�t�t����|�t�t�	���dS)NcSr,r
rrrrr
�fn�r+z2BaseTaskTests.test_iscoroutinefunction.<locals>.fncs��dVdSr
rrrrr
�fn1�r�z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1csr�r
rrrrr
�fn2���
z3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2)
rr�iscoroutinefunctionr�r�r�rYr�MockZ	AsyncMock)r)r�r�r�rrr
�test_iscoroutinefunction�s�z&BaseTaskTests.test_iscoroutinefunctioncs�|�|j��|�t��tj�fdd��}Wd�n1swY|�}|�t��|j�|�Wd�n1s=wY|�	��
��dS)Nc3s��VdSr
rrrprr
r��r�z?BaseTaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)rGr=r�r�rr�r\rur^rr��r)r�rUrrpr
�test_yield_vs_yield_from�s��z&BaseTaskTests.test_yield_vs_yield_fromcs�|�t��tjdd���Wd�n1swY|�t��tj�fdd��}Wd�n1s5wY|�}|�t|jj|�dS)Ncsr�r
rrrrr
rA�r�z>BaseTaskTests.test_yield_vs_yield_from_generator.<locals>.coroc3s(���}z
|VW|��dS|��wr
rG)r�r�rr
r��s
�zIBaseTaskTests.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�n1swY|�t�|��|�}|�t�|��|j�|�}|�	|d�dS)NcSr'�Nrzrrrrr
r��r�z;BaseTaskTests.test_coroutine_non_gen_function.<locals>.funcrz)
r�r�rr�rYr��iscoroutiner=r^rQ)r)r�rAr=rrr
�test_coroutine_non_gen_function�s�z-BaseTaskTests.test_coroutine_non_gen_functioncs�|�|j��|�t��tj�fdd��}Wd�n1swY�fdd�}|�|j|��}|�|j|��}|j�|�}|�|d�|�	|�
��dS)Nc��Sr
rrrprr
r��r�zIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.funcc�s���d�dSr��r�rrprr
rA�rrzIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.cororz)rGr=r�r�rr�rBr^rQr~r�)r)r�rAr�r�r=rrpr
�-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)NrDc�s8���t������t�d�����t����dSr
)r�r�current_taskrDrTrr
rA�s�z-BaseTaskTests.test_current_task.<locals>.coro)r~rr�r=rBr^r�rrTr
�test_current_task�s
zBaseTaskTests.test_current_taskcs���tj�jd�����j�����j������fdd�}����fdd�}���j|�j������j|�j����j�t���f����tj�jd��dS)NrDc�s>���t���u��IdH��t���u���d�dSr��rYrr�r�rD)r8r9r)�task1rr
r�s
�
zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c�s>���t���u���d��IdH��t���u�dSr�r�rD)r8r9r)�task2rr
r�
s
�

zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)r~rr�r=rGrBr^r)r)r�r�r)r8r9r)r�r�r
�)test_current_task_with_interleaving_taskssz7BaseTaskTests.test_current_task_with_interleaving_taskscs~d����j�����fdd����fdd�}tj|��jd�}t��j�|���j�|����d���	��
��dS)Nrc�s:�z�IdHWn
tjy�d7��w��d�dS)Nrzgot past sleep() in inner())rr]rXr)�proofr)r�rr
�inner!s��z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.innerc�s>�z��IdHWntjy�d7�YdSw�d7�dS)Nrlrr6r�r�r�rr
r�+s��z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outerrD�e)rGr=rr{r�r�r[r^rQrYr
�r)r�r�r�r�r�r)r�r
�test_yield_future_passes_cancels
	z-BaseTaskTests.test_yield_future_passes_cancelcs�d����j����fdd�����fdd�}tj|��jd�}t��j�|����tj�jj	|���
d�t��j����d�dS)Nrc����IdH�d7�dS�Nrrr�r�r�rr
r�A��
zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc�sP���t��t���g�IdH\}}Wd�n1swY�d7�dS�Nrl)r�r�rr)�d�p)r�r�r)rr
r�Fs
��zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerrDr�rGr=rr{r�r�r[r\r]r^r�rQrrrr
�&test_yield_wait_does_not_shield_cancel;s�
z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<|�|j�}t�|�}|�d�|j�|�}|�|d�dSr2)rGr=r�shieldr�r^rQ)r)r�r�r=rrr
�test_shield_resultUs


z BaseTaskTests.test_shield_resultcCsT|�|j�}t�|�}t�|j�td�}|�|�t�|j�|�|�	�|�dS)Nr�)
rGr=rrr�r�rur�r�r!)r)r�r�r!rrr
�test_shield_exception\s

z#BaseTaskTests.test_shield_exceptioncCsH|�|j�}t�|�}t�|j�|��t�|j�|�|���dSr
)	rGr=rrr�r�r[rYr
�r)r�r�rrr
�test_shield_cancel_inneres
z&BaseTaskTests.test_shield_cancel_innercCsn|�|j�}t�|�}t�|j�|��t�|j�|�|���|�	d|j
dur/d�dSt|j
��dSr�)rGr=rrr�r�r[rYr
rQZ
_callbacksr�rrrr
�test_shield_cancel_outerms
*z&BaseTaskTests.test_shield_cancel_outercCs8|�|j�}|�d�|j�t�|��}|�|d�dSr2)rGr=r�r^rrrQ)r)rqr=rrr
�test_shield_shortcutvs
z"BaseTaskTests.test_shield_shortcutcs�d�|�|j����fdd����fdd�}tj|�|jd�}t�|j�|��|�tj��|j�	|�Wd�n1s@wY��
d�t�|j�|��d�dS)Nrc�rrrrrrr
r��rz/BaseTaskTests.test_shield_effect.<locals>.innerc�s �t����IdH�d7�dSr�rrrr�rr
r��s�z/BaseTaskTests.test_shield_effect.<locals>.outerrDrr
rr)r�r�r�r
�test_shield_effect|s�
z BaseTaskTests.test_shield_effectcCs�|�|j�}|�|j�}t�||�}t�|�}t�|j�|��t�|j�|�|�	��|�
d�|�
d�t�|j�|�|��ddg�dS�Nrr�)
rGr=rrmrr�r�r[rYr
r�rQr�)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)rGr=rrrmr�r�r[rSr!r]rYr
r�)r)rrr�r�rrrr
�test_gather_shield�s



z BaseTaskTests.test_gather_shieldcCsVdd�}|�}|�|j�|�td��t�|�Wd�dS1s$wYdS)Nc�r}r2rrrrr
rA�rz>BaseTaskTests.test_shield_coroutine_without_loop.<locals>.coror�)r�r8rtrurr)r)rAr�rrr
�"test_shield_coroutine_without_loop�s"�z0BaseTaskTests.test_shield_coroutine_without_loopcsNdd���fdd�}|j�|��}|�|j|j�|j�|�}|�|d�dS)Nc�r}r2rrrrr
rA�rzBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.coroc�r�r
rrr�rr
rz�r�zBBaseTaskTests.test_shield_coroutine_use_running_loop.<locals>.testr3)r=r^rQr�)r)rzr�r=rr�r
�&test_shield_coroutine_use_running_loop�sz4BaseTaskTests.test_shield_coroutine_use_running_loopcCsZdd�}t�|j�|�tjd�t�|��}|�|j|j�|j�|�}|�|d�dS)Nc�r}r2rrrrr
rA�rzABaseTaskTests.test_shield_coroutine_use_global_loop.<locals>.coror3)rr�r=r�rrQr�r^)r)rAr�r=rrr
�%test_shield_coroutine_use_global_loop�sz3BaseTaskTests.test_shield_coroutine_use_global_loopcCsN|�|j�}|�t|jjt�|��t�}|�t|jjt�|��|��dSr
)	rGr=r\r�r^rr�rr8�r)rqrAr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
)
rGr=r\r�r^rrrr8r�rrrr
�test_wait_invalid_args�s���z$BaseTaskTests.test_wait_invalid_argscsn�fdd�}td��|�Wd�n1swYtd��|�Wd�dS1s0wYdS)Ncs���t��tj���fdd��}Wd�n1swY���j����d�|����t������	�j
tj���
�j���	�jtj��j������j
�dS)Nc3s����j��EdHdSr
)rY�
gi_runningr)rqr�r)rr
rA�s�zKBaseTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coro)r�r�rr�rGr=r�rYr�rS�gi_frame�types�	FrameTyperr!r��CodeTyper^r~r�r()rqr�r
�check�s�
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��v��t��tj�fdd��}Wd�n1swY��t��tj��fdd���Wd�n1s=wY��t��tjdd���Wd�n1sYwY���j|��}�j�|�}��|d�Wd�dS1s}wYdS)	NTc3s���EdHSr
rr)r�rr
r�s�z5BaseTaskTests.test_yield_from_corowrapper.<locals>.t1c3s*����j�}���j�|��|EdHSr
)rGr=rBr2)r)�t3rr
r�s�
z5BaseTaskTests.test_yield_from_corowrapper.<locals>.t2cSs|�d�dS)N�rr�r�r�r2rrr
r*$sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t3r+)	rr�r�rr�rBr=r^rQ)r)r�rU�valr)r)r�r*r
�test_yield_from_corowrappers"
���"�z)BaseTaskTests.test_yield_from_corowrappercs8dd���fdd�}|�|d�d�|�|d�d�dS)Ncss�dV}|Sr
r)r�rrr
r�-s�z;BaseTaskTests.test_yield_from_corowrapper_send.<locals>.fooc
s\tj����}|�d�z
|�|�Wtd��ty-}z|jdWYd}~Sd}~ww)NrzStopIteration was expected)rr�CoroWrapperr6r4r �AssertionError)r��cw�ex�r�rr
�call1s
���z<BaseTaskTests.test_yield_from_corowrapper_send.<locals>.call)rr�rr)rQ)r)r3rr2r
� test_yield_from_corowrapper_send,s
z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0t��}dd�}tj�|��}||d<d|_dS)Ncss�gEdHdSr
rrrrr
r�@s�z3BaseTaskTests.test_corowrapper_weakref.<locals>.foor0)�weakref�WeakValueDictionaryrrr.r�)r)Zwdr�r0r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}Wnty}z|}WYd}~nd}~wwqr
)r�)�value�errr
r�Gs�
���z1BaseTaskTests.test_corowrapper_throw.<locals>.foor�r2)
r�rrr.r6r�r7rSrQr )r)r�r!r0rrr
�test_corowrapper_throwEs$



z$BaseTaskTests.test_corowrapper_throwcs�jj}��t��tj�fdd��}Wd�n1swYt��}�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��)Nzcode never reached)rGr�)r=�futurer(rr
�kill_mehs�

z>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_meTrDrr;z%Task was destroyed but it is pending!)�messagerUr)r?r@r�r�rr�rr�r=r��set_exception_handlerr{rQ�	all_tasksr�Z	_run_oncer��_readyr"�f_localsr�r�
gc_collectrjZassert_called_with�ANYZ
reset_mock)r)r@r<Zmock_handlerrArUrrr(r
�test_log_destroyed_pending_taskds4�	



�z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsHt�������dd�����fdd�}��|����|jj�dS)Nc�r�r
)r�rrrr
rA�rzBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc�s0�������}t�d�IdH|��d}dS)Nr�rIry�rAr=r)rr
r��s
�zDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rrsr�r^r�error�called)r)�m_logr�rrEr
�&test_tb_logger_not_called_after_cancel�s
z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc		Cs�td��$|�t��tjdd��}Wd�n1swYWd�n1s+wYt}t��jd}|�t	�
�|�|jj
�|jjdd}t�|�\}}dt�|j�t�|�|t�|�|f}|�|t�|tj��dS)NTcSr,r
rrrrr
�	coro_noop�r�z=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�rr�r��sys�	_getframe�f_linenorrBrYrFrG�	call_argsr�r�r�r�r0r��compile�DOTALL)	r)rHrJZtb_filename�	tb_linenor=Z
func_filenameZfunc_linenoZregexrrr
�test_coroutine_never_yielded�s*
���


��
z*BaseTaskTests.test_coroutine_never_yieldedcsn�fdd�}td��|�Wd�n1swYtd��|�Wd�dS1s0wYdS)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�n1swY�j�|��}��|d�dS)NcsB��t��tjdd��}Wd�|�S1swY|�S)NcSr'rrrrrr
�
inner_coro�r�ziBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)r�r�rr�)rSr(rr
�
outer_coro�s
��zUBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror�r�r�rr�r=r^rQ)rTr�r(rr
r&�s�
zABaseTaskTests.test_return_coroutine_from_coroutine.<locals>.checkFNTr'r(rr(r
�$test_return_coroutine_from_coroutine�s
�
"�z2BaseTaskTests.test_return_coroutine_from_coroutinecCsh|j�d�|�|jt��}t��jd}|�|jt	�|�
|jddd�t|df�|j�|�dS)NTr���r��test_task_source_traceback)
r=r�rBrrKrLrMrSr�r�rQr�r^)r)rUr�rrr
rX�s��z(BaseTaskTests.test_task_source_tracebackcs�t��}|�|j�|�|���fdd�}|�|���d���fdd�}��|���d�|���|��d�|�	��
��|����dg�dS)zYEnsure that a gathering future refuses to be cancelled once all
        children are donec�s$��fdd�}t�|��}t�|�S)Nc3s��EdHSr
rrrprr
�
child_coro�r�zFBaseTaskTests.test_cancel_gather_1.<locals>.create.<locals>.child_coro)rrmr{)rYZ
gather_futurerprr
�create�s�
z2BaseTaskTests.test_cancel_gather_1.<locals>.createNcs����dSr
�r[)rj)�
cancel_result�gather_taskrr
�cancelling_callback��z?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbackr3F)rrsr�r8rGr^r�r�rQrr
r�)r)r=rZr^r)r\rqr]r
�test_cancel_gather_1�s



z"BaseTaskTests.test_cancel_gather_1cs�gd�}|D]q\�}�j�d��_t������j�dd������fdd�}z��|��Wn2tjyb}z%��|jd�t	|�\}}}��||ftj|f���
|d�WYd}~n
d}~ww��d	�Wd�n1srwYqdS)
Nrrc�s8�d}	|d7}tjt�d�dd�IdH|dkrdSq)NrTr���return_exceptionsr)rrmr�)rarrr
rz	s���z0BaseTaskTests.test_cancel_gather_2.<locals>.testc�s8�������}t�d�IdH|j��|IdHdS)Nr]rI)Zqwe�rr=r)rzrr
�main	s
�
z0BaseTaskTests.test_cancel_gather_2.<locals>.mainr)r�r�z1gather did not propagate the cancellation request)r rrsr�r8r^r]rQr r$�assertInrX)r)r#r$rdr!�exc_typeZexc_argsr"rrcr
�test_cancel_gather_2	s.	
���
����z"BaseTaskTests.test_cancel_gather_2c�(dd����fdd�}�j�|��dS)Nc�s�dddS)Nrrrrrrr
r�3	r�z3BaseTaskTests.test_exception_traceback.<locals>.fooc�s6����j���}t�d�IdH��|��j�dSr�)rBr=rr�r�r!�
__traceback__ry�r�r)rr
rd6	s�z4BaseTaskTests.test_exception_traceback.<locals>.mainr��r)rdrrjr
�test_exception_traceback0	sz&BaseTaskTests.test_exception_tracebackc	Cs�dd�}||j_|�t��tjdd��}Wd�n1swY|�|jj�|�	t
��|�}z
|�|j|�W|��n|��wWd�n1sQwYt
��|�|jj�|jjdd}|�d|�|�t�|j�t��dS)Nc_�t�r
r�)r�r r�rrr
r?	r+z8BaseTaskTests.test_error_in_call_soon.<locals>.call_sooncSr,r
rrrrr
rAD	r�z3BaseTaskTests.test_error_in_call_soon.<locals>.cororz$Task was destroyed but it is pending)r=rr�r�rr�rrFrGr\r�rBr8rdrerYrNrerQr?rj)r)rHrrAr�r=rrr
�test_error_in_call_soon=	s$��z%BaseTaskTests.test_error_in_call_sooncCsz|�td��|�|jd�Wd�n1swY|�td��|�|jd�Wd�dS1s6wYdS)Nz!a coroutine was expected, got 123r�)rtr�rBr=r(rrr
�"test_create_task_with_noncoroutineX	s���"�z0BaseTaskTests.test_create_task_with_noncoroutinecCs�|�t��tjdd��}Wd�n1swY|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)NcSr,r
rrrrr
rAf	r�zDBaseTaskTests.test_create_task_with_oldstyle_coroutine.<locals>.coro)	r�r�rr�rBr=rSr@r^rcrrr
�(test_create_task_with_oldstyle_coroutinec	s�z6BaseTaskTests.test_create_task_with_oldstyle_coroutinecCs`dd�}|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)Nc�rr
rrrrr
rAv	rz@BaseTaskTests.test_create_task_with_async_function.<locals>.coro)rBr=rSr@r^rcrrr
�$test_create_task_with_async_functiont	sz2BaseTaskTests.test_create_task_with_async_functioncCsh|�|jt��}|�||j�|�|j�|�d�|�|jt��}|�||j�|�|j�|�d�dSr2)rBr=r1rSr@rQr^rTrrr
�(test_create_task_with_asynclike_function�	sz6BaseTaskTests.test_create_task_with_asynclike_functioncrh)Nc�r}rrrrrr
r��	rz2BaseTaskTests.test_bare_create_task.<locals>.innerc�s6�t����}��|�j�|IdH}��d|�dSr)rr�rSr@rQ)rU�ret�r�r)rr
rA�	s
�
z1BaseTaskTests.test_bare_create_task.<locals>.coror�r�rrtr
�test_bare_create_task�	sz#BaseTaskTests.test_bare_create_taskcrh)Nc�rr
rrrrr
rJ�	rz<BaseTaskTests.test_bare_create_named_task.<locals>.coro_noopc�s0�tj��dd�}��|��d�|IdHdS)NzNo-op)r>)rr�rQr�ry�rJr)rr
rA�	��z7BaseTaskTests.test_bare_create_named_task.<locals>.coror�r�rrvr
�test_bare_create_named_task�	sz)BaseTaskTests.test_bare_create_named_taskcshtjddd����fdd������fdd�}t���z���|��}��|�W���dS���w)N�cvar�nope��defaultc�s0�t�d�IdH�����d���d�dS)Nr�rz�something else)rr�rQ�getrjr�ryr)rr
�sub�	rwz)BaseTaskTests.test_context_1.<locals>.subc�sX������d�������}��d������d�|IdH�����d�dS)Nrz�yes)rQr~rBrj)Zsubtask�ryr=r)r�rr
rd�	s�

z*BaseTaskTests.test_context_1.<locals>.main)�contextvars�
ContextVarrrsrBr^r8�r)rdrUrr�r
�test_context_1�	szBaseTaskTests.test_context_1csjtjddd�����fdd�}t���z���|��}��|�W���n���w�����d�dS)Nryrzr{c	�s���fdd�}�����d�td�D]S}����}|�|���d|�����|jd�|IdH�����d|���td�D]#}��d|�d|���t�	d�IdH�����d|�d|���qBqdS)	Ncs��d�dS)Nr})rjrp)ryrr
�fut_on_done�	sz?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_donerzr�r�r��-���MbP?)
rQr~rnrGr�rjrr�rr�)r��jrq�i�ryr=r)rr
rd�	s �


��z*BaseTaskTests.test_context_2.<locals>.main)	r�r�rrsrBr^r8rQr~r�rr�r
�test_context_2�	szBaseTaskTests.test_context_2csjtjddd����fdd����fdd�}t���z��|��W���n���w�����d�dS)Nryrr{c�sN�td�D]}��||�t�t�dd��IdH�����||�qdS)Nrr�r�)rnrjrr��random�uniformrQr~)�numr�rrr
r��	s��z)BaseTaskTests.test_context_3.<locals>.subc�sH�g}td�D]}���t�dd���}|�|�qtj|�IdHdS)Nrlrr)rnr�r��randintr�rrm)rr�rU)r=r�rr
rd�	s�z*BaseTaskTests.test_context_3.<locals>.main)r�r�rrsr^r8rQr~rkrr�r
�test_context_3�	szBaseTaskTests.test_context_3cCsNt��}t�}z|�||�}|�|�|�|��|�W|��dS|��wr
)rrsrrBr^r�Zget_coror8)r)r=rArUrrr
�
test_get_coro�	s
zBaseTaskTests.test_get_coro)r<)~r.r/r0r@rErBrGrKrVrarbrorwr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr'r*r,r0r4r5r>r@rErFrKrOrZr[rbrdroryr|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�rrr
rrrrrrrrrrrr r)r-r4r7r:rDr�patchrIrRrVrXr`rgrlrnrorprqrrrurxr�r�r�r�r�rrrOr
r;es�


!	3	>""$#	
 -$
 
			(.

 )

"r;cCsv|j}|j}|dus|dur|SGdd�d�}Gdd�d||�}Gdd�d||�}dd�}||_||_||_d|_|S)	Ncr�)z(add_subclass_tests.<locals>.CommonFuturecs&t�dd��|_t�j|i|��dS)NcSr'r�rrrrr
rH
�zCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>)�collections�defaultdict�callsrJr�r�rOrr
r�
sz1add_subclass_tests.<locals>.CommonFuture.__init__cs$|jdd7<t�j|i|��S)Nr�r)r�rJr�r�rOrr
r�
sz:add_subclass_tests.<locals>.CommonFuture.add_done_callbackr�rrrOr
�CommonFuture
r�r�c@�eZdZdS)z add_subclass_tests.<locals>.TaskN�r.r/r0rrrr
r@
�r@c@r�)z"add_subclass_tests.<locals>.FutureNr�rrrr
rE
r�rEcsv�j�jd����fdd�}�j|��jd�}�j�|�}��|d���t|j�ddi���t�j�ddi�dS)NrDc�s ��j��fdd���IdHS)Ncs
��d�S�Nrrr�rrprr
rH 
s
zYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>)r=rr�rqr)rr
r�
s�
zGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.funcrrr�r)rEr=r@r^rQ�dictr�)r)r�rUr�rr�r
�test_subclasses_ctask_cfuture
s��z9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture)r@rEr�rX)�clsZBaseTaskZ
BaseFuturer�r@rEr�rrr
�add_subclass_tests
s	r�c@r%)�SetMethodsTestcCs�t|�j}t��|j_}dd�}|�}|�|j|�}|�|d�|�|j�	|�d�|�
�|jddd}|�t
jd��|�1sEwY|��dS)Nc�r	�Nr\rr�rrrr
r�F
rz@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foorrrr!�step\(\): already done)rrErr�r=�call_exception_handlerrBr�rQr^�assert_called_oncerNrtr�InvalidStateErrorr8)r)rE�exc_handlerr�rArUr!rrr
�$test_set_result_causes_invalid_stateB
s$

���z3SetMethodsTest.test_set_result_causes_invalid_statecCs�Gdd�dt�}t|�j}t��|j_}dd�}|�}|�|j|�}|�||��|�	|��|j�
|�Wd�n1s@wY|��|jddd}|�
tjd��|�1s_wY|��dS)Nc@r�)zESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcNr�rrrr
�MyExc[
r�r�c�r	r�r�rrrr
r�a
rzCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foorr!r�)r�rrErr�r=r�rBr�r\r^r�rNrtrr�r8)r)r�rEr�r�rArUr!rrr
�'test_set_exception_causes_invalid_stateZ
s$
���z6SetMethodsTest.test_set_exception_causes_invalid_stateN)r.r/r0r�r�rrrr
r�@
sr��_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�rr
rrrrr
rA�
rz@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.cororlrDrr)Zdelta)	rZ
get_attributerKrBr=r^rnr�r)r)r�rArUZrefs_beforer�rrr
�test_refleaks_in_task___init__~
sz2CTask_CFuture_Tests.test_refleaks_in_task___init__cCsXdd�}|�|j|��}|j�|�|�t��|`Wd�dS1s%wYdS)Nc�rr
rrrrr
rA�
rzHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coro)rBr=r^r\�AttributeErrorr�rcrrr
�&test_del__log_destroy_pending_segfault�
s"�z:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault)r.r/r0�getattrrr@rrErZ
refcount_testr�r�rrrr
r�u
s
r�c@s$eZdZeedd�Zeedd�ZdS)�CTask_CFuture_SubclassTestsr�Nr�)r.r/r0r�rr@rrErrrr
r��
sr�c@�eZdZeedd�ZejZdS)�CTaskSubclass_PyFuture_Testsr�N�	r.r/r0r�rr@r�	_PyFuturerErrrr
r��
�
r�c@r�)�PyTask_CFutureSubclass_Testsr�N)	r.r/r0r�rrEr�_PyTaskr@rrrr
r��
r�r�c@r�)�CTask_PyFuture_Testsr�Nr�rrrr
r��
s
r�c@seZdZejZeedd�ZdS)�PyTask_CFuture_Testsr�N)	r.r/r0rr�r@r�rrErrrr
r��
sr�c@�eZdZejZejZdS)�PyTask_PyFuture_TestsN�	r.r/r0rr�r@rr�rErrrr
r��
s
r�c@r�)�PyTask_PyFuture_SubclassTestsNr�rrrr
r��
s
r�c@rc)�CTask_Future_Testscs�Gdd�dtj�}�fdd�}t��|_z#||jd��|j�d�jd�|j�|��}|j�|�}W|j��n|j��w|�	|d�dS)	Nc@seZdZedd��ZdS)z+CTask_Future_Tests.test_foobar.<locals>.FutcSrmr
)r�r(rrr
r��
r�z4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loopN)r.r/r0�propertyr�rrrr
r��
sr�c�r1r�rrrprr
rA�
r3z,CTask_Future_Tests.test_foobar.<locals>.cororDr\rrr)
rrErsr=r�r�r�r^r8rQ)r)r�rArUr=rrpr
�test_foobar�
s
zCTask_Future_Tests.test_foobarN)r.r/r0r�rrrr
r��
�r�c@sleZdZdZdZdZdZdd�Zdd�Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�ZdS)�BaseTaskIntrospectionTestsNc�`G�fdd�d�}|�}t���|�t���t��|�|�|�t���|h�|�|�dS)Ncs$eZdZe�fdd��Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLikecr�r
rr(rDrr
r��
r�zHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loopcSr'r�rr(rrr
r��
r+zGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.doneN)r.r/r0r�r�r�rrDrr
�TaskLike�
sr��rr�rQrr?rj�_register_task�_unregister_task�r)r�rUrrDr
�test__register_task_1�
s
z0BaseTaskIntrospectionTests.test__register_task_1cr�)Nc� eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLikecr�r
rr(rDrr
r�r+zKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loopcSr'r�rr(rrr
r�r+zGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.doneN�r.r/r0r�r�rrDrr
r��
�r�r�r�rrDr
�test__register_task_2�
�
z0BaseTaskIntrospectionTests.test__register_task_2cs`G�fdd�d�}|�}t���|�t���t��|�|�|�t���t��|�|�dS)Ncr�)zBBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikecr�r
rr(rDrr
r�r+zKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loopcSr'r�rr(rrr
r�r+zGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.doneNr�rrDrr
r�r�r�r�r�rrDr
�test__register_task_3r�z0BaseTaskIntrospectionTests.test__register_task_3cCsNt��}t��}|�t�|��|�||�|�t�|�|�|�||�dSr
)rr�r~rr��_enter_taskr��_leave_task�r)rUr=rrr
�test__enter_tasksz+BaseTaskIntrospectionTests.test__enter_taskcCs|t��}t��}t��}|�||�|�t��|�||�Wd�n1s(wY|�t�|�|�|�||�dSr
)	rr�r�r\rur�rr�r��r)r�r�r=rrr
�test__enter_task_failure&��z3BaseTaskIntrospectionTests.test__enter_task_failurecCs<t��}t��}|�||�|�||�|�t�|��dSr
)rr�r�r�r~rr�r�rrr
�test__leave_task0s
z+BaseTaskIntrospectionTests.test__leave_taskcCs|t��}t��}t��}|�||�|�t��|�||�Wd�n1s(wY|�t�|�|�|�||�dSr
)	rr�r�r\rur�r�rr�r�rrr
�test__leave_task_failure17r�z4BaseTaskIntrospectionTests.test__leave_task_failure1cCsZt��}t��}|�t��|�||�Wd�n1swY|�t�|��dSr
)rr�r\rur�r~rr�r�rrr
�test__leave_task_failure2As�z4BaseTaskIntrospectionTests.test__leave_task_failure2csJt��}t����fdd�|_|�|�|�|�|�t���t��dS)Ncr�r
rrrDrr
rHKr�zBBaseTaskIntrospectionTests.test__unregister_task.<locals>.<lambda>)	rr�r�r�r�rQrr?rjrTrrDr
�test__unregister_taskHs

z0BaseTaskIntrospectionTests.test__unregister_taskcCs2t��}t��}|�|�|�t�|�t��dSr
)rr�r�rQrr?rjr�rrr
�$test__unregister_task_not_registeredPs
z?BaseTaskIntrospectionTests.test__unregister_task_not_registered)r.r/r0r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r��
s

r�c@s4eZdZeej�Zeej�Zeej	�Z
eej�ZdS)�PyIntrospectionTestsN)
r.r/r0�staticmethodrZ_py_register_taskr�Z_py_unregister_taskr�Z_py_enter_taskr�Z_py_leave_taskr�rrrr
r�Ws



r��_c_register_taskc@sReZdZeed�reej�Zeej�Z	eej
�Zeej�Z
dSdZZ	ZZ
dS)�CIntrospectionTestsr�N)r.r/r0rZrr�r�r�Z_c_unregister_taskr�Z
_c_enter_taskr�Z
_c_leave_taskr�rrrr
r�^s



r�cs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�BaseCurrentLoopTestsc�$t���t��|_|�|j�dSr
�rJrKrrsr=r�r(rOrr
rKl�

zBaseCurrentLoopTests.setUpcCrmr
)�NotImplementedErrorr�rrr
rBqr+zBaseCurrentLoopTests.new_taskcCs|�tj|jd��dSrC)r~rr�r=r(rrr
�!test_current_task_no_running_loopt�z6BaseCurrentLoopTests.test_current_task_no_running_loopcC�:|�td��
t��Wd�dS1swYdS)Nzno running event loop)rtrurr�r(rrr
�*test_current_task_no_running_loop_implicitw�
"�z?BaseCurrentLoopTests.test_current_task_no_running_loop_implicitcs>��fdd�}��|����j�����tj�jd��dS)Nc�s>���tj�jd�����t�d�����t����dSrC)r�rr�r=rrTrr
rA|s�zGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.cororD)rBr=r^r~rr�r�rrTr
�$test_current_task_with_implicit_loop{sz9BaseCurrentLoopTests.test_current_task_with_implicit_loop)	r.r/r0rKrBr�r�r�r�rrrOr
r�jsr�c@rc)�PyCurrentLoopTestscCstj||jd�SrC)rr�r=r�rrr
rB��zPyCurrentLoopTests.new_taskN�r.r/r0rBrrrr
r��sr�c@rc)�CCurrentLoopTestscCsttd�||jd�S)Nr�rD)r�rr=r�rrr
rB�szCCurrentLoopTests.new_taskNr�rrrr
r��r�r�c@s"eZdZdd�Zejdd��ZdS)�GenericTaskTestscCs|�ttjtj��dSr
)rY�
issubclassrr@rEr(rrr
�test_future_subclass�r�z%GenericTaskTests.test_future_subclasscCsjzddl}ddl}ddl}Wnty|�d�YdSwzddl}WdSty4|�d�YdSw)NrzC modules are not availablez_asyncio module is missing)�
_functools�_json�_pickle�ImportErrorZskipTest�_asynciorX)r)r�r�r�r�rrr
�test_asyncio_module_compiled�s��z-GenericTaskTests.test_asyncio_module_compiledN)r.r/r0r�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)�cleanup)rJrKrL�one_looprvr�r(rOrr
rK�s


zGatherTestsBase.setUpcCs|jr
t�|�|jsdSdSr
)r@r�r�rFrrr
�	_run_loop�s
�zGatherTestsBase._run_loopcs��fdd�td�D�\}}}�j��|||�i|��}t��}|�|�|�d�|�d����j���	|j
d���|���|�d����j�|�
|���	|��gd��dS)Nc�g|]}�j���qSr�r�rN�rir�r(rr
rk��z2GatherTestsBase._check_success.<locals>.<listcomp>r�rr�F)r�rr�)rn�_gather�wrap_futuresr��MockCallbackr�r�rr�rQrGrr��assert_called_once_withr�)r)r�r�r�rxrq�cbrr(r
�_check_success�s




zGatherTestsBase._check_successcCs|��|jdd�dS)NFra�r
r(rrr
�test_success�szGatherTestsBase.test_successcCs|jdd�dS)NTrarr(rrr
�test_result_exception_success�r�z-GatherTestsBase.test_result_exception_successc	s��fdd�td�D�\}}}}}�j��|||||��}t��}|�|�t�}|�d�|�|���	�j
���|���|�
|���|��|�|�d�|��|�t��|��dS)Ncrrrrr(rr
rk�rz6GatherTestsBase.test_one_exception.<locals>.<listcomp>rrr�)rnrrr�rr�r�r�r�rr�rYr�rr�r!r[ru)	r)r�r�rxrr9rqr	r!rr(r
�test_one_exception�s 




z"GatherTestsBase.test_one_exceptionc	s��fdd�td�D�\}}}}�j��||||�ddi�}t��}|�|�t�}t�}|�d�|�	|�|�d���
�j���|�
��|�	|���
�j���|�
��|�|���|��dd||g�dS)Ncrrrrr(rr
rk�rz:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>�rbTrr�)rnrrr�rr�r�rur�r�rr�rr�rYrrQr�)	r)r�r�rxrrqr	r!Zexc2r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-X�dev)�joinr	rQ�rstrip)r)r��sts�stdout�stderrrrr
�test_env_var_debug�s,
���
�z"GatherTestsBase.test_env_var_debug)r.r/r0rKrr
rr
rrrr�rrrOr
r��sr�c@�TeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�FutureGatherTestscGs|Sr
r)r)rrrr
rr+zFutureGatherTests.wrap_futurescOstj|i|��Sr
�rrmr�rrr
rr�zFutureGatherTests._gathercCr�)Nr�)rtrurrmr(rrr
�,test_constructor_empty_sequence_without_loopr�z>FutureGatherTests.test_constructor_empty_sequence_without_loopcCsbdd�}|j�|��}|�|tj�|�|j|j�|�|j�|�|�	��|�
|��g�dS)Nc�s
�t��Sr
rrrrr
rm r�zRFutureGatherTests.test_constructor_empty_sequence_use_running_loop.<locals>.gather)r�r^rSrrEr�r�rrYr�rQr�)r)rmrqrrr
�0test_constructor_empty_sequence_use_running_loopszBFutureGatherTests.test_constructor_empty_sequence_use_running_loopcCsnt�|j�|�tjd�t��}|�|tj�|�|j|j�|�	|j�|�
|���|�|�
�g�dSr
)rr�r�r�rmrSrEr�r�rrYr�rQr�)r)rqrrr
�/test_constructor_empty_sequence_use_global_loop)szAFutureGatherTests.test_constructor_empty_sequence_use_global_loopcCsP|j��}|j��}|�t��t�||�Wd�dS1s!wYdSr
)r�rNrvr\r�rrm)r)r8r9rrr
�%test_constructor_heterogenous_futures4s


"�z7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}��|j�j����j���|���tj|�}��|j�j����j���|���dS)Ncrr)rvrNrr(rr
rk;rzIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>r�)	rnrrmr�r�rvrrr�)r)�childrenrqrr(r
�#test_constructor_homogenous_futures:s

z5FutureGatherTests.test_constructor_homogenous_futurescs��fdd�td�D�\}}}}}t�|||||�}t��}|�|�|�d�|�����j	���
|���|�|���
|�����|��tj�|�d�|��|�t��|��dS)Ncrrrrr(rr
rkFrz;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>rrr�)rnrrmr�rr�r�r[rr�rYr�rrr
rSr!r]r�ru)r)r�r�rxrr9rqr	rr(r
�test_one_cancellationE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)
Ncrrrrr(rr
rkXs�zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>r�Trarr�r�r)rnrrmr�rr�r�r�r�r[rr�rr�rur^rSr]rQr)r)r�r�rxrr9r�rqr	ZzdeZrter=rr(r
�&test_result_exception_one_cancellationWs,
�




z8FutureGatherTests.test_result_exception_one_cancellationN)r.r/r0rrr r!r"r#r%r&r'rrrr
rs
rc@r)�CoroutineGatherTestscGs*g}|D]}|fdd�}|�|��q|S)Nc�r�r
rrprrr
rAtr�z/CoroutineGatherTests.wrap_futures.<locals>.coro)r�)r)rZcorosrqrArrr
rqs
z!CoroutineGatherTests.wrap_futurescs��fdd�}|j�|��S)Nc�s�tj�i���Sr
rr�r r�rr
rAzr�z*CoroutineGatherTests._gather.<locals>.coro)r�r^)r)r r�rArr)r
ryszCoroutineGatherTests._gathercCsjdd�}|�}|�|j�|�}|�|j�|�td��t�||�Wd�dS1s.wYdS)Nc�r}r�rrrrr
rArz@CoroutineGatherTests.test_constructor_without_loop.<locals>.coror�)r�r8rtrurrm)r)rA�gen1�gen2rrr
�test_constructor_without_loop~s"�z2CoroutineGatherTests.test_constructor_without_loopcsPdd�}|��|����fdd�}|j�|��}|�|j|j�|j�|�dS)Nc�r}r�rrrrr
rA�rzDCoroutineGatherTests.test_constructor_use_running_loop.<locals>.coroc�s�t����Sr
rr�r*r+rr
rm�r�zFCoroutineGatherTests.test_constructor_use_running_loop.<locals>.gather)r�r^r�r�)r)rArmrqrr-r
�!test_constructor_use_running_loop�sz6CoroutineGatherTests.test_constructor_use_running_loopcCsZdd�}t�|j�|�tjd�|�}|�}t�||�}|�|j|j�|j�|�dS)Nc�r}r�rrrrr
rA�rzCCoroutineGatherTests.test_constructor_use_global_loop.<locals>.coro)rr�rvr�rmr�r�r^)r)rAr*r+rqrrr
� test_constructor_use_global_loop�sz5CoroutineGatherTests.test_constructor_use_global_loopcCsx|�t��tjdd��}Wd�n1swY|d�}|�|||d�|�}|�|j�|�|��gd��dS)NcSr9r
rrprrr
rA�r�z<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coror��def)r�r�r0r�)	r�r�rr�rrr�rQr�)r)rArxrqrrr
�test_duplicate_coroutines�s�z.CoroutineGatherTests.test_duplicate_coroutinescsd�|j�����fdd�}tj|�|jd��tj|�|jd��d�����fdd�}tj|�|jd�}t�|j�|�|���|�tj	��|j�
|�Wd�n1sXwY|�����|�����|�����|�����t�|j�|�
�d�dS)Nrc�rrrrrrr
r��rz?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerrDc�s$�t������IdH�d7�dSrrr)rr�gathererr�rr
r��s�
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)r�rNrr{r�r�rYr[r\r]r^rr
rQ)r)r�r�r�r)rrr2r�r�r
�test_cancellation_broadcast�s&
�z0CoroutineGatherTests.test_cancellation_broadcastcs�dd��|j���|j������fdd�}tj|�|jd�}t�|j���d�t�|j���d�t�|j�|�|��t	�dS)Nc�s�|IdHtd��)Nzshould not be ignoredrLr2rrr
r��s�
z:CoroutineGatherTests.test_exception_marking.<locals>.innerc�s �t��������IdHdSr
rr�r�r�r�rr
r��s�z:CoroutineGatherTests.test_exception_marking.<locals>.outerrD)
r�rNrr{r�r�r�rSr!rurrr4r
�test_exception_marking�s



z+CoroutineGatherTests.test_exception_markingc	Cs�t�d��8dd�}|d�}|�t��|�|i�Wd�n1s$wY|�|j�|jj��Wd�dS1s@wYdS)Nz8asyncio.base_events.BaseEventLoop.call_exception_handlerc�s�|Sr
rrprrr
rA�rz2CoroutineGatherTests.test_issue46672.<locals>.coror�)	rr�r\r�rrr�r�Zassert_not_called)r)rArxrrr
�test_issue46672�s��"�z$CoroutineGatherTests.test_issue46672N)r.r/r0rrr,r.r/r1r3r5r6rrrr
r(os

 r(cs`eZdZdZ�fdd�Zddd�Z		ddd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Z�ZS)�RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cr�r
r�r(rOrr
rK�r�z!RunCoroutineThreadsafeTests.setUpFc�sJ�t�d�IdH|rtd��|r!t�|j���t�d�IdH||S)z"Wait 0.05 second and return a + b.r�N�Fail!r)rr�rur�r=r[)r)r�r�rXr[rrr
r��s�zRunCoroutineThreadsafeTests.addNcCsl|jdd||d�}t�||j�}|r|j�|jd�z|�|�W|��p)|��SS|��p4|��ww)z$Run add coroutine in the event loop.rr�)rXr[N)	r�rZrun_coroutine_threadsafer=Zcall_soon_threadsafer6r�r�r[)r)rXr[r��advance_cororAr;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�)r=�run_in_executorr:r^rQ)r)r;r�rrr
�test_run_coroutine_threadsafe
sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafecCs\|j�d|jd�}|�t��}|j�|�Wd�n1swY|�d|jj�dS)z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTr8)	r=r;r:r\rur^rer!r )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�n1s$wYt��j�t��j�D]	}��	|�
��q5dS)zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.c��jdd�S)Nrr��r:rr(rr
rH#
rIzXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>N)r=r;r\rr�r^r�r�r?rYr�)r)r�r;rUrr(r
�*test_run_coroutine_threadsafe_with_timeout 
s��zFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutcsX�fdd�}�j�d|�}��tj���j�|�Wd�dS1s%wYdS)z\Test coroutine submission from a thread to an event loop
        when the task is cancelled.cr?)NTr[r@rr(rr
rH/
rIzZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>N)r=r;r\rr]r^)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@wY��t|j
�d�|j\\}}}��|d|j�dS)zjTest coroutine submission from a thread to an event loop
        when the task factory raise an exception.cSrmr
)�	NameError)r=rArrr
�task_factory8
r+zfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factoryNcr?)NT)r9r@rr(rr
rH<
rIzbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>rr!)r=r;r�rr>r�rMZget_task_factoryr\rCr^rQr�Zcall_args_listrNr!)r)rDrhr�r=r=r#r�rr(r
�4test_run_coroutine_threadsafe_task_factory_exception4
s �
��zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF)
r.r/r0�__doc__rKr�r:r<r>rArBrEr�rrrOr
r7�s


�r7c�0eZdZ�fdd�Z�fdd�Zdd�Z�ZS)�
SleepTestscr�r
r�r(rOrr
rKR
r�zSleepTests.setUpc�|j��d|_t���dSr
�r=r8rJ�tearDownr(rOrr
rKW
�
zSleepTests.tearDowncs>d��fdd�����fdd�}�j�|�����d�dS)Nrcs�|7�dSr
r�r�rtrr
�
inc_result_
r_z.SleepTests.test_sleep_zero.<locals>.inc_resultc�sH��j��d����d�tjddd�IdH}���d��|�dS)Nrrrrt)r=rrQrr�rM�rNr�r)rr
rAc
s�z(SleepTests.test_sleep_zero.<locals>.coro�)r=r^rQr�rrOr
�test_sleep_zero\
s
zSleepTests.test_sleep_zero)r.r/r0rKrKrQr�rrrOr
rHQ
�rHcrG)�	WaitTestscr�r
r�r(rOrr
rKo
r�zWaitTests.setUpcrIr
rJr(rOrr
rKt
rLzWaitTests.tearDowncCs�|�t��|j�t�t�g��Wd�n1swY|j�t��}|�t��|j�t�|t�g��Wd�dS1sDwYdSr
)r�r�r=r^rrrr�rTrrr
�test_coro_is_deprecated_in_waity
s���"�z)WaitTests.test_coro_is_deprecated_in_wait)r.r/r0rKrKrTr�rrrOr
rSn
rRrScs@eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Z�ZS)�CompatibilityTestscr�r
r�r(rOrr
rK�
r�zCompatibilityTests.setUpcrIr
rJr(rOrr
rK�
rLzCompatibilityTests.tearDowncCsV|�t��tjdd��}Wd�n1swY|j�|��}|�d|�dS)Ncs��t�d�EdHdS)Nrrr�rrrr
rA�
��z:CompatibilityTests.test_yield_from_awaitable.<locals>.cororrU)r)rAr�rrr
�test_yield_from_awaitable�
s�z,CompatibilityTests.test_yield_from_awaitablecs�|�t��tjdd���Wd�n1swY|�t��tjdd���Wd�n1s3wY��fdd�}|j�|��}|�ddg|�dS)	NcSr')N�ok1rrrrr
r��
r�z;CompatibilityTests.test_await_old_style_coro.<locals>.coro1csrV)Nr�ok2r�rrrr
r��
rWz;CompatibilityTests.test_await_old_style_coro.<locals>.coro2c�s�t������IdHSr
rr�r�r�rr
r��
s�z;CompatibilityTests.test_await_old_style_coro.<locals>.innerrYrZrU)r)r�r�rr[r
�test_await_old_style_coro�
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::DeprecationWarningrr)r)�textwrap�dedentr	)r)r�rrr
�test_debug_mode_interop�
s


�z*CompatibilityTests.test_debug_mode_interop)	r.r/r0rKrKrXr\r_r�rrrOr
rU�
srU�__main__)F)CrFr��
contextlibr�r�rdr�r�r�rKr]rVr#Zunittestr5rrrrrrZtest.test_asynciorr�rzrZtest.support.script_helperr	rr�contextmanagerrrr$r&r1r;r�r�Z
skipUnlessrZZTestCaser�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr(r7rHrSrUr.rdrrrr
�<module>s�


	4:5���������p�
�f\~d
?�