HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_asyncio/__pycache__/test_tasks.cpython-38.opt-2.pyc
U

/D�g���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlm
Z
ddlZddlmZddlmZddlmZddlmZddlmZddlmZd	d
�Zdd�Zejd
d��ZdOdd�ZGdd�d�ZGdd�d�ZGdd�d�Z dd�Z!Gdd�d�Z"e�#e$ed��oDe$ed�d�Gdd �d e e"ej%��Z&e�#e$ed��oxe$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+d,�d,e e"ej%�Z,e!Gd-d.�d.e ej%��Z-e�#e$ed�d�Gd/d0�d0ej%��Z.Gd1d2�d2�Z/Gd3d4�d4ej%e/�Z0e�#e$ed5�d�Gd6d7�d7ej%e/��Z1Gd8d9�d9�Z2Gd:d;�d;e2ej%�Z3e�#e$ed�d�Gd<d=�d=e2ej%��Z4Gd>d?�d?ej%�Z5Gd@dA�dA�Z6GdBdC�dCe6ej%�Z7GdDdE�dEe6ej%�Z8GdFdG�dGej%�Z9GdHdI�dIej%�Z:GdJdK�dKej%�Z;GdLdM�dMej%�Z<e=dNk�r�e�>�dS)P�N)�mock)�
coroutines)�futures)�tasks)�utils)�support)�assert_python_okcCst�d�dS�N)�asyncioZset_event_loop_policy�rr�;/opt/cppython/lib/python3.8/test/test_asyncio/test_tasks.py�tearDownModulesr
c�sdSr	rrrrr�coroutine_functionsrccs*tj}|j}z||_dVW5||_XdSr	)r
r�_DEBUG)ZenabledrZ	old_debugrrr�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�framerrr�format_coroutine/s
�rc@seZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r��selfrrr�__repr__>szDummy.__repr__cGsdSr	r)r�argsrrr�__call__AszDummy.__call__N)�__name__�
__module__�__qualname__rrrrrrr<src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CoroLikeObjectcCstd��dS�N�*)�
StopIteration)r�vrrr�sendFszCoroLikeObject.sendcGsdSr	r)r�excrrr�throwIszCoroLikeObject.throwcCsdSr	rrrrr�closeLszCoroLikeObject.closecCs|Sr	rrrrr�	__await__OszCoroLikeObject.__await__N)r r!r"r(r*r+r,rrrrr#Esr#cs�eZdZdZdZd�dd�Zdd�Z�fdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4dcdd�Z5dedf�Z6dgdh�Z7didj�Z8dkdl�Z9dmdn�Z:dodp�Z;dqdr�Z<dsdt�Z=dudv�Z>dwdx�Z?dydz�Z@d{d|�ZAd}d~�ZBdd��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zced�ed��d�dÄ�Zfed�edġd�dƄ�Zgd�dȄZhd�dʄZid�d̄Zjd�d΄Zkd�dЄZld�d҄Zmd�dԄZnd�dքZoed�ed��d�d؄�Zpd�dڄZqd�d܄Zrd�dބZsd�d�Ztd�d�Zud�d�Zvd�d�Zwd�d�Zxd�d�Zyd�d�Zz�Z{S)��
BaseTaskTestsN�TestTaskcCs|jj|||d�S)N)�loop�name)�	__class__�Task)rr/�coror0rrr�new_taskXszBaseTaskTests.new_taskcCs|jj|d�S�N�r/)r1�Future�rr/rrr�
new_future[szBaseTaskTests.new_futurecs6t�������_�j��j��fdd��j_dS)Ncs���j�Sr	)r9r/rrrr�<lambda>b�z%BaseTaskTests.setUp.<locals>.<lambda>)�super�setUp�
new_test_loopr/�set_task_factoryr4�
create_futurer�r1rrr=^s

zBaseTaskTests.setUpcsLGdd�d���fdd���j�tj��fdd�td�D�d�ji��dS)	Nc@seZdZdd�ZdS)z1BaseTaskTests.test_task_del_collect.<locals>.EvilcSst��dSr	)�gcZcollectrrrr�__del__fsz9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__N)r r!r"rCrrrr�EvilesrDc�s��Sr	rr)rDrr�runisz0BaseTaskTests.test_task_del_collect.<locals>.runcsg|]}���j����qSr)r4r/)�.0�_)rErrr�
<listcomp>msz7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>�dr/)r/�run_until_completer
�gather�rangerr)rDrErr�test_task_del_collectds���z#BaseTaskTests.test_task_del_collectc	CsVt��}|�|�}dd�}z,|�td��|j�||��W5QRXW5|��XdS)Nc�s|IdHdSr	r��futrrrrEusz1BaseTaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)r
�new_event_loopr9r+�assertRaisesRegex�RuntimeErrorr/rJ)r�
other_looprOrErrr�test_other_loop_futureqs
�z$BaseTaskTests.test_other_loop_futurec	sF�fdd�}tj|�|jd��|�td��|j���W5QRXdS)Nc�s�IdHdSr	rr��taskrr�test�sz6BaseTaskTests.test_task_awaits_on_itself.<locals>.testr6zTask cannot await on itself)r
�
ensure_futurer/rQrRrJ)rrWrrUr�test_task_awaits_on_itselfs�z(BaseTaskTests.test_task_awaits_on_itselfcCs�dd�}|�|j|��}|j�|�|�|���|�|��d�|�|j|j�|�|�	�|j�t
��}|�|�|�||��}|�|j|�|�|�|�
�dS)Nc�sdS�N�okrrrrr�notmuch�sz.BaseTaskTests.test_task_class.<locals>.notmuchr[)r4r/rJ�
assertTrue�done�assertEqual�result�assertIs�_loop�get_loopr
rP�set_event_loopr+�rr\�tr/rrr�test_task_class�s

zBaseTaskTests.test_task_classc	Cs�|�t��tjdd��}W5QRXtj|�|jd�}|j�|�|�|���|�	|�
�d�|�|j|j�t�
�}|�|�tj|�|d�}|�|j|�|�|�|��dS)NcSsdSrZrrrrrr\�sz;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuchr6r[)�assertWarns�DeprecationWarningr
�	coroutinerXr/rJr]r^r_r`rarbrPrdr+rerrr�test_ensure_future_coroutine�s

z*BaseTaskTests.test_ensure_future_coroutinec	Cs�|�|j�}|�d�t�|�}|j�|�|�|���|�|�	�d�|�
||�t��}|�|�|�
t��tj||d�}W5QRX|��tj||jd�}|�
||�dS)N�kor6)r9r/�
set_resultr
rXrJr]r^r_r`rarPrd�assertRaises�
ValueErrorr+)rZf_orig�fr/rrr�test_ensure_future_future�s


