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

�i�t�@s�dZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlZddlmZddl
mZddlmZdd	�Zd
d�Zdd
�Zdd�ZGdd�d�ZGdd�dej�ZGdd�d�Ze�eed�d�Gdd�deej��Ze�eed�d�Gdd�deej��ZGdd�deej�ZGdd�d�Ze�eed�d�Gd d!�d!eej��Z e�eed�d�Gd"d#�d#eej��Z!Gd$d%�d%eej�Z"Gd&d'�d'�Z#Gd(d)�d)e#ej�Z$e�eed�d�Gd*d+�d+e#ej��Z%e&d,kr�e�'�dSdS)-zTests for futures.py.�N)�mock)�GenericAlias)�futures)�utils)�supportcCst�d�dS�N)�asyncioZset_event_loop_policy�r	r	�;/usr/local/lib/python3.10/test/test_asyncio/test_futures.py�tearDownModule�rcCs|Srr	��fr	r	r
�	_fakefunc�rcC�dSrr	r	r	r	r
�first_cbrrcCrrr	r	r	r	r
�last_cbrrc@s\eZdZdZdZdZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�
DuckFutureFNcCs|��rdSd|_dS)NFT)�done�_DuckFuture__cancelled��selfr	r	r
�cancel*szDuckFuture.cancelcCs|jSr)rrr	r	r
�	cancelled0�zDuckFuture.cancelledcCs|jp|jdup|jduSr)r�_DuckFuture__result�_DuckFuture__exceptionrr	r	r
r3s
��zDuckFuture.donecCs$|�|���|jdur|j�|jSr)�assertFalserrrrr	r	r
�result8s
zDuckFuture.resultcCs|�|���|jSr)rrrrr	r	r
�	exception>szDuckFuture.exceptioncC�"|�|���|�|�||_dSr)rr�assertIsNotNoner)rrr	r	r
�
set_resultB�

zDuckFuture.set_resultcCr!r)rrr"r)rr r	r	r
�
set_exceptionGr$zDuckFuture.set_exceptionccs,�|��sd|_|V|�|���|��S�NT)r�_asyncio_future_blocking�
assertTruerrr	r	r
�__iter__Ls�zDuckFuture.__iter__)�__name__�
__module__�__qualname__r'rrrrrrrr r#r%r)r	r	r	r
r!srcs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�	DuckTestsc�&t���|��|_|�|jj�dSr��super�setUp�
new_test_loop�loop�
addCleanup�closer��	__class__r	r
r1V�

