HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/__pycache__/test_concurrent_futures.cpython-311.opt-1.pyc
�

��Vc����v�ddlmZddlmZddlmZejd��ddlmZddlmZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlZddlZddlZddlZddlZddlZdd	lmZdd
lmZddlmZmZmZmZmZmZm Z ddl!m"Z"m#Z#ddl$Z%ddl&Z%ddl%Z'ej(d
d
���rej)d���eddfd�Z*e*e���Z+e*e���Z,e*e���Z-e*e���Z.e*ee/�����Z0e*ed���Z1da2d�Z3d�Z4d�Z5d�Z6d�Z7d�Z8d]d�Z9Gd�de:��Z;Gd�d ��Z<d!�Z=Gd"�d#ej>��Z?Gd$�d%��Z@Gd&�d'e@��ZAGd(�d)e@��ZBGd*�d+e@��ZCGd,�d-e@��ZDe?feAeBeDeCffd.�ZEGd/�d0e@��ZFGd1�d2e@��ZGeEeF��eEeG��Gd3�d4��ZHGd5�d6eAeHe?��ZIGd7�d8eH��ZJeEeJeBeDeCf�9��Gd:�d;��ZKGd<�d=eAeKe?��ZLeEeKeBeDeCf�9��Gd>�d?��ZMeEeM��Gd@�dA��ZNGdB�dCeAeNe?��ZOGdD�dEeN��ZPeEePeBeDeCf�9��d]dF�ZQdG�ZRdH�ZSdI�ZTdJ�ZUGdK�dLe:��ZVGdM�dNe:��ZWGdO�dPe:��ZXGdQ�dRe:��ZYGdS�dTe:��ZZGdU�dVe:��Z[GdW�dX��Z\eEe\eBeDeCf�9��GdY�dZe?��Z]d[�Z^e_d\krej`��dSdS)^�)�support)�
import_helper)�threading_helper�_multiprocessing)�hashlib_helper)�assert_python_okN)�QueueHandler��
PicklingError)�futures)�PENDING�RUNNING�	CANCELLED�CANCELLED_AND_NOTIFIED�FINISHED�Future�BrokenExecutor)�BrokenProcessPool�_check_system_limitsT)�address�memoryz test too slow on ASAN/MSAN buildc�L�t��}||_||_||_|S�N)r�_state�
_exception�_result)�state�	exception�result�fs    �0D:\Python311\Lib\test\test_concurrent_futures.py�
create_futurer")s%�����A��A�H��A�L��A�I��H��r�rr�*�rr�
uninitializedc��||zSr�)�x�ys  r!�mulr-:s���q�5�Lr#c�
�||fSrr*)�args�kwargss  r!�capturer1=s����<�r#c�H�tj|��td���)Nzthis is an exception)�time�sleep�	Exception)�ts r!�sleep_and_raiser7@s���J�q�M�M�M�
�*�
+�
+�+r#c��tj|��t|��tj���dSr)r3r4�print�sys�stdout�flush)r6�msgs  r!�sleep_and_printr>Ds4���J�q�M�M�M�	�#�J�J�J��J�������r#c�
�|adSr��INITIALIZER_STATUS)r+s r!�initrBIs�����r#c��tSrr@r*r#r!�get_init_statusrDMs���r#c���|�Rtjd��}|�t|����|�d��d|_t
jd��td���)N�concurrent.futures�CRITICALF皙�����?zerror in initializer)	�logging�	getLogger�
addHandlerr	�setLevel�	propagater3r4�
ValueError)�	log_queue�loggers  r!�	init_failrQPsm���!��"�#7�8�8�����,�y�1�1�2�2�2����
�#�#�#� ����J�s�O�O�O�
�+�
,�
,�,r#c��eZdZd�ZdS)�MyObjectc��dSrr*��selfs r!�	my_methodzMyObject.my_method[s���r#N)�__name__�
__module__�__qualname__rWr*r#r!rSrSZs#������
�
�
�
�
r#rSc��eZdZd�Zd�ZdS)�
EventfulGCObjc�8�|���|_dSr)�Event�event)rV�mgrs  r!�__init__zEventfulGCObj.__init__`s���Y�Y�[�[��
�
�
r#c�8�|j���dSr)r_�setrUs r!�__del__zEventfulGCObj.__del__cs���
�������r#N)rXrYrZrardr*r#r!r\r\_s2������!�!�!�����r#r\c��t��Sr)rS)�_s r!�make_dummy_objectrggs���:�:�r#c��eZdZd�Zd�ZdS)�BaseTestCasec�6�tj��|_dSr)r�threading_setup�_thread_keyrUs r!�setUpzBaseTestCase.setUpls��+�;�=�=����r#c�R�tj��tj|j�dSr)r�
reap_childrenr�threading_cleanuprlrUs r!�tearDownzBaseTestCase.tearDownos(��������*�D�,<�=�=�=�=r#N)rXrYrZrmrqr*r#r!ririks2������>�>�>�>�>�>�>�>r#ric�6��eZdZdZiZ�fd�Z�fd�Zd�Z�xZS)�
ExecutorMixin�c�:��t�����tj��|_t|d��r3|jd|j|���d�|j	��|_
dS|jdd|ji|j	��|_
dS)N�ctx��max_workers�
mp_contextrxr*)�superrmr3�	monotonic�t1�hasattr�
executor_type�worker_count�get_context�executor_kwargs�executor�rV�	__class__s �r!rmzExecutorMixin.setUpxs����
���
�
�����.�"�"����4����	(�.�D�.�(� �-��+�+�-�-�(�(��&�(�(�D�M�M�M�
/�D�.�(�(� �-�(��&�(�(�D�M�M�Mr#c�0��|j�d���d|_tj��|jz
}t
jrtd|zd���|�|dd��t���
��dS)NT��waitz%.2fs� )�endi,z+synchronization issue: test lasted too long)r��shutdownr3r{r|r�verboser9�
assertLessrzrq)rV�dtr�s  �r!rqzExecutorMixin.tearDown�s�����
���D��)�)�)���
�
�^�
�
���
'���?�	)��'�B�,�C�(�(�(�(�����C�!N�O�O�O�
���������r#c�4�tj|j��Sr)�mpr�rvrUs r!r�zExecutorMixin.get_context�s���~�d�h�'�'�'r#)	rXrYrZrr�rmrqr��
__classcell__�r�s@r!rsrstsj��������L��O�(�(�(�(�(�	�	�	�	�	�(�(�(�(�(�(�(r#rsc��eZdZejZdS)�ThreadPoolMixinN)rXrYrZr�ThreadPoolExecutorr~r*r#r!r�r��s�������.�M�M�Mr#r�c�0��eZdZejZdZ�fd�Z�xZS)�ProcessPoolForkMixin�forkc���	t��n%#t$r|�d��YnwxYwtjdkr|�d��t�����S�N�.ProcessPoolExecutor unavailable on this system�win32zrequire unix system�r�NotImplementedError�skipTestr:�platformrzr�r�s �r!r�z ProcessPoolForkMixin.get_context�����	L� �"�"�"�"��"�	L�	L�	L��M�M�J�K�K�K�K�K�	L�����<�7�"�	1��M�M�/�0�0�0��w�w�"�"�$�$�$���4�4�	rXrYrZr�ProcessPoolExecutorr~rvr�r�r�s@r!r�r��sE��������/�M�
�C�%�%�%�%�%�%�%�%�%r#r�c�0��eZdZejZdZ�fd�Z�xZS)�ProcessPoolSpawnMixin�spawnc���	t��n%#t$r|�d��YnwxYwt�����S)Nr�)rr�r�rzr�r�s �r!r�z!ProcessPoolSpawnMixin.get_context�sf���	L� �"�"�"�"��"�	L�	L�	L��M�M�J�K�K�K�K�K�	L�����w�w�"�"�$�$�$r�r�r�s@r!r�r��sE��������/�M�
�C�%�%�%�%�%�%�%�%�%r#r�c�0��eZdZejZdZ�fd�Z�xZS)�ProcessPoolForkserverMixin�
forkserverc���	t��n%#t$r|�d��YnwxYwtjdkr|�d��t�����Sr�r�r�s �r!r�z&ProcessPoolForkserverMixin.get_context�r�r�r�r�s@r!r�r��sE��������/�M�
�C�%�%�%�%�%�%�%�%�%r#r�c��d�}|D]O}||j���||j���d�}t||f|fz|zi��}|t��|<�PdS)Nc��|�d��r
|dd�S|�d��r
|dd�S|S)N)�Mixin�Tests����Test���)�endswith)�names r!�strip_mixinz*create_executor_tests.<locals>.strip_mixin�sL���=�=�+�,�,�	�����9��
�]�]�6�
"�
"�	�����9���Kr#r�)rX�type�globals)�mixin�bases�executor_mixinsr��exer��clss       r!�create_executor_testsr��s���
��������;�s�|�,�,�,�k�k�%�.�.I�.I�.I�.I�K���4�%��S�F�*�U�2�B�7�7����	�	�$���	�r#c�(��eZdZdZ�fd�Zd�Z�xZS)�InitializerMixin�c���dattd���|_t	�����dS)Nr()�initialized��initializer�initargs)rA�dictrBr�rzrmr�s �r!rmzInitializerMixin.setUp�s:���,��#��-=� ?� ?� ?���
���
�
�����r#c����fd�t�j��D��}|D]*}��|���d���+dS)Nc�N��g|]!}�j�t����"Sr*)r��submitrD��.0rfrVs  �r!�
<listcomp>z5InitializerMixin.test_initializer.<locals>.<listcomp>�s9���6�6�6���=�'�'��8�8�6�6�6r#r�)�ranger�assertEqualr)rVrr s`  r!�test_initializerz!InitializerMixin.test_initializer�sr���6�6�6�6�!�$�"3�4�4�6�6�6���	8�	8�A����Q�X�X�Z�Z��7�7�7�7�	8�	8r#)rXrYrZrrmr�r�r�s@r!r�r��sL��������L������8�8�8�8�8�8�8r#r�c�H��eZdZdZ�fd�Zd�Zejd���Z�xZ	S)�FailingInitializerMixinr�c�j��t|d��rY|���|_|j���|_tt|jf���|_n(d|_d|_tt���|_t���	��dS)Nrvr�)r�)
r}r�ry�QueuerOr�rQr�rzrmr�s �r!rmzFailingInitializerMixin.setUp�s�����4����	?�"�.�.�0�0�D�O�!�_�2�2�4�4�D�N�#'�I�26�.�1B�$D�$D�$D�D� � �
#�D�O�!�D�N�#'�I�#>�#>�#>�D� �
���
�
�����r#c���|�d��5	|j�t��}|�t
��5|���ddd��n#1swxYwYn#t
$rYnwxYwtj��}|jj	sOtj��|z
dkr|�
d��tjd��|jj	�O|�t
��5|j�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz ValueError: error in initializerrtzexecutor not broken after 5 s.g{�G�z�?)�_assert_loggedr�r�rD�assertRaisesrrr3r{�_broken�failr4)rV�futurer|s   r!r�z(FailingInitializerMixin.test_initializer�s��
�
 �
 �!C�
D�
D�	6�	6�
$���-�-�o�>�>��
�&�&�~�6�6�$�$��M�M�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$���	"�
�
�
���
������!�!�B��m�+�
!��>�#�#�b�(�1�,�@��I�I�>�?�?�?��
�4� � � ��m�+�
!�
�"�"�>�2�2�
6�
6��
�$�$�_�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�!	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s|�E�A>�E�A2�&E�2A6	�6E�9A6	�:E�>
B�E�
B�BE� E�6E�E	�E�	E	�
E�E�!Ec#��K�|j�\dV�g}		|�|j���������?#tj$rYn=wxYw|�dd��5}dV�ddd��n#1swxYwY|j}|�t�fd�|D����|��dS)NTrFrGc3� �K�|]}�|vV��	dSrr*)r��liner=s  �r!�	<genexpr>z9FailingInitializerMixin._assert_logged.<locals>.<genexpr>s'�����;�;�D�C�4�K�;�;�;�;�;�;r#)
rO�append�
get_nowait�
getMessage�queue�Empty�
assertLogs�output�
assertTrue�any)rVr=r��cms `  r!r�z&FailingInitializerMixin._assert_logged
s9������>�	��E�E�E��F�
�L��M�M�$�.�";�";�"=�"=�"H�"H�"J�"J�K�K�K�L���;�
�
�
���
�������!5�z�B�B�
�b�����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��Y�F�����;�;�;�;�F�;�;�;�;�;��	 �	 �	 �	 �	 s$�AA�A$�#A$�=B�B�B)
rXrYrZrrmr��
contextlib�contextmanagerr�r�r�s@r!r�r��sk��������L�
�
�
�
�
�6�6�6�(�� � ��� � � � � r#r�c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�ExecutorShutdownTestc��|j���|�t|jjt
dd��dS)Nr�rt)r�r�r��RuntimeErrorr��powrUs r!�test_run_after_shutdownz,ExecutorShutdownTest.test_run_after_shutdown$sI���
��� � � ����,��-�.��q�!�	%�	%�	%�	%�	%r#c��tdd�|jjt	|dd�������\}}}|�|��|�|���d��dS)N�-caKif 1:
            from concurrent.futures import {executor_type}
            from time import sleep
            from test.test_concurrent_futures import sleep_and_print
            if __name__ == "__main__":
                context = '{context}'
                if context == "":
                    t = {executor_type}(5)
                else:
                    from multiprocessing import get_context
                    context = get_context(context)
                    t = {executor_type}(5, mp_context=context)
                t.submit(sleep_and_print, 1.0, "apple")
            rv��r~�context�apple)r�formatr~rX�getattr�assertFalser��strip�rV�rc�out�errs    r!�test_interpreter_shutdownz.ExecutorShutdownTest.test_interpreter_shutdown*s���'��
/���T�%7�%@�&�t�U�B�7�7��9�9�:�:���C��"	
���������������h�/�/�/�/�/r#c�*�tdd�|jjt	|dd�������\}}}|�d|�����|�|���d��dS)Nr�a�if 1:
            import atexit
            @atexit.register
            def run_last():
                try:
                    t.submit(id, None)
                except RuntimeError:
                    print("runtime-error")
                    raise
            from concurrent.futures import {executor_type}
            if __name__ == "__main__":
                context = '{context}'
                if not context:
                    t = {executor_type}(5)
                else:
                    from multiprocessing import get_context
                    context = get_context(context)
                    t = {executor_type}(5, mp_context=context)
                    t.submit(id, 42).result()
            rvr�r�z)RuntimeError: cannot schedule new futuress
runtime-error)	rr�r~rXr��assertIn�decoder�r�r�s    r!�&test_submit_after_interpreter_shutdownz;ExecutorShutdownTest.test_submit_after_interpreter_shutdown@s���'��/�&��T�%7�%@�&�t�U�B�7�7��9�9�':�:���C��.	
�
�
�A�3�:�:�<�<�P�P�P���������&6�7�7�7�7�7r#c����fd�td��D��}�j���|D]}|����dS)Nc�Z��g|]'}�j�tjd����(S�rH�r�r�r3r4r�s  �r!r�z=ExecutorShutdownTest.test_hang_issue12364.<locals>.<listcomp>]s-���
G�
G�
G��d�m�"�"�4�:�s�3�3�
G�
G�
Gr#�2)r�r�r�r)rV�fsr s`  r!�test_hang_issue12364z)ExecutorShutdownTest.test_hang_issue12364\s^���
G�
G�
G�
G�U�2�Y�Y�
G�
G�
G���
��� � � ��	�	�A�
�H�H�J�J�J�J�	�	r#c�����fd�td��D��}�j�d���d�|D��}��t	|��d��d�|D��}|D]Z}��|���d|j���	����|�	�����[��t	|��d
��dS)Nc�Z��g|]'}�j�tjd����(Srrr�s  �r!r�z<ExecutorShutdownTest.test_cancel_futures.<locals>.<listcomp>ds-���
F�
F�
F�q�d�m�"�"�4�:�r�2�2�
F�
F�
Fr#rT)�cancel_futuresc�:�g|]}|����|��Sr*��	cancelled�r��futs  r!r�z<ExecutorShutdownTest.test_cancel_futures.<locals>.<listcomp>is%��:�:�:�S�#�-�-�/�/�:�S�:�:�:r#�c�:�g|]}|����|��Sr*rrs  r!r�z<ExecutorShutdownTest.test_cancel_futures.<locals>.<listcomp>os%��;�;�;�#�3�=�=�?�?�;�#�;�;�;r#zfut._state=)r=r)
r�r�r��
assertGreater�lenr��doner�assertIsNoner)rVrr�othersrs`    r!�test_cancel_futuresz(ExecutorShutdownTest.test_cancel_futuresbs����
F�
F�
F�
F�E�"�I�I�
F�
F�
F���
���d��3�3�3�;�:�B�:�:�:�	����3�y�>�>�2�.�.�.�
<�;��;�;�;���	/�	/�C��O�O�C�H�H�J�J�,<�s�z�,<�,<�O�=�=�=����c�m�m�o�o�.�.�.�.�
	
���3�v�;�;��*�*�*�*�*r#c�V�|jtjkrtjd���tdd�|jjt|dd�������\}}}|�	|��|�
|���d��dS)z�shutdown(wait=False) doesn't hang at exit with running futures.

        See https://github.com/python/cpython/issues/83386.
        z9Hangs, see https://github.com/python/cpython/issues/83386r�a�if True:
            from concurrent.futures import {executor_type}
            from test.test_concurrent_futures import sleep_and_print
            if __name__ == "__main__":
                if {context!r}: multiprocessing.set_start_method({context!r})
                t = {executor_type}(max_workers=3)
                t.submit(sleep_and_print, 1.0, "apple")
                t.shutdown(wait=False)
            rvNr�r�)r~rr��unittest�SkipTestrr�rXr�r�r�r�r�s    r!�test_hang_gh83386z&ExecutorShutdownTest.test_hang_gh83386ys���
���!<�<�	M��#�K�M�M�
M�(��/���T�%7�%@�&�t�U�D�9�9��;�;�	<�	<���C��	
���������������h�/�/�/�/�/r#N)	rXrYrZr�r�rr	rrr*r#r!r�r�#sn������%�%�%�0�0�0�,8�8�8�8���+�+�+�.0�0�0�0�0r#r�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�ThreadPoolShutdownTestc��d�}tjd��}td��D]}|j�||���|�t
|jj��d��td��D]}|����|j�	��|jjD]}|�
���dS)Nc�.�|���dSr��acquire��locks r!�acquire_lockzCThreadPoolShutdownTest.test_threads_terminate.<locals>.acquire_lock�����L�L�N�N�N�N�Nr#r�)�	threading�	Semaphorer�r�r�r�r�_threads�releaser��join)rVr&�sem�ir6s     r!�test_threads_terminatez-ThreadPoolShutdownTest.test_threads_terminate�s���	�	�	��!�!�$�$���q���	4�	4�A��M� � ��s�3�3�3�3�����T�]�3�4�4�a�8�8�8��q���	�	�A��K�K�M�M�M�M��
��� � � ���'�	�	�A�
�F�F�H�H�H�H�	�	r#c�8�tjd���5}|}|�t|�t
t
dd������gd���ddd��n#1swxYwY|jD]}|����dS)Nrt�rxr��
rt�r(r��rr5r�r(r4)	rr�r��list�map�absr�r+r-)rV�er�r6s    r!�test_context_manager_shutdownz4ThreadPoolShutdownTest.test_context_manager_shutdown�s���
�
'�A�
6�
6�
6�	=�!��H����T�!�%�%��U�2�q�\�\�":�":�;�;�;�;�;�
=�
=�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�
�"�	�	�A�
�F�F�H�H�H�H�	�	s�AA1�1A5�8A5c���tjd���}|�tt	dd����}|j}~|D]}|����dS)Nrtr2r�)rr�r7r8r�r+r-�rVr��res�threadsr6s     r!�test_del_shutdownz(ThreadPoolShutdownTest.test_del_shutdown�sc���-�!�<�<�<���l�l�3��b�!���-�-���#����	�	�A�
�F�F�H�H�H�H�	�	r#c���tjd���}|�tt	dd����}|j}|�d���|D]}|����dS)Nrtr2r�Fr�)rr�r7r8r�r+r�r-r<s     r!�test_shutdown_no_waitz,ThreadPoolShutdownTest.test_shutdown_no_wait�sy���-�!�<�<�<���l�l�3��b�!���-�-���#�����u��%�%�%��	�	�A�
�F�F�H�H�H�H�	�	r#c�"�tjdd���}|�tt	dd����|j}~t
j��|D]1}|�|j	d��|�
���2dS)Nrt�SpecialPool)rx�thread_name_prefixr�z^SpecialPool_[0-4]$�rr�r7r8r�r+r�
gc_collect�assertRegexr�r-�rVr�r>r6s    r!�test_thread_names_assignedz1ThreadPoolShutdownTest.test_thread_names_assigned�s����-��m�=�=�=�����S�%��A�,�,�'�'�'��#���������	�	�A����Q�V�%;�<�<�<�
�F�F�H�H�H�H�	�	r#c� �tjd���}|�tt	dd����|j}~t
j��|D]1}|�|j	d��|�
���2dS)Nrtr2r�zThreadPoolExecutor-\d+_[0-4]$rErHs    r!�test_thread_names_defaultz0ThreadPoolShutdownTest.test_thread_names_default�s����-�!�<�<�<�����S�%��A�,�,�'�'�'��#���������	�	�A�
���Q�V�%E�F�F�F�
�F�F�H�H�H�H�		�	r#c��tdd��\}}}|�|��|�|���d��dS)Nr�a[if True:
            from concurrent.futures import ThreadPoolExecutor
            from test.test_concurrent_futures import sleep_and_print
            if __name__ == "__main__":
                t = ThreadPoolExecutor()
                t.submit(sleep_and_print, .1, "apple")
                t.shutdown(wait=False, cancel_futures=True)
            r�)rr�r�r�r�s    r!�test_cancel_futures_wait_falsez5ThreadPoolShutdownTest.test_cancel_futures_wait_false�sZ��(��/�����C��	
���������������h�/�/�/�/�/r#N)
rXrYrZr0r:r?rArIrKrMr*r#r!rr�s�������������E�E�E�E�E�E�
�
�
����0�0�0�0�0r#rc�&�eZdZd�Zd�Zd�Zd�ZdS)�ProcessPoolShutdownTestc�F�d�}|���}|�d���dkr|j}nd}|�d��}t	d��D]}|j�||���|�t|jj	��|��t	d��D]}|�
���|jj	}|j���|���D]}|�
���dS)Nc�.�|���dSrr"r$s r!r&zFProcessPoolShutdownTest.test_processes_terminate.<locals>.acquire_lock�r'r#F��
allow_noner�r(r)r��get_start_methodrr*r�r�r�r�r�
_processesr,r��valuesr-)rVr&ry�expected_num_processesr.rf�	processes�ps        r!�test_processes_terminatez0ProcessPoolShutdownTest.test_processes_terminate�s1��	�	�	��%�%�'�'�
��&�&�%�&�8�8�F�B�	'�%)�%6�"�"�%&�"��"�"�1�%�%���q���	4�	4�A��M� � ��s�3�3�3�3�����T�]�5�6�6�8N�O�O�O��q���	�	�A��K�K�M�M�M�M��M�,�	��
��� � � ��!�!�#�#�	�	�A�
�F�F�H�H�H�H�	�	r#c��tjd|������5}|j}|�t|�ttdd������gd���ddd��n#1swxYwY|�	��D]}|�
���dS)Nrtrwr�r3)rr�r�rUr�r6r7r8r�rVr-)rVr9rXrYs    r!r:z5ProcessPoolShutdownTest.test_context_manager_shutdowns���
�
(��$�*:�*:�*<�*<�>�>�>�	=�AB���I����T�!�%�%��U�2�q�\�\�":�":�;�;�;�;�;�
=�
=�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��!�!�#�#�	�	�A�
�F�F�H�H�H�H�	�	s�AB	�	B
�B
c��tjd|������}|�ttdd����}|j}|j}|j}|j}~tj
��|���|���D]}|����|�
��dS)Nrtrwr�)rr�r�r7r8r��_executor_manager_threadrU�_call_queuerrFr-rV�join_thread)rVr�r=�executor_manager_threadrX�
call_queuerYs       r!r?z)ProcessPoolShutdownTest.test_del_shutdowns����.��$�*:�*:�*<�*<�>�>�>���l�l�3��b�!���-�-��"*�"C���'�	��)�
�"*�"C��������	 �$�$�&�&�&��!�!�#�#�	�	�A�
�F�F�H�H�H�H���� � � � � r#c��tjd|������}|�ttdd����}|j}|j}|j}|�	d���|�
��|���D]}|�
���|���dS)Nrtrwr�Fr�)
rr�r�r7r8r�rUr^r]r�r-rVr_)rVr�r=rXrar`rYs       r!rAz-ProcessPoolShutdownTest.test_shutdown_no_wait&s����.��$�*:�*:�*<�*<�>�>�>���l�l�3��b�!���-�-���'�	��)�
�"*�"C�����u��%�%�%�	 �$�$�&�&�&��!�!�#�#�	�	�A�
�F�F�H�H�H�H���� � � � � r#N)rXrYrZrZr:r?rAr*r#r!rOrO�sX���������.���E�E�E�,E�E�E�E�Er#rO)r�c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�	WaitTestsc��|j�tjd��}t	j||gtj���\}}|�|h|��|�t��|��dS�N��?��return_when)	r�r�r3r4rr��
ALL_COMPLETEDr�rc)rVr�r�not_dones    r!�
test_20369zWaitTests.test_20369Dsz����%�%�d�j�#�6�6�� ��v�v�&6�(/�(=�?�?�?���h����&��4�(�(�(��������)�)�)�)�)r#c��|j�tdd��}|j�tjd��}tjt||gt
j���\}}|�	t|g��|��|�	tt|g��|��dS)N�r�rgrh)r�r�r-r3r4rr��CANCELLED_FUTURE�FIRST_COMPLETEDr�rc)rV�future1�future2rrks     r!�test_first_completedzWaitTests.test_first_completedMs����-�&�&�s�B��2�2���-�&�&�t�z�3�7�7�� ��!�7�G�4�$�4�6�6�6���h�	
����g�Y����.�.�.�����.��8�9�9�8�D�D�D�D�Dr#c�V�|j�tjd��}t	jtt|gtj���\}}|�	tttg��|��|�	t|g��|��dSrf)r�r�r3r4rr��CANCELLED_AND_NOTIFIED_FUTURE�SUCCESSFUL_FUTURErpr�rc�rVrq�finished�pendings    r!�+test_first_completed_some_already_completedz5WaitTests.test_first_completed_some_already_completedXs����-�&�&�t�z�3�7�7��#�L�/�1B�G�L�$�4�6�6�6���'�	
����2�4E�F�G�G��	�	�	�	
����g�Y����1�1�1�1�1r#c��|j�tdd��}|j�td��}|j�tjd��}t
j|||gtj���\}}|�	t||g��|��|�	t|g��|��dS)Nr�rnrgr(rh)r�r�r-r7r3r4rr��FIRST_EXCEPTIONr�rc)rVrqrr�future3rxrys      r!�test_first_exceptionzWaitTests.test_first_exceptionds����-�&�&�s�A�r�2�2���-�&�&���<�<���-�&�&�t�z�1�5�5��#�L��'�7�+�#�3�5�5�5���'�	
����g�w�/�0�0�(�;�;�;�����g�Y����1�1�1�1�1r#c��|j�tdd��}|j�tjd��}tjttt||gt
j
���\}}|�ttt|g��|��|�tt|g��|��dS)Nrnrrgrh)
r�r��divmodr3r4rr�rvrorur|r�rc�rVrqrrrxrys     r!�*test_first_exception_some_already_completez4WaitTests.test_first_exception_some_already_completeps����-�&�&�v�r�1�5�5���-�&�&�t�z�3�7�7��#�L�"�!�.��'�#�$�3�5�5�5���'�	
����/�;�%�'�(�(�)1�	3�	3�	3�	
����.��8�9�9�7�C�C�C�C�Cr#c�>�|j�tjd��}t	jt|gtj���\}}|�ttg��|��|�t|g��|��dS)Nr�rh)
r�r�r3r4rr��EXCEPTION_FUTUREr|r�rcrws    r!�'test_first_exception_one_already_failedz1WaitTests.test_first_exception_one_already_failed�s����-�&�&�t�z�1�5�5��#�L�"�G�,�$�4�6�6�6���'�	
����.�/�0�0�(�;�;�;�����g�Y����1�1�1�1�1r#c	��|j�tdd��}|j�tdd��}t	jttt||gtj	���\}}|�
tttt||g��|��|�
t��|��dS)Nr�rrnrh)r�r�r�r-rr�rvrur�rjr�rcr�s     r!�test_all_completedzWaitTests.test_all_completed�s����-�&�&�v�q�!�4�4���-�&�&�s�A�r�2�2��#�L�"�.�!���	�
$�1�
3�3�3���'�	
����/�;�.�%�%�	'�(�(�*2�		3�	3�	3�
	