z'BaseTaskTests.test_ensure_future_futurec	Cs�dd�}|�|j|��}t�|�}|j�|�|�|���|�|��d�|�	||�t�
�}|�|�|�t
��tj||d�}W5QRX|��tj||jd�}|�	||�dS)Nc�sdSrZrrrrrr\�sz6BaseTaskTests.test_ensure_future_task.<locals>.notmuchr[r6)r4r/r
rXrJr]r^r_r`rarPrdrnror+)rr\Zt_origrfr/rrr�test_ensure_future_task�s

z%BaseTaskTests.test_ensure_future_taskc	CsfGdd�d�}|�t��tjdd��}W5QRXt��}|�|�tj||��|d�}|�|�dS)Nc@seZdZdd�Zdd�ZdS)z6BaseTaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dSr	�r3�rr3rrr�__init__�sz?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHSr	rsrrrrr,�sz@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)r r!r"rur,rrrr�Aw�srvcSsdSrZrrrrrr3�sz8BaseTaskTests.test_ensure_future_awaitable.<locals>.coror6)rhrir
rjrPrdrXrJ)rrvr3r/rOrrr�test_ensure_future_awaitable�s

z*BaseTaskTests.test_ensure_future_awaitablec	Cs$|�t��t�d�W5QRXdSrZ)rn�	TypeErrorr
rXrrrr�test_ensure_future_neither�sz(BaseTaskTests.test_ensure_future_neitherc	CsFt��}|�|j�}|�td��tj||d�W5QRX|��dS)NzRThe future belongs to a different loop than the one specified as the loop argumentr6)r
rPr9r/rQrorXr+)rr/rprrr�test_ensure_future_error_msg�s
z*BaseTaskTests.test_ensure_future_error_msgcs@d��fdd����fdd�����fdd�}�j�|��dS)Nc�s��IdHdSr	rr)�barrr�foo�sz)BaseTaskTests.test_get_stack.<locals>.fooc�sd�jdd�}z��|djjd�W5d}Xt��}�jd|d�|�d�|��}��	|d�dS)Nr)�limitrr|)r}�filezfoo\(\) running)
Z	get_stackr_�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)rpr~�tb)�Trrrr{�s
z)BaseTaskTests.test_get_stack.<locals>.barc�s tj���jd���IdHdSr5)r
rXr/r)r�r|rrr�runnersz,BaseTaskTests.test_get_stack.<locals>.runner�r/rJ)rr�r)r�r{r|rr�test_get_stack�s
zBaseTaskTests.test_get_stackc	CsX|j�d�dd�}|�|jd�|�|jd�|�|jt�t�|�\}}d||f}|�}d}|�|jd�|�|j|�|�	|j|�}|�
t��t|d||j
dd	�}|�t|�d
|�|��|�t|�d|�|�tj|jj|�t|d||j
�}|�t|�d
|�|�	|j|��}|j�|�t|d||j
�}|�t|�d|�dS)NFc�sdS�N�abcrrrrrr\sz-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_debugr_r r�r"r!�
test_utils�get_function_sourcer4�add_done_callbackrr�_source_traceback�repr�cancelrnr
�CancelledErrorrJ)	rr\�filename�linenor�gen�
coro_qualnamerfr3rrr�test_task_reprsX��
�
���
��
�zBaseTaskTests.test_task_reprcCs�dd�}|�|j|�d�}|�|j|�d�}|�t|�t|��t�dt|��}|�|�t�dt|��}|�|�|�t|�	d��t|�	d���|j�
|�|j�
|�dS)Nc�sdS�N�{rrrrrr\Fsz;BaseTaskTests.test_task_repr_autogenerated.<locals>.notmuchz ^<Task pending name='Task-(\d+)'r)r4r/ZassertNotEqualr��re�match�assertIsNotNoneZ
assertLess�int�grouprJ)rr\�t1�t2Zmatch1Zmatch2rrr�test_task_repr_autogeneratedEs

 z*BaseTaskTests.test_task_repr_autogeneratedcCsDdd�}|�|j|��}|�dh�|�|��d�|j�|�dS)Nc�sdSr�rrrrrr\Xsz:BaseTaskTests.test_task_repr_name_not_str.<locals>.notmuch�z{6})r4r/�set_namer_�get_namerJ)rr\rfrrr�test_task_repr_name_not_strWs
z)BaseTaskTests.test_task_repr_name_not_strc	Cst|j�d�|�t��tjdd��}W5QRX|�|jd�|�|j	d�|�|j
t�|�}d}d}|�|j|�|�|j	|�tjr�tjr�t
�|�\}}|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)NFcSsdSr�rrrrrr\dsz<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�rhrir
rjr_r r�r"r!rrr�r�r��gi_code�co_filename�co_firstlinenor�r4r�rrrJ)rr\r�Z	coro_namer�r�r�rr3�coderfrrrr�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�s
|IdHSr	rrNrrr�wait_for�sz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_forz<Task .* wait_for=%s>)r/r�r9r4r��run_brieflyr�r�r��escapermrJ)rr�rOrVrrr�test_task_repr_wait_for�s
�
z%BaseTaskTests.test_task_repr_wait_forc
Cs�td��f|j�d�dd�}|�t��t�t�|d��}W5QRX|j�	|d��}d|_
|�|jj
�W5QRXt|j�}d}|�||�dS)NTc�st�d�IdHdS�Nr�r
�sleep)�x�yrrr�func�sz>BaseTaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzL<coroutine object \w+\.test_task_repr_partial_corowrapper\.<locals>\.func at)rr/r�rhrir
rj�	functools�partial�create_task�_log_destroy_pending�
addCleanupZ_coror+r�r�)rr�Zpartial_funcrVZ	coro_repr�expectedrrr�"test_task_repr_partial_corowrapper�s

�z0BaseTaskTests.test_task_repr_partial_corowrappercs<��fdd�}dd��dd��|�}|�|j�|�d�dS)Nc�s ��IdH}��IdH}||Sr	r)�a�b��inner1�inner2rr�outer�sz-BaseTaskTests.test_task_basics.<locals>.outerc�sdSr$rrrrrr��sz.BaseTaskTests.test_task_basics.<locals>.inner1c�sdS)Ni�rrrrrr��sz.BaseTaskTests.test_task_basics.<locals>.inner2i)r_r/rJ)rr�rfrr�r�test_task_basics�s
zBaseTaskTests.test_task_basicsc	s��fdd�}��|�}dd�}��||��}|�|j���tj��|�|�W5QRX��|�	����|�
����|���dS)Nc3sdV}��d|�dVdS�N�$@r��assertAlmostEqual�Zwhenrrrr��sz&BaseTaskTests.test_cancel.<locals>.genc�st�d�IdHdS)Nr��r�rrrrrV�sz'BaseTaskTests.test_cancel.<locals>.task)r>r4�	call_soonr�rnr
r�rJr]r^�	cancelled�assertFalse)rr�r/rVrfrrr�test_cancel�s
zBaseTaskTests.test_cancelc	Cs�|�t��tjdd��}W5QRX|�|j|��}t�|j�|��|�	tj
|jj|�|�|�
��|�|���|�|���dS)NcssdVdVdS�Nr�rrrrrrV�sz-BaseTaskTests.test_cancel_yield.<locals>.task)rhrir
rjr4r/r�r�r�rnr�rJr]r^r�r��rrVrfrrr�test_cancel_yield�s�zBaseTaskTests.test_cancel_yieldc	s�|�|j���fdd�}|�|j|��}t�|j����|�tj��|j�	|�W5QRX|�
����|�
|���dS)Nc�s�IdHdSr�rr�rprrrV�s
z4BaseTaskTests.test_cancel_inner_future.<locals>.task)r9r/r4r�r�r�rnr
r�rJr]r�r�rr�r�test_cancel_inner_future�sz&BaseTaskTests.test_cancel_inner_futurec	s�|�|j���fdd�}|�|j|��}t�|j����|��|�tj��|j�	|�W5QRX|�
|���|�
����|�
|���dS)Nc�s�IdHdSr�rrr�rrrV
s
zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task)
r9r/r4r�r�r�rnr
r�rJr]r^r�r�rr�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�s6�IdHz�IdHWntjk
r0YdSXdSr$�r
r�r��fut1�fut2rrrV"s

z5BaseTaskTests.test_cancel_task_catching.<locals>.taskr%�r9r/r4r�r�ra�_fut_waiterrmr�r]r�rJr_r��rrVrf�resrr�r�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�IdHWntjk
r.YnX�IdH}|Sr	r�)r��r�r�Zfut3rrrV:s

z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr%r�r�rr�r�test_cancel_task_ignoring5s&	

z'BaseTaskTests.test_cancel_task_ignoringcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)Nc�s(������j�t�d�IdHdS)NrIr�)r�r]�_must_cancelr
r�r�rrfrrrVWsz4BaseTaskTests.test_cancel_current_task.<locals>.task�
r
rPrdr4r�r�rnr�rJr]r^r�r��rr/rVrr�r�test_cancel_current_taskSs
�z&BaseTaskTests.test_cancel_current_taskcs�t��}��|���fdd�}��||�����������tj|j����	��
����	�������j�������dS)Nc�s������j�dSr�)r�r]r�rr�rrrVlsz.BaseTaskTests.test_cancel_at_end.<locals>.taskr�r�rr�r�test_cancel_at_endgs
�z BaseTaskTests.test_cancel_at_endc	s�t������fdd��d��������fdd�������fdd�}���|�����tj������W5QRX����	������	������	��dS)Ncs���Sr	�r+rr6rrr:�r;z8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>c�s�IdHdSr	rrrNrr�nested�sz6BaseTaskTests.test_cancel_awaited_task.<locals>.nestedc�s4�������t�d�IdH����IdHdSr��r4r
r�r�r)r/r��nested_taskrrVrrr3�sz4BaseTaskTests.test_cancel_awaited_task.<locals>.coro)
r
rPr�r9r4rnr�rJr]r�rtr)rOr/r�r�rrVr�test_cancel_awaited_taskzs
z&BaseTaskTests.test_cancel_awaited_taskc	s��fdd�}��|��d���fdd�}���|��}��t��}��|�W5QRX��t|j�d���|�	�����d���
d����|����t
j�j|�dS)	Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)N皙�����?皙�����?�333333�?r�r�rrrr��sz:BaseTaskTests.test_stop_while_run_in_complete.<locals>.genrc�s6�dkr2t�d�IdH�d7��dkr���qdS)N�
r�rr�)r
r��stopr)r/r�rrrV�s
z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.taskz+Event loop stopped before Future completed.r�r�)r>r4rnrRrJr_�str�	exceptionr�r^r��timer�r
r�)rr�rVrf�cmr)r/rr�r�test_stop_while_run_in_complete�s	
�z-BaseTaskTests.test_stop_while_run_in_completec	CsFdd�}|�|j|��}|�td��d|_W5QRX|j�|�dS)Nc�sdSr	rrrrrr3�sz.BaseTaskTests.test_log_traceback.<locals>.corozcan only be set to FalseT)r4r/rQroZ_log_tracebackrJ�rr3rVrrr�test_log_traceback�s
z BaseTaskTests.test_log_tracebackcsj�fdd�}��|�}��|�}|�d�|�t�|d��}��|d���|�����	d|�
��dS)Nc3sdV}��d|�dSr�r�r�rrrr��szMBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_future_done.<locals>.genr^r)r>r9rmrJr
r�r_r]r^r�r�)rr�r/rO�retrrr�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	sr�fdd�}��|�}d��fdd�}��tj��|�t�|�d��W5QRX��d|������d�dS)Nc3sdV}��d|�dSr�r�r�rrrr��szZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started.<locals>.genFc�sd�dS�NTrr)�foo_startedrrr|�szZBaseTaskTests.test_wait_for_timeout_less_then_0_or_0_coroutine_do_not_started.<locals>.foor)	r>rnr
�TimeoutErrorrJr�r�r�r_�rr�r/r|r)rrr�?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�}dD]�}�j|d�����|�}d��fdd�}��||��}��tj��|�t�||��W5QRX��|�	����|�
����d|�����
�d�W5QRXqdS)	Nc3s(dV}��d|�dV}��d|�dS)Nr�rr�r�rrrr��szABaseTaskTests.test_wait_for_timeout_less_then_0_or_0.<locals>.gen)rr��timeoutc�s$d�zt�d�IdHW5d�XdS�NTFr�r^r�r��foo_runningrrr|�s
zABaseTaskTests.test_wait_for_timeout_less_then_0_or_0.<locals>.foorF)ZsubTestr>r4rnr
rrJr�r]r^r�r�r�r_)rr�rr/r|rOr�rrr�&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��|�t�|d��W5QRX��|�����|�	����
d|������d�dS)Nc3s.dV}��d|�dV}��d|�dV}dS)Nr�rr�r�r�rrrr�s
z(BaseTaskTests.test_wait_for.<locals>.genc�s$d�zt�d�IdHW5d�XdSrr�rrrrr|s
z(BaseTaskTests.test_wait_for.<locals>.foor�F)
r>r4rnr
rrJr�r]r^r�r�r�r_�rr�r/r|rOrr	r�
test_wait_for
s
	zBaseTaskTests.test_wait_forcCs6|��}dd�}|�tj|�dd��}|�|d�dS)Nc�sdS)Nr^rrrrrr30sz2BaseTaskTests.test_wait_for_blocking.<locals>.cororr^)r>rJr
r�r_)rr/r3r�rrr�test_wait_for_blocking-sz$BaseTaskTests.test_wait_for_blockingc	s��fdd�}��|�}dd�}t�|�z<��||��}��tj��|�t�|d��W5QRXW5t�d�X��d|�	����
|�����
|���dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nr�r�{�G�z�?r�r�rrrr�8s
z9BaseTaskTests.test_wait_for_with_global_loop.<locals>.genc�st�d�IdHdS)Nr�r^r�rrrrr|Asz9BaseTaskTests.test_wait_for_with_global_loop.<locals>.foor)
r>r
rdr4rnrrJr�r�r�r]r^r�rrrr�test_wait_for_with_global_loop6s

 z,BaseTaskTests.test_wait_for_with_global_loopcCsTdd�}|�|�}|�|�}tj|dd�}|�d|jd�|�|�}|�|d�dS)NcssdVdVdVdS�Nr�rrrrrr�Ssz7BaseTaskTests.test_wait_for_race_condition.<locals>.genr�rr�r[)r>r9r
r��
call_laterrmrJr_�rr�r/rOrVr�rrr�test_wait_for_race_conditionQs


z*BaseTaskTests.test_wait_for_race_conditioncCshdd�}|�|�}|�|�}|�d|jd�|�tj|dd��}|�d|j�|�|�}|�	|d�dS)NcssdVdVdVdVdSrrrrrrr�aszDBaseTaskTests.test_wait_for_cancellation_race_condition.<locals>.genr�r[rr)
r>r9rrmr�r
r�r�rJr_rrrr�)test_wait_for_cancellation_race_condition`s


