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.7/test/test_asyncio/__pycache__/test_tasks.cpython-37.opt-2.pyc
B

��gM��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlm
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZejd	d
��Zejdd��ZdKdd�ZGdd�d�ZGdd�d�ZGdd�d�Z dd�Z!Gdd�d�Z"e�#e$ed��oBe$ed�d�Gdd�de e"ej%��Z&e�#e$ed��ove$ed�d�e!Gdd �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)d*�d*e e"ej%�Z,e!Gd+d,�d,e ej%��Z-e�#e$ed�d�Gd-d.�d.ej%��Z.Gd/d0�d0�Z/Gd1d2�d2ej%e/�Z0e�#e$ed3�d�Gd4d5�d5ej%e/��Z1Gd6d7�d7�Z2Gd8d9�d9e2ej%�Z3e�#e$ed�d�Gd:d;�d;e2ej%��Z4Gd<d=�d=ej%�Z5Gd>d?�d?�Z6Gd@dA�dAe6ej%�Z7GdBdC�dCe6ej%�Z8GdDdE�dEej%�Z9GdFdG�dGej%�Z:GdHdI�dIej%�Z;e<dJk�r�e�=�dS)L�N)�mock)�
coroutines)�futures)�tasks)�utils)�support)�assert_python_okcCsdS)N�r	r	r	�8/usr/local/lib/python3.7/test/test_asyncio/test_tasks.py�coroutine_functionsrccs*tj}|j}z||_dVWd||_XdS)N)�asyncior�_DEBUG)ZenabledrZ	old_debugr	r	r
�set_coroutine_debug s
rFcCsR|rd|}nd|}|dk	r@|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_coroutine-s
rc@seZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r	)�selfr	r	r
�__repr__<szDummy.__repr__cGsdS)Nr	)r�argsr	r	r
�__call__?szDummy.__call__N)�__name__�
__module__�__qualname__rrr	r	r	r
r:src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CoroLikeObjectcCstd��dS)N�*)�
StopIteration)r�vr	r	r
�sendDszCoroLikeObject.sendcGsdS)Nr	)r�excr	r	r
�throwGszCoroLikeObject.throwcCsdS)Nr	)rr	r	r
�closeJszCoroLikeObject.closecCs|S)Nr	)rr	r	r
�	__await__MszCoroLikeObject.__await__N)rrrr$r&r'r(r	r	r	r
r Csr cs�eZdZdZdZdd�Zdd�Z�fdd�Zdd	�Zd
d�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.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Z d:d;�Z!d<d=�Z"d>d?�Z#d@dA�Z$dBdC�Z%dDdE�Z&dFdG�Z'dHdI�Z(dJdK�Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dldm�Z:dndo�Z;dpdq�Z<drds�Z=dtdu�Z>dvdw�Z?dxdy�Z@dzd{�ZAd|d}�ZBd~d�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^e_�`d��d�d���Zae_�`d��d�d���Zbd�d��Zcd�d��Zdd�d��Zed�dÄZfd�dńZgd�dDŽZhd�dɄZid�d˄Zje_�`d��d�d̈́�Zkd�dτZld�dфZmd�dӄZnd�dՄZod�dׄZpd�dلZqd�dۄZrd�d݄Zs�ZtS)��
BaseTaskTestsNcCs|jj||d�S)N)�loop)�	__class__�Task)rr*�coror	r	r
�new_taskVszBaseTaskTests.new_taskcCs|jj|d�S)N)r*)r+�Future)rr*r	r	r
�
new_futureYszBaseTaskTests.new_futurecs6t�������_�j��j��fdd��j_dS)Ncs���j�S)N)r0r*r	)rr	r
�<lambda>`�z%BaseTaskTests.setUp.<locals>.<lambda>)�super�setUp�
new_test_loopr*�set_task_factoryr.Z
create_future)r)r+)rr
r4\s

zBaseTaskTests.setUpcsRGdd�d��tj�fdd����j�tj��fdd�td�D�d�ji��dS)	Nc@seZdZdd�ZdS)z1BaseTaskTests.test_task_del_collect.<locals>.EvilcSst��dS)N)�gcZcollect)rr	r	r
�__del__dsz9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__N)rrrr8r	r	r	r
�Evilcsr9cs��S)Nr	r	)r9r	r
�rungsz0BaseTaskTests.test_task_del_collect.<locals>.runcsg|]}���j����qSr	)r.r*)�.0�_)r:rr	r
�
<listcomp>msz7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>�dr*)r�	coroutiner*�run_until_complete�gather�range)rr	)r9r:rr
�test_task_del_collectbsz#BaseTaskTests.test_task_del_collectc	CsVt��}|�|�}dd�}z,|�td��|j�||��WdQRXWd|��XdS)Nc�s|IdHdS)Nr	)�futr	r	r
r:tsz1BaseTaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)r�new_event_loopr0�assertRaisesRegex�RuntimeErrorr*r@r')r�
other_looprDr:r	r	r
�test_other_loop_futureps
z$BaseTaskTests.test_other_loop_futurec	sF�fdd�}tj|�|jd��|�td��|j���WdQRXdS)Nc�s�IdHdS)Nr	r	)�taskr	r
�test�sz6BaseTaskTests.test_task_awaits_on_itself.<locals>.test)r*zTask cannot await on itself)r�
ensure_futurer*rFrGr@)rrKr	)rJr
�test_task_awaits_on_itself~s
z(BaseTaskTests.test_task_awaits_on_itselfcCs�tjdd��}|�|j|��}|j�|�|�|���|�|��d�|�	|j
|j�|�	|��|j�t��}|�
|�|�||��}|�	|j
|�|�|�|��dS)NcSsdS)N�okr	r	r	r	r
�notmuch�sz.BaseTaskTests.test_task_class.<locals>.notmuchrN)rr?r.r*r@�
assertTrue�done�assertEqual�result�assertIs�_loop�get_looprE�set_event_loopr')rrO�tr*r	r	r
�test_task_class�s

zBaseTaskTests.test_task_classcCs�tjdd��}tj|�|jd�}|j�|�|�|���|�|��d�|�	|j
|j�t��}|�|�tj|�|d�}|�	|j
|�|�|�|�
�dS)NcSsdS)NrNr	r	r	r	r
rO�sz;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuch)r*rN)rr?rLr*r@rPrQrRrSrTrUrErWr')rrOrXr*r	r	r
�test_ensure_future_coroutine�s

z*BaseTaskTests.test_ensure_future_coroutinec	Cs�|�|j�}|�d�t�|�}|j�|�|�|���|�|�	�d�|�
||�t��}|�|�|�
t��tj||d�}WdQRX|��tj||jd�}|�
||�dS)N�ko)r*)r0r*�
set_resultrrLr@rPrQrRrSrTrErW�assertRaises�
ValueErrorr')rZf_orig�fr*r	r	r
�test_ensure_future_future�s


z'BaseTaskTests.test_ensure_future_futurec	Cs�tjdd��}|�|j|��}t�|�}|j�|�|�|���|�|�	�d�|�
||�t��}|�|�|�
t��tj||d�}WdQRX|��tj||jd�}|�
||�dS)NcSsdS)NrNr	r	r	r	r
rO�sz6BaseTaskTests.test_ensure_future_task.<locals>.notmuchrN)r*)rr?r.r*rLr@rPrQrRrSrTrErWr]r^r')rrOZt_origrXr*r	r	r
�test_ensure_future_task�s

z%BaseTaskTests.test_ensure_future_taskcCsPGdd�d�}tjdd��}t��}|�|�tj||��|d�}|�|�dS)Nc@seZdZdd�Zdd�ZdS)z6BaseTaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dS)N)r-)rr-r	r	r
�__init__�sz?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHS)N)r-)rr	r	r
r(�sz@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)rrrrbr(r	r	r	r
�Aw�srccSsdS)NrNr	r	r	r	r
r-�sz8BaseTaskTests.test_ensure_future_awaitable.<locals>.coro)r*)rr?rErWrLr@)rrcr-r*rDr	r	r
�test_ensure_future_awaitable�s

z*BaseTaskTests.test_ensure_future_awaitablec	Cs$|�t��t�d�WdQRXdS)NrN)r]�	TypeErrorrrL)rr	r	r
�test_ensure_future_neither�sz(BaseTaskTests.test_ensure_future_neithercs@d��fdd����fdd�����fdd�}�j�|��dS)Nc�s��IdHdS)Nr	r	)�barr	r
�foo�sz)BaseTaskTests.test_get_stack.<locals>.fooc�sd�jdd�}z��|djjd�Wdd}Xt��}�jd|d�|�d�|��}��	|d�dS)Nr)�limitrrh)ri�filezfoo\(\) running)
Z	get_stackrR�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)r_rj�tb)�Trr	r
rg�s
z)BaseTaskTests.test_get_stack.<locals>.barc�s tj���jd���IdHdS)N)r*)rrLr*r	)rtrhrr	r
�runnersz,BaseTaskTests.test_get_stack.<locals>.runner)r*r@)rrur	)rtrgrhrr
�test_get_stack�s
zBaseTaskTests.test_get_stackc	Cs^|j�d�tjdd��}|�|jd�|�|jd�|�|jt�t	�
|�\}}d||f}|�}d}|�|jd�|�|j|�|�|j|�}|�t
��t|d||jdd	�}|�t|�d
|�|��|�t|�d|�|�tj|jj|�t|d||j�}|�t|�d
|�|�|j|��}|j�|�t|d||j�}|�t|�d|�dS)NFcssgEdHdS)N�abcr	r	r	r	r
rOs
z-BaseTaskTests.test_task_repr.<locals>.notmuchrOz#\w+.test_task_repr.<locals>.notmuchz%s:%s�runningT)rz <Task pending %s cb=[<Dummy>()]>z#<Task cancelling %s cb=[<Dummy>()]>rQz<Task cancelled %s>z<Task finished %s result='abc'>)r*�	set_debugrr?rRrrrrr�
test_utils�get_function_sourcer.�add_done_callbackrr�_source_traceback�repr�cancelr]�CancelledErrorr@)	rrO�filename�linenor�gen�
coro_qualnamerXr-r	r	r
�test_task_reprsB






zBaseTaskTests.test_task_reprcCs^|j�d�tjdd��}|�|jd�|�|jd�|�|jt�|�}d}d}|�|j|�|�|j|�t	j
r�t	j
r�t�|�\}}|j
d}d||||d|d	f}n|j}	d
||	j|	jf}|�t|�d|�|�|j|�}
|
�t��t	j
�rdt�|�}n|j}	d|	j|	jf}t|d
||
j
t	j
d�}|�t|
�d|�|j�|
�dS)NFcSsdS)N�{r	r	r	r	r
rO@sz<BaseTaskTests.test_task_repr_coro_decorator.<locals>.notmuchrOz4\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>z%s:%srx)rz <Task pending %s cb=[<Dummy>()]>)r*ryrr?rRrrrrrrr
rzr{r}�gi_code�co_filename�co_firstlinenor~r.r|rrr@)rrOr�Z	coro_namer�r�r�rr-�coderXrr	r	r
�test_task_repr_coro_decorator=sF



z+BaseTaskTests.test_task_repr_coro_decoratorcCsv|j�d�dd�}|�|j�}|�|j||��}t�|j�|�t|�dt�	t|���|�
d�|j�|�dS)NFc�s
|IdHS)Nr	)rDr	r	r
�wait_for}sz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_forz<Task .* wait_for=%s>)r*ryr0r.rz�run_brieflyrrr~�re�escaper\r@)rr�rDrJr	r	r
�test_task_repr_wait_forzs

z%BaseTaskTests.test_task_repr_wait_forc	Cs|td��P|j�d�dd�}t�t�|d��}|j�|d��}d|_|�	|j
j�WdQRXt|j
�}d}|�
||�dS)NTc�st�d�IdHdS)Nr)r�sleep)�x�yr	r	r
�func�sz>BaseTaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzV<CoroWrapper \w+.test_task_repr_partial_corowrapper\.<locals>\.func\(1\)\(\) running, )rr*ryrr?�	functools�partial�create_task�_log_destroy_pending�
addCleanupZ_coror'r~rr)rr�Zpartial_funcrJZ	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}||S)Nr	)�a�b)�inner1�inner2r	r
�outer�sz-BaseTaskTests.test_task_basics.<locals>.outerc�sdS)Nr!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)rRr*r@)rr�rXr	)r�r�r
�test_task_basics�s
zBaseTaskTests.test_task_basicsc	s��fdd�}��|���fdd�}���|��}��|j���tj����|�WdQRX��|�	����|�
����|���dS)Nc3sdV}��d|�dVdS)Ng$@r)�assertAlmostEqual)�when)rr	r
r��sz&BaseTaskTests.test_cancel.<locals>.genc�stjd�d�IdHdS)Ng$@)r*�)rr�r	)r*r	r
rJ�sz'BaseTaskTests.test_cancel.<locals>.task)r5r.�	call_soonrr]rr�r@rPrQ�	cancelled�assertFalse)rr�rJrXr	)r*rr
�test_cancel�s
zBaseTaskTests.test_cancelcCsttjdd��}|�|j|��}t�|j�|��|�tj|jj	|�|�
|���|�
|���|�
|���dS)NcssdVdVdS)Nr�r	r	r	r	r
rJ�sz-BaseTaskTests.test_cancel_yield.<locals>.task)rr?r.r*rzr�rr]r�r@rPrQr�r�)rrJrXr	r	r
�test_cancel_yield�szBaseTaskTests.test_cancel_yieldc	s�|�|j���fdd�}|�|j|��}t�|j����|�tj��|j�	|�WdQRX|�
����|�
|���dS)Nc�s�IdHdS)Nr�r	r	)r_r	r
rJ�s
z4BaseTaskTests.test_cancel_inner_future.<locals>.task)r0r*r.rzr�rr]rr�r@rPr�)rrJrXr	)r_r
�test_cancel_inner_future�sz&BaseTaskTests.test_cancel_inner_futurec	s�|�|j���fdd�}|�|j|��}t�|j����|��|�tj��|j�	|�WdQRX|�
|���|�
����|�
|���dS)Nc�s�IdHdS)Nr�r	r	)r_r	r
rJ�s
zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task)
r0r*r.rzr�rr]rr�r@rPrQr�)rrJrXr	)r_r
�&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�IdHy�IdHWntjk
r.dSXdS)Nr!)rr�r	)�fut1�fut2r	r
rJ�s

z5BaseTaskTests.test_cancel_task_catching.<locals>.taskr!)r0r*r.rzr�rT�_fut_waiterr\rrPr�r@rRr�)rrJrX�resr	)r�r�r
�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>�IdHy�IdHWntjk
r.YnX�IdH}|S)N)rr�)r�)r�r��fut3r	r
rJs

z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr!)r0r*r.rzr�rTr�r\rrPr�r@rRr�)rrJrXr�r	)r�r�r�r
�test_cancel_task_ignorings&	

z'BaseTaskTests.test_cancel_task_ignoringcsnt����������fdd�}���|�����tj�j����������	�j
���	����dS)Nc�s,������j�tjd�d�IdHdS)Nr>)r*r�)rrP�_must_cancelrr�r	)r*rrXr	r
rJ1sz4BaseTaskTests.test_cancel_current_task.<locals>.task)rrErWr.r]r�r@rPrQr�r�r)rrJr	)r*rrXr
�test_cancel_current_task-s
z&BaseTaskTests.test_cancel_current_taskcsrt��}��|�tj��fdd��}��||�����tj|j������	����
�j���
����dS)Ncs������j�dS)Nr�)rrPr�r	)rrXr	r
rJDsz.BaseTaskTests.test_cancel_at_end.<locals>.task)
rrErWr?r.r]r�r@rPrQr�r�r)rr*rJr	)rrXr
�test_cancel_at_end?s
z BaseTaskTests.test_cancel_at_endc	s�t������fdd��d��������fdd�������fdd�}���|�����tj������WdQRX����	������	������	��dS)Ncs���S)N)r'r	)r*r	r
r1Yr2z8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>c�s�IdHdS)Nr	r	)rDr	r
�nested^sz6BaseTaskTests.test_cancel_awaited_task.<locals>.nestedc�s4�������t�d�IdH����IdHdS)Nr)r.rr�rr	)r*r��nested_taskrrJr	r
r-asz4BaseTaskTests.test_cancel_awaited_task.<locals>.coro)
rrEr�r0r.r]r�r@rPr�)rr-r	)rDr*r�r�rrJr
�test_cancel_awaited_taskQs
z&BaseTaskTests.test_cancel_awaited_taskc	s��fdd�}��|��d���fdd�}���|��}��t��}��|�WdQRX��t|j�d���|�	�����d���
d����|����t
j�j|�dS)	Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)Ng�������?g�������?g333333�?)r�)r�)rr	r
r�wsz:BaseTaskTests.test_stop_while_run_in_complete.<locals>.genrc�s>x8�dkr8tjd�d�IdH�d7��dkr���qWdS)N�
g�������?)r*rr�)rr��stopr	)r*r�r	r
rJ�s

z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.taskz+Event loop stopped before Future completed.r�g333333�?)r5r.r]rGr@rR�str�	exceptionr�rQr��timerrr�)rr�rJrX�cmr	)r*rr�r
�test_stop_while_run_in_completeus	
z-BaseTaskTests.test_stop_while_run_in_completec	CsFdd�}|�|j|��}|�td��d|_WdQRX|j�|�dS)Nc�sdS)Nr	r	r	r	r
r-�sz.BaseTaskTests.test_log_traceback.<locals>.corozcan only be set to FalseT)r.r*rFr^Z_log_tracebackr@)rr-rJr	r	r
�test_log_traceback�s
z BaseTaskTests.test_log_tracebackcsn�fdd�}��|�}��|�}|�d�|�tj|d|d��}��|d���|�����	d|�
��dS)Nc3sdV}��d|�dS)Nr)r�)r�)rr	r
r��szMBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_future_done.<locals>.genrQr)r*)r5r0r\r@rr�rRrPrQr�r�)rr�r*rD�retr	)rr
�2test_wait_for_timeout_less_then_0_or_0_future_done�s


z@BaseTaskTests.test_wait_for_timeout_less_then_0_or_0_future_donec	s|�fdd�}��|�}d�tj�fdd��}��tj��|�tj|�d|d��WdQRX��d|�����	�d�dS)Nc3sdV}��d|�dS)Nr)r�)r�)rr	r
r��szZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started.<locals>.genFcsd�dS)NTr	r	)�foo_startedr	r
rh�szZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started.<locals>.foor)r*)
r5rr?r]�TimeoutErrorr@r�r�r�rR)rr�r*rhr	)r�rr
�?test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started�s
"zMBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_startedcs��fdd�}x�dD]�}�j|d�����|��d���fdd�}���|��}��tj����tj||�d��WdQRX��|�	����|�
����d������
�d	�WdQRXqWdS)
Nc3s(dV}��d|�dV}��d|�dS)Ng�������?r)r�)r�)rr	r
r��szABaseTaskTests.test_wait_for_timeout_less_then_0_or_0.<locals>.gen)rr)�timeoutc�s(d�ztjd�d�IdHWdd�XdS)NTg�������?)r*FrQ)rr�r	)�foo_runningr*r	r
rh�s
zABaseTaskTests.test_wait_for_timeout_less_then_0_or_0.<locals>.foo)r*rF)ZsubTestr5r.r]rr�r@r�rPrQr�r�r�rR)rr�r�rhrDr	)r�r*rr
�&test_wait_for_timeout_less_then_0_or_0�s

	z4BaseTaskTests.test_wait_for_timeout_less_then_0_or_0c	s��fdd�}��|��d���fdd�}���|��}��tj����tj|d�d��WdQRX��|�����|�	����
d�������d�dS)Nc3s.dV}��d|�dV}��d|�dV}dS)Ng�������?rg�������?)r�)r�)rr	r
r��s
z(BaseTaskTests.test_wait_for.<locals>.genc�s(d�ztjd�d�IdHWdd�XdS)NTg�������?)r*FrQ)rr�r	)r�r*r	r
rh�s
z(BaseTaskTests.test_wait_for.<locals>.foog�������?)r*F)
r5r.r]rr�r@r�rPrQr�r�r�rR)rr�rhrDr	)r�r*rr
�
test_wait_for�s
	 zBaseTaskTests.test_wait_forcCs>|��}tjdd��}|�tj|�d|d��}|�|d�dS)NcSsdS)NrQr	r	r	r	r
r-	sz2BaseTaskTests.test_wait_for_blocking.<locals>.coro)r�r*rQ)r5rr?r@r�rR)rr*r-r�r	r	r
�test_wait_for_blockings
z$BaseTaskTests.test_wait_for_blockingc	s��fdd�}��|���fdd�}t���z<���|��}��tj����t�|d��WdQRXWdt�d�X��d��	����
|�����
|���dS)Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?rg{�G�z�?)r�)r�)rr	r
r�s
z9BaseTaskTests.test_wait_for_with_global_loop.<locals>.genc�stjd�d�IdHdS)Ng�������?)r*rQ)rr�r	)r*r	r
rhsz9BaseTaskTests.test_wait_for_with_global_loop.<locals>.foog{�G�z�?)
r5rrWr.r]r�r@r�r�r�rPrQr�)rr�rhrDr	)r*rr
�test_wait_for_with_global_loops

 z,BaseTaskTests.test_wait_for_with_global_loopcCsVdd�}|�|�}|�|�}tj|d|d�}|�d|jd�|�|�}|�|d�dS)NcssdVdVdVdS)Ng�������?r	r	r	r	r
r�/sz7BaseTaskTests.test_wait_for_race_condition.<locals>.geng�������?)r�r*g�������?rN)r5r0rr��
call_laterr\r@rR)rr�r*rDrJr�r	r	r
�test_wait_for_race_condition-s


z*BaseTaskTests.test_wait_for_race_conditioncs8t������j�d����fdd�}��|��dS)NFc	�sX��fdd�}���|��}��tj��tj|d�d�IdHWdQRX����dS)Nc�s$ztjd�d�IdHWdd�XdS)Ng�������?)r*T)rr�r	)r*�	task_doner	r
�innerCszSBaseTaskTests.test_wait_for_waits_for_task_cancellation.<locals>.foo.<locals>.innerg�������?)r�r*)r.r]rr�r�rP)r��
inner_task)r*rr�r	r
rhBs
 zDBaseTaskTests.test_wait_for_waits_for_task_cancellation.<locals>.foo)rrEr�r'r@)rrhr	)r*rr�r
�)test_wait_for_waits_for_task_cancellation<s
z7BaseTaskTests.test_wait_for_waits_for_task_cancellationcs2t������j���fdd�}��|��dS)Nc	�s��fdd�}���|��}tj|d�d�}���|�}tjd�d�IdH|����tj��|IdHWdQRX��|IdHd�dS)Nc�sxytjd�d�IdHWnZtjk
rrytjd�d�IdHWn*tjk
rltjd�d�IdHYnXYnXdS)Ng333333�?)r*r!)rr�r�r	)r*r	r
r�Xs zIBaseTaskTests.test_wait_for_self_cancellation.<locals>.foo.<locals>.innerg�������?)r�r*g�������?)r*r!)r.rr�r�rr]r�rR)r�r��waitrJ)r*rr	r
rhWsz:BaseTaskTests.test_wait_for_self_cancellation.<locals>.foo)rrEr�r'r@)rrhr	)r*rr
�test_wait_for_self_cancellationSsz-BaseTaskTests.test_wait_for_self_cancellationcs��fdd�}��|�����tjd�d������tjd�d�������fdd�}�����|���}��|d���d���������|���}��d������|d�dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?rg333333�?)r�)r�)rr	r
r�vs
z$BaseTaskTests.test_wait.<locals>.geng�������?)r*g333333�?c�sBtj��g�d�IdH\}}��|t��g����|t��dS)N)r*r!)rr�rR�set)rQ�pending)r�r�r*rr	r
rh�sz$BaseTaskTests.test_wait.<locals>.foor!)r5r.rr�r@rRr�r�)rr�rhr�r	)r�r�r*rr
�	test_waitts
zBaseTaskTests.test_waitcs��fdd�}��|�}��|tjd|d�����|tjd|d������fdd�}t�|�|���||���}��|d�dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Ng{�G�z�?rg���Q��?)r�)r�)rr	r
r��s
z5BaseTaskTests.test_wait_with_global_loop.<locals>.geng{�G�z�?)r*g���Q��?c�s>t���g�IdH\}}��|t��g����|t��dS)Nr!)rr�rRr�)rQr�)r�r�rr	r
rh�sz5BaseTaskTests.test_wait_with_global_loop.<locals>.foor!)r5r.rr�rWr@rR)rr�r*rhr�r	)r�r�rr
�test_wait_with_global_loop�s

z(BaseTaskTests.test_wait_with_global_loopcCsvtjdd��}|d�}|�|jtj|||d�g|jd��}|j�|�\}}|�|�|�tdd�|D��ddh�dS)NcSs|S)Nr	)�sr	r	r
r-�sz:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.cororK�spam)r*css|]}|��VqdS)N)rS)r;r_r	r	r
�	<genexpr>�sz?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)	rr?r.r*r�r@r�rRr�)rr-�crJrQr�r	r	r
�test_wait_duplicate_coroutines�s
z,BaseTaskTests.test_wait_duplicate_coroutinescCsb|�t|jjtjt�|jd��tjd|jd�}tj|gd|jd�}|�t|jj|�|��dS)N)r*g$@r)�return_whenr*)	r]r^r*r@rr�r�r�r')rZ
sleep_coroZ	wait_coror	r	r
�test_wait_errors�szBaseTaskTests.test_wait_errorscs��fdd�}��|�}��|tjd|d��}��|tjd|d��}��|tj||gtj|d��}|�|�\}}��|h|���|h|���|�	����
|�	����|�����
d|���|�d�|�tj||g|d��dS)Nc3s.dV}��d|�dV}��d|�dVdS)Ng$@rg�������?)r�)r�)rr	r
r��s
z4BaseTaskTests.test_wait_first_completed.<locals>.geng$@)r*g�������?)r�r*r�)r5r.rr�r��FIRST_COMPLETEDr@rRr�rQrP�assertIsNonerSr�r��advance_time)rr�r*r�r�rJrQr�r	)rr
�test_wait_first_completed�s"


z'BaseTaskTests.test_wait_first_completedcCs�tjdd��}tjdd��}|�|j|��}|�|j|��}|�|jtj||gtj|jd��}|j�|�\}}|�||h|�|�|�	��|�
|���|�|�	��|�
|���dS)Ncss
dVdS)Nr	r	r	r	r
�coro1�sz2BaseTaskTests.test_wait_really_done.<locals>.coro1cssdVdVdS)Nr	r	r	r	r
�coro2�sz2BaseTaskTests.test_wait_really_done.<locals>.coro2)r�r*)rr?r.r*r�r�r@rRrPrQr�rS)rr�r�r�r�rJrQr�r	r	r
�test_wait_really_done�sz#BaseTaskTests.test_wait_really_donec	s��fdd�}��|�}��|tjd|d��}tjdd��}��||��}��|tj||gtj|d��}|�|�\}}��|h|���|h|���	d|�
��|�d	�|�tj||g|d��dS)
Nc3sdV}��d|�dVdS)Ng$@r)r�)r�)rr	r
r�sz4BaseTaskTests.test_wait_first_exception.<locals>.geng$@)r*cSstd��dS)N�err)�ZeroDivisionErrorr	r	r	r
r%
sz4BaseTaskTests.test_wait_first_exception.<locals>.exc)r�r*rr�)r5r.rr�r?r��FIRST_EXCEPTIONr@rRr�r�r�)	rr�r*r�r%r�rJrQr�r	)rr
�test_wait_first_exceptions


z'BaseTaskTests.test_wait_first_exceptioncs��fdd�}��|�����tjd�d��}�fdd�}���|��}tj||gtj�d�}��|�\}}��|h|���|h|���d��	����
d	���tj||g�d��dS)
Nc3s.dV}��d|�dV}��d|�dVdS)Ng$@rg{�G�z�?)r�)r�)rr	r
r�"s
z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.geng$@)r*c�s tjd�d�IdHtd��dS)Ng{�G�z�?)r*r�)rr�r�r	)r*r	r
r%.sz<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.exc)r�r*g{�G�z�?r�)r5r.rr�r�r�r@rRr�r�r�)rr�r�r%r�rJrQr�r	)r*rr
�!test_wait_first_exception_in_wait s

z/BaseTaskTests.test_wait_first_exception_in_waitcs��fdd�}��|�����tjd�d���tj�fdd��}���|�������fdd�}�����|�����d	���������|�����d	����dS)
Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?rg333333�?)r�)r�)rr	r
r�As
z3BaseTaskTests.test_wait_with_exception.<locals>.geng�������?)r*c3s tjd�d�EdHtd��dS)Ng333333�?)r*Zreally)rr�r�r	)r*r	r
�sleeperLsz7BaseTaskTests.test_wait_with_exception.<locals>.sleeperc�s`tj��g�d�IdH\}}��t|�d���|t��tdd�|D��}��t|�d�dS)N)r*r�css|]}|��dk	r|VqdS)N)r�)r;r_r	r	r
r�WszFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�rR�lenr�)rQr��errors)r�r�r*rr	r
rhSs
z3BaseTaskTests.test_wait_with_exception.<locals>.foog333333�?)r5r.rr�r?r@r�r�)rr�r�rhr	)r�r�r*rr
�test_wait_with_exception?s
z&BaseTaskTests.test_wait_with_exceptioncs��fdd�}��|�����tjd�d������tjd�d�������fdd�}�����|�����d������d	���tj��g�d��dS)
Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)Ng�������?rg333333�?g)\��(�?)r�)r�)rr	r
r�bsz1BaseTaskTests.test_wait_with_timeout.<locals>.geng�������?)r*g333333�?c�sFtj��gd�d�IdH\}}��|t�g����|t�g��dS)Ng)\��(�?)r�r*)rr�rRr�)rQr�)r�r�r*rr	r
rhpsz1BaseTaskTests.test_wait_with_timeout.<locals>.foog)\��(�?r�)	r5r.rr�r@r�r�r�r�)rr�rhr	)r�r�r*rr
�test_wait_with_timeout`s	

z$BaseTaskTests.test_wait_with_timeoutcs��fdd�}��|�}��|tjd|d��}��|tjd|d��}|�tj||gd|d��\}}��|t|g����|t|g����d|�	��|�
d�|�tj||g|d��dS)Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)Ng�������?rg333333�?)r�)r�)rr	r
r�sz8BaseTaskTests.test_wait_concurrent_complete.<locals>.geng�������?)r*g333333�?)r�r*r�)r5r.rr�r@r�rRr�r�r�r�)rr�r*r�r�rQr�r	)rr
�test_wait_concurrent_complete}s	

z+BaseTaskTests.test_wait_concurrent_completecs�dd�}|�|��d�_t��d�tj���fdd��}|dd��|dd	��|d
d��tj����fdd
��}��|��|���}|�d
����|�	d|dd�k�|�	d	|dd�k�|�
|dd���|��|���}|�d
����dS)NcssdVdVdVdVdS)Nrg{�G�z�?r	r	r	r	r
r��sz,BaseTaskTests.test_as_completed.<locals>.geng�?Fc3sDtj|�d�EdH��|��s@d�kr@d�kr@d���d�|S)N)r*r�r�Tg�Q���?)rr��addr�)�dtr�)�	completedr*�time_shiftedr	r
r��s

z0BaseTaskTests.test_as_completed.<locals>.sleeperg{�G�z�?r�r�g333333�?r�c3s6g}x,tj���g�d�D]}|�|EdH�qW|S)N)r*)r�as_completed�append)�valuesr_)r�r�r�r*r	r
rh�sz,BaseTaskTests.test_as_completed.<locals>.foor�)r5Zslow_callback_durationr�rr?r@r.r�r�rPrR)rr�r�rhr�r	)r�r�r�r�r*r�r
�test_as_completed�s"




zBaseTaskTests.test_as_completedcs�dd�}|�|����tjdd�d�����tjdd�d������fdd	�}��|��|���}|�t|�d
|�|�|dd�|�|d
dd
�|�|d
d
tj	�|�
d������d���tj
��g�d��dS)NcssdVdVdVdVdS)Nrg�������?r	r	r	r	r
r��sz9BaseTaskTests.test_as_completed_with_timeout.<locals>.geng�������?r�)r*g333333�?r�c�s�g}xztj��gd�d�D]b}|r,��d�y|IdH}|�d|f�Wqtjk
rz}z|�d|f�Wdd}~XYqXqW|S)Ng���Q��?)r�r*g{�G�z�?rr�)rr�r�r�r�)r�r_r#r%)r�r�r*r	r
rh�s

$z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foor�r)rr�rg���Q��?r�)r5r�rr�r@r.rRr��assertIsInstancer�r�r�r�r�)rr�rhr�r	)r�r�r*r
�test_as_completed_with_timeout�s

z,BaseTaskTests.test_as_completed_with_timeoutcsJdd�}��|��tjdd�d�����fdd�}�����|���dS)NcssdVdVdVdS)Nrg{�G�z�?r	r	r	r	r
r��sz@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.geng{�G�z�?r�)r*c�s6x0tj�gd�d�D]}|IdH}��|d�qWdS)Nr)r�r*r�)rr�rR)r_r#)r�r*rr	r
rh�s
z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r5rr�r@r.)rr�rhr	)r�r*rr
�%test_as_completed_with_unused_timeout�s

z3BaseTaskTests.test_as_completed_with_unused_timeoutc	Cs�dd�}|�|�}tjdd|d�}tjdd|d�}||h}ttj||d��}|�t|�d�|�|d	�}|�|d�|�d|�	��|�
d�|�|d
�}|�|d�|�d|�	��dS)NcssdVdVdVdS)Nrg�������?r	r	r	r	r
r��sz9BaseTaskTests.test_as_completed_reverse_wait.<locals>.geng�������?r�)r*g�������?r�r�rr)r5rr��listr�rRr�r@r�r�r�)	rr�r*r�r��fs�futsr�r�r	r	r
�test_as_completed_reverse_wait�s

z,BaseTaskTests.test_as_completed_reverse_waitc
s��fdd�}��|�}tjdd|d�}tjdd|d�}||h}ttj||d��}��t|�d�tj||d�}|�|�\}}	��t	dd	�|D��ddh�dS)
Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?r)r�)r�)rr	r
r�s
z7BaseTaskTests.test_as_completed_concurrent.<locals>.geng�������?r�)r*r�r�css|]}|��VqdS)N)rS)r;r_r	r	r
r�$sz=BaseTaskTests.test_as_completed_concurrent.<locals>.<genexpr>)
r5rr�r�r�rRr�r�r@r�)
rr�r*r�r�r�r��waiterrQr�r	)rr
�test_as_completed_concurrents
z*BaseTaskTests.test_as_completed_concurrentcsntjdd���tj��fdd��}���j|��}�j�|�|��}��t|�ddh���t|�d�dS)NcSs|S)Nr	)r�r	r	r
r-(szBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3sDg}�d�}x2tj||�d�g�jd�D]}|�|EdH�q(W|S)N�hamr�)r*)rr�r*r�)rSr�r_)r-rr	r
ru,szDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerrr�r�)	rr?r.r*r@rSrRr�r�)rrurDrSr	)r-rr
�&test_as_completed_duplicate_coroutines&s	z4BaseTaskTests.test_as_completed_duplicate_coroutinescsv�fdd�}��|��tj�fdd��}���|dd��}��|���|�����|��d���	d��
��dS)Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?g�������?)r�)r�)rr	r
r�=s
z%BaseTaskTests.test_sleep.<locals>.genc3s6tj|d�d�EdHtj|d|�d�EdH}|S)Nr�)r*)rr�)r��argr�)r*r	r
r�Fsz)BaseTaskTests.test_sleep.<locals>.sleeperg�������?�yeah)r5rr?r.r@rPrQrRrSr�r�)rr�r�rXr	)r*rr
�
test_sleep;s

zBaseTaskTests.test_sleepcs��fdd�}��|�}��|tjdd|d��}d�|j���fdd�}||_t�|����j�|�	�t�|���
�j�dS)Nc3sdV}��d|�dVdS)Ng$@r)r�)r�)rr	r
r�Tsz,BaseTaskTests.test_sleep_cancel.<locals>.geng$@r)r*cs�||f|����S)Nr	)Zdelay�callbackr)�handle�orig_call_laterr	r
r�`sz3BaseTaskTests.test_sleep_cancel.<locals>.call_later)r5r.rr�r�rzr�r�Z
_cancelledrrP)rr�r*rXr�r	)r	r
rr
�test_sleep_cancelRs