zDuckTests.setUpcC� t�}t�|�}|�||�dSr)rr�wrap_future�assertIs�rr�gr	r	r
�test_wrap_future[�
zDuckTests.test_wrap_futurecCr9r)rrZ
ensure_futurer;r<r	r	r
�test_ensure_future`r?zDuckTests.test_ensure_future)r*r+r,r1r>r@�
__classcell__r	r	r6r
r-Tsr-cs�eZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Ze�d+�d,d-��Ze�d+�d.d/��Ze�d+�d0d1��Ze�d+�d2d3��Ze�d+�d4d5��Ze�d+�d6d7��Ze�d+�d8d9��Z d:d;�Z!d<d=�Z"d>d?�Z#d@dA�Z$dBdC�Z%dDdE�Z&dFdG�Z'dHdI�Z(e�d+�dJdK��Z)dLdM�Z*dNdO�Z+dPdQ�Z,dRdS�Z-dTdU�Z.dVdW�Z/�Z0S)X�BaseFutureTestscOs|j|i|��Sr)�cls�r�args�kwargsr	r	r
�_new_futureh�zBaseFutureTests._new_futurecr.rr/rr6r	r
r1kr8zBaseFutureTests.setUpcCs*|jt}|�|jtf�|�|t�dSr)rC�str�assertEqual�__args__�assertIsInstancer)r�futurer	r	r
�test_generic_aliasps
z"BaseFutureTests.test_generic_aliascCs�Gdd�d�}|�t�|��|�t�|���|�t�d��|�t�t����|j|jd�}|�t�|��|�t�t|���|�t�t�t|����|�	�dS)Nc@seZdZdZdd�ZdS)z/BaseFutureTests.test_isfuture.<locals>.MyFutureNcSs
d|_dS�NF)r'rr	r	r
�__init__ys
z8BaseFutureTests.test_isfuture.<locals>.MyFuture.__init__)r*r+r,r'rPr	r	r	r
�MyFuturevsrQ��r3)
rr�isfuturer(rZMockrGr3�typer)rrQrr	r	r
�
test_isfutureuszBaseFutureTests.test_isfuturecCsD|j|jd�}|�|���|�|���|��|�|���dS�NrS)rGr3rrrrr(�rrr	r	r
�test_initial_state�s
z"BaseFutureTests.test_initial_statecCs:|�td��
|��Wd�dS1swYdS)N�no current event loop)�assertRaisesRegex�RuntimeErrorrGrr	r	r
�test_constructor_without_loop�s
"�z-BaseFutureTests.test_constructor_without_loopcs@�fdd�}�j�|��}��|j�j���|���j�dS)Nc�s
����Sr)rGr	rr	r
�test�s�z?BaseFutureTests.test_constructor_use_running_loop.<locals>.test)r3�run_until_completer;�_loop�get_loop)rr^rr	rr
�!test_constructor_use_running_loop�sz1BaseFutureTests.test_constructor_use_running_loopcCsHt�|j�|�tjd�|��}|�|j|j�|�|��|j�dSr)r�set_event_loopr3r4rGr;r`rarXr	r	r
� test_constructor_use_global_loop�s
z0BaseFutureTests.test_constructor_use_global_loopcCs|�t|jd�dS)N�*)�assertRaises�	TypeErrorrGrr	r	r
�test_constructor_positional�sz+BaseFutureTests.test_constructor_positionalc	Cs�|jj|j|jd�}|�tj|j�|jj|j|jd�}|�tj|j�|jj|j|jd�}|�tt	f��
|�
d�Wd�n1sEwY|jj|j|jd�}|�tt	f��
|�t�Wd�n1skwY|jj|j|jd�}|�tt	f��|�
�Wd�n1s�wY|jj|j|jd�}|�tt	f��|�dd��Wd�n1s�wY|jj|j|jd�}|�tt	f��|�dd��Wd�n1s�wY|jj|j|jd�}zt|�Wntt	f�yYnw|jj|j|jd�}z|��Wn
t�yYnw|jj|j|jd�}zt|�Wn
t�y7Ynw|jj|j|jd�}|�|���|�|���dS)NrScSrrr	r
r	r	r
�<lambda>��z4BaseFutureTests.test_uninitialized.<locals>.<lambda>cSrrr	r
r	r	r
ri�rj)rC�__new__r3rfr�InvalidStateErrorrr r\�AttributeErrorr#r%�	Exceptionr�add_done_callback�remove_done_callback�repr�	__await__�iterrrr�r�futr	r	r
�test_uninitialized�sZ��
������z"BaseFutureTests.test_uninitializedcCs�|j|jd�}|�t|d��|�|jd�|�d�|�tj	��|j�
|�Wd�n1s2wY|�|jd�dS)NrS�_cancel_message�
my message)rGr3r(�hasattrrJrwrrfr�CancelledErrorr_rXr	r	r
�!test_future_cancel_message_getter�s
�z1BaseFutureTests.test_future_cancel_message_gettercCsv|j|jd�}|�d�d|_|�|jd�|�tj��|j�|�Wd�n1s-wY|�|jd�dS)NrSrxzmy new message)	rGr3rrwrJrfrrzr_rXr	r	r
�!test_future_cancel_message_setter�s
�z1BaseFutureTests.test_future_cancel_message_settercCs�|j|jd�}|�|���|�|���|�|���|�tj|j	�|�tj|j
�|�tj|jd�|�tj|j
d�|�|���dSrW)rGr3r(rrrrfrrzrr rlr#r%rrXr	r	r
�test_cancel�szBaseFutureTests.test_cancelcCs�|j|jd�}|�tj|j�|�d�|�|���|�	|�
��|�|��d�|�|��d�|�tj|jd�|�tj|j
d�|�|���dS�NrSre)rGr3rfrrlrr#rrr(rrJr r%rrXr	r	r
�test_result�s
zBaseFutureTests.test_resultcCs�t�}|j|jd�}|�tj|j�|�td|j	t
�|�	|�|�|���|�
|���|�t|j�|�|��|�|�tj|jd�|�tj|j	d�|�|���dS)NrSz!StopIteration .* cannot be raised)r\rGr3rfrrlr r[rgr%�
StopIterationrrr(rrrJr#r)r�excrr	r	r
�test_exceptions�
zBaseFutureTests.test_exceptioncCs,|j|jd�}|�t�|�|��t�dSrW)rGr3r%r\rLr rXr	r	r
�test_exception_classs
z$BaseFutureTests.test_exception_classcsn|j|jd���fdd�}|�}|�t|�d�|�t|�����d�|�t|�d�|�t|�d�dS)NrSc3s4�dV�EdH}d|fV�EdH}d|fVdS)N�A�B�Cr	)�x�yr
r	r
�fixture%s�


z6BaseFutureTests.test_yield_from_twice.<locals>.fixturer�re)r�re)r�re)rGr3rJ�nextr#)rr�r=r	r
r
�test_yield_from_twice"s
z%BaseFutureTests.test_yield_from_twicec
Cs�|j�d�|j|jd�}|jd}|�t|�d|jj�d|d�d|d�d	��|��|j�d
�|j|jd�}|�t|�d|jj�d��|��|j|jd�}|��|�t|�d|jj�d��|j|jd�}|�	d
�|�t|�d|jj�d��|�|�
�d
�t�}|j|jd�}|�|�|�t|�d|jj�d��|�
|��|�dd�}|j|jd�}	|	�t�|t�}
|�t|	�d|jjd|
�|	��|�t|	�d|jj�d��|j|jd�}|�t�|�t�|t�}|t�}
|�t|�d|jjd||
f�|j|jd�}|�t�td�D]}|�t��q|�t�d||
f}|�t|�d|jjd|�|��|�t|�d|jj�d��dS)NTrS����<z pending created at r�:rR�>Fz	 pending>z cancelled>�z finished result=4>z# finished exception=RuntimeError()>cSs(t�|�\}}d|j||f}t�|�S)Nz
%s() at %s:%s)�
test_utilsZget_function_sourcer,�re�escape)�func�filename�lineno�textr	r	r
�	func_reprTs
z3BaseFutureTests.test_future_repr.<locals>.func_reprz pending cb=\[%s\]>z pending cb=\[%s, %s\]>�z%s, <8 more>, %s)r3�	set_debugrG�_source_tracebackrJrqrCr*rr#rr\r%r;r ror�assertRegexrr�range)rZf_pending_debug�frameZ	f_pending�f_cancelledZf_resultr��f_exceptionr�Zf_one_callbacksZ	fake_reprZf_two_callbacksZ
first_reprZ	last_reprZf_many_callbacks�iZcb_regexr	r	r
�test_future_repr4s�
"�
�
�
�
�


��

�
�z BaseFutureTests.test_future_reprcCs�ddlm}|j|jd�}|�d�|j|jd�}|||�|�|���|�|��d�|j|jd�}|�	t
��|j|jd�}|||�|�|���|�t
|j�|j|jd�}|��|j|jd�}|||�|�|�
��dS)Nr)�_copy_future_staterS�
)Zasyncio.futuresr�rGr3r#r(rrJrr%r\rfrr)rr�rZnewfr�Znewf_exceptionr�Znewf_cancelledr	r	r
�test_copy_stateys$