z7BaseTaskTests.test_wait_for_cancellation_race_conditioncs8t������j�d����fdd�}��|��dS)NFc	�sT�fdd�}���|��}��tj��tj|dd�IdHW5QRX����dS)Nc�sNzBzt�d�IdHWn(tjk
r>t�d�IdH�YnXW5d�XdS)NTr�r��r
r�r�r��	task_donerr�innerwszSBaseTaskTests.test_wait_for_waits_for_task_cancellation.<locals>.foo.<locals>.innerr�r)r4rnr
rr�r]�r�
inner_task�r/rrrrr|vs

zDBaseTaskTests.test_wait_for_waits_for_task_cancellation.<locals>.foo�r
rPr�r+rJ�rr|rrr�)test_wait_for_waits_for_task_cancellationps
z7BaseTaskTests.test_wait_for_waits_for_task_cancellationc	stt������j�d����fdd�}��tj��}��|��W5QRX����|jj	}��
t|�tj�dS)NFc�sB�fdd�}���|��}t�d�IdHtj|dd�IdHdS)Nc�sNzBzt�d�IdHWn(tjk
r>t�d�IdH�YnXW5d�XdS)NTr�r�rrrrrr�sz_BaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0.<locals>.foo.<locals>.innerr�rr)r4r
r�r�rrrrr|�s
zPBaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0.<locals>.foo)
r
rPr�r+rnrrJr]r��__context__r_�typer�)rr|r�Zchainedrrr�5test_wait_for_waits_for_task_cancellation_w_timeout_0�s
zCBaseTaskTests.test_wait_for_waits_for_task_cancellation_w_timeout_0cs2t������j���fdd�}��|��dS)Nc	�s�dd�}���|��}tj|dd�}���|�}t�d�IdH|����tj��|IdHW5QRX��|IdHd�dS)Nc�slzt�d�IdHWnRtjk
rfzt�d�IdHWn&tjk
r`t�d�IdHYnXYnXdS)Nr�r%rrrrrr�szIBaseTaskTests.test_wait_for_self_cancellation.<locals>.foo.<locals>.innerr�rr�r%)r4r
r�r�r�rnr�r_)rr�waitrV�r/rrrr|�sz:BaseTaskTests.test_wait_for_self_cancellation.<locals>.foorrrr#r�test_wait_for_self_cancellation�sz-BaseTaskTests.test_wait_for_self_cancellationcs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||���}��|d���d|���|���||���}��d|�����|d�dS)Nc3s.dV}��d|�dV}��d|�dVdS�Nr�r�333333�?r�r�rrrr��s
z$BaseTaskTests.test_wait.<locals>.genr�r&c�s>t���g�IdH\}}��|t��g����|t��dSr$�r
r"r_�set�r^�pending�r�r�rrrr|�sz$BaseTaskTests.test_wait.<locals>.foor%)r>r4r
r�rJr_r�r��rr�r/r|r�rr+r�	test_wait�s
zBaseTaskTests.test_waitcsx�fdd�}��|�}��|t�d�����|t�d������fdd�}t�|�|���||���}��|d�dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nrr���Q��?r�r�rrrr��s
z5BaseTaskTests.test_wait_with_global_loop.<locals>.genrr.c�s>t���g�IdH\}}��|t��g����|t��dSr$r'r)r+rrr|�sz5BaseTaskTests.test_wait_with_global_loop.<locals>.foor%)r>r4r
r�rdrJr_r,rr+r�test_wait_with_global_loop�s

�z(BaseTaskTests.test_wait_with_global_loopc	Cs�|�t��tjdd��}W5QRX|d�}|�|jt�|||d�g��}|j�|�\}}|�|�|�	t
dd�|D��ddh�dS)NcSs|Sr	r��srrrr3sz:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.cororW�spamcss|]}|��VqdSr	�r`�rFrprrr�	<genexpr>
sz?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)rhrir
rjr4r/r"rJr�r_r()rr3�crVr^r*rrr�test_wait_duplicate_coroutines�s�
z,BaseTaskTests.test_wait_duplicate_coroutinescCsR|�t|jjt�t���t�d�}tj|gdd�}|�t|jj|�|��dS)Nr�r��return_when)	rnror/rJr
r"r(r�r+)rZ
sleep_coroZ	wait_cororrr�test_wait_errorss
�
�zBaseTaskTests.test_wait_errorscs��fdd�}��|�}��|t�d��}��|t�d��}��|tj||gtjd��}|�|�\}}��|h|���|h|���|�	����
|�	����|�����
d|���|�d�|�t�||g��dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nr�rr�r�r�rrrr�s
z4BaseTaskTests.test_wait_first_completed.<locals>.genr�r�r8r�)r>r4r
r�r"�FIRST_COMPLETEDrJr_r�r^r]�assertIsNoner`r�r��advance_time)rr�r/r�r�rVr^r*rrr�test_wait_first_completeds"
�
z'BaseTaskTests.test_wait_first_completedcCs�dd�}dd�}|�|j|��}|�|j|��}|�|jtj||gtjd��}|j�|�\}}|�||h|�|�|���|�	|�
��|�|���|�	|�
��dS)Nc�st�d�IdHdSr�r�rrrr�coro1=sz2BaseTaskTests.test_wait_really_done.<locals>.coro1c�s$t�d�IdHt�d�IdHdSr�r�rrrr�coro2@sz2BaseTaskTests.test_wait_really_done.<locals>.coro2r8)r4r/r
r"r;rJr_r]r^r<r`)rr?r@r�r�rVr^r*rrr�test_wait_really_done9s�z#BaseTaskTests.test_wait_really_donec	s��fdd�}��|�}��|t�d��}dd�}��||��}��|tj||gtjd��}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3sdV}��d|�dVdSr�r�r�rrrr�Ssz4BaseTaskTests.test_wait_first_exception.<locals>.genr�c�std��dS)N�err)�ZeroDivisionErrorrrrrr)]sz4BaseTaskTests.test_wait_first_exception.<locals>.excr8rr��r>r4r
r�r"�FIRST_EXCEPTIONrJr_r�r�r=�	rr�r/r�r)r�rVr^r*rrr�test_wait_first_exceptionQs
�
z'BaseTaskTests.test_wait_first_exceptionc	s��fdd�}��|�}��|t�d��}dd�}��||��}tj||gtjd�}|�|�\}}��|h|���|h|���d|�	��|�
d�|�t�||g��dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Nr�rrr�r�rrrr�ps
z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.genr�c�st�d�IdHtd��dS)NrrB�r
r�rCrrrrr)|sz<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.excr8rr�rDrFrrr�!test_wait_first_exception_in_waitns

z/BaseTaskTests.test_wait_first_exception_in_waitcs��fdd�}��|�}��|t�d���dd�}��||������fdd�}|���||�����d|���|���||�����d|���dS)	Nc3s.dV}��d|�dV}��d|�dVdSr%r�r�rrrr��s
z3BaseTaskTests.test_wait_with_exception.<locals>.genr�c�st�d�IdHtd��dS)Nr&ZreallyrHrrrr�sleeper�sz7BaseTaskTests.test_wait_with_exception.<locals>.sleeperc�s\t���g�IdH\}}��t|�d���|t��tdd�|D��}��t|�d�dS)Nr�css|]}|��dk	r|VqdSr	)r�r4rrrr5�szFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)r
r"r_�lenr()r^r*�errorsr+rrr|�s
z3BaseTaskTests.test_wait_with_exception.<locals>.foor&)r>r4r
r�rJr�r�)rr�r/rJr|rr+r�test_wait_with_exception�s
z&BaseTaskTests.test_wait_with_exceptioncs��fdd�}��|�}��|t�d�����|t�d������fdd�}|���||�����d|���|�d�|�t���g��dS)	Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdS)Nr�rr&�)\��(�?r�r�rrrr��sz1BaseTaskTests.test_wait_with_timeout.<locals>.genr�r&c�sDtj��gdd�IdH\}}��|t�g����|t�g��dS)NrNrr'r)r+rrr|�sz1BaseTaskTests.test_wait_with_timeout.<locals>.foorNr�)	r>r4r
r�rJr�r�r=r"rrr+r�test_wait_with_timeout�s	

z$BaseTaskTests.test_wait_with_timeoutcs��fdd�}��|�}��|t�d��}��|t�d��}|�tj||gdd��\}}��|t|g����|t|g����d|�	��|�
d�|�t�||g��dS)Nc3s@dV}��d|�dV}��d|�dV}��d|�dVdSr%r�r�rrrr��sz8BaseTaskTests.test_wait_concurrent_complete.<locals>.genr�r&rr�)r>r4r
r�rJr"r_r(r�r�r=)rr�r/r�r�r^r*rrr�test_wait_concurrent_complete�s	
�
z+BaseTaskTests.test_wait_concurrent_completec	s2dd�}|�|��d�_t��d�|�t��tj���fdd��}W5QRX|dd��|dd	��|d
d������fdd
�}|�t����|��|���}W5QRX|�	d
��
��|�d|dd�k�|�d	|dd�k�|�|dd�|�t����|��|���}W5QRX|�	d
��
��dS)NcssdVdVdVdVdS�Nrrrrrrrr��sz,BaseTaskTests.test_as_completed.<locals>.geng�?Fc3s@t�|�EdH��|��s<d�kr<d�kr<d���d�|S)Nr�r�Tg�Q���?)r
r��addr=)�dtr�)�	completedr/�time_shiftedrrrJ�s

z0BaseTaskTests.test_as_completed.<locals>.sleeperrr�r�r&r6c�s2g}tj���g�d�D]}|�|IdH�q|Sr5)r
�as_completed�append)�valuesrp)r�r�r6r/rrr|sz,BaseTaskTests.test_as_completed.<locals>.foor�)
r>Zslow_callback_durationr(rhrir
rjrJr4r�r�r]r_)rr�rJr|r�r)r�r�r6rTr/rUr�test_as_completed�s*
	


zBaseTaskTests.test_as_completedc	s�dd�}|�|����t�dd�����t�dd������fdd�}|�t����|��|���}W5QRX|�t	|�d	|�|�|d
d�|�|dd
d	�|�
|ddtj�|�d
��
����d���t���g��dS)NcssdVdVdVdVdS)Nrr�rrrrrr�sz9BaseTaskTests.test_as_completed_with_timeout.<locals>.genr�r�r&r�c�s�g}tj��gd�d�D]b}|r*��d�z|IdH}|�d|f�Wqtjk
rx}z|�d|f�W5d}~XYqXq|S)N���Q��?�rr/g{�G�z�?rr�)r
rVr=rWr)rXrpr'r)�r�r�r/rrr|s

"z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foor�r)rr�rrZr�)r>r�r
r�rhrirJr4r_rK�assertIsInstancerr�r�r=r")rr�r|r�rr\r�test_as_completed_with_timeouts