zBaseTaskTests.test_sleep_cancelcsj�fdd�}��|��tj�fdd���tj���fdd��}|�}����|�d���d����dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Ng�������?ri�)r�)r�)rr	r
r�ps
z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genc3stj|�d�EdHdS)N)r*)rr�)r�)r*r	r
r�ysz;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepc3sL����d��}��d|j�y|EdHWntjk
rBdSXdSdS)Ni�g�������?r�zslept in)r.r�rrr�)r�)r*rr�r	r
�doit}sz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitr�g�������?)r5rr?rRr@r�r�)rr�rZdoerr	)r*rr�r
�test_task_cancel_sleeping_taskns
z,BaseTaskTests.test_task_cancel_sleeping_taskcs�|�|j��tj�fdd��}|�|j|��}t�|j�|�|j��|�	�t�|j�|�
tj|jj|�|�
|j�|�����dS)Nc3s�EdHdS)Nr	r	)rDr	r
r-�sz:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro)r0r*rr?r.rzr�rTr�rr]r�r@r�rPr�)rr-rJr	)rDr
�test_task_cancel_waiter_future�sz,BaseTaskTests.test_task_cancel_waiter_futurec	Cs�tjdd��}|�}|�|j|�}|�td��|�d�WdQRX|�td��|�t��WdQRX|�	|j�
|�d�dS)NcSsdS)Nr[r	r	r	r	r
rO�sz4BaseTaskTests.test_task_set_methods.<locals>.notmuchznot support set_resultrNznot support set_exceptionr[)rr?r.r*rFrGr\�
set_exceptionr^rRr@)rrOr�rJr	r	r
�test_task_set_methods�s
z#BaseTaskTests.test_task_set_methodscCs&tjdd��}|�t|jj|��dS)NcssdVdVdS)Nrr[r	r	r	r	r
rO�sz/BaseTaskTests.test_step_result.<locals>.notmuch)rr?r]rGr*r@)rrOr	r	r
�test_step_result�szBaseTaskTests.test_step_resultcs�Gdd�dtj�}||jd��d�tj��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||�dS)NF)�cb_addedr3rb)rr�kwds)r+r	r
rb�sz;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j||�dS)NT)rr3r|)rr�kwargs)r+r	r
r|�szDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback)rrrrbr|�
__classcell__r	r	)r+r
�Fut�sr)r*c3s�EdH�dS)Nr	r	)rDrSr	r
�wait_for_future�sz>BaseTaskTests.test_step_result_future.<locals>.wait_for_future)rr/r*r?r.rzr�rPr�objectr\rTrQr�rS)rrrrXr�r	)rDrSr
�test_step_result_future�s	
z%BaseTaskTests.test_step_result_futurecs��fdd�}��|��tj�fdd���t��tj��fdd��}���|��}t���|����|�	����
ttj����|�	����|�����
|����dS)Nc3sdV}��d|�dVdS)Ng$@r)r�)r�)rr	r
r��sz;BaseTaskTests.test_baseexception_during_cancel.<locals>.genc3stjd�d�EdHdS)Nr�)r*)rr�r	)r*r	r
r��sz?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeperc3s0y��EdHWntjk
r*��YnXdS)N)rr�r	)�base_excr�r	r
�notmutch�sz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch)r5rr?�
BaseExceptionr.rzr�rr�rQr]rPr�rTr�)rr�rrJr	)rr*rr�r
� test_baseexception_during_cancel�s