�������(�(�(�(�(r#c��|j�tdd��}|j�tjd��}tjttt||gdt
j
���\}}|�tttt|g��|��|�t|g��|��dS)N��rt)�timeoutri)
r�r�r-r3r4rr�rur�rvrjr�rcr�s     r!�test_timeoutzWaitTests.test_timeout�s����-�&�&�s�A�q�1�1���-�&�&�t�z�1�5�5��#�L�.�!�"��'�#��#�1�
3�3�3���'�	
����;�.�/�%�'�(�(�*2�	3�	3�	3�	
����g�Y����1�1�1�1�1r#N)rXrYrZrlrsrzr~r�r�r�r�r*r#r!rdrdCs�������*�*�*�	E�	E�	E�
2�
2�
2�
2�
2�
2�D�D�D� 2�2�2�)�)�)�&2�2�2�2�2r#rdc��eZdZd�ZdS)�ThreadPoolWaitTestsc�����tj����fd��tj��}tjd��	��fd�td��D��}����tj|tj	���tj|��dS#tj|��wxYw)Nc�0������dSrr�)r_s�r!�future_funcz@ThreadPoolWaitTests.test_pending_calls_race.<locals>.future_func�s����J�J�L�L�L�L�Lr#g���ư>c�D��h|]}�j������Sr*)r�r�)r�r/r�rVs  ��r!�	<setcomp>z>ThreadPoolWaitTests.test_pending_calls_race.<locals>.<setcomp>�s)���H�H�H��$�-�&�&�{�3�3�H�H�Hr#�drh)
r)r^r:�getswitchinterval�setswitchintervalr�rcrr�rj)rV�oldswitchintervalrr_r�s`  @@r!�test_pending_calls_racez+ThreadPoolWaitTests.test_pending_calls_race�s��������!�!��	�	�	�	�	��1�3�3����d�#�#�#�	5�H�H�H�H�H�U�3�Z�Z�H�H�H�B��I�I�K�K�K��L���)>�?�?�?�?��!�"3�4�4�4�4�4��C�!�"3�4�4�4�4���s
�AB*�*CN)rXrYrZr�r*r#r!r�r��s#������
5�
5�
5�
5�
5r#r�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�AsCompletedTestsc	�b�|j�tdd��}|j�tdd��}tt	jttt||g����}|�	tttt||g��|��dS)Nr�rnr�r�)
r�r�r-rcr�as_completedrur�rvr�)rVrqrr�	completeds    r!�test_no_timeoutz AsCompletedTests.test_no_timeout�s����-�&�&�s�A�r�2�2���-�&�&�s�A�q�1�1����,�.�!�"��'�#�$�$�%�%�	�
	
����.�!�"��'�#�$�$�
�	�	�	�	�	r#c��|j�tjd��}t	��}	tjttt|gd���D]}|�
|���n#t
j$rYnwxYw|�t	tttg��|��dS)Nr�r�r�)
r�r�r3r4rcrr�rur�rv�add�TimeoutErrorr�)rVrq�completed_futuresr�s    r!�test_zero_timeoutz"AsCompletedTests.test_zero_timeout�s����-�&�&�t�z�1�5�5���E�E��		�!�.�2�%�&�������
.�
.��"�%�%�f�-�-�-�-�

.���#�	�	�	��D�	����	
����;�.�/�1�2�2�+�	,�	,�	,�	,�	,s�AA7�7B	�B	c��|j�tjd��}d�t	jt
j|d����D��}|�t|��d��dS)Nr�c��g|]}|��Sr*r*)r�r s  r!r�z;AsCompletedTests.test_duplicate_futures.<locals>.<listcomp>�s%��
�
�
��A�
�
�
r#r(r5)
r�r�r3r4rr��	itertools�repeatr�r)rVrqr�s   r!�test_duplicate_futuresz'AsCompletedTests.test_duplicate_futures�sw���-�&�&�t�z�1�5�5��
�
��+�I�,<�W�a�,H�,H�I�I�
�
�
�	�	
����Y����+�+�+�+�+r#c��d�td��D��}|�tt�����|�ttd�����|�tj��5t
j|d���D]\}|�	|��tj|��}~tj
��|�|�����]	ddd��n#1swxYwY|d�d��t
j|��D]y}|�	|��tj|��}~tj
��|�|����|r|d�d���zdS)	Nc�*�g|]}t����Sr*)r)r�rfs  r!r�zGAsCompletedTests.test_free_reference_yielded_future.<locals>.<listcomp>�s��3�3�3�Q����3�3�3r#�r$r&r'rr��test)r�r�r"rrr�rr�r��remove�weakref�refrrFr�
set_result)rV�futures_listr��wrs    r!�"test_free_reference_yielded_futurez3AsCompletedTests.test_free_reference_yielded_future�s���4�3�%��(�(�3�3�3�����M�0F�G�G�G�H�H�H����M���D�D�D�E�E�E�
�
�
�w�3�
4�
4�	(�	(�!�.�|�Q�G�G�G�
(�
(���#�#�F�+�+�+��[��(�(����"�$�$�$��!�!�"�"�$�$�'�'�'�'�
(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	�Q��"�"�6�*�*�*��*�<�8�8�	3�	3�F�����'�'�'���V�$�$�B���� � � ����b�b�d�d�#�#�#��
3��Q��*�*�6�2�2�2��	3�	3s�
A4D�D�Dc�>�ttttg}|�t
j��5}ttj|d�����ddd��n#1swxYwY|�	t|j��d��dS)Nrr�z2 (of 4) futures unfinished)ru�PENDING_FUTURE�RUNNING_FUTURErvr�rr�r6r�r��strr)rVr�r�s   r!�"test_correct_timeout_exception_msgz3AsCompletedTests.test_correct_timeout_exception_msgs���5�~�&�(9�;���
�
�w�3�
4�
4�	@����%�l�A�>�>�>�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	
����R�\�*�*�,I�J�J�J�J�Js�$A*�*A.�1A.N)rXrYrZr�r�r�r�r�r*r#r!r�r��sd��������� ,�,�,�&,�,�,�3�3�3�2K�K�K�K�Kr#r�c�^�eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	j
d���Zd�Zd	�Z
d
S)�ExecutorTestc��|j�tdd��}|�d|�����dS)Nr�r��)r�r�r�r�r�rVr�s  r!�test_submitzExecutorTest.test_submit s?����%�%�c�1�a�0�0������f�m�m�o�o�.�.�.�.�.r#c�|�|j�tdd���}|�d|�����|j�t
ddd���}|�|���dddd�f��|�t��5|j�t
d�	��ddd��n#1swxYwY|�t��5|j�d�
��ddd��dS#1swxYwYdS)Nr�r�)r,�r5r()rV�fn)r5)r��arg)r�)r�r�r-r�rr1r��	TypeErrorr�s  r!�test_submit_keywordz ExecutorTest.test_submit_keyword$s�����%�%�c�1��%�2�2������V�]�]�_�_�-�-�-���%�%�g�q�q�Q�%�?�?����������4�!�1�1E�1E�*F�G�G�G�
�
�
�y�
)�
)�	4�	4��M� � �G�� �3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�
�
�y�
)�
)�	(�	(��M� � �Q� �'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s$�5"C#�#C'�*C'�D1�1D5�8D5c�f�|�t|j�ttd��td������ttttd��td��������|�t|j�ttd��td��d�����ttttd��td��������dS)N�
r(��	chunksize)r�r6r�r7r�r�rUs r!�test_mapzExecutorTest.test_map.s�������T�]�&�&�s�E�"�I�I�u�R�y�y�A�A�B�B��S��e�B�i�i��r���3�3�4�4�	6�	6�	6�	
����T�]�&�&�s�E�"�I�I�u�R�y�y�A�&�N�N�O�O��S��e�B�i�i��r���3�3�4�4�	6�	6�	6�	6�	6r#c�0�|j�tgd�gd���}|�|���d��|�|���d��|�t|j��dS)N)r5r5r5r5)r�r(rrt)rr5)r�r7r�r��__next__r��ZeroDivisionError)rVr/s  r!�test_map_exceptionzExecutorTest.test_map_exception7s~���M���f�l�l�l�L�L�L�A�A����������v�.�.�.���������v�.�.�.����+�Q�Z�8�8�8�8�8r#c��g}	|j�tjgd�d���D]}|�|���	|�d��n#tj$rYnwxYw|�ddg|��dS)N)rrr�rtr�zexpected TimeoutError)	r�r7r3r4r�r�rr�r�)rV�resultsr/s   r!�test_map_timeoutzExecutorTest.test_map_timeout=s�����	/��]�&�&�t�z�'0�y�y�/0�'�2�2�
"�
"�����q�!�!�!�!�
"�
�I�I�-�.�.�.�.���#�	�	�	��D�	����
	
���$���w�/�/�/�/�/s�AA�A.�-A.c��|j�tdg|jdzz��|j���dS)Nr�r5)r�r7r�rr�rUs r!�test_shutdown_race_issue12456z*ExecutorTest.test_shutdown_race_issue12456KsE��	
�
���#��s�d�&7�!�&;�<�=�=�=��
��� � � � � r#c�&��t��}tj���tj|�fd���}|j�|j��~��tj
���}|�|d��dS)Nc�,������Sr)rc)�obj�my_object_collecteds �r!�<lambda>z7ExecutorTest.test_no_stale_references.<locals>.<lambda>Ys���#6�#:�#:�#<�#<�r#r�z-Stale reference not collected within timeout.)rSr)r^r�r�r�r�rWr�r�
SHORT_TIMEOUTr�)rV�	my_object�my_object_callback�	collectedr�s    @r!�test_no_stale_referencesz%ExecutorTest.test_no_stale_referencesRs�����J�J�	�'�o�/�/��$�[��<�<�<�<�>�>��	
�
���Y�0�1�1�1��'�,�,�W�5J�,�K�K�	����	�G�	I�	I�	I�	I�	Ir#c��dD]K}|�td��5|�|���ddd��n#1swxYwY�LdS)N)r���z"max_workers must be greater than 0r2)�assertRaisesRegexrNr~)rV�numbers  r!�test_max_workers_negativez&ExecutorTest.test_max_workers_negativebs����	7�	7�F��'�'�
�)1�2�2�
7�
7��"�"�v�"�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s�A�A	�
A	c���|j�ttd����D]G}t	j|��}~t
j��|�|�����HdS)Nr�)	r�r7rgr�r�r�rrFr)rVr�r�s   r!�test_free_referencez ExecutorTest.test_free_referenceist���=�$�$�%6��b�	�	�B�B�	$�	$�C���S�!�!�B���� � � ����b�b�d�d�#�#�#�#�		$�	$r#N)rXrYrZr�r�r�r�r�r�r�cpython_onlyr�r�r�r*r#r!r�r�s�������/�/�/�(�(�(�6�6�6�9�9�9�0�0�0�!�!�!�
��
I�
I���
I�7�7�7�$�$�$�$�$r#r�c�t�eZdZd�Zd�Zd�Zd�Zeje	e
d��d��d���Zd�Zd	S)
�ThreadPoolExecutorTestc����g��fd�}|j�|td����|j�d���|��td����dS)zTests verifying issue 11777.c�2����|��dSr)r�)�nrxs �r!�record_finishedzRThreadPoolExecutorTest.test_map_submits_without_iteration.<locals>.record_finishedws����O�O�A�����r#r�Tr�N)r�r7r�r��assertCountEqual)rVr�rxs  @r!�"test_map_submits_without_iterationz9ThreadPoolExecutorTest.test_map_submits_without_iterationts|�����	�	�	�	�	�	
�
���/�5��9�9�5�5�5��
���D��)�)�)����h��b�	�	�2�2�2�2�2r#c��|���}tdtj��pddz��}|�|j|��dS)N� r5r4)r~�min�os�	cpu_countr��_max_workers)rVr��expecteds   r!�test_default_workersz+ThreadPoolExecutorTest.test_default_workers~sQ���%�%�'�'���r�B�L�N�N�/�a�1�4�5�5������.��9�9�9�9�9r#c��|�d��}d�}tjd��}td|jz��D]}|�||���|�t|j��|j��td|jz��D]}|�	���|�
d���dS)Nr4c�.�|���dSrr"r$s r!r&z<ThreadPoolExecutorTest.test_saturation.<locals>.acquire_lock�r'r#r�Tr�)r~r)r*r�r�r�r�rr+r,r�)rVr�r&r.r/s     r!�test_saturationz&ThreadPoolExecutorTest.test_saturation�s����%�%�a�(�(��	�	�	��!�!�$�$���r�H�1�1�2�2�	/�	/�A��O�O�L�#�.�.�.�.�����X�.�/�/��1F�G�G�G��r�H�1�1�2�2�	�	�A��K�K�M�M�M�M����t��$�$�$�$�$r#c��|���}|�tdd�����|�tdd�����|�tdd�����|�t|j��d��|�d�	��dS)
Nrnr�r�r�r(�r5Tr�)r~r�r-rr�rr+r��rVr�s  r!�test_idle_thread_reusez-ThreadPoolExecutorTest.test_idle_thread_reuse�s����%�%�'�'������R��#�#�*�*�,�,�,�����Q��"�"�)�)�+�+�+�����Q��#�#�*�*�,�,�,�����X�.�/�/��3�3�3����t��$�$�$�$�$r#�register_at_forkzneed os.register_at_forkc�r���fd��tjd��5}|��|��td��D]\}tjdtjd�����5}|�t��ddd��n#1swxYwY�]	ddd��dS#1swxYwYdS)Nc�4��|��|��dSr)r�)�poolr�s �r!r�zEThreadPoolExecutorTest.test_hang_global_shutdown_lock.<locals>.submit�s����K�K���%�%�%�%�%r#r5rr�)ry)rr�r�r�r�r�r��tuple)rVrrf�workersr�s    @r!�test_hang_global_shutdown_lockz5ThreadPoolExecutorTest.test_hang_global_shutdown_lock�sD���	&�	&�	&�	&�	&��
'��
*�
*�	*�d��K�K���%�%�%��2�Y�Y�
*�
*���0��r�~�f�?U�?U�V�V�V�*�Za��N�N�5�)�)�)�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*��
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s6�AB,�+B�B,�B�B,�B�B,�,B0�3B0c����tj���g���fd�}|�d���5}|�|d���}	t	j|�|ddgd�	����5}|�t��5t|��ddd��n#1swxYwYddd��n#1swxYwY��
��n#��
��wxYw|���ddd��n#1swxYwY|��d
dg��dS)Nc������d|�d���	������d|�d���dS#��d|�d���wxYw)Nzident=z startedz stopped)r�r�)�ident�log�
stop_events ��r!�
log_n_waitzRThreadPoolExecutorTest.test_executor_map_current_future_cancel.<locals>.log_n_wait�s~����J�J�*�%�*�*�*�+�+�+�
0����!�!�!��
�
�.�e�.�.�.�/�/�/�/�/���
�
�.�e�.�.�.�/�/�/�/���s�A�A&r5r2�first)r�second�thirdrr�zident='first' startedzident='first' stopped)
r)r^r~r�r��closingr7r�r��nextrcr�assertListEqual)rVr
rr�genrr	s     @@r!�'test_executor_map_current_future_cancelz>ThreadPoolExecutorTest.test_executor_map_current_future_cancel�s
�����_�&�&�
���	0�	0�	0�	0�	0�	0��
�
�A�
�
.�
.�	�$��+�+�j��+�8�8�C�
!��'��H�H�Z�(�G�)<�a�H�H�H���"���*�*�<�8�8�"�"��S�	�	�	�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"���� � � � ��
��� � � � �����J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���S�#:�<S�"T�U�U�U�U�Usq�D �
,C'�9C�B0�$C�0B4�4C�7B4�8C�;C'�C	�C'�C	�C'�D �'C=�=D � D$�'D$N)
rXrYrZr�r�r�r�r�
skipUnlessr}r�rrr*r#r!r�r�ss�������3�3�3�:�:�:�
%�%�%�%�%�%��X�����%7�8�8�:T�U�U�*�*�V�U�*�V�V�V�V�Vr#r�c���eZdZejejdkd��d���Zd�Zd�Z	e
d���Zd�Ze
jd��d	���Zd
�Zd�Zd�Zd
�Zd�Zd�ZdS)�ProcessPoolExecutorTestr�zWindows-only process limitc��|�td��5tjd���ddd��dS#1swxYwYdS)Nzmax_workers must be <= 61�>r2)r�rNrr�rUs r!�test_max_workers_too_largez2ProcessPoolExecutorTest.test_max_workers_too_large�s���
�
#�
#�J�$?�A�A�	8�	8��'�B�7�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�?�A�Ac��|j�tjd��g}t	t|jj�������}|���|D]"}|�	t|j���#|�	t|jjtdd��dS)Nr(r�r�)
r�r�r3r4r�iterrUrV�	terminater�rrr�)rVrrYrs    r!�test_killed_childz)ProcessPoolExecutorTest.test_killed_child�s����=�'�'��
�A�6�6�7����d�m�.�5�5�7�7�8�8�9�9��	���
�
�
��	=�	=�C����/���<�<�<�<����+�T�]�-A�3��1�M�M�M�M�Mr#c����fd�}ttttd��td������}��t�j�ttd��td��d�����|����t�j�ttd��td��d�����|����t�j�ttd��td��d�����|����t|��dS)Nc	���t�j�tt	d��t	d��d�����dS)N�(r�r�)r6r�r7r�r�rUs�r!�bad_mapz;ProcessPoolExecutorTest.test_map_chunksize.<locals>.bad_map�s<������"�"�3��b�	�	�5��9�9��"�K�K�L�L�L�L�Lr#rr�r�r)r6r7r�r�r�r�r�rN)rVr r�s`  r!�test_map_chunksizez*ProcessPoolExecutorTest.test_map_chunksize�sK���	M�	M�	M�	M�	M��3�s�E�"�I�I�u�R�y�y�1�1�2�2��������"�"�3��b�	�	�5��9�9��"�J�J�K�K��	�	�	�	
������"�"�3��b�	�	�5��9�9��"�K�K�L�L��	�	�	�	
������"�"�3��b�	�	�5��9�9��"�K�K�L�L��	�	�	�	
���*�g�.�.�.�.�.r#c� �td���)N�{)r��r�s r!�_test_tracebackz'ProcessPoolExecutorTest._test_traceback�s���3���r#c��|j�|j��}|�t��5}|���ddd��n#1swxYwY|j}|�t|��t��|�
|jd��|j}|�t|��tjj��|�d|j��t%j��5}	|�#t$r"t)jt)j���YnwxYw	ddd��n#1swxYwY|�d|�����dS)N)r#z&raise RuntimeError(123) # some comment)r�r�r%r�r5rr�assertIsr�r�r�r/�	__cause__r�process�_RemoteTracebackr�tbr�captured_stderrr:�
excepthook�exc_info�getvalue)rVr�r��exc�cause�f1s      r!�test_tracebackz&ProcessPoolExecutorTest.test_traceback�s�����%�%�d�&:�;�;��
�
�
�y�
)�
)�	�R��M�M�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��l���
�
�d�3�i�i��.�.�.������6�*�*�*��
���
�
�d�5�k�k�7�?�#C�D�D�D��
�
�>���I�I�I�
�
$�
&�
&�	0�"�
0��	���
0�
0�
0�������/�/�/�/�
0����/�		0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
	