z,BaseTaskTests.test_as_completed_with_timeoutc	s\dd�}��|��t�dd�����fdd�}��t�������|���W5QRXdS)NcssdVdVdVdSrQrrrrrr�8sz@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.genrr�c�s2tj�gd�d�D]}|IdH}��|d�qdS)Nrr[r�)r
rVr_)rpr'�r�r/rrrr|As
z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r>r
r�rhrirJr4)rr�r|rr_r�%test_as_completed_with_unused_timeout6s
z3BaseTaskTests.test_as_completed_with_unused_timeoutc		Cs�dd�}|�|�}t�dd�}t�dd�}||h}|�t��ttj||d��}W5QRX|�t|�d�|�	|d	�}|�|d�|�
d|���|�d�|�	|d
�}|�|d�|�
d|���dS)NcssdVdVdVdS)Nr皙�����?rrrrrr�Ksz9BaseTaskTests.test_as_completed_reverse_wait.<locals>.genrar�r�r�r6r�rr)
r>r
r�rhri�listrVr_rKrJr�r�r=)	rr�r/r�r��fs�futsr�r�rrr�test_as_completed_reverse_waitIs

z,BaseTaskTests.test_as_completed_reverse_waitc
	s��fdd�}��|�}t�dd�}t�dd�}||h}��t��ttj||d��}W5QRX��t|�d�t�	|�}|�
|�\}}	��tdd	�|D��ddh�dS)
Nc3s.dV}��d|�dV}��d|�dVdS)Nrarr�r�rrrr�ds
z7BaseTaskTests.test_as_completed_concurrent.<locals>.genrar�r�r6r�css|]}|��VqdSr	r3r4rrrr5usz=BaseTaskTests.test_as_completed_concurrent.<locals>.<genexpr>)r>r
r�rhrirbrVr_rKr"rJr()
rr�r/r�r�rcrd�waiterr^r*rrr�test_as_completed_concurrentbs

z*BaseTaskTests.test_as_completed_concurrentc	s���t��tjdd���W5QRX��t��tj��fdd��}W5QRX��t��"���j|��}�j�|�W5QRX|��}��t	|�ddh���t
|�d�dS)NcSs|Sr	rr0rrrr3zszBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3s@g}�d�}tj||�d�g�jd�D]}|�|EdH�q&|S)N�hamr2r6)r
rVr/rW)r`r6rp�r3rrrr�s�
zDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerrhr2r�)rhrir
rjr4r/rJr`r_r(rK)rr�rOr`rrir�&test_as_completed_duplicate_coroutineswsz4BaseTaskTests.test_as_completed_duplicate_coroutinescsl�fdd�}��|�}dd�}��||dd��}|�|���|�����|��d���d|���dS)Nc3s.dV}��d|�dV}��d|�dVdS)Nrar�r�r�rrrr��s
z%BaseTaskTests.test_sleep.<locals>.genc�s.t�|d�IdHt�|d|�IdH}|S)Nr�r�)rS�argr�rrrrJ�sz)BaseTaskTests.test_sleep.<locals>.sleeperr��yeah)	r>r4rJr]r^r_r`r�r�)rr�r/rJrfrrr�
test_sleep�s

zBaseTaskTests.test_sleepcs��fdd�}��|�}��|t�dd��}d�|j���fdd�}||_t�|����j�|�	�t�|���
�j�dS)Nc3sdV}��d|�dVdSr�r�r�rrrr��sz,BaseTaskTests.test_sleep_cancel.<locals>.genr�rlcs�||f|����Sr	r)�delay�callbackr)�handle�orig_call_laterrrr�sz3BaseTaskTests.test_sleep_cancel.<locals>.call_later)r>r4r
r�rr�r�r�Z
_cancelledr�r])rr�r/rfrr)rprqrr�test_sleep_cancel�s


zBaseTaskTests.test_sleep_cancelcsZ�fdd�}��|��dd�����fdd�}|�}����|�d���d����dS)	Nc3s.dV}��d|�dV}��d|�dVdS)Nr�r�r�r�rrrr��s
z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genc�st�|�IdHdSr	r�)rSrrrr��sz;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepc�sN����d��}��d|j�z|IdHWntjk
rDYdSXdSdS)Nrsr�r�zslept in)r4rr�r
r�)rJ�r/rr�rr�doit�sz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitr�r�)r>r_rJr�r�)rr�ruZdoerrrtr�test_task_cancel_sleeping_task�s

z,BaseTaskTests.test_task_cancel_sleeping_taskcs�|�|j���fdd�}|�|j|��}t�|j�|�|j��|��t�|j�|�t	j
|jj|�|�|j�|�
����dS)Nc�s�IdHdSr	rrrNrrr3�sz:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro)r9r/r4r�r�rar�r�rnr
r�rJr<r]r�r�rrNr�test_task_cancel_waiter_future�s�z,BaseTaskTests.test_task_cancel_waiter_futurec	Cszdd�}|�}|�|j|�}|�td��|�d�W5QRX|�td��|�t��W5QRX|�|j�|�d�dS)Nc�sdS)Nrlrrrrrr\�sz4BaseTaskTests.test_task_set_methods.<locals>.notmuchznot support set_resultr[znot support set_exceptionrl)	r4r/rQrRrm�
set_exceptionror_rJ)rr\r�rVrrr�test_task_set_methods�s
�z#BaseTaskTests.test_task_set_methodsc	Cs<|�t��tjdd��}W5QRX|�t|jj|��dS)NcssdVdVdS)Nrrlrrrrrr\sz/BaseTaskTests.test_step_result.<locals>.notmuch�rhrir
rjrnrRr/rJ)rr\rrr�test_step_result�s�zBaseTaskTests.test_step_resultcs�Gdd�dtj�}||jd��d���fdd�}|�|j|��}t�|j�|��j�t�}��	|�t�|j�|�
|��|�|���|�|�
��dS)Ncs(eZdZ�fdd�Z�fdd�Z�ZS)z2BaseTaskTests.test_step_result_future.<locals>.Futcsd|_t�j||�dS�NF)�cb_addedr<ru)rr�kwdsrArrrusz;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j||�dSr�)r}r<r��rr�kwargsrArrr�szDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback�r r!r"rur��
__classcell__rrrAr�Fut
sr�r6c�s�IdH�dSr	rr�rOr`rr�wait_for_futuresz>BaseTaskTests.test_step_result_future.<locals>.wait_for_future)r
r7r/r4r�r�r]r}�objectrmrar^r<r`)rr�r�rfr�rr�r�test_step_result_future
s	
z%BaseTaskTests.test_step_result_futurecs��fdd�}��|�}dd��t����fdd�}��||��}t�|�|����|�����ttj|���	|�����|�
����|����dS)Nc3sdV}��d|�dVdSr�r�r�rrrr�*sz;BaseTaskTests.test_baseexception_during_cancel.<locals>.genc�st�d�IdHdS)Nr�r�rrrrrJ1sz?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeperc�s0z��IdHWntjk
r*��YnXdSr	r�r)�base_excrJrr�notmutch6sz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch)
r>�
SystemExitr4r�r�r�r�r^rnr]r�rar�)rr�r/r�rVr)r�rrJr� test_baseexception_during_cancel(s

z.BaseTaskTests.test_baseexception_during_cancelc	Cs|dd�}|�t�|��dd�}|�t�|��|�t��tjdd��}W5QRX|�t�|��|�t�t����dS)NcSsdSr	rrrrr�fnIsz2BaseTaskTests.test_iscoroutinefunction.<locals>.fncss
dVdSr	rrrrr�fn1Nsz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1css
dVdSr	rrrrr�fn2Ssz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2)	r�r
�iscoroutinefunctionrhrirjr]r�Mock)rr�r�r�rrr�test_iscoroutinefunctionHsz&BaseTaskTests.test_iscoroutinefunctionc	sn|�|j��|�t��tj�fdd��}W5QRX|�}|�t��|j�|�W5QRX|�	��
��dS)Nc3s
�VdSr	rrrNrrr�^sz?BaseTaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)r9r/rhrir
rjrnrRrJr�r^�rr�rVrrNr�test_yield_vs_yield_fromZsz&BaseTaskTests.test_yield_vs_yield_fromc	sh|�t��tjdd���W5QRX|�t��tj�fdd��}W5QRX|�}|�t|jj|�dS)Ncss
dVdSr	rrrrrr3jsz>BaseTaskTests.test_yield_vs_yield_from_generator.<locals>.coroc3s ��}z
|VW5|��XdSr	r�)r�rsrrr�os
zIBaseTaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_futurerzr�rrsr�"test_yield_vs_yield_from_generatorhs�z0BaseTaskTests.test_yield_vs_yield_from_generatorc	Csf|�t��tjdd��}W5QRX|�t�|��|�}|�t�|��|j�|�}|�	|d�dS)NcSsdS�NrWrrrrrr�~sz;BaseTaskTests.test_coroutine_non_gen_function.<locals>.funcrW)
rhrir
rjr]r��iscoroutiner/rJr_)rr�r3r�rrr�test_coroutine_non_gen_function|sz-BaseTaskTests.test_coroutine_non_gen_functionc	s�|�|j��|�t��tj�fdd��}W5QRX�fdd�}|�|j|��}|�|j|��}|j�|�}|�|d�|�	|�
��dS)Ncs�Sr	rrrNrrr��szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.funcc�s��d�dSr��rmrrNrrr3�szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.cororW)r9r/rhrir
rjr4rJr_r<r`)rr�r3r�r�r�rrNr�-test_coroutine_non_gen_function_return_future�sz;BaseTaskTests.test_coroutine_non_gen_function_return_futurec	s��jj���t�����j�jd��W5QRX���fdd�}���j|�j����j�����t�����j�jd��W5QRXdS)Nr6c	�s���t�����j|d���W5QRXt�|�zR��t������d���W5QRX��t���������W5QRXW5t�d�XdSr5)rhrira�current_taskr
rdr6�r2rrVrrr3�s
z8BaseTaskTests.test_current_task_deprecated.<locals>.coro)	r1r2rhrir<r�r/r4rJrtrr�r�test_current_task_deprecated�sz*BaseTaskTests.test_current_task_deprecatedcsZ��tj�jd����fdd�}���j|�j����j�����tj�jd��dS)Nr6c�s:��tj|d�����t�d�����t����dSr5)rar
r�r6�rrVrrr3�sz-BaseTaskTests.test_current_task.<locals>.coro)r<r
r�r/r4rJrtrr�r�test_current_task�s
zBaseTaskTests.test_current_taskcs���tj�jd�����j�����j������fdd�}����fdd�}���j|�j������j|�j����j�t���f����tj�jd��dS)Nr6c�sD��tj|d��k��IdH��tj|d��k���d�dS�Nr6T�r]r
r�rmr6)r�r�r�task1rrr?�s
zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c�sD��tj|d��k���d��IdH��tj|d��k�dSr�r�r6)r�r�r�task2rrr@�s

zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)r<r
r�r/r9r4rJr")rr?r@r)r�r�rr�r�r�)test_current_task_with_interleaving_tasks�sz7BaseTaskTests.test_current_task_with_interleaving_taskscs~d����j�����fdd����fdd�}tj|��jd�}t��j�|���j�|����d���	��
��dS)Nrc�s>z�IdHWn tjk
r.�d7��YnX��d�dS)Nrzgot past sleep() in inner())r
r��failr)�proofrrfrrr�sz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.innerc�s<z��IdHWntjk
r.�d7�Yn
X�d7�dS)NrIr�r�r�rr�rrr��s
z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outerr6�e)r9r/r
rXr�r�r�rJr_r]r��rr�rpr)rr�rrfr�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�Nrrr�r�rfrrrs
zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc�s$t���g�IdH\}}�d7�dS�NrI)r
r")�d�pr�rrr�szCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerr6r�r9r/r
rXr�r�r�rnr�rJrmr_r�r�rr�rfr�&test_yield_wait_does_not_shield_cancel�s�
z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<|�|j�}t�|�}|�d�|j�|�}|�|d�dSr$)r9r/r
�shieldrmrJr_)rrr�r�rrr�test_shield_results


z BaseTaskTests.test_shield_resultcCsT|�|j�}t�|�}t�|j�td�}|�|�t�|j�|�|�	�|�dS)Nr�)
r9r/r
r�r�r�rRrxrar�)rrr�r)rrr�test_shield_exceptions

z#BaseTaskTests.test_shield_exceptioncCsH|�|j�}t�|�}t�|j�|��t�|j�|�|���dSr	)	r9r/r
r�r�r�r�r]r��rrr�rrr�test_shield_cancel_inner%s
z&BaseTaskTests.test_shield_cancel_innercCsh|�|j�}t�|�}t�|j�|��t�|j�|�|���|�	d|j
dkrXdnt|j
��dSr�)r9r/r
r�r�r�r�r]r�r_Z
_callbacksrKr�rrr�test_shield_cancel_outer-s
z&BaseTaskTests.test_shield_cancel_outercCs8|�|j�}|�d�|j�t�|��}|�|d�dSr$)r9r/rmrJr
r�r_)rrOr�rrr�test_shield_shortcut6s
z"BaseTaskTests.test_shield_shortcutc	s�d�|�|j����fdd����fdd�}tj|�|jd�}t�|j�|��|�tj��|j�	|�W5QRX��
d�t�|j�|��d�dS)Nrc�s�IdH�d7�dSr�rrr�rrrAs
z/BaseTaskTests.test_shield_effect.<locals>.innerc�st����IdH�d7�dSr�)r
r�rr�rrr�Fsz/BaseTaskTests.test_shield_effect.<locals>.outerr6rr�r�rr�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�)
r9r/r
rKr�r�r�r�r]r�rmr_r`)r�child1�child2�parentr�rrr�test_shield_gatherTs