z.BaseTaskTests.test_baseexception_during_cancelcCsfdd�}|�t�|��dd�}|�t�|��tjdd��}|�t�|��|�t�t����dS)NcSsdS)Nr	r	r	r	r
�fn�sz2BaseTaskTests.test_iscoroutinefunction.<locals>.fncss
dVdS)Nr	r	r	r	r
�fn1sz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1css
dVdS)Nr	r	r	r	r
�fn2sz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2)r�r�iscoroutinefunctionr?rPr�Mock)rrrr r	r	r
�test_iscoroutinefunction�sz&BaseTaskTests.test_iscoroutinefunctionc	sX|�|j��tj�fdd��}|�}|�t��|j�|�WdQRX|�����dS)Nc3s
�VdS)Nr	r	)rDr	r
rsz?BaseTaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)	r0r*rr?r]rGr@r�rQ)rrrJr	)rDr
�test_yield_vs_yield_fromsz&BaseTaskTests.test_yield_vs_yield_fromcs<tjdd���tj�fdd��}|�}|�t|jj|�dS)Ncss
dVdS)Nr	r	r	r	r
r-sz>BaseTaskTests.test_yield_vs_yield_from_generator.<locals>.coroc3s ��}z
|VWd|��XdS)N)r')r�)r-r	r
rs
zIBaseTaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_future)rr?r]rGr*r@)rrrJr	)r-r
�"test_yield_vs_yield_from_generatorsz0BaseTaskTests.test_yield_vs_yield_from_generatorcCsPtjdd��}|�t�|��|�}|�t�|��|j�|�}|�|d�dS)NcSsdS)NrKr	r	r	r	r
r�,sz;BaseTaskTests.test_coroutine_non_gen_function.<locals>.funcrK)rr?rPr!�iscoroutiner*r@rR)rr�r-r�r	r	r
�test_coroutine_non_gen_function+sz-BaseTaskTests.test_coroutine_non_gen_functioncsz|�|j��tj�fdd��}tj�fdd��}|�|j|��}|�|j|��}|j�|�}|�|d�|�|���dS)Ncs�S)Nr	r	)rDr	r
r�;szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.funccs��d�dS)NrK)r\r	)rDr	r
r-?szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.cororK)	r0r*rr?r.r@rRr�rS)rr�r-�t1�t2r�r	)rDr
�-test_coroutine_non_gen_function_return_future8sz;BaseTaskTests.test_coroutine_non_gen_function_return_futurec	s��jj���t�����j�jd��WdQRX���fdd�}���j|�j����j�����t�����j�jd��WdQRXdS)N)r*c	�s���t�����j|d���WdQRXt�|�zR��t������d���WdQRX��t���������WdQRXWdt�d�XdS)N)r*)�assertWarns�PendingDeprecationWarningrT�current_taskrrW)r*)r,rrJr	r
r-Ps
z8BaseTaskTests.test_current_task_deprecated.<locals>.coro)	r+r,r+r,r�r-r*r.r@)rr-r	)r,rrJr
�test_current_task_deprecatedJsz*BaseTaskTests.test_current_task_deprecatedcsZ��tj�jd����fdd�}���j|�j����j�����tj�jd��dS)N)r*c�s:��tj|d�����t�d�����t����dS)N)r*)rTrr-)r*)rrJr	r
r-fsz-BaseTaskTests.test_current_task.<locals>.coro)r�rr-r*r.r@)rr-r	)rrJr
�test_current_taskcs
zBaseTaskTests.test_current_taskcs���tj�jd�����j�����j������fdd�}����fdd�}���j|�j������j|�j����j�tj��f�jd����tj�jd��dS)N)r*c�sD��tj|d��k��IdH��tj|d��k���d�dS)N)r*T)rPrr-r\)r*)r�r�r�task1r	r
r�vs
zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c�sD��tj|d��k���d��IdH��tj|d��k�dS)N)r*T)rPrr-r\)r*)r�r�r�task2r	r
r�|s

zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)r�rr-r*r0r.r@r�)rr�r�r	)r�r�rr0r1r
�)test_current_task_with_interleaving_taskspsz7BaseTaskTests.test_current_task_with_interleaving_taskscs~d����j�����fdd����fdd�}tj|��jd�}t��j�|���j�|����d���	��
��dS)Nrc�s>y�IdHWn tjk
r.�d7��YnX��d�dS)Nrzgot past sleep() in inner())rr��failr	)�proofrrr	r
r��sz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.innerc�s<y��IdHWntjk
r.�d7�Yn
X�d7�dS)Nr>r�)rr�r	)r�r4r	r
r��s
z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outer)r*�e)r0r*rrLrzr�rr@rRrPr�)rr�r_r	)r�r4rrr
�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	)r4rr	r
r��s
zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc�s*tj��g�jd�IdH\}}�d7�dS)N)r*r>)rr�r*)�d�p)r�r4rr	r
r��szCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outer)r*r)r0r*rrLrzr�rr]r�r@r\rR)rr�r_r	)r�r4rrr
�&test_yield_wait_does_not_shield_cancel�s
z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<|�|j�}t�|�}|�d�|j�|�}|�|d�dS)Nr!)r0r*r�shieldr\r@rR)rr�r�r�r	r	r
�test_shield_result�s