zBaseFutureTests.test_copy_statecsd|j|jd���fdd���fdd�}|�td��|�Wd�n1s'wY���dS)NrSc3s��EdHdSrr	r	�rur	r
�coro�s�z'BaseFutureTests.test_iter.<locals>.corocs��\}}dSrr	)Zarg1Zarg2)r�r	r
r^�rz'BaseFutureTests.test_iter.<locals>.testzawait wasn't used)rGr3r[r\r)rr^r	)r�rur
�	test_iter�s�zBaseFutureTests.test_itercCsF|j|jd�}|�td��d|_Wd�dS1swYdS)NrSzcan only be set to FalseT)rGr3r[�
ValueError�_log_tracebackrtr	r	r
�test_log_traceback�s"�z"BaseFutureTests.test_log_tracebackzasyncio.base_events.loggercCs"|j|jd�}~|�|jj�dSrW)rGr3r�error�called�r�m_logrur	r	r
�test_tb_logger_abandoned�sz(BaseFutureTests.test_tb_logger_abandonedcCs6|j|jd�}|�t��|��~|�|jj�dSrW)rGr3r%rnrrr�r�r�r	r	r
�&test_tb_logger_not_called_after_cancel�s
z6BaseFutureTests.test_tb_logger_not_called_after_cancelcCs,|j|jd�}|�d�~|�|jj�dSr~)rGr3r#rr�r�r�r	r	r
�!test_tb_logger_result_unretrieved�s
z1BaseFutureTests.test_tb_logger_result_unretrievedcCs4|j|jd�}|�d�|��~|�|jj�dSr~)rGr3r#rrr�r�r�r	r	r
�test_tb_logger_result_retrieved�s

z/BaseFutureTests.test_tb_logger_result_retrievedcCsD|j|jd�}|�td��~t�|j�t��|�|j	j
�dS�NrSZboom)rGr3r%r\r��run_brieflyr�
gc_collectr(r�r�r�r	r	r
�$test_tb_logger_exception_unretrieved�sz4BaseFutureTests.test_tb_logger_exception_unretrievedcCs8|j|jd�}|�td��|��~|�|jj�dSr�)rGr3r%r\r rr�r�r�r	r	r
�"test_tb_logger_exception_retrieved�s
z2BaseFutureTests.test_tb_logger_exception_retrievedcCs>|j|jd�}|�td��|�t|j�~|�|jj�dSr�)	rGr3r%r\rfrrr�r�r�r	r	r
�)test_tb_logger_exception_result_retrieved�s
z9BaseFutureTests.test_tb_logger_exception_result_retrievedcCs|dd�}tj�d�}|�|d�}tj||jd�}|j�|�\}}|�t�	|��|�
|d�|�|t�
��|jdd�dS)NcS�|t��fSr��	threading�	get_ident��argr	r	r
�run��z-BaseFutureTests.test_wrap_future.<locals>.runrR�oirST��wait)�
concurrentr�ThreadPoolExecutor�submitrr:r3r_r(rTrJZassertNotEqualr�r��shutdown)rr��ex�f1�f2�res�identr	r	r
r>�sz BaseFutureTests.test_wrap_futurecCs(|j|jd�}t�|�}|�||�dSrW)rGr3rr:r;�rr�r�r	r	r
�test_wrap_future_future�s
z'BaseFutureTests.test_wrap_future_futurecCsfdd�}tj�d�}|�|d�}|�td��
t�|�Wd�n1s&wY|jdd�dS)NcSr�rr�r�r	r	r
r��r�z:BaseFutureTests.test_wrap_future_without_loop.<locals>.runrRr�rZTr�)	r�rr�r�r[r\rr:r�)rr�r�r�r	r	r
�test_wrap_future_without_loop�s�z-BaseFutureTests.test_wrap_future_without_loopcsZdd�}tj�d�}|�|d���fdd�}|j�|��}|�|j|j�|jdd�dS)	NcSr�rr�r�r	r	r
r��r�z>BaseFutureTests.test_wrap_future_use_running_loop.<locals>.runrRr�c�s�t���Sr)rr:r	�r�r	r
r^�s�
z?BaseFutureTests.test_wrap_future_use_running_loop.<locals>.testTr�)	r�rr�r�r3r_r;r`r�)rr�r�r^r�r	r�r
�!test_wrap_future_use_running_loop�sz1BaseFutureTests.test_wrap_future_use_running_loopcCsdt�|j�|�tjd�dd�}tj�d�}|�|d�}t�|�}|�	|j|j
�|jdd�dS)NcSr�rr�r�r	r	r
r�r�z=BaseFutureTests.test_wrap_future_use_global_loop.<locals>.runrRr�Tr�)rrcr3r4r�rr�r�r:r;r`r�)rr�r�r�r�r	r	r
� test_wrap_future_use_global_loops
z0BaseFutureTests.test_wrap_future_use_global_loopcCsNtj��}tj||jd�}|��t�|j�|�	|�
��|�	|�
��dSrW)r�r�Futurerr:r3rr�r�r(rr�r	r	r
�test_wrap_future_cancel
s
z'BaseFutureTests.test_wrap_future_cancelcCshtj��}tj||jd�}|�d�|��t�	|j�|�
|���|�|�
�d�|�|���dSr~)r�rr�rr:r3r#rr�r�rrrJrr(r�r	r	r
�test_wrap_future_cancel2s