z BaseTaskTests.test_shield_gathercCs�|�|j�}|�|j�}t�|�}t�|�}t�||�}t�|j�|��t�|j�|�|�	�tj
�|�|���|�|���|�
d�|�
d�t�|j�dSr�)r9r/r
r�rKr�r�r�r]r�r�r]r�rm)rr�r�r�r�r�rrr�test_gather_shieldbs



z BaseTaskTests.test_gather_shieldcCsZ|�|j�}|�t|jjtj||jd��t�}|�t|jjtj||jd��|��dSr5)	r9r/rnrxrJr
rVrr+�rrOr3rrr�test_as_completed_invalid_argsss��z,BaseTaskTests.test_as_completed_invalid_argscCsf|�|j�}|�t|jjt�|��t�}|�t|jjt�|��|��|�t	|jjt�g��dSr	)
r9r/rnrxrJr
r"rr+ror�rrr�test_wait_invalid_args~s���z$BaseTaskTests.test_wait_invalid_argsc	sD�fdd�}td��|�W5QRXtd��|�W5QRXdS)Nc	s���t��tj���fdd��}W5QRX���j����d�|����t������	�j
tj���
�j���	�jtj��j������j
�dS)Nc3s���j��EdHdSr	)r]�
gi_runningr)rOr�rrrr3�szKBaseTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coro)rhrir
rjr9r/rmr]r�r]�gi_frame�types�	FrameTyper�r�r��CodeTyperJr<rsr)rOr�r�check�s
z=BaseTaskTests.test_corowrapper_mocks_generator.<locals>.checkFT�r�rr�rrr� test_corowrapper_mocks_generator�s


z.BaseTaskTests.test_corowrapper_mocks_generatorc
s�td�����t��tj�fdd��}W5QRX��t��tj��fdd���W5QRX��t��tjdd���W5QRX���j|��}�j�|�}��|d�W5QRXdS)	NTc3s��EdHSr	rr)r�rrr��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t1c3s(���j�}���j�|��|EdHSr	)r9r/r4r�)r�t3rrr��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t2cSs|�d�dS)N�rr��r�r�rrrr��sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t3r�)	rrhrir
rjr4r/rJr_)rr�rV�valr)rr�r�r�test_yield_from_corowrapper�s
z)BaseTaskTests.test_yield_from_corowrappercs8dd���fdd�}|�|d�d�|�|d�d�dS)Ncss
dV}|Sr	r)r�rrrr|�sz;BaseTaskTests.test_yield_from_corowrapper_send.<locals>.fooc
sdtj����}|�d�z|�|�Wn0tk
rV}z|jdWY�Sd}~XYn
Xtd��dS)NrzStopIteration was expected)r
r�CoroWrapperr(r&r�AssertionError)rk�cw�ex�r|rr�call�s
 z<BaseTaskTests.test_yield_from_corowrapper_send.<locals>.call)rr�r2)r_)rr�rr�r� test_yield_from_corowrapper_send�s
z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0t��}dd�}tj�|��}||d<d|_dS)NcssgEdHdSr	rrrrrr|�r;z3BaseTaskTests.test_corowrapper_weakref.<locals>.foor�)�weakref�WeakValueDictionaryr
rr�r�)rZwdr|r�rrr�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}Wqtk
r4}z|}W5d}~XYqXqdSr	)�	Exception)�value�errrr|�s

z1BaseTaskTests.test_corowrapper_throw.<locals>.foor|r�)
r�r
rr�r(rar*r]r_r)rr|r�r�rrr�test_corowrapper_throw�s$



z$BaseTaskTests.test_corowrapper_throwcs8�jj����fdd�}���j|����j���dS)Nc	�s��t��W5QRXdSr	)rhrir�r2rrfrrr3sz5BaseTaskTests.test_all_tasks_deprecated.<locals>.coro)r1r2r4r/rJrtrr�r�test_all_tasks_deprecatedsz'BaseTaskTests.test_all_tasks_deprecatedc	sl�jj}��t��tj�fdd��}W5QRXt��}�j�	d��j�
|�|�j�}tj|�jd�}��tj
�jd�|h�t��j�zV��t����|�
�|h�W5QRX��t����|�
d�|h�W5QRXW5t�d�X�j����t�jj�d�|jjd=d}|j}d}t����tj
�jd�t��|��jdtj|d��|��dS)	Nc3s ��|�}|EdHtd��dS)Nzcode never reached)r9r�)r/�futurerrr�kill_mes

z>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_meTr6rr�z%Task was destroyed but it is pending!)�messagerVr)r1r2rhrir
rjrr�r/r��set_exception_handlerrXr_�	all_tasksrdZ	_run_oncerK�_readyr��f_localsr�r�
gc_collectr(Zassert_called_with�ANYZ
reset_mock)rr2r�Zmock_handlerr3rVrrrr�test_log_destroyed_pending_tasks>
"

�z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsHt�������dd�����fdd�}��|����|jj�dS)Nc�st�dSr	)rxrrrrr3IszBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc�s.������}t�d�IdH|��d}dS)Nrar�rU�r3r/rrrr�LszDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)r
rPrdrJr��error�called)r�m_logr�rr�r�&test_tb_logger_not_called_after_cancelDs
z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc	
Cs�td��*|�t��tjdd��}W5QRXW5QRXt}t��jd}|�t	�
�|�|jj
�|jjdd}t�|�\}}dt�|j�t�|�|t�|�|f}|�|t�|tj��dS)NTcSsdSr	rrrrr�	coro_noopYsz=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\(\)$)rrhrir
rj�__file__�sys�	_getframe�f_linenorr�r]r�r��	call_argsr�r�r�r�r"r��compile�DOTALL)	rr�r�Ztb_filename�	tb_linenor�Z
func_filenameZfunc_linenoZregexrrr�test_coroutine_never_yieldedUs(

��
z*BaseTaskTests.test_coroutine_never_yieldedc	sD�fdd�}td��|�W5QRXtd��|�W5QRXdS)Nc	sF��t��tj�fdd��}W5QRX�j�|��}��|d�dS)Nc	s*��t��tjdd��}W5QRX|�S)NcSsdSr�rrrrr�
inner_coro|sziBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)rhrir
rj)r�rrr�
outer_coroyszUBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror�rhrir
rjr/rJr_)r�r`rrrr�ws
zABaseTaskTests.test_return_coroutine_from_coroutine.<locals>.checkFTr�r�rrr�$test_return_coroutine_from_coroutiness


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�r4rr�r�r�r]r�rbr_r�rJ)rrVr�rrrr��s��z(BaseTaskTests.test_task_source_tracebackcspt������j���fdd�}��|��}��t�||��}��|j���tj	�j
|���|���dS)Nc�s����}|IdHdSr	)r9rNr#rr�blocking_coroutine�s
z?BaseTaskTests._test_cancel_wait_for.<locals>.blocking_coroutine)
r
rPr�r+r�r�r�r�rnr�rJr]r�)rrrrVr"rr#r�_test_cancel_wait_for�s�z#BaseTaskTests._test_cancel_wait_forcCs|�d�dSr	�rrrrr�test_cancel_blocking_wait_for�sz+BaseTaskTests.test_cancel_blocking_wait_forcCs|�d�dS)NgN@rrrrr�test_cancel_wait_for�sz"BaseTaskTests.test_cancel_wait_forcs�t��}|�|j�|�|���fdd�}tj|�|d�}tj||d��d���fdd�}��|���d�|�	��|�
�d�|�����|�
��
�dg�dS)Nc3s
�EdHSr	rrrNrr�
child_coro�sz6BaseTaskTests.test_cancel_gather_1.<locals>.child_coror6cs����dSr	�r�)rG)�
cancel_result�gather_taskrr�cancelling_callback�sz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbackr%F)r
rPr�r+r9rKrXr�rmrJr_r�r�r`)rr/rZ
gather_futurer	r)rrOrr�test_cancel_gather_1�s