z BaseTaskTests.test_shield_resultcCsT|�|j�}t�|�}t�|j�td�}|�|�t�|j�|�|�	�|�dS)Nr�)
r0r*rr:rzr�rGrrTr�)rr�r�r%r	r	r
�test_shield_exception�s

z#BaseTaskTests.test_shield_exceptioncCsH|�|j�}t�|�}t�|j�|��t�|j�|�|���dS)N)	r0r*rr:rzr�rrPr�)rr�r�r	r	r
�test_shield_cancel_inner�s
z&BaseTaskTests.test_shield_cancel_innercCsh|�|j�}t�|�}t�|j�|��t�|j�|�|���|�	d|j
dkrXdnt|j
��dS)Nr)r0r*rr:rzr�rrPr�rRZ
_callbacksr�)rr�r�r	r	r
�test_shield_cancel_outer�s
z&BaseTaskTests.test_shield_cancel_outercCs8|�|j�}|�d�|j�t�|��}|�|d�dS)Nr!)r0r*r\r@rr:rR)rrDr�r	r	r
�test_shield_shortcut�s
z"BaseTaskTests.test_shield_shortcutc	s�d����j����fdd�����fdd�}tj|��jd�}t��j�|����tj���j�	|�WdQRX��
d�t��j����d�dS)Nrc�s�IdH�d7�dS)Nrr	r	)r4rr	r
r��s
z/BaseTaskTests.test_shield_effect.<locals>.innerc�s$tj���jd�IdH�d7�dS)N)r*r>)rr:r*r	)r�r4rr	r
r��sz/BaseTaskTests.test_shield_effect.<locals>.outer)r*r)r0r*rrLrzr�rr]r�r@r\rR)rr�r_r	)r�r4rrr
�test_shield_effect�s
z BaseTaskTests.test_shield_effectcCs�|�|j�}|�|j�}tj|||jd�}tj||jd�}t�|j�|��t�|j�|�|�	��|�
d�|�
d�t�|j�|�|��ddg�dS)N)r*rr�)
r0r*rrAr:rzr�rrPr�r\rRrS)r�child1�child2�parentr�r	r	r
�test_shield_gathers

z BaseTaskTests.test_shield_gathercCs�|�|j�}|�|j�}tj||jd�}tj||jd�}tj|||jd�}t�|j�|��t�|j�|�|�	�tj
�|�|���|�|���|�
d�|�
d�t�|j�dS)N)r*rr�)r0r*rr:rArzr�rr�r�r�rPr�r\)rrArBr�r�rCr	r	r
�test_gather_shields

z BaseTaskTests.test_gather_shieldcCsZ|�|j�}|�t|jjtj||jd��t�}|�t|jjtj||jd��|��dS)N)r*)	r0r*r]rer@rr�rr')rrDr-r	r	r
�test_as_completed_invalid_args"sz,BaseTaskTests.test_as_completed_invalid_argscCsx|�|j�}|�t|jjtj||jd��t�}|�t|jjtj||jd��|��|�t	|jjtjg|jd��dS)N)r*)
r0r*r]rer@rr�rr'r^)rrDr-r	r	r
�test_wait_invalid_args-sz$BaseTaskTests.test_wait_invalid_argsc	sD�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs�tj���fdd��}���j����d�|����t�������jt	j
����j����j
t	j��j������j�dS)Nc3s���j��EdHdS)N)rP�
gi_runningr	)rDr�rr	r
r-BszKBaseTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coro)rr?r0r*r\rPr&r��gi_frame�types�	FrameTyper�rHr��CodeTyper@r�)r-)r)rDr�r
�check>s
z=BaseTaskTests.test_corowrapper_mocks_generator.<locals>.checkFT)r)rrMr	)rr
� test_corowrapper_mocks_generator<s


z.BaseTaskTests.test_corowrapper_mocks_generatorc	sttd��btj�fdd��}tj��fdd���tjdd������j|��}�j�|�}��|d�WdQRXdS)	NTc3s��EdHS)Nr	r	)r)r	r
r(esz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t1c3s(���j�}���j�|��|EdHS)N)r0r*r.)r_)r�t3r	r
r)isz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t2cSs|�d�dS)N)rr��)r\)r_r	r	r
rOosz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t3)rr�rP)rrr?r.r*r@rR)rr(rJ�valr	)rr)rOr
�test_yield_from_corowrappercs
z)BaseTaskTests.test_yield_from_corowrappercs8dd���fdd�}|�|d�d�|�|d�d�dS)Ncss
dV}|S)Nr	)r�r	r	r
rhxsz;BaseTaskTests.test_yield_from_corowrapper_send.<locals>.fooc
s\tj����}|�d�y|�|�Wn(tk
rN}z
|jdSd}~XYn
Xtd��dS)NrzStopIteration was expected)rr�CoroWrapperr$r"r�AssertionError)r�cwZex)rhr	r
�call|s
z<BaseTaskTests.test_yield_from_corowrapper_send.<locals>.call)rr�r�)rR)rrVr	)rhr
� test_yield_from_corowrapper_sendws
z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0t��}dd�}tj�|��}||d<d|_dS)NcssgEdHdS)Nr	r	r	r	r
rh�r2z3BaseTaskTests.test_corowrapper_weakref.<locals>.foorU)�weakrefZWeakValueDictionaryrrrSr�)rZwdrhrUr	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}x6y
|V}Wqtk
r6}z|}Wdd}~XYqXqWdS)N)�	Exception)�value�er	r	r
rh�s
z1BaseTaskTests.test_corowrapper_throw.<locals>.foorh)rh)
rZrrrSr$rTr&r�rRr)rrhr�rUr	r	r
�test_corowrapper_throw�s$



z$BaseTaskTests.test_corowrapper_throwcs8�jj����fdd�}���j|����j���dS)Nc	�s��t��WdQRXdS)N)r+r,r	)r,rrXr	r
r-�sz5BaseTaskTests.test_all_tasks_deprecated.<locals>.coro)r+r,r.r*r@)rr-r	)r,rrXr
�test_all_tasks_deprecated�sz'BaseTaskTests.test_all_tasks_deprecatedc	sV�jj}tj�fdd��}t��}�j�d��j�|�|�j�}tj	|�jd�}��
tj�jd�|h�t��j�zV��
t����
|��|h�WdQRX��
t����
|�d�|h�WdQRXWdt�d�X�j����
t�jj�d�|jjd=d}|j}d}t����
tj�jd�t��|��jdtj|d��|��dS)	Nc3s ��|�}|EdHtd��dS)Nzcode never reached)r0rZ)r*�future)rr	r
�kill_me�s