z(BaseFutureTests.test_wrap_future_cancel2cCsZ|j�d�|j|jd�}t��jd}|�|jt�|�	|jddd�t
|df�dS)NTrSrR�����test_future_source_traceback)r3r�rG�sys�	_getframe�f_linenorLr��listrJ�__file__)rrMr�r	r	r
r�s��z,BaseFutureTests.test_future_source_tracebackc	Cs�|j�|�dd�}|�}|j|jd�}|�|�d}t�|j�t��tj	dkrDd|j
j�d�}t|�||j
f}|jjtj|d�nd}|jjtjd	d�|jjd
d
}|�|t�|tj��dS)Nc
Ss0zt��ty}z|WYd}~Sd}~wwr)�MemoryError�
BaseException)r�r	r	r
�memory_error.s��zLBaseFutureTests.check_future_exception_never_retrieved.<locals>.memory_errorrS)r�r��^z exception was never retrieved
)�exc_infoz,^Future/Task exception was never retrieved\nFr)r3r�rGr%r�r�rr�r��version_inforCr*rU�
__traceback__r�Zassert_called_once_withr�ANYZ	call_argsr�r��compile�DOTALL)	r�debugr�r�r�rMZregexr��messager	r	r
�&check_future_exception_never_retrieved*s 

z6BaseFutureTests.check_future_exception_never_retrievedcC�|�d�dSrO�r�rr	r	r
�%test_future_exception_never_retrievedErz5BaseFutureTests.test_future_exception_never_retrievedcCr�r&r�rr	r	r
�+test_future_exception_never_retrieved_debugHrz;BaseFutureTests.test_future_exception_never_retrieved_debugcCs4|j|jd�}|��t�|d�|�|���dS)NrS�)rGr3rrZ_set_result_unless_cancelledr(rrtr	r	r
� test_set_result_unless_cancelledKsz0BaseFutureTests.test_set_result_unless_cancelledc
Cs||j|jd�}|�d�|��}d}z|�d�Wnty0}z|jd}WYd}~n
d}~ww|�d�|�|d�dS)NrS)rRr�rzStopIteration was expected)	rGr3r#r)�sendr�rEZfailrJ)rru�firr�r	r	r
�test_future_stop_iteration_argsQs
��
z/BaseFutureTests.test_future_stop_iteration_argscCs\|j|jd�}t|�}|�t|jttd�d�|�t|jtd�td��|�t|jt�dS)NrSZelephant� )rGr3rsrfrg�throwrnr�)rrur�r	r	r
�test_future_iter_throw^s

�
�z&BaseFutureTests.test_future_iter_throwcCs:Gdd�d�}td�D]}|j|jd�}|�|��qdS)Nc@�eZdZdd�ZdS)z5BaseFutureTests.test_future_del_collect.<locals>.EvilcSst��dSr)�gcZcollectrr	r	r
�__del__ir�z=BaseFutureTests.test_future_del_collect.<locals>.Evil.__del__N)r*r+r,r�r	r	r	r
�Evilh�r��drS)r�rGr3r#)rr�r�rur	r	r
�test_future_del_collectgs
�z'BaseFutureTests.test_future_del_collect)1r*r+r,rGr1rNrVrYr]rbrdrhrvr{r|r}rr�r�r�r�r�r�r�rZpatchr�r�r�r�r�r�r�r>r�r�r�r�r�r�r�r�r�r�r�r�r�r�rAr	r	r6r
rBfsh4

E








	


	rB�_CFuturezrequires the C _asyncio modulec@s6eZdZzejZWneydZYnwdd�ZdS)�CFutureTestsNcCsp|j|jd�}|�t��
|`Wd�n1swY|�t��|`Wd�dS1s1wYdSrW)rGr3rfrmr'r�rtr	r	r
�test_future_del_segfaultys�"�z%CFutureTests.test_future_del_segfault)r*r+r,rr�rCrmrr	r	r	r
rqs
�rc@s>eZdZzGdd�dej�ZeZWdSeydZYdSw)�CSubFutureTestsc@�eZdZdS)zCSubFutureTests.CSubFutureN�r*r+r,r	r	r	r
�
CSubFuture��rN)r*r+r,rr�rrCrmr	r	r	r
r�s

�rc@seZdZejZdS)�
PyFutureTestsN)r*r+r,r�	_PyFuturerCr	r	r	r
r�s
rcs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Z�ZS)�BaseFutureDoneCallbackTestscst���|��|_dSr)r0r1r2r3rr6r	r
r1�s
z!BaseFutureDoneCallbackTests.setUpcCst�|j�dSr)r�r�r3rr	r	r
r��rHz'BaseFutureDoneCallbackTests.run_brieflycs��fdd�}|S)Ncs����dSr)�append)rM��bag�thingr	r
�bag_appender�rz@BaseFutureDoneCallbackTests._make_callback.<locals>.bag_appenderr	)rrr
rr	rr
�_make_callback�sz*BaseFutureDoneCallbackTests._make_callbackcC�t�r��NotImplementedErrorrr	r	r
rG�rz'BaseFutureDoneCallbackTests._new_futurecCs�g}|��}|�|d�}|�|d�}|�|d�}|�|�|�|�|�|�|�|�|�|�|�|g�|�d�|��|�|ddg�|�|��d�dS�Nre�r��foo�rGrrorprJr#r�r�rrr�cb1�cb2�cb3r	r	r
�$test_callbacks_remove_first_callback��





z@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callbackcCs�g}|��}|�|d�}|�|d�}|�|d�}|�|�|�|�|�|�|�|�|�|�|�|�|�|g�|�d�|��|�|dg�|�|��d�dSrrrr	r	r
�/test_callbacks_remove_first_and_second_callback�s 






zKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callbackcCs�g}|��}|�|d�}|�|d�}|�|d�}|�|�|�|�|�|�|�|�|�|�|�|g�|�d�|��|�|ddg�|�|��d�dSrrrr	r	r
�$test_callbacks_remove_third_callback�rz@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callbackcCsrg}|��}|�|�|d��|�|�|d��|�|g�|�d�|��|�|ddg�|�|��d�dS)Nrerr)rGrorrJr#r�r)rrrr	r	r
�$test_callbacks_invoked_on_set_result�s
z@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_resultcCsdg}|��}|�|�|d��|�|g�t�}|�|�|��|�|dg�|�|��|�dS)Nr�)rGrorrJr\r%r�r )rrrr�r	r	r
�'test_callbacks_invoked_on_set_exception�s
zCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exceptioncCs�g}|��}|�|d�}|�|d�}|�|d�}|�|�|�|�|�|�|�d�|�|�|�d�|�|�td�D]}|�|�q=|�|�|�d�|�|g�|�d�|��|�|dg�|�|��d�dS)NrRr�r�r��r)	rGrrorJrpr�r#r�r)rrrrrrr�r	r	r
�test_remove_done_callbacks$



z5BaseFutureDoneCallbackTests.test_remove_done_callbackc�L|�����t�td�D]}��t�q
G�fdd�d�}��|��dS)N�?c�eZdZ�fdd�ZdS)zRBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evilcs��t�dSrO)rp�id�r�otherr�r	r
�__eq__0s
zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evil.__eq__N�r*r+r,r*r	r�r	r
�evil/�r,�rGrorIr�r'rp�r�_r,r	r�r
�(test_remove_done_callbacks_list_mutation&s
zDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutationcr$)Nr%cr&)zOBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evilcs��|�dSr)rpr(r�r	r
r*@rzVBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evil.__eq__Nr+r	r�r	r
r,?r-r,r.r/r	r�r
�%test_remove_done_callbacks_list_clear6s
zABaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clearcCsHdd�}|��}|�|�|�t�|�t�|�d�t�|j�dS)NcSs|�t�dSr)rprIr
r	r	r
�mutHrzPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1.<locals>.mutrR)rGrorIr#r�r�r3)rr3rur	r	r
�'test_schedule_callbacks_list_mutation_1Es



zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1csX|�����t�td�D]}��t�q
d�d�G���fdd�d�}��|��dS)Nr%r�rcseZdZ���fdd�ZdS)zQBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evilcs�d7���kr
��t�dS)NrRF)ror'r(�Z	extra_cbsruZ
max_extra_cbsr	r
r*_s
zXBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evil.__eq__Nr+r	r5r	r
r,^sr,r.r/r	r5r
�'test_schedule_callbacks_list_mutation_2Rs
zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2)r*r+r,r1r�rrGrrrrr r#r1r2r4r6rAr	r	r6r
r	�s!
r	c@r�)�CFutureDoneCallbackTestscC�tj|jd�SrW�rr�r3rr	r	r
rGnrz$CFutureDoneCallbackTests._new_futureN�r*r+r,rGr	r	r	r
r7i�r7c@r�)�CSubFutureDoneCallbackTestscCsGdd�dtj�}||jd�S)Nc@r)z;CSubFutureDoneCallbackTests._new_future.<locals>.CSubFutureNrr	r	r	r
rxrrrSr9)rrr	r	r
rGwsz'CSubFutureDoneCallbackTests._new_futureNr:r	r	r	r
r<rr;r<c@r�)�PyFutureDoneCallbackTestscCr8rW)rrr3rr	r	r
rG�rz%PyFutureDoneCallbackTests._new_futureNr:r	r	r	r
r=}sr=cs,eZdZdd�Z�fdd�Zdd�Z�ZS)�BaseFutureInheritanceTestscCrrrrr	r	r
�_get_future_cls�rz*BaseFutureInheritanceTests._get_future_clscr.rr/rr6r	r
r1�r8z BaseFutureInheritanceTests.setUpcCs^|��}Gdd�d|�}||jd�}|�td��
|��Wd�dS1s(wYdS)Nc@r�)zQBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFutc_rrr	rDr	r	r
rP�szZBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFut.__init__N)r*r+r,rPr	r	r	r
�MyFut�r�r@rSz!Future object is not initialized.)r?r3r[r\ra)rrCr@rur	r	r
�'test_inherit_without_calling_super_init�s�
"�zBBaseFutureInheritanceTests.test_inherit_without_calling_super_init)r*r+r,r?r1rArAr	r	r6r
r>�sr>c@r�)�PyFutureInheritanceTestscC�tjSr)rrrr	r	r
r?�rz(PyFutureInheritanceTests._get_future_clsN�r*r+r,r?r	r	r	r
rB�srBc@r�)�CFutureInheritanceTestscCrCr)rr�rr	r	r
r?�rz'CFutureInheritanceTests._get_future_clsNrDr	r	r	r
rE�srE�__main__)(�__doc__�concurrent.futuresr�r�r�r�r�Zunittestr�typesrrrZtest.test_asynciorr�r^rrrrrrZTestCaser-rBZ
skipUnlessryrrrr	r7r<r=r>rBrEr*�mainr	r	r	r
�<module>s~3��
Y����	�����