z"BaseTaskTests.test_cancel_gather_1cs@t������j��fdd�����fdd�}��|��dS)Nc�s:d}|d7}tjt�d�d�d�IdH|dkrdSqdS)NrraT)�return_exceptionsr/r)r
rKr�)r�r6rrrW�s�z0BaseTaskTests.test_cancel_gather_2.<locals>.testc�sZ������}t�d�IdH|��z|IdHWntjk
rJYnX��d�dS)Nr�z1gather did not propagate the cancellation request)r4r
r�r�r�r�)Zqwe�r/rrWrr�main�sz0BaseTaskTests.test_cancel_gather_2.<locals>.mainr�rr
rrr�test_cancel_gather_2�s

z"BaseTaskTests.test_cancel_gather_2cs(dd����fdd�}�j�|��dS)Nc�sdddS)Nrrrrrrrr|�sz3BaseTaskTests.test_exception_traceback.<locals>.fooc�s4���j���}t�d�IdH��|��j�dSr�)r4r/r
r�r�r��
__traceback__rU�r|rrrr
�sz4BaseTaskTests.test_exception_traceback.<locals>.mainr�rrrr�test_exception_traceback�sz&BaseTaskTests.test_exception_tracebackc	Cs�dd�}||j_|�t��tjdd��}W5QRX|�|jj�|�	t
��*|�}z|�|j|�W5|��XW5QRX|�
|jj�|jjdd}|�d|�|�t�|j�t��dS)Nc_st�dSr	)ro)rorr�rrrr��sz8BaseTaskTests.test_error_in_call_soon.<locals>.call_sooncSsdSr	rrrrrr3	sz3BaseTaskTests.test_error_in_call_soon.<locals>.cororz$Task was destroyed but it is pending)r/r�rhrir
rjr�r�r�rnror+r4r]r��assertInr_r�r()rr�r�r3r�r�rrr�test_error_in_call_soon�sz%BaseTaskTests.test_error_in_call_soonc	CsP|�td��|�|jd�W5QRX|�td��|�|jd�W5QRXdS)Nz!a coroutine was expected, got 123r�)rQrxr4r/rrrr�"test_create_task_with_noncoroutine	s��z0BaseTaskTests.test_create_task_with_noncoroutinec	Cs||�t��tjdd��}W5QRX|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)NcSsdSr	rrrrrr3!	szDBaseTaskTests.test_create_task_with_oldstyle_coroutine.<locals>.coro)	rhrir
rjr4r/r]r2rJr�rrr�(test_create_task_with_oldstyle_coroutine	sz6BaseTaskTests.test_create_task_with_oldstyle_coroutinecCs`dd�}|�|j|��}|�||j�|j�|�|�|j|��}|�||j�|j�|�dS)Nc�sdSr	rrrrrr31	sz@BaseTaskTests.test_create_task_with_async_function.<locals>.coro)r4r/r]r2rJr�rrr�$test_create_task_with_async_function/	sz2BaseTaskTests.test_create_task_with_async_functioncCsh|�|jt��}|�||j�|�|j�|�d�|�|jt��}|�||j�|�|j�|�d�dSr$)r4r/r#r]r2r_rJr�rrr�(test_create_task_with_asynclike_function>	sz6BaseTaskTests.test_create_task_with_asynclike_functioncs(dd����fdd�}�j�|��dS)Nc�sdSr�rrrrrrK	sz2BaseTaskTests.test_bare_create_task.<locals>.innerc�s4t����}��|�j�|IdH}��d|�dSr�)r
r�r]r2r_)rVr��rrrrr3N	s
z1BaseTaskTests.test_bare_create_task.<locals>.coror�rtrrr�test_bare_create_taskI	sz#BaseTaskTests.test_bare_create_taskcs(dd����fdd�}�j�|��dS)Nc�sdSr	rrrrrr�X	sz<BaseTaskTests.test_bare_create_named_task.<locals>.coro_noopc�s.tj��dd�}��|��d�|IdHdS)NzNo-op)r0)r
r�r_r�rU�r�rrrr3[	sz7BaseTaskTests.test_bare_create_named_task.<locals>.coror�rtrrr�test_bare_create_named_taskV	sz)BaseTaskTests.test_bare_create_named_taskcsbtjddd����fdd������fdd�}t���z���|��}��|�W5���XdS)N�cvar�nope��defaultc�s.t�d�IdH�����d���d�dS)Nrr�something else)r
r�r_�getr(r�rrrr�sube	sz)BaseTaskTests.test_context_1.<locals>.subc�sV�����d�������}��d������d�|IdH�����d�dS)Nr�yes)r_r"r4r()Zsubtask�rr/rr$rrr
j	s

z*BaseTaskTests.test_context_1.<locals>.main)�contextvars�
ContextVarr
rPr+r4rJ�rr
rVrr&r�test_context_1b	szBaseTaskTests.test_context_1csbtjddd�����fdd�}t���z���|��}��|�W5���X�����d�dS)Nrrrc	�s��fdd�}�����d�td�D]�}����}|�|���d|�����|jd�|IdH�����d|���td�D]F}��d|�d|���t�	d�IdH�����d|�d|���q�q$dS)	Ncs��d�dS)Nr!)r(rN)rrr�fut_on_done}	sz?BaseTaskTests.test_context_2.<locals>.main.<locals>.fut_on_donerr�r%r��-���MbP?)
r_r"rLr9r�r(r�rmr
r�)r+�jrO�i�rr/rrrr
|	s


z*BaseTaskTests.test_context_2.<locals>.main)	r'r(r
rPr+r4rJr_r"r)rr0r�test_context_2y	s
zBaseTaskTests.test_context_2csbtjddd����fdd����fdd�}t���z��|��W5���X�����d�dS)Nrrrc�sLtd�D]>}��||�t�t�dd��IdH�����||�qdS)Nr�r-ra)rLr(r
r��random�uniformr_r")�numr/r#rrr$�	sz)BaseTaskTests.test_context_3.<locals>.subc�sLg}td�D]$}���t�dd���}|�|�qtj|d�i�IdHdS)NrIrr�r/)rLr�r2�randintrWr
rK)rr/rV)r/r$rrr
�	s
z*BaseTaskTests.test_context_3.<locals>.main)r'r(r
rPr+rJr_r"rrr&r�test_context_3�	s
zBaseTaskTests.test_context_3cCsHt��}t�}z*|�||�}|�|�|�|��|�W5|��XdSr	)r
rPrr+r4rJraZget_coro)rr/r3rVrrr�
test_get_coro�	s
zBaseTaskTests.test_get_coro)r.)|r r!r"r2r7r4r9r=rMrTrYrgrkrqrrrwryrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rr
rrrrr!r$r-r/r7r:r>rArGrIrMrOrPrYr^r`rergrjrmrrrvrwryr{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�rZpatchr�r�r�r�rrrr
rrrrrrrrrr*r1r6r7r�rrrArr-Ss�

	3	>$#	  	!
 .% 
		(
6




"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)NcSsdSr�rrrrrr:�	r;zCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>)�collections�defaultdict�callsr<rurrArrru�	sz1add_subclass_tests.<locals>.CommonFuture.__init__cs |jdd7<t�j||�S)Nr�r)r:r<r�rrArrr��	sz:add_subclass_tests.<locals>.CommonFuture.add_done_callbackr�rrrAr�CommonFuture�	sr;c@seZdZdS)z add_subclass_tests.<locals>.TaskN�r r!r"rrrrr2�	sr2c@seZdZdS)z"add_subclass_tests.<locals>.FutureNr<rrrrr7�	sr7csv�j�jd����fdd�}�j|��jd�}�j�|�}��|d���t|j�ddi���t�j�ddi�dS)Nr6c�s�j��fdd���IdHS)Ncs
��d�S�Nr2r�rrNrrr:�	r;zYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>)r/r�r�rOrrrr��	szGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.funcr2r�r)r7r/r2rJr_�dictr:)rr�rVr`rr>r�test_subclasses_ctask_cfuture�	s��z9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture)r2r7r@r�)�clsZBaseTaskZ
BaseFuturer;r2r7r@rrr�add_subclass_tests�	s	rBc@seZdZdd�Zdd�ZdS)�SetMethodsTestc	Cs�t|�j}t��|j_}dd�}|�}|�|j|�}|�|d�|�|j�	|�d�|�
�|jddd}|�t
jd��
|�W5QRX|��dS)Nc�st�d�IdHdS�Nr�r�r�rrrrr|
sz@SetMethodsTest.test_set_result_causes_invalid_state.<locals>.foor2rr��step\(\): already done)r r7rr�r/�call_exception_handlerr4rmr_rJ�assert_called_oncer�rQr
�InvalidStateErrorr+)rr7�exc_handlerr|r3rVr)rrr�$test_set_result_causes_invalid_state�	s"

��z3SetMethodsTest.test_set_result_causes_invalid_statec	Cs�Gdd�dt�}t|�j}t��|j_}dd�}|�}|�|j|�}|�||��|�	|��|j�
|�W5QRX|��|jddd}|�
tjd��
|�W5QRX|��dS)Nc@seZdZdS)zESetMethodsTest.test_set_exception_causes_invalid_state.<locals>.MyExcNr<rrrr�MyExc
srKc�st�d�IdHdSrDr�rrrrr|
szCSetMethodsTest.test_set_exception_causes_invalid_state.<locals>.foorr�rE)r�r r7rr�r/rFr4rxrnrJrGr�rQr
rHr+)rrKr7rIr|r3rVr)rrr�'test_set_exception_causes_invalid_state
s 
�z6SetMethodsTest.test_set_exception_causes_invalid_stateN)r r!r"rJrLrrrrrC�	srC�_CFuture�_CTaskzrequires the C _asyncio modulec@s:eZdZeedd�Zeedd�Zej	dd��Z
dd�ZdS)�CTask_CFuture_TestsrNNrMcCs|t�td�}dd�}|�|j|��}|j�|�|�}td�D]"}|j|�|jd�|j�|�q>|j|�|ddd�dS)	N�gettotalrefcountc�sdSr	rrrrrr3<
sz@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.cororIr6rr�)Zdelta)	rZ
get_attributer�r4r/rJrLrur�)rrPr3rVZrefs_beforer/rrr�test_refleaks_in_task___init__9
sz2CTask_CFuture_Tests.test_refleaks_in_task___init__c	CsBdd�}|�|j|��}|j�|�|�t��
|`W5QRXdS)Nc�sdSr	rrrrrr3G
szHCTask_CFuture_Tests.test_del__log_destroy_pending_segfault.<locals>.coro)r4r/rJrn�AttributeErrorr�r�rrr�&test_del__log_destroy_pending_segfaultF
s
z:CTask_CFuture_Tests.test_del__log_destroy_pending_segfault)r r!r"�getattrrr2rr7rZ
refcount_testrQrSrrrrrO0
s

rOc@s$eZdZeedd�Zeedd�ZdS)�CTask_CFuture_SubclassTestsrNNrM)r r!r"rTrr2rr7rrrrrUO
srUc@seZdZeedd�ZejZdS)�CTaskSubclass_PyFuture_TestsrNN�	r r!r"rTrr2r�	_PyFuturer7rrrrrVY
srVc@seZdZeedd�ZejZdS)�PyTask_CFutureSubclass_TestsrMN)	r r!r"rTrr7r�_PyTaskr2rrrrrYb
srYc@seZdZeedd�ZejZdS)�CTask_PyFuture_TestsrNNrWrrrrr[k
sr[c@seZdZejZeedd�ZdS)�PyTask_CFuture_TestsrMN)	r r!r"rrZr2rTrr7rrrrr\s
sr\c@seZdZejZejZdS)�PyTask_PyFuture_TestsN�	r r!r"rrZr2rrXr7rrrrr]{
sr]c@seZdZejZejZdS)�PyTask_PyFuture_SubclassTestsNr^rrrrr_�
sr_c@seZdZdd�ZdS)�CTask_Future_Testscs�Gdd�dtj�}�fdd�}t��|_z<||jd��|j�d�jd�|j�|��}|j�|�}W5|j��X|�	|d�dS)	Nc@seZdZedd��ZdS)z+CTask_Future_Tests.test_foobar.<locals>.FutcSst�dSr	)rRrrrrrc�
sz4CTask_Future_Tests.test_foobar.<locals>.Fut.get_loopN)r r!r"�propertyrcrrrrr��
sr�c�s�IdHdSr=rrrNrrr3�
s
z,CTask_Future_Tests.test_foobar.<locals>.coror6r�rr2)
r
r7rPr/r+rrmr�rJr_)rr�r3rVr�rrNr�test_foobar�
s
zCTask_Future_Tests.test_foobarN)r r!r"rbrrrr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�Sr	rrr6rrrb�
szHBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike._loopcSsdSr|rrrrrr^�
szGBaseTaskIntrospectionTests.test__register_task_1.<locals>.TaskLike.doneN)r r!r"rarbr^rr6rr�TaskLike�
srd�rr�r_r
r�r(�_register_task�_unregister_task�rrdrVrr6r�test__register_task_1�
s
z0BaseTaskIntrospectionTests.test__register_task_1cs`G�fdd�d�}|�}t���|�t���t��|�|�|�t���|h�|�|�dS)Ncs eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLikecs�Sr	rrr6rrrc�
szKBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.get_loopcSsdSr|rrrrrr^�
szGBaseTaskIntrospectionTests.test__register_task_2.<locals>.TaskLike.doneN�r r!r"rcr^rr6rrrd�
srdrerhrr6r�test__register_task_2�
s
z0BaseTaskIntrospectionTests.test__register_task_2c	s�G�fdd�d�}|�}t���|�t���t��|�|�|�t���t��|�t��|�tj	���|h�W5QRX|�
|�dS)Ncs eZdZ�fdd�Zdd�ZdS)zBBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLikecs�Sr	rrr6rrrc�
szKBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.get_loopcSsdSr�rrrrrr^�
szGBaseTaskIntrospectionTests.test__register_task_3.<locals>.TaskLike.doneNrjrr6rrrd�
srd)rr�r_r
r�r(rfrhrir2rgrhrr6r�test__register_task_3�
s
 z0BaseTaskIntrospectionTests.test__register_task_3cCsNt��}t��}|�t�|��|�||�|�t�|�|�|�||�dSr	)rr�r<r
r��_enter_taskra�_leave_task�rrVr/rrr�test__enter_task�
sz+BaseTaskIntrospectionTests.test__enter_taskc	Csht��}t��}t��}|�||�|�t��|�||�W5QRX|�t�|�|�|�||�dSr	)	rr�rmrnrRrar
r�rn�rr�r�r/rrr�test__enter_task_failure�
sz3BaseTaskIntrospectionTests.test__enter_task_failurecCs<t��}t��}|�||�|�||�|�t�|��dSr	)rr�rmrnr<r
r�rorrr�test__leave_task�
s
z+BaseTaskIntrospectionTests.test__leave_taskc	Csht��}t��}t��}|�||�|�t��|�||�W5QRX|�t�|�|�|�||�dSr	)	rr�rmrnrRrnrar
r�rqrrr�test__leave_task_failure1�
sz4BaseTaskIntrospectionTests.test__leave_task_failure1c	CsFt��}t��}|�t��|�||�W5QRX|�t�|��dSr	)rr�rnrRrnr<r
r�rorrr�test__leave_task_failure2�
s
z4BaseTaskIntrospectionTests.test__leave_task_failure2csJt��}t����fdd�|_|�|�|�|�|�t���t��dS)Ncs�Sr	rrr6rrr:r;zBBaseTaskIntrospectionTests.test__unregister_task.<locals>.<lambda>)	rr�rcrfrgr_r
r�r(r�rr6r�test__unregister_tasks

z0BaseTaskIntrospectionTests.test__unregister_taskcCs2t��}t��}|�|�|�t�|�t��dSr	)rr�rgr_r
r�r(rorrr�$test__unregister_task_not_registered
s
z?BaseTaskIntrospectionTests.test__unregister_task_not_registered)r r!r"rfrgrmrnrirkrlrprrrsrtrurvrwrrrrrc�
s

rcc@s4eZdZeej�Zeej�Zeej	�Z
eej�ZdS)�PyIntrospectionTestsN)
r r!r"�staticmethodrZ_py_register_taskrfZ_py_unregister_taskrgZ_py_enter_taskrmZ_py_leave_taskrnrrrrrxs


rx�_c_register_taskc@sPeZdZeed�r<eej�Zeej�Z	eej
�Zeej�Z
ndZZ	ZZ
dS)�CIntrospectionTestsrzN)r r!r"�hasattrrryrzrfZ_c_unregister_taskrgZ
_c_enter_taskrmZ
_c_leave_taskrnrrrrr{s



r{cs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�BaseCurrentLoopTestscs$t���t��|_|�|j�dSr	�r<r=r
rPr/rdrrArrr=)s

zBaseCurrentLoopTests.setUpcCst�dSr	)�NotImplementedErrorrtrrrr4.szBaseCurrentLoopTests.new_taskcCs|�tj|jd��dSr5)r<r
r�r/rrrr�!test_current_task_no_running_loop1sz6BaseCurrentLoopTests.test_current_task_no_running_loopc	Cs"|�t��t��W5QRXdSr	)rnrRr
r�rrrr�*test_current_task_no_running_loop_implicit4sz?BaseCurrentLoopTests.test_current_task_no_running_loop_implicitcs>��fdd�}��|����j�����tj�jd��dS)Nc�s<��tj�jd�����t�d�����t����dSr5)rar
r�r/rr�rrr39szGBaseCurrentLoopTests.test_current_task_with_implicit_loop.<locals>.coror6)r4r/rJr<r
r�rtrr�r�$test_current_task_with_implicit_loop8sz9BaseCurrentLoopTests.test_current_task_with_implicit_loop)	r r!r"r=r4r�r�r�r�rrrArr}'s
r}c@seZdZdd�ZdS)�PyCurrentLoopTestscCstj||jd�Sr5)rrZr/rtrrrr4FszPyCurrentLoopTests.new_taskN�r r!r"r4rrrrr�Dsr�c@seZdZdd�ZdS)�CCurrentLoopTestscCsttd�||jd�S)NrNr6)rTrr/rtrrrr4NszCCurrentLoopTests.new_taskNr�rrrrr�Jsr�c@seZdZdd�Zdd�ZdS)�GenericTaskTestscCs|�ttjtj��dSr	)r]�
issubclassr
r2r7rrrr�test_future_subclassTsz%GenericTaskTests.test_future_subclasscCsRzddl}Wntk
r Yn.Xzddl}Wntk
rL|�d�YnXdS)Nrz_asyncio module is missing)�
_functools�ImportError�_asyncior�)rr�r�rrr�test_asyncio_module_compiledWsz-GenericTaskTests.test_asyncio_module_compiledN)r r!r"r�r�rrrrr�Rsr�csTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�GatherTestsBasecs2t���|��|_|��|_|j|jdd�dS)NF��cleanup)r<r=r>�one_looprSrdrrArrr=is


zGatherTestsBase.setUpcCs|jrt�|�qdSr	)r�r�r�r8rrr�	_run_looposzGatherTestsBase._run_loopcs��fdd�td�D�\}}}tj��|||�|�}t��}|�|�|�d�|�d����j	���
|jd���|�
��|�d����j	�|�|���
|��dddg�dS)Ncsg|]}�j���qSr�r�r@�rFr/rrrrHtsz2GatherTestsBase._check_success.<locals>.<listcomp>r�rr�F)rLr
rK�wrap_futuresr��MockCallbackr�rmr�r�r_r�r�r^�assert_called_once_withr`)rr�r�r�r6rO�cbrrr�_check_successss




zGatherTestsBase._check_successcCs|��|jdd�dS)NF�r�r�rrrr�test_success�szGatherTestsBase.test_successcCs|jdd�dS)NTr�r�rrrr�test_result_exception_success�sz-GatherTestsBase.test_result_exception_successc	s��fdd�td�D�\}}}}}tj��|||||��}t��}|�|�t�}|�d�|�	|���
�j���|�
��|�|���|��|�|�d�|��|�	t��|��dS)Ncsg|]}�j���qSrr�r�rrrrH�sz6GatherTestsBase.test_one_exception.<locals>.<listcomp>�rr�)rLr
rKr�r�r�r�rCrmrxr�r�r]r^r�rar�r�rR)	rr�r�r6r�r�rOr�r)rrr�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|]}�j���qSrr�r�rrrrH�sz:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>�rTrr�)rLr
rKr�r�r�r�rCrRrmrxr�r�r�r^r]r�r_r`)	rr�r�r6r�rOr�r)Zexc2rrr�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)�joinrr_�rstrip)rr��sts�stdout�stderrrrr�test_env_var_debug�s.
����
z"GatherTestsBase.test_env_var_debug)r r!r"r=r�r�r�r�r�r�r�r�rrrArr�gsr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|Sr	r)rrrrrr��szFutureGatherTests.wrap_futuresc	Cs�t�|j�|�tjd�tj|�}|�|tj�|�|j|j�|�	|j�|�
|���|�|�
�g�|�t��tj|d|ji�}W5QRX|�|j|j�dS)Nr/)r
rdr�r�rKr]r7rarbr�r]r^r_r`rhrirS)rZseq_or_iterrOrrr�_check_empty_sequence�s
z'FutureGatherTests._check_empty_sequencecCs2|�g�|�d�|�t��|�td��dS)Nrr�)r�r(�iterrrrr�test_constructor_empty_sequence�s