z>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_meT)r*rr_z%Task was destroyed but it is pending!)�messagerJr)r+r,rr?rr"r*ry�set_exception_handlerrLrR�	all_tasksrWr+r,Z	_run_oncer��_readyrI�f_localsr}r�
gc_collectr�Zassert_called_with�ANYZ
reset_mock)rr,r`Zmock_handlerr-rJrr	)rr
�test_log_destroyed_pending_task�s8
"


z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsTt�������tjdd���tj���fdd��}��|����|jj�dS)NcSst�dS)N)rer	r	r	r
r-�szBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc3s2������}tjd�d�EdH|��d}dS)Ng�������?)r*)r.rr�r)rJ)r-r*rr	r
ru�szDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rrErWr?r@r��error�called)r�m_logrur	)r-r*rr
�&test_tb_logger_not_called_after_cancel�s
z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc		Cs�td��tjdd��}WdQRXt}t��jd}|�t��|�	|j
j�|j
jdd}t
�|�\}}dt�|j�t�|�|t�|�|f}|�|t�|tj��dS)NTcSsdS)Nr	r	r	r	r
�	coro_noopsz=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?�__file__�sys�	_getframe�f_linenorrfrPrirj�	call_argsrzr{r�r�rrr�compile�DOTALL)	rrkrmZtb_filename�	tb_linenoraZ
func_filenameZfunc_linenoZregexr	r	r
�test_coroutine_never_yieldeds


z*BaseTaskTests.test_coroutine_never_yieldedc	sD�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs,tjdd��}�j�|��}��|d�dS)NcSstjdd��}|�S)NcSsdS)Nrr	r	r	r	r
�
inner_coro%sziBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)rr?)rwr	r	r
�
outer_coro#szUBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror)rr?r*r@rR)rxrS)rr	r
rM"szABaseTaskTests.test_return_coroutine_from_coroutine.<locals>.checkFT)r)rrMr	)rr
�$test_return_coroutine_from_coroutines


z2BaseTaskTests.test_return_coroutine_from_coroutinecCsh|j�d�|�|jt��}t��jd}|�|jt	�|�
|jddd�t|df�|j�|�dS)NTr���rP�test_task_source_traceback)
r*ryr.rrorprqr�r}r�rRrnr@)rrJr�r	r	r
r{6sz(BaseTaskTests.test_task_source_tracebackcszt������j�tj��fdd��}��|��}��tj||�d��}��|j���	tj
�j|���|�
��dS)Nc3s����}|EdHdS)N)r0)rD)r*rr	r
�blocking_coroutineFs
z?BaseTaskTests._test_cancel_wait_for.<locals>.blocking_coroutine)r*)rrEr�r'r?r�r�r�rr]r�r@rPr�)rr�r|rJr�r	)r*rr
�_test_cancel_wait_forBs
z#BaseTaskTests._test_cancel_wait_forcCs|�d�dS)N)r})rr	r	r
�test_cancel_blocking_wait_forWsz+BaseTaskTests.test_cancel_blocking_wait_forcCs|�d�dS)NgN@)r})rr	r	r
�test_cancel_wait_forZsz"BaseTaskTests.test_cancel_wait_forcs�t��}|�|j�|�|���fdd�}tj|�|d�}tj||d��d���fdd�}��|���d�|�	��|�
�d�|�����|�
��
�dg�dS)Nc3s
�EdHS)Nr	r	)rDr	r
�
child_corofsz6BaseTaskTests.test_cancel_gather_1.<locals>.child_coro)r*cs����dS)N)r)r<)�
cancel_result�gather_taskr	r
�cancelling_callbacklsz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbackr!F)rrEr�r'r0rArLr|r\r@rRr�r�rS)rr*r�Z
gather_futurer�r	)r�rDr�r
�test_cancel_gather_1]s



z"BaseTaskTests.test_cancel_gather_1cs@t������j��fdd�����fdd�}��|��dS)Nc�sBd}x8|d7}tjtjd�d�d�d�IdH|dkrdSqWdS)Nrg�������?)r*T)�return_exceptionsr*r)rrAr�)r�)r*r	r
rKsz0BaseTaskTests.test_cancel_gather_2.<locals>.testc�s^������}tjd�d�IdH|��y|IdHWntjk
rNYnX��d�dS)Ng�������?)r*z1gather did not propagate the cancellation request)r.rr�rr�r3)Zqwe)r*rrKr	r
�main�sz0BaseTaskTests.test_cancel_gather_2.<locals>.main)rrEr�r'r@)rr�r	)r*rrKr
�test_cancel_gather_2{s

z"BaseTaskTests.test_cancel_gather_2cs4tjdd���tj��fdd��}�j�|��dS)NcSsdddS)Nrrr	r	r	r	r
rh�sz3BaseTaskTests.test_exception_traceback.<locals>.fooc3s*���j���}dV��|��j�dS)N)r.r*ZassertIsNotNoner��
__traceback__)rJ)rhrr	r
r��sz4BaseTaskTests.test_exception_traceback.<locals>.main)rr?r*r@)rr�r	)rhrr
�test_exception_traceback�sz&BaseTaskTests.test_exception_tracebackc	Cs�dd�}||j_tjdd��}|�|jj�|�t��*|�}z|�	|j|�Wd|�
�XWdQRX|�|jj�|jjdd}|�
d|�|�t�|j�t��dS)Nc_st�dS)N)r^)rrrr	r	r
r��sz8BaseTaskTests.test_error_in_call_soon.<locals>.call_sooncSsdS)Nr	r	r	r	r
r-�sz3BaseTaskTests.test_error_in_call_soon.<locals>.cororz$Task was destroyed but it is pending)r*r�rr?r�rirjr]r^r.r'rPrr�assertInrRrcr�)rrkr�r-r�rar	r	r
�test_error_in_call_soon�sz%BaseTaskTests.test_error_in_call_soonc	CsP|�td��|�|jd�WdQRX|�td��|�|jd�WdQRXdS)Nz!a coroutine was expected, got 123r�)rFrer.r*)rr	r	r
�"test_create_task_with_noncoroutine�sz0BaseTaskTests.test_create_task_with_noncoroutinecCsftjdd��}|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)NcSsdS)Nr	r	r	r	r
r-�szDBaseTaskTests.test_create_task_with_oldstyle_coroutine.<locals>.coro)rr?r.r*r�r,r@)rr-rJr	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�sdS)Nr	r	r	r	r
r-�sz@BaseTaskTests.test_create_task_with_async_function.<locals>.coro)r.r*r�r,r@)rr-rJr	r	r
�$test_create_task_with_async_function�sz2BaseTaskTests.test_create_task_with_async_functioncCsh|�|jt��}|�||j�|�|j�|�d�|�|jt��}|�||j�|�|j�|�d�dS)Nr!)r.r*r r�r,rRr@)rrJr	r	r
�(test_create_task_with_asynclike_function�sz6BaseTaskTests.test_create_task_with_asynclike_functioncs(dd����fdd�}�j�|��dS)Nc�sdS)Nrr	r	r	r	r
r��sz2BaseTaskTests.test_bare_create_task.<locals>.innerc�s4t����}��|�j�|IdH}��d|�dS)Nr)rr�r�r,rR)rJr�)r�rr	r
r-�s
z1BaseTaskTests.test_bare_create_task.<locals>.coro)r*r@)rr-r	)r�rr
�test_bare_create_task�sz#BaseTaskTests.test_bare_create_taskcsdtjddd�����fdd������fdd�}t���z���|��}��|�Wd���XdS)N�cvar�nope)�defaultc�s2tjd�d�IdH�����d���d�dS)Ng{�G�z�?)r*r�zsomething else)rr�rR�getr�r	)r�r*rr	r
�sub	sz)BaseTaskTests.test_context_1.<locals>.subc�sV�����d�������}��d������d�|IdH�����d�dS)Nr��yes)rRr�r.r�)Zsubtask)r�r*rr�r	r
r�	s

z*BaseTaskTests.test_context_1.<locals>.main)�contextvars�
ContextVarrrEr.r@r')rr�rJr	)r�r*rr�r
�test_context_1	szBaseTaskTests.test_context_1csbtjddd�����fdd�}t���z���|��}��|�Wd���X�����d�dS)Nr�r�)r�c	�s��fdd�}�����d�x�td�D]�}����}|�|���d|�����|jd�|IdH�����d|���xVtd�D]J}��d|�d|���tj	d�d	�IdH�����d|�d|���q�Wq&WdS)
Ncs��d�dS)Nzsomething else)r�)rD)r�r	r
�fut_on_done	sz?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_doner�r�r�rP�-g����MbP?)r*)
rRr�rBr0r|r�r�r\rr�)r��jrD�i)r�r*rr	r
r�	s


z*BaseTaskTests.test_context_2.<locals>.main)	r�r�rrEr.r@r'rRr�)rr�rJr	)r�r*rr
�test_context_2	s
zBaseTaskTests.test_context_2csdtjddd�����fdd����fdd�}t���z��|��Wd���X�����d�dS)Nr�r)r�c�sTxNtd�D]B}��||�tjt�dd��d�IdH�����||�q
WdS)Nr�g����MbP?g�������?)r*)rBr�rr��randomZuniformrRr�)�numr�)r�r*rr	r
r�>	s
z)BaseTaskTests.test_context_3.<locals>.subc�sPg}x0td�D]$}���t�dd���}|�|�qWtj|d�i�IdHdS)Nr>rr�r*)rBr�r�Zrandintr�rrA)rr�rJ)r*r�r	r
r�E	s
z*BaseTaskTests.test_context_3.<locals>.main)r�r�rrEr@r'rRr�)rr�r	)r�r*rr�r
�test_context_39	s
zBaseTaskTests.test_context_3)urrrr,r/r.r0r4rCrIrMrYrZr`rardrfrvr�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�rrrrrr
rrrrrr#r$r%r'r*r.r/r2r6r9r;r<r=r>r?r@rDrErFrGrNrRrWrYr]r^rhrZpatchrlrvryr{r}r~rr�r�r�r�r�r�r�r�r�r�r�r�rr	r	)r+r
r)Qs�5=$#	! !
!-$
"


		'
5
"r)cCsv|j}|j}|dks|dkr |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||�dS)NcSsdS)Nrr	r	r	r	r
r1_	r2zCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>)�collections�defaultdict�callsr3rb)rrr)r+r	r
rb^	sz1add_subclass_tests.<locals>.CommonFuture.__init__cs |jdd7<t�j||�S)Nr|r)r�r3r|)rrr)r+r	r
r|b	sz:add_subclass_tests.<locals>.CommonFuture.add_done_callback)rrrrbr|rr	r	)r+r
�CommonFuture]	sr�c@seZdZdS)z add_subclass_tests.<locals>.TaskN)rrrr	r	r	r
r,f	sr,c@seZdZdS)z"add_subclass_tests.<locals>.FutureN)rrrr	r	r	r
r/i	sr/csv�j�jd����fdd�}�j|��jd�}�j�|�}��|d���t|j�ddi���t�j�ddi�dS)N)r*c�s�j��fdd���IdHS)Ncs
��d�S)Nr�)r\r	)rDr	r
r1p	r2zYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>)r*r�r	)rDrr	r
r�o	szGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.funcr�r|r)r/r*r,r@rR�dictr�)rr�rJrSr	)rDrr
�test_subclasses_ctask_cfuturel	s
z9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture)r,r/r�r{)�clsZBaseTaskZ
BaseFuturer�r,r/r�r	r	r
�add_subclass_testsV	s	r�c@seZdZdd�Zdd�ZdS)�SetMethodsTestc	s�t��j}t���j_}�fdd�}|�}���j|�}|�|d����j�	|�d�|�
�|jddd}��t
jd��
|�WdQRX|��dS)Nc�stjd�jd�IdHdS)Ng�������?)r*r�)rr�r*r	)rr	r
rh�	sz@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foor�rr�zstep\(\): already done)�typer/rr"r*�call_exception_handlerr.r\rRr@�assert_called_oncerrrFr�InvalidStateErrorr')rr/�exc_handlerrhr-rJr%r	)rr
�$test_set_result_causes_invalid_state�	s