�
�
�>��k�k�m�m�	%�	%�	%�	%�	%sA�A�A�"A�E�D�)E�E�E�E�E�E�md5c��|������}t|��}|j�t
|��}|���|�|j�	d�����d}tj��|���|�
��dS)Nr5r�)r��Managerr\r�r��idrr�r_r�rrFr�r-)rVr`r�r�s    r!�test_ressources_gced_in_workersz7ProcessPoolExecutorTest.test_ressources_gced_in_workerss������ � �(�(�*�*���C� � ����%�%�b�#�.�.���
�
��������	���q��1�1�2�2�2�����������������
�
�
�
�
r#c�x�|j}|���}|�d��}d|jz}t	|��D]}|�|j���|�t|j	��|j��t	|��D]}|�
���dS)Nrr�)r�r�r*r�r�r�r#r�rrUr,)rVr�ryr.�	job_countrfs      r!r�z'ProcessPoolExecutorTest.test_saturations����=���%�%�'�'�
��"�"�1�%�%����.�.�	��y�!�!�	)�	)�A��O�O�C�K�(�(�(�(�����X�0�1�1�8�3H�I�I�I��y�!�!�	�	�A��K�K�M�M�M�M�	�	r#c��|j}|����d���dkrtjd���|�tdd�����|�tdd�����|�td	d
�����|�t|j
��d��dS)NFrRr��(Incompatible with the fork start method.rnr�r�r�r(r�r5)r�r�rTrrr�r-rr�rrUr�s  r!�test_idle_process_reuse_onez3ProcessPoolExecutorTest.test_idle_process_reuse_ones����=�������.�.�%�.�@�@�F�J�	P��#�$N�O�O�O�����R��#�#�*�*�,�,�,�����Q��"�"�)�)�+�+�+�����Q��#�#�*�*�,�,�,�����X�0�1�1�1�5�5�5�5�5r#c���|j}|����d���dkrtjd���|�tdd�����|�tdd��|�tdd	�����|�td
d��|�tdd
�����|�tdd��|�t|j
��d��|���dS)NFrRr�r<�r��!����r5r�r�	r()r�r�rTrrr�r-r�assertLessEqualrrUr�r�s  r!� test_idle_process_reuse_multiplez8ProcessPoolExecutorTest.test_idle_process_reuse_multiple(s'���=�������.�.�%�.�@�@�F�J�	P��#�$N�O�O�O�����R��#�#�*�*�,�,�,�����R��$�$�$�����R��$�$�+�+�-�-�-�����R��$�$�$�����Q��"�"�)�)�+�+�+�����Q��"�"�"����S��!4�5�5�q�9�9�9��������r#c��|���}|�d���dkrL|�t��5|�d|d���ddd��n#1swxYwYdS|�d|d���}|�tj��}|���}|�tj��}|�	|���|��|�	t|j��d��|�tj��}|�	|���|��|�tj��}|���}|�||��|�	t|j��d��|�
��dS)NFrRr�r5r(�ry�max_tasks_per_child)r�rTr�rNr~r�r��getpidrr�rrU�assertNotEqualr�)	rVr�r�r2�original_pid�f2�f3�f4�new_pids	         r!�test_max_tasks_per_childz0ProcessPoolExecutorTest.test_max_tasks_per_child6s���"�"�$�$���#�#�u�#�5�5��?�	��"�"�:�.�.�
Q�
Q��"�"�1��a�"�P�P�P�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q����
Q�
Q�
Q�
Q��F��%�%��g�1�&�>�>��
�_�_�R�Y�
'�
'���y�y�{�{��
�_�_�R�Y�
'�
'����������l�3�3�3�����X�0�1�1�1�5�5�5�
�_�_�R�Y�
'�
'����������l�3�3�3��_�_�R�Y�
'�
'���)�)�+�+�����L�'�2�2�2�����X�0�1�1�1�5�5�5��������s�	A.�.A2�5A2c��|�dd���}|�|j���d��dS)Nr5r()rJr�)r~r��_mp_contextrTr�s  r!�2test_max_tasks_per_child_defaults_to_spawn_contextzJProcessPoolExecutorTest.test_max_tasks_per_child_defaults_to_spawn_contextRsG���%�%�a�Q�%�?�?������-�>�>�@�@�'�J�J�J�J�Jr#c���|���}|�d���dkrtjd���|�d|d���}g}td��D],}|j|�t||�����-|�	��t|��D];\}}|�|���t||�����<dS)	NFrRr�r<r(r5rIr�)
r�rTrrr~r�r�r�r-r��	enumerater�r)rVr�r�rr/r�s      r!�test_max_tasks_early_shutdownz5ProcessPoolExecutorTest.test_max_tasks_early_shutdownXs���"�"�$�$���#�#�u�#�5�5��?�	P��#�$N�O�O�O��%�%��g�1�&�>�>�����q���	7�	7�A��G�N�8�?�?�3��1�5�5�6�6�6�6�������"�7�+�+�	9�	9�I�A�v����V�]�]�_�_�c�!�Q�i�i�8�8�8�8�	9�	9r#N)rXrYrZrrr:r�rrr!�classmethodr%r3r�requires_hashdigestr8r�r=rGrRrUrXr*r#r!rr�s�������X����w�.�0L�M�M�8�8�N�M�8�

N�
N�
N�/�/�/� � � ��[� �%�%�%�,(�^�'��.�.���/�.��$	�	�	�6�6�6�������8K�K�K�
9�
9�
9�
9�
9r#rc��|rtj|��ddl}|���|���dS)zInduces a segfault.rN)r3r4�faulthandler�disable�_sigsegv)�delayr\s  r!�_crashr`msP�����
�5���������������������r#c�.�tjd��dS)z#Induces a sys exit with exitcode 1.r5N)r:�exitr*r#r!�_exitrcvs���H�Q�K�K�K�K�Kr#c��|���)z-Function that raises an Exception in process.r*)�Errs r!�_raise_errorrf{s
��

�#�%�%�Kr#c�Z�ddl}|���t_|���)z@Function that raises an Exception in process and ignores stderr.rN)�io�StringIOr:�stderr)rerhs  r!�_raise_error_ignore_stderrrk�s%��
�I�I�I������C�J�

�#�%�%�Kr#c��|��S)z(Function that returns a instance of cls.r*r$s r!�_return_instancerm�s
���3�5�5�Lr#c��eZdZdZd�ZdS)�
CrashAtPicklez5Bad object that triggers a segfault at pickling time.c�"�t��dSr�r`rUs r!�
__reduce__zCrashAtPickle.__reduce__�s�������r#N�rXrYrZ�__doc__rrr*r#r!roro�s)������?�?�����r#roc��eZdZdZd�ZdS)�CrashAtUnpicklez7Bad object that triggers a segfault at unpickling time.c��tdfS�Nr*rqrUs r!rrzCrashAtUnpickle.__reduce__�s���r�z�r#Nrsr*r#r!rvrv�s)������A�A�����r#rvc��eZdZdZd�ZdS)�ExitAtPicklez9Bad object that triggers a process exit at pickling time.c�"�t��dSr�rcrUs r!rrzExitAtPickle.__reduce__�s��
�����r#Nrsr*r#r!rzrz�s)������C�C�����r#rzc��eZdZdZd�ZdS)�ExitAtUnpicklez;Bad object that triggers a process exit at unpickling time.c��tdfSrxr|rUs r!rrzExitAtUnpickle.__reduce__�s���b�y�r#Nrsr*r#r!r~r~�s)������E�E�����r#r~c��eZdZdZd�ZdS)�
ErrorAtPicklez3Bad object that triggers an error at pickling time.c�$�ddlm}|d���)Nrr
zError in pickle)�pickler)rVrs  r!rrzErrorAtPickle.__reduce__�s%��(�(�(�(�(�(��m�-�.�.�.r#Nrsr*r#r!r�r��s)������=�=�/�/�/�/�/r#r�c��eZdZdZd�ZdS)�ErrorAtUnpicklez5Bad object that triggers an error at unpickling time.c�"�ddlm}t|ffS)Nr)�UnpicklingError)r�r�rk)rVr�s  r!rrzErrorAtUnpickle.__reduce__�s"��*�*�*�*�*�*�)�O�+>�>�>r#Nrsr*r#r!r�r��s)������?�?�?�?�?�?�?r#r�c��eZdZejZd�Zdd�d�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�ZdS)�ExecutorDeadlockTestc���ddl}ddlm}|d���5}|�|���|�d��|���}ddd��n#1swxYwY|j���D]}|����|�	d���td|��tj���|�
d	|����dS)
Nr)�
TemporaryFilezw+)�mode)�fileTr�z
Traceback:
 zExecutor deadlock:

)r\�tempfiler��dump_traceback�seek�readrUrVrr�r9r:�
__stderr__r�)rVr�r\r�r r+rYs       r!�_fail_on_deadlockz&ExecutorDeadlockTest._fail_on_deadlock�sA��	����*�*�*�*�*�*�
�]��
%�
%�
%�	���'�'�Q�'�/�/�/�
�F�F�1�I�I�I������B�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��$�+�+�-�-�	�	�A�
�K�K�M�M�M�M�	���t��$�$�$�
�$��$�$�3�>�:�:�:�:��	�	�/�2�/�/�0�0�0�0�0s�AA#�#A'�*A'F��
ignore_stderrc�D�|j�d���|�d|������}|j|g|�R�}|rtj��}ntj��}	|�	|��5|5|�
|j���ddd��n#1swxYwYddd��n#1swxYwYn*#tj
$r|�|��YnwxYw|�d���dS)NTr�r�rwr�)r�r�r~r�r�rr,r��nullcontextr�r�TIMEOUTrr�r�)rV�error�funcr�r/r�r=r�s        r!�_check_crashz!ExecutorDeadlockTest._check_crash�s����
���D��)�)�)��%�%��d�&6�&6�&8�&8�&�:�:���h�o�d�*�T�*�*�*���	*��(�*�*�B�B��'�)�)�B�	-��"�"�5�)�)�
5�
5��5�5��J�J�t�|�J�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5����#�	-�	-�	-�
�"�"�8�,�,�,�,�,�	-����	���t��$�$�$�$�$sZ�=C �C�B=�1C�=C	�C�C	�C�C �C�C �C�C � $D�Dc�`�|�ttt����dSr)r�rr7r�rUs r!�test_error_at_task_picklez.ExecutorDeadlockTest.test_error_at_task_pickle�s&��	
���-��]�_�_�=�=�=�=�=r#c�`�|�ttt����dSr)r�rr7r~rUs r!�test_exit_at_task_unpicklez/ExecutorDeadlockTest.test_exit_at_task_unpickle�s'�����+�R��1A�1A�B�B�B�B�Br#c�`�|�ttt����dSr)r�rr7r�rUs r!�test_error_at_task_unpicklez0ExecutorDeadlockTest.test_error_at_task_unpickle��'�����+�R��1B�1B�C�C�C�C�Cr#c�`�|�ttt����dSr)r�rr7rvrUs r!�test_crash_at_task_unpicklez0ExecutorDeadlockTest.test_crash_at_task_unpickle�r�r#c�F�|�tt��dSr)r�rr`rUs r!�%test_crash_during_func_exec_on_workerz:ExecutorDeadlockTest.test_crash_during_func_exec_on_worker�s�����+�V�4�4�4�4�4r#c�F�|�tt��dSr)r��
SystemExitrcrUs r!�$test_exit_during_func_exec_on_workerz9ExecutorDeadlockTest.test_exit_during_func_exec_on_worker�s�����*�e�,�,�,�,�,r#c�R�|�ttt��dSr)r�r�rfrUs r!�%test_error_during_func_exec_on_workerz:ExecutorDeadlockTest.test_error_during_func_exec_on_worker�s �����,��l�C�C�C�C�Cr#c�R�|�ttt��dSr)r�rrmrorUs r!�)test_crash_during_result_pickle_on_workerz>ExecutorDeadlockTest.test_crash_during_result_pickle_on_worker�s$��	
���+�-=�}�M�M�M�M�Mr#c�R�|�ttt��dSr)r�r�rmrzrUs r!�(test_exit_during_result_pickle_on_workerz=ExecutorDeadlockTest.test_exit_during_result_pickle_on_workers#��	
���*�&6��E�E�E�E�Er#c�R�|�ttt��dSr)r�rrmr�rUs r!�)test_error_during_result_pickle_on_workerz>ExecutorDeadlockTest.test_error_during_result_pickle_on_workers#��	
���-�)9�=�I�I�I�I�Ir#c�V�|�tttd���dS)NTr�)r�rrmr�rUs r!�3test_error_during_result_unpickle_in_result_handlerzHExecutorDeadlockTest.test_error_during_result_unpickle_in_result_handlers6��	
���+�*�O�(,�	�	.�	.�	.�	.�	.r#c�R�|�ttt��dSr)r�rrmr~rUs r!�2test_exit_during_result_unpickle_in_result_handlerzGExecutorDeadlockTest.test_exit_during_result_unpickle_in_result_handlers$��	
���+�-=�~�N�N�N�N�Nr#c��|j�d���|�d|������5}||_|�t
d���}|�d���|�t��5|���ddd��n#1swxYwYddd��dS#1swxYwYdS)NTr�r�rwrH)r_)	r�r�r~r�r�r`r�rr)rVr�r s   r!�test_shutdown_deadlockz+ExecutorDeadlockTest.test_shutdown_deadlocksU��	
�
���D��)�)�)�
�
�
�A�+/�+;�+;�+=�+=� �?�?�	�BJ�$�D�M�����b��1�1�A����4��(�(�(��"�"�#4�5�5�
�
����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s7�AC�B:�.C�:B>	�>C�B>	�C�C�Cc�b�|j�d���|�d|������5}||_|�t
d�����|j}|�t
t����}|�d���|�	t��5|���ddd��n#1swxYwYddd��n#1swxYwY|���dS)NTr�r�rwr&F)r�r�r~r�r�r7rr]r�r�rr-)rVr��executor_managerr s    r!�test_shutdown_deadlock_picklez2ExecutorDeadlockTest.test_shutdown_deadlock_pickle#s���	
�
���D��)�)�)�
�
�
�A�+/�+;�+;�+=�+=� �?�?�	�BJ�$�D�M�

�O�O�B��#�#�*�*�,�,�,�'�@������M�O�O�4�4�A����5��)�)�)��"�"�=�1�1�
�
����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�&	�������s7�BD�C9�-D�9C=	�=D�C=	�D�D�DN)rXrYrZrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r*r#r!r�r��s4�������#�G�1�1�1�&>C�%�%�%�%�%�.>�>�>�
C�C�C�D�D�D�D�D�D�5�5�5�-�-�-�D�D�D�N�N�N�
F�F�F�
J�J�J�
.�.�.�O�O�O�

�
�
� � � � � r#r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�FutureTestsc���d��fd�}t��}|�|��|�d��|�d���dS)Nc�0��|����dSr�r��callback_future�callback_results �r!r�z6FutureTests.test_done_callback_with_result.<locals>.fnG����-�4�4�6�6�O�O�Or#rt)r�add_done_callbackr�r��rVr�r r�s   @r!�test_done_callback_with_resultz*FutureTests.test_done_callback_with_resultEsk�����	7�	7�	7�	7�	7�
�H�H��	���B����	���Q��������O�,�,�,�,�,r#c����d��fd�}t��}|�|��|�td����|�d�j��dS)Nc�0��|����dSr�r�r��callback_exceptions �r!r�z9FutureTests.test_done_callback_with_exception.<locals>.fnR����!0�!:�!:�!<�!<���r#r��r�)rr��
set_exceptionr5r�r/�rVr�r r�s   @r!�!test_done_callback_with_exceptionz-FutureTests.test_done_callback_with_exceptionPs{���!��	=�	=�	=�	=�	=�
�H�H��	���B����	���	�&�)�)�*�*�*�����$6�$;�<�<�<�<�<r#c����d��fd�}t��}|�|��|�|�����|����dS)Nc�0��|����dSrr�r��
was_cancelleds �r!r�z6FutureTests.test_done_callback_with_cancel.<locals>.fn]����+�5�5�7�7�M�M�Mr#)rr�r��cancel�rVr�r r�s   @r!�test_done_callback_with_cancelz*FutureTests.test_done_callback_with_cancel[sr����
�	8�	8�	8�	8�	8�
�H�H��	���B����������
�
�#�#�#����
�&�&�&�&�&r#c����tj��5}d�d��fd�}�fd�}t��}|�|��|�|��|�d��|����|����|�d|�����ddd��dS#1swxYwYdS)NFc�&��d�td���)NT�doh!�r5)r��raising_was_calleds �r!�
raising_fnz9FutureTests.test_done_callback_raises.<locals>.raising_fnks���%)�"���'�'�'r#c���d�dS)NTr*)r��
fn_was_calleds �r!r�z1FutureTests.test_done_callback_raises.<locals>.fnps��� $�
�
�
r#rtzException: doh!)rr,rr�r�r�rr/)rVrjr�r�r r�r�s     @@r!�test_done_callback_raisesz%FutureTests.test_done_callback_raisesfsJ����
�
$�
&�
&�	@�&�!&��!�M�
(�
(�
(�
(�
(�

%�
%�
%�
%�
%����A�
���
�+�+�+�
����#�#�#�
�L�L��O�O�O��O�O�.�/�/�/��O�O�M�*�*�*��M�M�+�V�_�_�->�->�?�?�?�'	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s�B.C�C�Cc���d��fd�}t��}|�d��|�|��|�d���dS)Nc�0��|����dSrr�r�s �r!r�z=FutureTests.test_done_callback_already_successful.<locals>.fn~r�r#rt)rr�r�r�r�s   @r!�%test_done_callback_already_successfulz1FutureTests.test_done_callback_already_successful|sk�����	7�	7�	7�	7�	7�
�H�H��	���Q����	���B��������O�,�,�,�,�,r#c����d��fd�}t��}|�td����|�|��|�d�j��dS)Nc�0��|����dSrr�r�s �r!r�z9FutureTests.test_done_callback_already_failed.<locals>.fn�r�r#r�r�)rr�r5r�r�r/r�s   @r!�!test_done_callback_already_failedz-FutureTests.test_done_callback_already_failed�s{���!��	=�	=�	=�	=�	=�
�H�H��	���	�&�)�)�*�*�*�	���B��������$6�$;�<�<�<�<�<r#c����d��fd�}t��}|�|�����|�|��|����dS)Nc�0��|����dSrrr�s �r!r�z<FutureTests.test_done_callback_already_cancelled.<locals>.fn�r�r#)rr�r�r�r�s   @r!�$test_done_callback_already_cancelledz0FutureTests.test_done_callback_already_cancelled�sr����
�	8�	8�	8�	8�	8�
�H�H��������
�
�#�#�#�	���B�������
�&�&�&�&�&r#c�t�tj��5}d�}t��}|�d��|�|��|�d|�����|�d|�����ddd��dS#1swxYwYdS)Nc� �td���)Nr�r�)r�s r!r�zKFutureTests.test_done_callback_raises_already_succeeded.<locals>.raising_fn�s����'�'�'r#rtzexception calling callback forr�)rr,rr�r�rr/)rVrjr�r s    r!�+test_done_callback_raises_already_succeededz7FutureTests.test_done_callback_raises_already_succeeded�s���
�
$�
&�
&�	5�&�
(�
(�
(����A�
�L�L��O�O�O�
���
�+�+�+��M�M�:�F�O�O�<M�<M�N�N�N��M�M�&�&�/�/�"3�"3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�BB-�-B1�4B1c���|�tt��d��|�tt��d��|�tt��d��|�tt
��d��|�tt��d��|�tt��d��dS)Nz%<Future at 0x[0-9a-f]+ state=pending>z%<Future at 0x[0-9a-f]+ state=running>z'<Future at 0x[0-9a-f]+ state=cancelled>z5<Future at 0x[0-9a-f]+ state=finished raised OSError>z3<Future at 0x[0-9a-f]+ state=finished returned int>)rG�reprr�r�rorur�rvrUs r!�	test_reprzFutureTests.test_repr�s������n�-�-�@�	B�	B�	B�����n�-�-�@�	B�	B�	B�����.�/�/�B�	D�	D�	D�����;�<�<�B�	D�	D�	D�����%�&�&�G�	I�	I�	I�	
����&�'�'�E�	G�	G�	G�	G�	Gr#c�r�tt���}tt���}tt���}tt���}tt
t
�����}tt
d���}|�|�����|�	|j
t��|�|�����|�	|j
t��|�|�����|�	|j
t��|�|�����|�	|j
t��|�|�����|�	|j
t
��|�|�����|�	|j
t
��dS)Nr$r%rtr')r"r
rrrr�OSErrorr�r�r�rr�)rVr2rNrOrP�f5�f6s       r!�test_cancelzFutureTests.test_cancel�s���
��
)�
)�
)��
��
)�
)�
)��
��
+�
+�
+��
�!7�
8�
8�
8��
��W�Y�Y�
?�
?�
?��
��!�
4�
4�
4������	�	���$�$�$������I�.�.�.���������%�%�%������G�,�,�,�����	�	���$�$�$������I�.�.�.�����	�	���$�$�$������$:�;�;�;���������%�%�%������H�-�-�-���������%�%�%������H�-�-�-�-�-r#c��|�t�����|�t�����|�t
�����|�t�����|�t�����|�t�����dSr)	r�r�rr�r�rorur�rvrUs r!�test_cancelledzFutureTests.test_cancelled�s�������1�1�3�3�4�4�4�����1�1�3�3�4�4�4����(�2�2�4�4�5�5�5����5�?�?�A�A�B�B�B����)�3�3�5�5�6�6�6����*�4�4�6�6�7�7�7�7�7r#c��|�t�����|�t�����|�t
�����|�t�����|�t�����|�t�����dSr)	r�r�rr�r�rorur�rvrUs r!�	test_donezFutureTests.test_done�s�������,�,�.�.�/�/�/�����,�,�.�.�/�/�/����(�-�-�/�/�0�0�0����5�:�:�<�<�=�=�=����(�-�-�/�/�0�0�0����)�.�.�0�0�1�1�1�1�1r#c��|�t�����|�t�����|�t
�����|�t�����|�t�����|�t�����dSr)	r�r��runningr�r�rorur�rvrUs r!�test_runningzFutureTests.test_running�s�������/�/�1�1�2�2�2�����.�.�0�0�1�1�1����)�1�1�3�3�4�4�4����6�>�>�@�@�A�A�A����)�1�1�3�3�4�4�4����*�2�2�4�4�5�5�5�5�5r#c��|�tjtjd���|�tjt
jd���|�tjtjd���|�tjtjd���|�ttjd���|�t�d���d��dS)Nrr�r&)
r�rr�r�rr��CancelledErrorrorur�r�r�rvrUs r!�test_result_with_timeoutz$FutureTests.test_result_with_timeout�s������'�.�(�/��	�	<�	<�	<����'�.�(�/��	�	<�	<�	<����'�0�*�1�1�	�	>�	>�	>����'�0�7�>��	�	K�	K�	K����'�#3�#:�A��F�F�F����*�1�1�!�1�<�<�b�A�A�A�A�Ar#c�
���fd�}tt����tj|���}|���|���d���d��|���dS)Nc�Z��tjd����d��dS)Nr5r&)r3r4r��r2s�r!�notificationz:FutureTests.test_result_with_success.<locals>.notification�s(����J�q�M�M�M��M�M�"�����r#r$��targetrtr�r&)r"r
r)�Thread�startr�rr-�rVrr6r2s   @r!�test_result_with_successz$FutureTests.test_result_with_success�s����	�	�	�	�	�
��
)�
)�
)����L�1�1�1��	���	�	�	�������1��-�-�r�2�2�2�	�������r#c����fd�}tt����tj|���}|���|�tj�jtj
���|���dS)Nc�X��tjd������dS�Nr5)r3r4r�rs�r!rz9FutureTests.test_result_with_cancel.<locals>.notifications!����J�q�M�M�M��I�I�K�K�K�K�Kr#r$rr�)r"r
r)rrr�rr�rrr�r-rs   @r!�test_result_with_cancelz#FutureTests.test_result_with_cancel
s����	�	�	�	�	�
��
)�
)�
)����L�1�1�1��	���	�	�	����'�0��)�W�-B�	�	D�	D�	D�	�������r#c�F�|�tjtjd���|�tjt
jd���|�tjtjd���|�tjtjd���|�	tt�d���t����|�
t�d���d��dS)Nrr�)r�rr�r�rr�r�rorur��
isinstancer�r�r�rvrUs r!�test_exception_with_timeoutz'FutureTests.test_exception_with_timeouts�����'�.�(�2�A�	�	?�	?�	?����'�.�(�2�A�	�	?�	?�	?����'�0�*�4�a�	�	A�	A�	A����'�0�7�A�1�	�	N�	N�	N����
�#3�#=�#=�a�#=�#H�#H�#*�,�,�	-�	-�	-����*�4�4�Q�4�?�?��F�F�F�F�Fr#c�B���fd�}tt����tj|���}|���|�t
��tj	���t����|���dS)Nc����tjd���j5t�_t���_�j���ddd��dS#1swxYwYdSr)r3r4�
_conditionrrr�r�
notify_allrs�r!rz=FutureTests.test_exception_with_success.<locals>.notification's�����J�q�M�M�M���
+�
+�$��	� '�	�	��
��
�(�(�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�
+�
+s�9A#�#A'�*A'r$rr�)r"r
r)rrr�rrrr�r�r-rs   @r!�test_exception_with_successz'FutureTests.test_exception_with_success&s����	+�	+�	+�	+�	+���
)�
)�
)����L�1�1�1��	���	�	�	����
�2�<�<��8M�<�#N�#N�PW�X�X�Y�Y�Y�	�������r#c��tt���}|�d��|�tjd��5|�d��ddd��n#1swxYwY|�|�����|�|�	��d��dS)Nr$r5z=FINISHED: <Future at 0x[0-9a-f]+ state=finished returned int>r�)
r"r
r�r�r�InvalidStateErrorr�rr�r)rVr s  r!�test_multiple_set_resultz$FutureTests.test_multiple_set_result6s�����(�(�(��	���Q����
�
#�
#��)�/�
�
�	�	�

�L�L��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
��������!�!�!���������Q�'�'�'�'�'s�A-�-A1�4A1c�x�tt���}t��}|�|��|�t
jd��5|�t����ddd��n#1swxYwY|�|�	��|��dS)Nr$zBFINISHED: <Future at 0x[0-9a-f]+ state=finished raised ValueError>)
r"r
rNr�r�rrr5r�r)rVr r9s   r!�test_multiple_set_exceptionz'FutureTests.test_multiple_set_exceptionDs�����(�(�(���L�L��	�������
�
#�
#��)�4�
�
�	)�	)�

�O�O�I�K�K�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
���������*�*�*�*�*s�"B�B�BN)rXrYrZr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r
rrrrr*r#r!r�r�DsL������	-�	-�	-�	=�	=�	=�	'�	'�	'�@�@�@�,	-�	-�	-�	=�	=�	=�	'�	'�	'�
5�
5�
5� G�G�G�".�.�.�48�8�8�2�2�2�6�6�6�
B�
B�
B����
�
�
�G�G�G���� (�(�(�+�+�+�+�+r#r�c��tjtjj��tj��}tjt
jg|�R�dSr)r�addModuleCleanup�multiprocessing�util�_cleanup_testsrrkrp)�thread_infos r!�setUpModuler!SsJ����o�2�A�B�B�B�"�2�4�4�K���.�@�O�;�O�O�O�O�O�Or#�__main__r)ar�r�test.supportrr�
import_moduler�test.support.script_helperrr�r�rI�logging.handlersr	r�r�r:r)r3rr�r�r�
concurrentr�concurrent.futures._baser
rrrrrr�concurrent.futures.processrr�multiprocessing.processr�multiprocessing.utilr��check_sanitizerrr"r�r�rorur�r�rvrAr-r1r7r>rBrDrQ�objectrSr\rg�TestCaserirsr�r�r�r�r�r�r�r�rrOrdr�r�r�r�rr`rcrfrkrmrorvrzr~r�r�r�r�r!rX�mainr*r#r!�<module>r0s�	��������&�&�&�&�&�&�)�)�)�)�)�)��
��.�/�/�/�'�'�'�'�'�'�7�7�7�7�7�7�������������)�)�)�)�)�)�	�	�	�	�����
�
�
�
����������������� � � � � � �������������������������O�N�N�N�N�N�N�N��������������7��4��5�5�5�@��(�
�>�
?�
?�?� �4��
�
�
�
���W�-�-�-����W�-�-�-�� �=�y�1�1�1�� -�
�4J� K� K� K�� �=�x�7�7�9�9�E�E�E��!�M���<�<�<��$��������,�,�,����
������-�-�-�-�
�
�
�
�
�v�
�
�
�
�����������>�>�>�>�>�8�$�>�>�>�(�(�(�(�(�(�(�(�B/�/�/�/�/�m�/�/�/�%�%�%�%�%�=�%�%�%�	%�	%�	%�	%�	%�M�	%�	%�	%�%�%�%�%�%��%�%�%�)5��+:�+?�+E�+@�+B�����(8�8�8�8�8�}�8�8�8�$5 �5 �5 �5 �5 �m�5 �5 �5 �p��&�'�'�'���-�.�.�.�j0�j0�j0�j0�j0�j0�j0�j0�Z[0�[0�[0�[0�[0�_�.B�L�[0�[0�[0�|LE�LE�LE�LE�LE�2�LE�LE�LE�^��-�';�'A�'<�'>�?�?�?�?�j2�j2�j2�j2�j2�j2�j2�j2�Z5�5�5�5�5�/�9�l�5�5�5�$��i�';�'A�'<�'>�?�?�?�?�OK�OK�OK�OK�OK�OK�OK�OK�d��&�'�'�'�S$�S$�S$�S$�S$�S$�S$�S$�lLV�LV�LV�LV�LV�_�l�L�LV�LV�LV�^c9�c9�c9�c9�c9�l�c9�c9�c9�L��-�';�'A�'<�'>�?�?�?�?�
�������
���
������
�����F���������f���������6���������V����/�/�/�/�/�F�/�/�/�?�?�?�?�?�f�?�?�?�I �I �I �I �I �I �I �I �X��*�';�'A�'<�'>�?�?�?�?�L+�L+�L+�L+�L+�,�L+�L+�L+�^P�P�P��z����H�M�O�O�O�O�O��r#