z1FutureGatherTests.test_constructor_empty_sequencec	Cs`|j��}|j��}|�t��t�||�W5QRX|�t��tj||jd�W5QRXdSr5)r�r@rSrnror
rK)rr�r�rrr�%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|]}�j���qSr)rSr@r�rrrrH�szIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>r�r/)	rLr
rKrarbrSr�r�r^)rZchildrenrOrrr�#test_constructor_homogenous_futures�s
z5FutureGatherTests.test_constructor_homogenous_futurescs��fdd�td�D�\}}}}}t�|||||�}t��}|�|�|�d�|�����j	���
|���|�|���
|�����|��tj�|�d�|��|�t��|��dS)Ncsg|]}�j���qSrr�r�rrrrH�sz;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r�rr�)rLr
rKr�r�r�rmr�r�r�r]r^r�r�r�r]r�r�rxrR)rr�r�r6r�r�rOr�rrr�test_one_cancellation�s 



z'FutureGatherTests.test_one_cancellationc	s�fdd�td�D�\}}}}}}tj||||||dd�}t��}|�|�|�d�t�}	|�|	�|�	���
�j���|�
��|�d�|�	�t�}
|�|
��j�|�}��|dtj���|d	tj�d|d<|d	<��|d|	ddd|
g�|�|�dS)
Ncsg|]}�j���qSrr�r�rrrrHs�zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>r�Tr�rr�r�r�)rLr
rKr�r�r�rmrCrxr�r�r�r�r^rRrJr]r�r_r�)rr�r�r6r�r�rprOr�ZzdeZrter�rrr�&test_result_exception_one_cancellation
s,
�




z8FutureGatherTests.test_result_exception_one_cancellationN)
r r!r"r�r�r�r�r�r�r�rrrrr��s
r�csDeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�Z	S)
�CoroutineGatherTestscst���t�|j�dSr	)r<r=r
rdr�rrArrr=$s
zCoroutineGatherTests.setUpcGs*g}|D]}|fdd�}|�|��q|S)Nc�s
|IdHSr	rrNrrrr3+sz/CoroutineGatherTests.wrap_futures.<locals>.coro)rW)rrZcorosrOr3rrrr�(s
z!CoroutineGatherTests.wrap_futurescCs�dd�}|�}|�}t�||�}|�|j|j�|j�|�|j|jdd�|�}|�}tj|||jd�}|�|j|j�|j�|�dS)Nc�sdSr�rrrrrr31szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.coroFr�r6)r
rKrarbr�rJrdrS)rr3Zgen1Zgen2rOZgen3Zgen4r�rrr�test_constructor_loop_selection0sz4CoroutineGatherTests.test_constructor_loop_selectionc	Csn|�t��tjdd��}W5QRX|d�}tj|||d�||jd�}|�|j�|�|��ddddg�dS)NcSs|Sr	rr0rrrr3Bsz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coror��defr6)	rhrir
rjrKr�r�r_r`)rr3r6rOrrr�test_duplicate_coroutines@sz.CoroutineGatherTests.test_duplicate_coroutinesc	s�d��j�����fdd�}tj|��jd��tj|��jd��d������fdd�}tj|��jd�}t��j���|�����tj	���j�
|�W5QRX������������������������t��j���
�d�dS)Nrc�s�IdH�d7�dSr�rrr�rrrOs
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerr6c�s(tj���jd���IdH�d7�dS)Nr6rI�r
rKr�r)r�r��gathererr�rrrr�Xs
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)r�r@r
rXr�r�r]r�rnr�rJr�r�r_)rrr�rpr)r�r�r�r�rrfr�test_cancellation_broadcastJs$
z0CoroutineGatherTests.test_cancellation_broadcastcs�dd���j����j�������fdd�}tj|��jd�}t��j���d�t��j���d�t��j���|��t	�dS)Nc�s|IdHtd��dS)Nzshould not be ignored)rRr�rrrrms
z:CoroutineGatherTests.test_exception_marking.<locals>.innerc�s$tj�������jd�IdHdSr5r�r�r�r�rrrrr�tsz:CoroutineGatherTests.test_exception_marking.<locals>.outerr6)
r�r@r
rXr�r�rmr]r�rRr�rr�r�test_exception_markingjs



z+CoroutineGatherTests.test_exception_marking)
r r!r"r=r�r�r�r�r�r�rrrArr�"s
 r�csXeZdZ�fdd�Zddd�Zddd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
�ZS)�RunCoroutineThreadsafeTestscs$t���t��|_|�|j�dSr	r~rrArrr=�s

z!RunCoroutineThreadsafeTests.setUpFc�sHt�d�IdH|rtd��|r@t�|j���t�d�IdH||S)Nra�Fail!r)r
r�rRr�r/r�)rr�r�r�r�rrrrR�szRunCoroutineThreadsafeTests.addNcCsZ|jdd||d�}t�||j�}|r4|j�|jd�z|�|�W�S|��pR|��XdS)Nrr�)r�r�)	rRr
Zrun_coroutine_threadsafer/Zcall_soon_threadsafer(r^r�r`)rr�r�r�advance_coror3r�rrr�target�sz"RunCoroutineThreadsafeTests.targetcCs,|j�d|j�}|j�|�}|�|d�dS)Nr�)r/�run_in_executorr�rJr_)rr�r`rrr�test_run_coroutine_threadsafe�sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec	CsH|j�d|jd�}|�t��}|j�|�W5QRX|�d|jj�dS)NTr�)	r/r�r�rnrRrJrr�r)rr��exc_contextrrr�,test_run_coroutine_threadsafe_with_exception�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc	sn�fdd�}�j�d|�}��tj���j�|�W5QRXt��j�t��j�D]}��	|�
��qVdS)Ncs�jdd�S)Nrr�r�rrrrr:�r;zXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>)r/r�rnr
rrJr�r�r�r]r^)rror�rVrrr�*test_run_coroutine_threadsafe_with_timeout�szFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sB�fdd�}�j�d|�}��tj���j�|�W5QRXdS)Ncs�jdd�S)NTrr�rrrrr:�r;zZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>)r/r�rnr
r�rJ)rror�rrr�,test_run_coroutine_threadsafe_task_cancelled�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledc	s�dd�}�j�d�fdd��}t��}�j�|��j�|���t��}�j�|�W5QRX��	t
|j�d�|j\\}}}��	|d|j
�dS)NcSst�dSr	)�	NameError)r/r3rrr�task_factory�szfRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.task_factorycs�jdd�S)NT)r�r�rrrrr:�r;zbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>rr�)r/r�r�r�r�r?rnr�rJr_rKZcall_args_listr�r�)rr�rEror�r/�contextr�rrr�4test_run_coroutine_threadsafe_task_factory_exception�s
�zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF)r r!r"r=rRr�r�r�r�r�r�r�rrrArr��s

�
r�cs8eZdZ�fdd�Z�fdd�Zdd�Zdd�Z�ZS)	�
SleepTestscs$t���t��|_|�|j�dSr	r~rrArrr=�s

zSleepTests.setUpcs|j��d|_t���dSr	�r/r+r<�tearDownrrArrr��s
zSleepTests.tearDowncs>d��fdd�����fdd�}�j�|�����d�dS)Nrcs�|7�dSr	r�r4r3rr�
inc_result�sz.SleepTests.test_sleep_zero.<locals>.inc_resultc�sF�j��d����d�tjddd�IdH}���d��|�dS)Nrrr�r3)r/r�r_r
r�r��r�r`rrrr3�s
z(SleepTests.test_sleep_zero.<locals>.coro�)r/rJr_rtrr�r�test_sleep_zero�s
zSleepTests.test_sleep_zeroc	Cs2|�t��|j�tjd|jd��W5QRXdS�Nrr6)rhrir/rJr
r�rrrr� test_loop_argument_is_deprecated�sz+SleepTests.test_loop_argument_is_deprecated)r r!r"r=r�r�r�r�rrrArr��sr�cs8eZdZ�fdd�Z�fdd�Zdd�Zdd�Z�ZS)	�	WaitTestscs$t���t��|_|�|j�dSr	r~rrArrr=
s

zWaitTests.setUpcs|j��d|_t���dSr	r�rrArrr�

s
zWaitTests.tearDownc	Cs6|�t��"|j�tjt�g|jd��W5QRXdSr5)rhrir/rJr
r"rrrrr�(test_loop_argument_is_deprecated_in_wait
s�z2WaitTests.test_loop_argument_is_deprecated_in_waitc	Cs6|�t��"|j�tjt�d|jd��W5QRXdSr�)rhrir/rJr
r�rrrrr�,test_loop_argument_is_deprecated_in_wait_for
s�z6WaitTests.test_loop_argument_is_deprecated_in_wait_for)r r!r"r=r�r�r�r�rrrArr�
sr�cs@eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Z�ZS)�CompatibilityTestscs$t���t��|_|�|j�dSr	r~rrArrr= 
s

zCompatibilityTests.setUpcs|j��d|_t���dSr	r�rrArrr�%
s
zCompatibilityTests.tearDownc	CsB|�t��tjdd��}W5QRX|j�|��}|�d|�dS)Ncsst�d�EdHdS)Nrr[r�rrrrr3-
sz:CompatibilityTests.test_yield_from_awaitable.<locals>.coror[r�)rr3r`rrr�test_yield_from_awaitable*
s
z,CompatibilityTests.test_yield_from_awaitablec	sz��t��tjdd���W5QRX��t��tjdd���W5QRX���fdd�}�j�|��}��ddg|�dS)	NcSsdS)N�ok1rrrrrr?8
sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro1csst�d�EdHdS)Nr�ok2r�rrrrr@=
sz;CompatibilityTests.test_await_old_style_coro.<locals>.coro2c�stj�����jd�IdHSr5)r
rKr/r�r?r@rrrrB
sz;CompatibilityTests.test_await_old_style_coro.<locals>.innerr�r�r�)rrr`rr�r�test_await_old_style_coro5
sz,CompatibilityTests.test_await_old_style_corocCst�d�}tdd|dd�dS)Nz�
            import asyncio

            async def native_coro():
                pass

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

            asyncio.run(old_style_coro())
        z-Wignore::DeprecationWarningr�r�)r�)�textwrap�dedentr)rr�rrr�test_debug_mode_interopH
s

�z*CompatibilityTests.test_debug_mode_interop)	r r!r"r=r�r�r�r�r�rrrArr�
s
r��__main__)F)?r8�
contextlibr'r�rBr�r2r�r�r�r�Zunittestr�rr
rrrZtest.test_asynciorr�rWrZtest.support.script_helperrr
r�contextmanagerrrrr#r-rBrCZ
skipUnlessr|ZTestCaserOrUrVrYr[r\r]r_r`rcrxr{r}r�r�r�r�r�r�r�r�r�r�r r
rrrr�<module>s�


	:5���������r�
�fU^b"?