z3SetMethodsTest.test_set_result_causes_invalid_statec	s�Gdd�dt�}t��j}t���j_}�fdd�}|�}���j|�}|�||����	|���j�
|�WdQRX|��|jddd}��
tjd��
|�WdQRX|��dS)Nc@seZdZdS)zESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcN)rrrr	r	r	r
�MyExc�	sr�c�stjd�jd�IdHdS)Ng�������?)r*r�)rr�r*r	)rr	r
rh�	szCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foorr�zstep\(\): already done)rZr�r/rr"r*r�r.rr]r@r�rrrFrr�r')rr�r/r�rhr-rJr%r	)rr
�'test_set_exception_causes_invalid_state�	s
z6SetMethodsTest.test_set_exception_causes_invalid_stateN)rrrr�r�r	r	r	r
r��	sr��_CFuture�_CTaskzrequires the C _asyncio modulec@s:eZdZeedd�Zeedd�Zej	dd��Z
dd�ZdS)�CTask_CFuture_Testsr�Nr�cCs�t�td�}tjdd��}|�|j|��}|j�|�|�}x.td�D]"}|j	|�|jd�|j�|�qFW|j
|�|ddd�dS)	N�gettotalrefcountcSsdS)Nr	r	r	r	r
r-�	sz@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.coror>)r*rr�)Zdelta)rZ
get_attributerorr?r.r*r@rBrbr�)rr�r-rJZrefs_beforer�r	r	r
�test_refleaks_in_task___init__�	sz2CTask_CFuture_Tests.test_refleaks_in_task___init__c	CsHtjdd��}|�|j|��}|j�|�|�t��
|`WdQRXdS)NcSsdS)Nr	r	r	r	r
r-�	szHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coro)rr?r.r*r@r]�AttributeErrorr�)rr-rJr	r	r
�&test_del__log_destroy_pending_segfault�	s
z:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault)rrr�getattrrr,rr/rZ
refcount_testr�r�r	r	r	r
r��	sr�c@s$eZdZeedd�Zeedd�ZdS)�CTask_CFuture_SubclassTestsr�Nr�)rrrr�rr,rr/r	r	r	r
r��	sr�c@seZdZeedd�ZejZdS)�CTaskSubclass_PyFuture_Testsr�N)	rrrr�rr,r�	_PyFuturer/r	r	r	r
r��	sr�c@seZdZeedd�ZejZdS)�PyTask_CFutureSubclass_Testsr�N)	rrrr�rr/r�_PyTaskr,r	r	r	r
r��	sr�c@seZdZeedd�ZejZdS)�CTask_PyFuture_Testsr�N)	rrrr�rr,rr�r/r	r	r	r
r�
sr�c@seZdZejZeedd�ZdS)�PyTask_CFuture_Testsr�N)	rrrrr�r,r�rr/r	r	r	r
r�

sr�c@seZdZejZejZdS)�PyTask_PyFuture_TestsN)	rrrrr�r,rr�r/r	r	r	r
r�
sr�c@seZdZejZejZdS)�PyTask_PyFuture_SubclassTestsN)	rrrrr�r,rr�r/r	r	r	r
r�
sr�c@seZdZdd�ZdS)�CTask_Future_Testscs�Gdd�dtj�}�fdd�}t��|_z@||jd��|j�d�jd�tj|�|jd�}|j�|�}Wd|j��X|�	|d�dS)	Nc@seZdZedd��ZdS)z+CTask_Future_Tests.test_foobar.<locals>.FutcSst�dS)N)r�)rr	r	r
rV%
sz4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loopN)rrr�propertyrVr	r	r	r
r$
src�s�IdHdS)Nr�r	r	)rDr	r
r-)
s
z,CTask_Future_Tests.test_foobar.<locals>.coro)r*g�������?rr�)
rr/rEr*r�r\r,r@r'rR)rrr-rJr�r	)rDr
�test_foobar#
s
zCTask_Future_Tests.test_foobarN)rrrr�r	r	r	r
r�
sr�c@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�S)Nr	)r)r*r	r
rUA
szHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loopcSsdS)NFr	)rr	r	r
rQE
szGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.doneN)rrrr�rUrQr	)r*r	r
�TaskLike@
sr�)rr"rRrrcr��_register_task�_unregister_task)rr�rJr	)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�S)Nr	)r)r*r	r
rVR
szKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loopcSsdS)NFr	)rr	r	r
rQU
szGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.doneN)rrrrVrQr	)r*r	r
r�Q
sr�)rr"rRrrcr�r�r�)rr�rJr	)r*r
�test__register_task_2P
s
z0BaseTaskIntrospectionTests.test__register_task_2c	s�G�fdd�d�}|�}t���|�t���t��|�|�|�t���t��|�t��|�tj	���|h�WdQRX|�
|�dS)Ncs eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikecs�S)Nr	)r)r*r	r
rVb
szKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loopcSsdS)NTr	)rr	r	r
rQe
szGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.doneN)rrrrVrQr	)r*r	r
r�a
sr�)rr"rRrrcr�r�r+r,r,r�)rr�rJr	)r*r
�test__register_task_3`
s
 z0BaseTaskIntrospectionTests.test__register_task_3cCsNt��}t��}|�t�|��|�||�|�t�|�|�|�||�dS)N)rr"r�rr-�_enter_taskrT�_leave_task)rrJr*r	r	r
�test__enter_taskr
sz+BaseTaskIntrospectionTests.test__enter_taskc	Csht��}t��}t��}|�||�|�t��|�||�WdQRX|�t�|�|�|�||�dS)N)	rr"r�r]rGrTrr-r�)rr0r1r*r	r	r
�test__enter_task_failurez
sz3BaseTaskIntrospectionTests.test__enter_task_failurecCs<t��}t��}|�||�|�||�|�t�|��dS)N)rr"r�r�r�rr-)rrJr*r	r	r
�test__leave_task�
s
z+BaseTaskIntrospectionTests.test__leave_taskc	Csht��}t��}t��}|�||�|�t��|�||�WdQRX|�t�|�|�|�||�dS)N)	rr"r�r]rGr�rTrr-)rr0r1r*r	r	r
�test__leave_task_failure1�
sz4BaseTaskIntrospectionTests.test__leave_task_failure1c	CsFt��}t��}|�t��|�||�WdQRX|�t�|��dS)N)rr"r]rGr�r�rr-)rrJr*r	r	r
�test__leave_task_failure2�
s
z4BaseTaskIntrospectionTests.test__leave_task_failure2csJt��}t����fdd�|_|�|�|�|�|�t���t��dS)Ncs�S)Nr	r	)r*r	r
r1�
r2zBBaseTaskIntrospectionTests.test__unregister_task.<locals>.<lambda>)	rr"rVr�r�rRrrcr�)rrJr	)r*r
�test__unregister_task�
s

z0BaseTaskIntrospectionTests.test__unregister_taskcCs2t��}t��}|�|�|�t�|�t��dS)N)rr"r�rRrrcr�)rrJr*r	r	r
�$test__unregister_task_not_registered�
s
z?BaseTaskIntrospectionTests.test__unregister_task_not_registered)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r�9
s

r�c@s4eZdZeej�Zeej�Zeej	�Z
eej�ZdS)�PyIntrospectionTestsN)
rrr�staticmethodrZ_py_register_taskr�Z_py_unregister_taskr�Z_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)rrr�hasattrrr�r�r�Z_c_unregister_taskr�Z
_c_enter_taskr�Z
_c_leave_taskr�r	r	r	r
r��
s



r�csHeZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Z�Z	S)
�BaseCurrentLoopTestscs$t���t��|_t�|j�dS)N)r3r4rrEr*rW)r)r+r	r
r4�
s

zBaseCurrentLoopTests.setUpcs"|j��t�d�t���dS)N)r*r'rrWr3�tearDown)r)r+r	r
r��
s

zBaseCurrentLoopTests.tearDowncCst�dS)N)�NotImplementedError)rr-r	r	r
r.�
szBaseCurrentLoopTests.new_taskcCs|�tj|jd��dS)N)r*)r�rr-r*)rr	r	r
�!test_current_task_no_running_loop�
sz6BaseCurrentLoopTests.test_current_task_no_running_loopc	Cs"|�t��t��WdQRXdS)N)r]rGrr-)rr	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����dS)N)r*)rTrr-r*r	)rrJr	r
r-�
szGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.coro)r*)r.r*r@r�rr-)rr-r	)rrJr
�$test_current_task_with_implicit_loop�
sz9BaseCurrentLoopTests.test_current_task_with_implicit_loop)
rrrr4r�r.r�r�r�rr	r	)r+r
r��
sr�c@seZdZdd�ZdS)�PyCurrentLoopTestscCstj||jd�S)N)r*)rr�r*)rr-r	r	r
r.�
szPyCurrentLoopTests.new_taskN)rrrr.r	r	r	r
r��
sr�c@seZdZdd�ZdS)�CCurrentLoopTestscCsttd�||jd�S)Nr�)r*)r�rr*)rr-r	r	r
r.�
szCCurrentLoopTests.new_taskN)rrrr.r	r	r	r
r��
sr�c@seZdZdd�Zdd�ZdS)�GenericTaskTestscCs|�ttjtj��dS)N)rP�
issubclassrr,r/)rr	r	r
�test_future_subclass�
sz%GenericTaskTests.test_future_subclasscCsRyddl}Wntk
r Yn.Xyddl}Wntk
rL|�d�YnXdS)Nrz_asyncio module is missing)�
_functools�ImportError�_asyncior3)rr�r�r	r	r
�test_asyncio_module_compiled�
sz-GenericTaskTests.test_asyncio_module_compiledN)rrrr�r�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)r3r4r5�one_looprHrW)r)r+r	r
r4s


zGatherTestsBase.setUpcCsx|jrt�|�qWdS)N)rdrzr�)rr*r	r	r
�	_run_loopszGatherTestsBase._run_loopcs��fdd�td�D�\}}}tj��|||�|�}t��}|�|�|�d�|�d����j	���
|jd���|�
��|�d����j	�|�|���
|��dddg�dS)Ncsg|]}tj�jd��qS))r*)rr/r�)r;r�)rr	r
r=sz2GatherTestsBase._check_success.<locals>.<listcomp>rPrr�F)rBrrA�wrap_futuresrz�MockCallbackr|r\r�r�rRrjr�rQ�assert_called_once_withrS)rrr�r�r�rD�cbr	)rr
�_check_successs




zGatherTestsBase._check_successcCs|��|jdd�dS)NF)r�)r�)rr	r	r
�test_successszGatherTestsBase.test_successcCs|jdd�dS)NT)r�)r�)rr	r	r
�test_result_exception_success"sz-GatherTestsBase.test_result_exception_successc	s��fdd�td�D�\}}}}}tj��|||||��}t��}|�|�t�}|�d�|�	|���
�j���|�
��|�|���|��|�|�d�|��|�	t��|��dS)Ncsg|]}tj�jd��qS))r*)rr/r�)r;r�)rr	r
r=&sz6GatherTestsBase.test_one_exception.<locals>.<listcomp>�rrP)rBrrAr�rzr�r|r�r\rr�r�rPrQr�rTr�rrG)	rr�r�r�r7r\rDr�r%r	)rr
�test_one_exception%s 




z"GatherTestsBase.test_one_exceptionc	s��fdd�td�D�\}}}}tj��||||�ddi�}t��}|�|�t�}t�}|�	d�|�
|�|�	d����j���
|���|�
|����j���|���|�|���|��dd||g�dS)Ncsg|]}tj�jd��qS))r*)rr/r�)r;r�)rr	r
r=8sz:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>�r�TrrP)rBrrAr�rzr�r|r�rGr\rr�r�r�rQrPr�rRrS)	rr�r�r�r7rDr�r%Zexc2r	)rr
�test_return_exceptions7s"





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-Ez-csFalse�)�PYTHONASYNCIODEBUGZ
PYTHONDEVMODE�1sTruez-XZdev)�joinrrR�rstrip)rr��sts�stdout�stderrr	r	r
�test_env_var_debugJs&z"GatherTestsBase.test_env_var_debug)rrrr4r�r�r�r�r�r�rrr	r	)r+r
r�sr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|S)Nr	)rrr	r	r
r�kszFutureGatherTests.wrap_futurescCs�t�|j�|�tjd�tj|�}|�|tj�|�|j|j�|�	|j�|�
|���|�|�
�g�tj|d|ji�}|�|j|j�dS)Nr*)rrWr�r�rAr�r/rTrUr�rPrQrRrSrH)rZseq_or_iterrDr	r	r
�_check_empty_sequencens
z'FutureGatherTests._check_empty_sequencecCs2|�g�|�d�|�t��|�td��dS)Nr	r�)rr��iter)rr	r	r
�test_constructor_empty_sequencezs

z1FutureGatherTests.test_constructor_empty_sequencec	Cshtj|jd�}tj|jd�}|�t��t�||�WdQRX|�t��tj||jd�WdQRXdS)N)r*)rr/r�rHr]r^rA)rr�r�r	r	r
�%test_constructor_heterogenous_futures�sz7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}��|j�j����j���|���tj|d�ji�}��|j�j����j���|���dS)Ncsg|]}tj�jd��qS))r*)rr/rH)r;r�)rr	r
r=�szIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>rPr*)	rBrrArTrUrHr�r�rQ)rZchildrenrDr	)rr
�#test_constructor_homogenous_futures�s
z5FutureGatherTests.test_constructor_homogenous_futurescs��fdd�td�D�\}}}}}t�|||||�}t��}|�|�|�d�|�����j	���
|���|�|���
|�����|��tj�|�d�|��|�t��|��dS)Ncsg|]}tj�jd��qS))r*)rr/r�)r;r�)rr	r
r=�sz;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r�rrP)rBrrArzr�r|r\rr�r�rPrQr�r�r�r�r�r�rrG)rr�r�r�r7r\rDr�r	)rr
�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|]}tj�jd��qS))r*)rr/r�)r;r�)rr	r
r=�szLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>�T)r�rrPr�r�)rBrrArzr�r|r\r�rrr�r�r�rQrGr@r�r�rRr�)rr�r�r�r7r\r_rDr�ZzdeZrter�r	)rr
�&test_result_exception_one_cancellation�s*





z8FutureGatherTests.test_result_exception_one_cancellationN)
rrrr�rrrr	r
rr	r	r	r
risrcsDeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�Z	S)
�CoroutineGatherTestscst���t�|j�dS)N)r3r4rrWr�)r)r+r	r
r4�s
zCoroutineGatherTests.setUpcGs4g}x*|D]"}tj|fdd��}|�|��q
W|S)Ncss
|EdHS)Nr	)rDr	r	r
r-�sz/CoroutineGatherTests.wrap_futures.<locals>.coro)rr?r�)rrZcorosrDr-r	r	r
r��s
z!CoroutineGatherTests.wrap_futurescCs�tjdd��}|�}|�}t�||�}|�|j|j�|j�|�|j|jdd�|�}|�}tj|||jd�}|�|j|j�|j�|�dS)NcSsdS)Nrwr	r	r	r	r
r-�szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.coroF)r�)r*)	rr?rArTrUr�r@rWrH)rr-Zgen1Zgen2rDZgen3Zgen4r�r	r	r
�test_constructor_loop_selection�sz4CoroutineGatherTests.test_constructor_loop_selectioncCsXtjdd��}|d�}tj|||d�||jd�}|�|j�|�|��ddddg�dS)NcSs|S)Nr	)r�r	r	r
r-�sz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.cororw�def)r*)rr?rAr�r�rRrS)rr-r�rDr	r	r
�test_duplicate_coroutines�s
z.CoroutineGatherTests.test_duplicate_coroutinesc	sd�tj�jd��tj��fdd��}tj|��jd��tj|��jd��d�tj�����fdd��}tj|��jd�}t��j���|�����	tj
���j�|�WdQRX����������
������
������
��t��j����d�dS)Nr)r*c3s�EdH�d7�dS)Nrr	r	)r4rr	r
r��s
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerc3s(tj���jd���EdH�d7�dS)N)r*r>)rrAr�r	)rArB�gathererr4rr	r
r��s
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)rr/r�r?rLrzr�rPrr]r�r@r�r�rR)rr�r�r_r	)rArBrr4rrr
�test_cancellation_broadcast�s$z0CoroutineGatherTests.test_cancellation_broadcastcs�tjdd���tj�jd��tj�jd��tj����fdd��}tj|��jd�}t��j���d�t��j���d�t��j���|�	�t
�dS)Ncss|EdHtd��dS)Nzshould not be ignored)rG)r_r	r	r
r�s
z:CoroutineGatherTests.test_exception_marking.<locals>.inner)r*c3s$tj�������jd�EdHdS)N)r*)rrAr�r	)r�r�r�rr	r
r�sz:CoroutineGatherTests.test_exception_marking.<locals>.outer)rr?r/r�rLrzr�r\r�r�rG)rr�r_r	)r�r�r�rr
�test_exception_markings

z+CoroutineGatherTests.test_exception_marking)
rrrr4r�rrrrrr	r	)r+r
r
�s		"r
cs^eZdZ�fdd�Zejddd��Zddd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Z�Z
S)�RunCoroutineThreadsafeTestscs$t���t��|_|�|j�dS)N)r3r4rrEr*rW)r)r+r	r
r4#s

z!RunCoroutineThreadsafeTests.setUpFccsDtjd|jd�EdH|r"td��|r<t�|j���dV||S)Ng�������?)r*zFail!)rr�r*rGr-r)rr�r�r3rr	r	r
r�(szRunCoroutineThreadsafeTests.addNcCsV|jdd||d�}t�||j�}|r4|j�|jd�z
|�|�S|��pN|��XdS)Nrr�)r3r)	r�rZrun_coroutine_threadsafer*Zcall_soon_threadsafer$rSrQr)rr3rr��advance_coror-r_r	r	r
�target3s
z"RunCoroutineThreadsafeTests.targetcCs,|j�d|j�}|j�|�}|�|d�dS)NrP)r*�run_in_executorrr@rR)rr_rSr	r	r
�test_run_coroutine_threadsafeFsz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec	CsH|j�d|jd�}|�t��}|j�|�WdQRX|�d|jj�dS)NTzFail!)	r*rrr]rGr@r�r�r)rr_�exc_contextr	r	r
�,test_run_coroutine_threadsafe_with_exceptionLszHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc	sr�fdd�}�j�d|�}��tj���j�|�WdQRXt��j�x"t��j�D]}��	|�
��qXWdS)Ncs�jdd�S)Nr)r�)rr	)rr	r
r1Wr2zXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>)r*rr]rr�r@rzr�rcrPrQ)rrr_rJr	)rr
�*test_run_coroutine_threadsafe_with_timeoutTszFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sB�fdd�}�j�d|�}��tj���j�|�WdQRXdS)Ncs�jdd�S)NT)r)rr	)rr	r
r1cr2zZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>)r*rr]rr�r@)rrr_r	)rr
�,test_run_coroutine_threadsafe_task_cancelled`szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledc	s�dd�}�j�d�fdd��}t��}�j�|��j�|���t��}�j�|�WdQRX��	t
|j�d�|j\\}}}��	|d|j
�dS)NcSst�dS)N)�	NameError)r*r-r	r	r
�task_factorylszfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factorycs�jdd�S)NT)r)rr	)rr	r
r1pr2zbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>rr�)r*rrzr�rbr6r]rr@rRr�Zcall_args_listrrr�)rrr:rrr*�contextrr	)rr
�4test_run_coroutine_threadsafe_task_factory_exceptionhszPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF)rrrr4rr?r�rrrrrr rr	r	)r+r
r s

rcs0eZdZ�fdd�Z�fdd�Zdd�Z�ZS)�
SleepTestscs"t���t��|_t�d�dS)N)r3r4rrEr*rW)r)r+r	r
r4�s

zSleepTests.setUpcs|j��d|_t���dS)N)r*r'r3r�)r)r+r	r
r��s
zSleepTests.tearDowncsDd��fdd��tj���fdd��}�j�|�����d�dS)Nrcs�|7�dS)Nr	)r�)rSr	r
�
inc_result�sz.SleepTests.test_sleep_zero.<locals>.inc_resultc3sJ�j��d����d�tjd�jdd�EdH}���d��|�dS)Nrrr�)r*rS)r*r�rRrr�)r�)r"rSrr	r
r-�s
z(SleepTests.test_sleep_zero.<locals>.coro�)rr?r*r@rR)rr-r	)r"rSrr
�test_sleep_zero�s
zSleepTests.test_sleep_zero)rrrr4r�r$rr	r	)r+r
r!�sr!cs@eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Z�ZS)�CompatibilityTestscs"t���t��|_t�d�dS)N)r3r4rrEr*rW)r)r+r	r
r4�s

zCompatibilityTests.setUpcs|j��d|_t���dS)N)r*r'r3r�)r)r+r	r
r��s
zCompatibilityTests.tearDowncs0tj�fdd��}�j�|��}��d|�dS)Nc3stjd�jd�EdHdS)Nr)r*rN)rr�r*r	)rr	r
r-�sz:CompatibilityTests.test_yield_from_awaitable.<locals>.cororN)rr?r*r@rR)rr-rSr	)rr
�test_yield_from_awaitable�sz,CompatibilityTests.test_yield_from_awaitablecsRtjdd���tj�fdd������fdd�}�j�|��}��ddg|�dS)	NcSsdS)N�ok1r	r	r	r	r
r��sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro1c3stjd�jd�EdHdS)Nr)r*�ok2)rr�r*r	)rr	r
r��sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro2c�stj�����jd�IdHS)N)r*)rrAr*r	)r�r�rr	r
r��sz;CompatibilityTests.test_await_old_style_coro.<locals>.innerr'r()rr?r*r@rR)rr�rSr	)r�r�rr
�test_await_old_style_coro�s
z,CompatibilityTests.test_await_old_style_corocCst�d�}td|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-cr�)r�)�textwrap�dedentr)rr�r	r	r
�test_debug_mode_interop�sz*CompatibilityTests.test_debug_mode_interop)	rrrr4r�r&r)r,rr	r	)r+r
r%�s

r%�__main__)F)>r��
contextlibr�r�r7rmr�r�ror*rJZunittestrXrrrrrZtest.test_asynciorrzrKrZtest.support.script_helperrr?r�contextmanagerrrrr r)r�r�Z
skipUnlessr�ZTestCaser�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rr!r%rr�r	r	r	r
�<module>s�

	:5

r
"fTcc: