403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.84
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/_test_multiprocessing.cpython-313.pyc
�

��iR���L�SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJr SSKJ r  SSKJ!r! SSKJ"r" SSKJ#r# SSKJ$r$ SS	KJ%r% SS
KJ&r& \ RN"S5r(\RR"5 SSK*r*SSK+r,SSK-r,SSK.r,SSK/r,SSK0r,SSK1r,SSK+J2r2 SS
K,J3r3 SSK,J4r4 \4Rjr6SSK8J9r9J:r: Sr;SSK,J<r< Sr=SSK>r>\R~(a\R�"S5eSrASrBSrCSrD\	R�S:Xa	SSK,JFrF SrG\3R�rISrJSrK\K(aSurLrMrNOSurLrMrN\R�rPSrQ\R"\(SS5(+rS\R�S:HrUS rV\	R�"S!5rXS#S$/rYSS%KZJ[r[J\r\J]r]J^r^ S&r`S'raS(rb"S)S*\R�5rd"S+S,\_5re"S-S.\_5rfS/rg"S0S15rh"S2S3\f5ri"S4S5\,R�5rk"S6S7\f5rlS8rmS9rn"S:S;\f5ro"S<S=\f5rp"S>S?\f5rq"S@SA\f5rr"SBSC\f5rs"SDSE\_5rtSFru"SGSH\_5rv"SISJ\_5rw"SKSL\f5rx"SMSN\f5ry"SOSP\f5rz"SQSR\f5r{S�SSjr|STr}SUr~SVr"SWSX\_5r�"SYSZ\�5r�S[r�"S\S]\f5r�S^r�S_r�"S`Sa\f5r�"SbSc\f5r�SSdK/J�r�J�r�J�r� "SeSf\_5r�Sgr�"ShSi\�5r�"SjSk\�5r�\�GR!Sl\�Sm9 \�GR!Sn\�SoSp9 \�GR!Sq\�\�Sr9 "SsSt\f5r�\GR$"5r�Sur�"SvSw\�5r�\�GR!Sx\�Sm9 "SySz\�5r�\�GR!Sx5 S{r�"S|S}\f5r�\GR2"S~5"SS�\f55r�"S�S�5r�"S�S�\R�5r�\B"S�5r�"S�S�\f5r�"S�S�\f5r�"S�S�\f5r�"S�S�\f5r�\GRD"\6S�5\GR2"S~5"S�S�\f555r�"S�S�\f5r�"S�S�\[5r�"S�S�\f5r�S�r�\GRD"\=S�5\GR2"S~5"S�S�\f555r�"S�S�\f5r�"S�S�\R�5r�"S�S�\f5r�"S�S�\f5r�"S�S�\R�5r�\GR2"S~5"S�S�\R�55r�\GR2"S�5\GR2"S~5"S�S�\R�555r�S�r�\GR2"S~5"S�S�\R�55r�S�r�S�r�S�r�S�r�"S�S�\_5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�"S�S�\R�5r�\GR�"\R�S:HS�5"S�S�\R�55r�"S�S�\R�5r�"S�S�\R�5r�\GR2"S~5"S�S�\R�55r�"S�S�\R�5r�"S�S�\f5r�"S�S�\f5r�"S�S�\R�5r�"S�S�\_5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�S�S�jr�\GR�"\�"\(S�5(+S�5\GR�"\R�S�:gS�5"S�S�\R�555r�\GRD"\=S�5"S�S�\R�55r�g!\7a Sr6GNQf=f!\7a Sr;GNUf=f!\7a Sr=GN[f=f!\7a Sr>GNef=f! S"rXGN�=f!\7a \_r[S=r\=r]r^GN�f=f)��N)�support)�hashlib_helper)�
import_helper)�	os_helper)�
script_helper)�
socket_helper)�threading_helper)�warnings_helper)�subTests�_multiprocessing��wait)�util)�	reductionF)�Value�copyT)�
shared_memoryz?libasan has a pthread_create() dead lock related to thread+fork皙�����?c�$�URS5$)N�latin)�encode)�ss �/C:\Python313\\Lib\test\_test_multiprocessing.pyrr^s���8�8�G���c��[U[RR5(a!UR	5 UR5 gg�N)�
isinstance�multiprocessing�queues�Queue�close�join_thread��queues r�close_queuer%bs5���%��/�/�5�5�6�6�
���
�
����7rc�0�[R"U5 gr)r	r")�processs r�join_processr(hs��� � ��)r�posix)�resource_trackerc�6�[RU"U5 gr)r*�_CLEANUP_FUNCS)�name�rtypes  r�_resource_unlinkr/qs���'�'��.�t�4r)g=
ףp=�?gffffff�?gffffff�?)rrr�@�HAVE_BROKEN_SEM_GETVALUE�win32c�2�UbUS:aSn[U/U5$)N�r
)�handle�timeouts  r�wait_for_handler7�s"����w��}������'�"�"r�SC_OPEN_MAX��__main__�$test.test_multiprocessing_forkserver)�	Structure�c_int�c_double�
c_longlongc��Sn[R"S5nUS:XdX:�ag[R
"SU-5e![[4a gf=f)zACheck that the system supports enough semaphores to run the test.r9�SC_SEM_NSEMS_MAXN���zHThe OS doesn't support enough semaphores to run the test (required: %d).)�os�sysconf�AttributeError�
ValueError�unittest�SkipTest)�	nsems_min�nsemss  r�check_enough_semaphoresrK�sj���I���
�
�-�.��
��{�e�(��
�
�
�>�@I�J�K�K��
�J�'����s�?�A�Ac�^�U4SjnU$)a�Returns a decorator: raises SkipTest when SM != spawn at test time.

This can be useful to save overall Python test suite execution time.
"spawn" is the universal mode available on all platforms so this limits the
decorated test to only execute within test_multiprocessing_spawn.

This would not be necessary if we refactored our test suite to split things
into other test files when they are not start method specific to be rerun
under all start methods.
c�J>^�[R"T5UU4Sj5nU$)Nc�>�[R"5=nS:wa[R"SU<ST35eT"U0UD6$)N�spawn�
start_method=z, not 'spawn'; )r�get_start_methodrGrH��args�kwargs�start_method�reason�	test_items   ��r�spawn_check_wrapper�Konly_run_in_spawn_testsuite.<locals>.decorator.<locals>.spawn_check_wrapper�sG��� /� @� @� B�B��w�N��'�'�=�<�/����(Q�R�R��d�-�f�-�-r��	functools�wraps)rWrXrVs` �r�	decorator�.only_run_in_spawn_testsuite.<locals>.decorator�s&���	����	#�	.�
$�	.�
#�"r��rVr]s` r�only_run_in_spawn_testsuitera�s���#��rc�^�U4SjnU$)a�Returns a decorator: raises SkipTest unless fork is supported
and the current start method is forkserver.

Combines @support.requires_fork() with the single-run semantics of
only_run_in_spawn_testsuite(), but uses the forkserver testsuite as
the single-run target.  Appropriate for tests that exercise
os.fork() directly (raw fork or mp.set_start_method("fork") in a
subprocess) and don't vary by start method, since forkserver is
only available on platforms that support fork.
c�J>^�[R"T5UU4Sj5nU$)Nc��>�[R(d[R"S5e[R
"5=nS:wa[R"SU<ST35eT"U0UD6$)Nzrequires working os.fork()�
forkserverrPz, not 'forkserver'; )r�has_fork_supportrGrHrrQrRs   ��r�forkserver_check_wrapper�Uonly_run_in_forkserver_testsuite.<locals>.decorator.<locals>.forkserver_check_wrapper�sj����+�+��'�'�(D�E�E� /� @� @� B�B��|�S��'�'�$�|�o�%9�&��B�D�D��d�-�f�-�-rrZ)rWrgrVs` �rr]�3only_run_in_forkserver_testsuite.<locals>.decorator�s&���	����	#�	.�
$�	.�(�'rr_r`s` r� only_run_in_forkserver_testsuiterj�s���(��rc�t�\rSrSrSr\R"5S5r\R"5S5rSr	g)�TestInternalDecorators��zBLogic within a test suite that could errantly skip tests? Test it!c��[R"5S:wa[R"S5e[	S5S5n[R"SS9n[R"SSS9 URW"5S	5 [R"S
SS9 UR[R5nU"5 SSS5 URS[WR55 URS[UR55 [R"USS9 g![
anUR
SU35 SnAGN	SnAff=f!,(df   N�=f![R"USS9 f=f)NrOz'only run in test_multiprocessing_spawn.�testing this decoratorc��g�N�r_r_rr�return_four_if_spawn�UTestInternalDecorators.test_only_run_in_spawn_testsuite.<locals>.return_four_if_spawn����r�.expected decorated `def` not to raise; caught T��
allow_none��forcerr�forkrP)
rrQrGrHra�	Exception�fail�set_start_method�assertEqual�assertRaises�assertIn�str�	exception)�selfrs�err�orig_start_method�ctxs     r� test_only_run_in_spawn_testsuite�7TestInternalDecorators.test_only_run_in_spawn_testsuite�s:���+�+�-��8��#�#�$M�N�N�	N�
(�)A�
B�
�C�
�
,�<�<��M��		L��,�,�W�D�A����1�3�Q�7��,�,�V�4�@��"�"�8�#4�#4�5��$�&�6��M�M�2�C��
�
�4F�G��M�M�/�3�s�}�}�+=�>��,�,�->�d�K���	N��I�I�F�s�e�L�M�M��	N��6�5��

�,�,�->�d�K��=�D'�A E$�7E�?AE$�'
E�1E�E�
E!�E$�$E;c��[R"5S:wa[R"S5e[	S5S5n[R"SS9n[R"SSS9 URW"5S	5 [R"S
SS9 UR[R5nU"5 SSS5 URS[WR55 URS[UR55 [R"USS9 g![
anUR
SU35 SnAGN	SnAff=f!,(df   N�=f![R"USS9 f=f)Nrez,only run in test_multiprocessing_forkserver.roc��grqr_r_rr�return_four_if_forkserver�_TestInternalDecorators.test_only_run_in_forkserver_testsuite.<locals>.return_four_if_forkserver
rurrvTrwryrrrOrP)
rrQrGrHrjr|r}r~rr�r�r�r�)r�r�r�r�r�s     r�%test_only_run_in_forkserver_testsuite�<TestInternalDecorators.test_only_run_in_forkserver_testsuites:���+�+�-��=��#�#�$R�S�S�	N�
-�.F�
G�
�H�
�
,�<�<��M��		L��,�,�\��F����6�8�!�<��,�,�W�D�A��"�"�8�#4�#4�5��)�+�6��M�M�2�C��
�
�4F�G��M�M�/�3�s�}�}�+=�>��,�,�->�d�K���	N��I�I�F�s�e�L�M�M��	N��6�5��

�,�,�->�d�K�r�r_N)
�__name__�
__module__�__qualname__�__firstlineno__�__doc__r�
requires_forkr�r��__static_attributes__r_rrrlrl�sA��L�����L��L�.
����L��Lrrlc� �\rSrSrSrSrSrg)�
TimingWrapperi$c��XlSUlgr)�func�elapsed)r�r�s  r�__init__�TimingWrapper.__init__&s���	���rc���[R"5nUR"U0UD6[R"5U-
Ul$![R"5U-
Ulf=fr)�time�	monotonicr�r�)r�rS�kwds�ts    r�__call__�TimingWrapper.__call__*sK���N�N���	0��9�9�d�+�d�+��>�>�+�a�/�D�L��4�>�>�+�a�/�D�L�s�A�A%)r�r�N�r�r�r�r�r�r�r�r_rrr�r�$s���0rr�c�R�\rSrSr%Sr\"5r\\\S'Sr	Sr
SrSr\r
Srg)	�BaseTestCasei5)�	processes�manager�threads�
START_METHODSNc�@�[(aURXS5 gg�N�)�
CHECK_TIMINGS�assertAlmostEqual�r��a�bs   r�assertTimingAlmostEqual�$BaseTestCase.assertTimingAlmostEqual<s���=��"�"�1��+�rc�P�U"U6nURX5$![a gf=fr)r�NotImplementedError)r��valuer�rS�ress     r�assertReturnsIfImplemented�'BaseTestCase.assertReturnsIfImplemented@s7��	0���+�C��#�#�E�/�/��#�	��	�s��
%�%c��[S5e)Nz#shouldn't try to pickle a test case)r�)r�rSs  r�
__reduce__�BaseTestCase.__reduce__Js��!�"G�H�Hrr_)r�r�r�r��
ALLOWED_TYPES�setr�r��__annotations__rUr�r�r��
__reduce_ex__r�r_rrr�r�5s3��7�M�!�e�M�3�s�8�#��L�,�0�I��Mrr�c���UR5$![aC URs$![a& URss$![a [ef=ff=ff=fr)�	get_valuerE�_Semaphore__value�_valuer��r�s rr�r�Ssg��	*��~�~�����*�	*��)�)�)���	*�
*��{�{�"��!�
*�)�)�
*��	*��*�s:��
A�+�A�
A�A�A�A�A�A�Ac��\rSrSrSrSrg)�
DummyCallableicc�T�[U[5(deURS5 g�N�)rr��put)r��q�cs   rr��DummyCallable.__call__ds ���!�]�+�+�+�+�	���a�rr_N)r�r�r�r�r�r�r_rrr�r�cs��rr�c�P�\rSrSrSrSrSr\R"S5S5r	\
S5rSr\
S	5r
S
r\
S5rSr\
S
5r\
S5rSr\R*"\R.S5S5r\
S5r\
S5r\
S5r\
S5rSrSrSrSr Sr!\
S5r"Sr#\
S5r$Sr%\
S1S j5r&S!r'\R"S"5S#5r(S$r)\
S%5r*S&r+\
S'5r,S(r-\
04S)j5r.S*r/S+r0\
S2S,j5r1S-r2S.r3S/r4S0r5g)3�_TestProcessii�r�r�c�*�URS:Xa*URSRUR55 UR5nURnURUR
55 URUR(+5 URU[5 UR[U5S:�5 URUR[R"55 URURS5 g)Nr��test not appropriate for {}r)�TYPE�skipTest�format�current_process�authkey�
assertTrue�is_alive�daemon�assertIsInstance�bytes�lenr�identrC�getpid�exitcode)r��currentr�s   r�test_current�_TestProcess.test_currentms����9�9�	�!��M�M�7�>�>�t�y�y�I�J��&�&�(���/�/������(�(�*�+����G�N�N�*�+����g�u�-�����G��q�(�)��������	�	��4�����)�)�4�0rc�H�URS:XaURSUR35 [R[R
"[R5[R"[R5[R"[R
"[R55/nUH`nURU5 UR5nUR5 UR5 URURS5 Mb g)Nr�ztest not appropriate for r)r�r��sys�
executablerC�fsencoder�FakePath�set_executable�Process�start�joinrr�)r��paths�path�ps    r�test_set_executable� _TestProcess.test_set_executable{s����9�9�	�!��M�M�5�d�i�i�[�A�B��N�N��K�K����'����s�~�~�.����r�{�{�3�>�>�:�;�	
���D�����%�����A�
�G�G�I�
�F�F�H����Q�Z�Z��+�r�cpuc	���SSS/S4n[[4n[R"X5nUH�upEUR	XES9 URS5nUR
URU"Xd45S9nSUlUR5 UR5nURX�5 UR5 [U5 SSS5 M� g!,(df   M�=f)Nr�r��r�)rS�	args_type��targetrST)�list�tuple�	itertools�product�subTestr r��
_test_argsr�r��getrr�r%)	r��
args_cases�
args_types�
test_casesrSr�r�r��
child_argss	         r�test_args_argument�_TestProcess.test_args_argument�s�������T�*�
��E�]�
��&�&�z�>�
�)�O�D����4��=��J�J�q�M���L�L����i��	�>R�L�S��������	��U�U�W�
�� � ��2������A��>�=� *�=�=�s
�BC�
C"	c�&�URU5 gr�r�)�clsr��args   rr�_TestProcess._test_args�s
��	���c�
rc���URS:Xa*URSRUR55 URURS9nURURUR5R5 URURSS9nURUR5 URURSS9nURUR5 g)Nr�r��r�T�r�r�F)
r�r�r�r��_testrr�r�r��assertFalse)r��proc0�proc1�proc2s    r�test_daemon_argument�!_TestProcess.test_daemon_argument�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J����D�J�J��/��������t�';�';�'=�'D�'D�E����D�J�J�t��<��������%����D�J�J�u��=��������&rc�>�UR5nURU5 URU5 URUR5 URS:wa@UR[	UR
55 URUR5 gg)Nr�)r�r�r-r�r�r��pid)rr�rSr�r�s     rr�_TestProcess._test�sl���%�%�'��	���d��	���d��	���g�l�l���8�8�y� �
�E�E�%����(�)�
�E�E�'�+�+��!rc�`�URS:Xa*URSRUR55 URUR	55 URSS9upUR
URU4S9nUR5 UR5 UR5upEURX@R5R5 URU[R"55 URXPR5R 5 g)Nr�r�F��duplexr�)r�r�r��assertIsNone�parent_process�Piper��_test_send_parent_processr�r��recvrr�rrCr�r-)r��rconn�wconnr��
parent_pid�parent_names      r�test_parent_process_attributes�+_TestProcess.test_parent_process_attributes�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J����$�-�-�/�0��y�y��y�.����L�L�� >� >�e�X�L�N��	���	�	����"'�*�*�,��
�����%9�%9�%;�%?�%?�@�����R�Y�Y�[�1�����&:�&:�&<�&A�&A�Brc�r�SSKJn URU"5RU"5R/5 g)Nr�r)�multiprocessing.processr�sendrr-�rr$rs   rr!�&_TestProcess._test_send_parent_process�s(��:�
�
�
�N�$�(�(�.�*:�*?�*?�@�Arc�l�URS:Xa*URSRUR55 URSS9upUR	UR
U4S9nUR
5 UR[RS9(d[S5eUR5nURUS5 UR5 UR5 UR[RS9(d[S5eUR5nURUS	5 g)
Nr�r�Frr��r6z(Could not communicate with child process�alive�	not alive)r�r�r�r r��_test_create_grandchild_processr��pollr�LONG_TIMEOUT�AssertionErrorr"r�	terminater�)r�r#r$r��parent_process_statuss     r�test_parent_process� _TestProcess.test_parent_process�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J�
�y�y��y�.����L�L��7�7�u�i�
�
I��	���	��z�z�'�"6�"6�z�7� �!K�L�L� %�
�
������.��8�	���
�	�����z�z�'�"6�"6�z�7� �!K�L�L� %�
�
������.��<rc��URURU4S9nUR5 [R"S5 g)Nr�i,)r��_test_report_parent_statusr�r��sleep)rr$r�s   rr3�,_TestProcess._test_create_grandchild_process�s0���K�K�s�=�=�U�I�K�N��	���	��
�
�3�rc��SSKJn URU"5R5(aSOS5 U"5R	[
RS9 URU"5R5(aS5 gS5 g)Nrr*r1r2r0)r+rr,r�r�r�
SHORT_TIMEOUTr-s   rr<�'_TestProcess._test_report_parent_status�s`��:�
�
�
�n�.�7�7�9�9�7�{�K�����g�&;�&;��<�
�
�
�n�.�7�7�9�9�7�K�{�Krc���URS5nUR5nUSS4nSSS.nSnURURX4US9nSUlUR5nURS	:wa&URURUR5 URUR5S
5 URURS5 URX`R55 UR[UR55[L5 URURS5 UR!5 URURS5 URUR5S5 UR#X`R55 URUR%5USS5 URUR%5U5 URUR%5UR&5 URS	:waTURUR%5UR5 URUR%5UR(5 UR+5 URURS5 URUR5S
5 URX`R55 [-U5 g)Nr���gR���Q@)�hello�bye�SomeProcess)r�rSrTr-Tr�Fr)r �Eventr�rr�r�r�rr�r��assertNotIn�active_childrenr��typer�r�r�r�rr-rr�r%)r�r��erSrTr-r�r�s        r�test_process�_TestProcess.test_process�s&���J�J�q�M���J�J�L���1�a�y���D�)�����L�L��:�:�D�d�
�
������&�&�(���9�9�	�!����Q�Y�Y����8��������u�-�������4�(�����0�0�2�3�����T�1�1�3�4��<�=�������T�*�	���	�������T�*��������t�,��
�
�a�-�-�/�0��������$�q�r�(�+��������&�)��������!�&�&�)��9�9�	�!����Q�U�U�W�g�o�o�6����Q�U�U�W�a�e�e�,�	����������Q�'��������u�-�����0�0�2�3��A�rzneeds native_idc��URS:Xa*URSRUR55 [R"5R
nUR
S5nURURU4S9nUR5 UR5nUR5 [U5 URX5 g)Nr�r�r�r�)r�r�r��	threading�main_thread�	native_idr r��"_test_process_mainthread_native_idr�rr�r%�assertNotEqual)r��current_mainthread_native_idr�r��child_mainthread_native_ids     r�!test_process_mainthread_native_id�._TestProcess.test_process_mainthread_native_ids����9�9�	�!��M�M�7�>�>�t�y�y�I�J�'0�'<�'<�'>�'H�'H�$��J�J�q�M���L�L�� G� G�q�d�L�S��	���	�%&�U�U�W�"�	�����A�����8�Urc�d�[R"5RnURU5 gr)rPrQrRr�)rr��mainthread_native_ids   rrS�/_TestProcess._test_process_mainthread_native_id-s$��(�4�4�6�@�@��	���"�#rc�0�[R"S5 g�N�d�r�r=�rs r�_sleep_some�_TestProcess._sleep_some2s
���
�
�3�rc�P�UR5 [R"S5 gr])r�r�r=�r�events  r�_sleep_some_event�_TestProcess._sleep_some_event6s��
�	�	���
�
�3�rc�0�[R"U5 grr_)r�delays  r�_test_sleep�_TestProcess._test_sleep;s���
�
�5�rc��^�URS:Xa*URSRUR55 UR5nUR	UR
U4S9mSTlTR5 URTR5S5 URTUR55 URTRS5 [TR5nURU"S5S5 URUR S5 URTR5S5 URU"S5S5 URUR S5 URTR5S5 ["R$nUR'U5(d5TR)5 TR5 UR+SUS	35 U"T5 [-[.S
5(a�U4Sjn[.R."[.R0U5n[.R2"S5 URU"5S5 [.R2"S5 [.R."[.R0U5 OURU"5S5 URUR S5 URTR5S
5 UR5TUR55 TR5 TR$![.R2"S5 [.R."[.R0U5 f=f)Nr�r�r�Trr4rBzevent not signaled in � seconds�alarmc� >�[ST-5e)Nzjoin took too long: %s��RuntimeError)rSr�s �r�handler�+_TestProcess._kill_process.<locals>.handleras���"�#;�a�#?�@�@r�
F)r�r�r�rHr�rfr�r�rr�r�rJr�r�r�r�r�rr@rr7r}�hasattr�signal�SIGALRMrnrI)r��methrer�r6rr�old_handlerr�s       @r�
_kill_process�_TestProcess._kill_process?sd����9�9�	�!��M�M�7�>�>�t�y�y�I�J��
�
����L�L�� 6� 6�e�X�L�F�����	���	��������t�,��
�
�a��-�-�/�0�������T�*��Q�V�V�$������a��$�'��$�$�T�\�\�3�7��������t�,�����b��4�(��$�$�T�\�\�3�7��������t�,��'�'���z�z�'�"�"�
�K�K�M�
�F�F�H��I�I�.�w�i�x�@�A��Q���6�7�#�#�
A� �-�-�����@�K�
;����R� �� � ����.����Q���
�
�f�n�n�k�:����T�V�T�*��$�$�T�\�\�3�7��������u�-�����D�0�0�2�3�	�����z�z������Q���
�
�f�n�n�k�:�s�;-L3�3=M0c��UR[RR5nUR	U[
R*5 gr)rzrr�r7rrv�SIGTERM�r�r�s  r�test_terminate�_TestProcess.test_terminatevs4���%�%�o�&=�&=�&G�&G�H������F�N�N�?�3rc��UR[RR5n[R
S:wa"UR
U[R*5 gUR
U[R*5 g�N�nt)
rzrr��killrCr-rrv�SIGKILLr}r~s  r�	test_kill�_TestProcess.test_killzsU���%�%�o�&=�&=�&B�&B�C��
�7�7�d�?����X�����7����X�����7rc��[R"5nUR[	U5[
L5 URUS:�5 g![a SnNCf=fr�)r�	cpu_countr�r�rK�int)r��cpuss  r�test_cpu_count�_TestProcess.test_cpu_count�sR��	�"�,�,�.�D�	
����T�
�c�)�*������	�"��#�	��D�	�s�A�A�Ac��UR[UR55[5 UR	5nURURSS9nURX R55 SUlUR5 URX R55 UR5 UR5 URX R55 g!UR5 f=f)Nr_r�T)
rrKrJr�rHr�rrIr�r�r�r�r�)r�rer�s   r�test_active_children�!_TestProcess.test_active_children�s�������d�2�2�4�5�t�<��
�
����L�L��
�
��L�4������0�0�2�3�	��A�H�
�G�G�I��M�M�!�1�1�3�4��I�I�K�	��������0�0�2�3��
�I�I�K�s�86C.�.Dc���URU5 [U5S:aR[S5HBnURURXU/-4S9nUR5 UR
5 MD gg�NrCr�)r,r��ranger��_test_recursionr�r�)rr$�id�ir�s     rr��_TestProcess._test_recursion�se��
�
�
�2���r�7�Q�;��1�X���K�K��.�.�e���V�_� ������	������rc�`�URSS9upURU/5 [R"[5 /nUR5(a6UR
UR55 UR5(aM6/S/SS/SS/S/SS/SS//nURX45 g)NFrrr�)	r r�r�r=�DELTAr4�appendr"r)r�r#r$�result�expecteds     r�test_recursion�_TestProcess.test_recursion�s����y�y��y�.������U�B�'��
�
�5�����j�j�l�l��M�M�%�*�*�,�'��j�j�l�l�
��c��A���A���c��A���A����	
����*rc�&�URS5 g)Ng$@r
rds  r�_test_sentinel�_TestProcess._test_sentinel�s��
�
�
�4�rc��URS:Xa*URSRUR55 UR5nUR	UR
U4S9nUR
[5 UR SSS5 UR5 URUR5 URnURU[5 UR[USS95 UR!5 UR5 UR#[USS95 g!,(df   N�=f)Nr�r�r�r4r0r�)r�r�r�rHr�r�r�rF�sentinelr��
addCleanupr�r�r�rr7r�r�)r�rer�r�s    r�
test_sentinel�_TestProcess.test_sentinel�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J��
�
����L�L�� 3� 3�5�(�L�C��
�
�
�z�
*�
�J�J�+�	���	���������:�:�����h��,������3�?�@�
�	�	��	���������!�<�=�+�
*�s�;
D0�0
D>Nc�V�UbUR5 [R"U5 gr)rr��exit)r�rcr�s   r�_test_close�_TestProcess._test_close�s���=�
�E�E�G�����rc���URS:Xa*URSRUR55 UR5nUR	UR
SU0S9nSUlUR5 URUR5S5 UR[5 UR5 SSS5 URS5 UR5 URUR5S5 URURS5 UR5 UR[5 UR5 SSS5 UR[5 UR5 SSS5 UR[5 UR!5 SSS5 UR5 ["R$"U5nA[&R("5 UR+U"5S5 [-U5 g!,(df   GNe=f!,(df   N�=f!,(df   N�=f!,(df   N�=f)Nr�r�r�)r�rTTFr)r�r�r�r r�r�r�r�rr�r�rFr!r�r�r�r7�weakref�ref�gc�collect�assertIsr%)r�r�r��wrs    r�
test_close�_TestProcess.test_close�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J��J�J�L���L�L�� 0� 0�#�q��L�B�����	���	��������t�,�
�
�
�z�
*�
�G�G�I�+�	
���d��	�����������u�-�������Q�'�	���	�
�
�
�z�
*�
�J�J�L�+�
�
�
�z�
*�
�F�F�H�+�
�
�
�z�
*�
�K�K�M�+�	���	�
�[�[��^��
�
�
�
���
�
�b�d�D�!��A��++�
*��+�
*��
*�
*��
*�
*�s0�3H"�H4�<I�*I�"
H1�4
I�
I�
I$�walltimec���URS:Xa*URSRUR55 [R"5nUS:XaSOSn[U5Vs/sHnUR
URSS9PM nnUHnUR5 M UHn[U5 M UHnURURS5 M! [U5Vs/sHnUR
URS	9PM nnUHnUR5 M [R"S
5 UHnUR5 M UHn[U5 M [ R"S:wal[$R&*/n[(R*S:Xa UR-[$R.*5 UHnUR1URU5 M! ggs snfs snf)
Nr�r�rOr�r^)�{�G�z�?r�rr���MbP?r��darwin)r�r�r�rrQr�r�rjr�r(rr�rar�r=r7rCr-rvr}r��platformr�r�r�)r��sm�Nr��procsr��	exitcodess       r�test_many_processes� _TestProcess.test_many_processes�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J�
�
-�
-�
/���w��A�C�� ��(�$�"�Q����T�%5�%5�G��D�"�	�$��A�
�G�G�I���A���O���A����Q�Z�Z��+�� ��(�$�"�Q����T�%5�%5��6�"�	�$��A�
�G�G�I���
�
�5���A�
�K�K�M���A���O��
�7�7�d�?� �.�.��)�I��|�|�x�'�� � �&�.�.��1����
�
�a�j�j�)�4��
��%$��$s�'$G.�,#G3c�v�[5n[R"U5nUR5nUR	XU4S9nAUR5 UR
5 [R"5 URU"5S5 URUR5S5 [U5 g)Nr�r�)
r�r�r�r r�r�r�r�r�r�rrr%)r�r�r�r�r�s     r�test_lose_target_ref�!_TestProcess.test_lose_target_refs����O��
�[�[��^���J�J�L���L�L��A��L�/��
�	���	�	����
�
�
���
�
�b�d�D�!��������!�$��A�rc�l�UR[R"55 UR5 gr)r�r�fd_countr)r��evtr�s   r�_test_child_fd_inflation�%_TestProcess._test_child_fd_inflation$s ��	���i� � �"�#����
rc�V�URS:Xa*URSRUR55 [R"5nUS:Xa URSRU55 SnUR5nUR
5n[U5Vs/sHnURURX44S9PM  nnUHnUR5 M [U5Vs/sHoTR5PM nnUR[[U55SU5 UR5 UHnUR5 M [!U5 gs snfs snf!UR5 UHnUR5 M [!U5 f=f)Nr�r�r{r�r�r�)r�r�r�rrQrHr r�r�r�r�rrr�r�r�r%)	r�r�r�r�r�r�r�r��	fd_countss	         r�test_child_fd_inflation�$_TestProcess.test_child_fd_inflation)sV���9�9�	�!��M�M�7�>�>�t�y�y�I�J�
�
-�
-�
/��
��<�
�M�M�7�>�>�r�B�C�
���j�j�l���J�J�L�� ��(�$�"�Q����T�%B�%B�#���R�"�	�$��A�
�G�G�I��	�*/��(�3�(�Q����(�I�3����S��Y��0�!�Y�?�
�G�G�I����������N��$��4��
�G�G�I����������N�s$�%%E(�&
E2�3E-�'E2�-E2�26F(c�^�U4SjnU4Sjn[R"US9R5 [R"USS9R5 g)Nc�R>�[R"S5 TR5 g)N��?�r�r=r��r�s�r�func1�2_TestProcess._test_wait_for_threads.<locals>.func1Js����J�J�s�O��G�G�Irc�R>�[R"S5 TR5 g)N�)r�r=�clearr�s�r�func2�2_TestProcess._test_wait_for_threads.<locals>.func2Ns����J�J�r�N��I�I�KrrTr)rP�Threadr�)r�r�r�r�s `  r�_test_wait_for_threads�#_TestProcess._test_wait_for_threadsHs?���	�	�	����&�,�,�.�����d�3�9�9�;rc�L�URS:Xa*URSRUR55 UR5nUR	UR
U4S9nUR
5 UR5 URUR55 g)Nr�r�r�)
r�r�r�rHr�r�r�r�r��is_set)r�r��procs   r�test_wait_for_threads�"_TestProcess.test_wait_for_threadsUsu���9�9�	�!��M�M�7�>�>�t�y�y�I�J��j�j�l���|�|�4�#>�#>�c�V�|�L���
�
���	�	������
�
��%rc���UR5HLup4US:Xa&[R"5nUR5 O
US:XdeSn[	[
US5 MN UR
5 g)Nr!�remove)�items�io�StringIOr!�setattrr�r�)r�r��break_std_streams�stream_name�action�streams      r�_test_error_on_stdio_flush�'_TestProcess._test_error_on_stdio_flushas^��#4�#:�#:�#<��K��� ������������)�)�)����C��d�+�$=�	���	rc	��[R"5S/nUSR5 SH�nUH�n[[U5n[[X#5 UR
5nURURU4S9nUR5 UR5 URUR55 URURS5 [[X$5 M� M� g![[X$5 f=f)Nr��stdout�stderrr�)r�r�r!�getattrr�r�rHr�r�r�r�r�r�rr�)r��streamsr�r��
old_streamr�r�s       r�test_error_on_stdio_flush_1�(_TestProcess.test_error_on_stdio_flush_1ms����;�;�=�$�'����
����/�K�!��$�S�+�6�
���[�1�	:��*�*�,�C��<�<�t�/N�/N�.1�V�(�5�D��J�J�L��I�I�K��O�O�C�J�J�L�1��$�$�T�]�]�A�6��C��9�"�0���C��9�s
�BC5�5Dc	��SH�nSH�n[[U5nUR5nURURXAU04S9nUR5 UR
5 URUR55 URURS5 [[X5 M� M� g![[X5 f=f)Nr�)r!r�r�r)r�r�rHr�r�r�r�r�r�rr�r�)r�r�r�r�r�r�s      r�test_error_on_stdio_flush_2�(_TestProcess.test_error_on_stdio_flush_2�s���0�K�-��$�S�+�6�
�	:��*�*�,�C��<�<�t�/N�/N�.1��3H�-I�(�K�D��J�J�L��I�I�K��O�O�C�J�J�L�1��$�$�T�]�]�A�6��C��9�.�0���C��9�s�BB=�=Cc�P�[R"U5 UR5 grr�)r�r�ris   r�_sleep_and_set_event�!_TestProcess._sleep_and_set_event�s���
�
�5�����	rc��URS:Xa*URSRUR55 [R"5nUS:wa URSRU55 SSKJn UR5 SnUR5nURURXT4S9nUR5 URn[R"Xq5 [R "US-5 UR5nURURU4S9n	U	R5 U	R#5 UR%UR'55 UR)U	R*S5 UR#5 UR%UR'55 UR-UR*S	5 g)
Nr�r�rer)�_forkserverr�r�g@)r�)r�r�r�rrQ�multiprocessing.forkserverr��ensure_runningrHr�r�r��_forkserver_pidrCr�r�r=r�r�r�rr�r�)
r��signumr�r�rir�r�r�evt2rs
          r�check_forkserver_death�#_TestProcess.check_forkserver_death�sQ���9�9�	�!��M�M�7�>�>�t�y�y�I�J�
�
-�
-�
/��
���
�M�M�7�>�>�r�B�C�:��"�"�$����j�j�l���|�|�4�#<�#<�C�<�|�P���
�
���)�)��
������
�
�5�3�;���z�z�|�����D�$=�$=�T�G��L��
���
�
�
�
��������
�&��������+��	�	������
�
��%��
�
�d�m�m�X�.rc�B�UR[R5 gr)rrv�SIGINTr�s r�test_forkserver_sigint�#_TestProcess.test_forkserver_sigint�s���#�#�F�M�M�2rc�l�[RS:wa UR[R5 ggr�)rCr-rrvr�r�s r�test_forkserver_sigkill�$_TestProcess.test_forkserver_sigkill�s$��
�7�7�d�?��'�'����7�rr_)rN)r4)6r�r�r�r�r�r�r�r�requires_resourcer�classmethodrrrr'r!r9r3r<rMrG�
skipUnlessrP�_HAVE_THREAD_NATIVE_IDrWrSrarfrjrzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r_rrr�r�is+��,�M�1�,� 
���u�%��&��(����
'�����
C��B��B�=�2����
�L��L�&�P����9�9�;L�M�V�N�V� �$��$�������������5�n4�8�#�4�"����+�(����>� ����
�@
���z�*�!5�+�!5�F������>�
<��
<�
&��@B�	��	�:�&:�"����$/�L3�8rr�c�,�\rSrSrSrSrSrSrSrg)�_UpperCaseri�c��[RRU5 [R"5uUlUlgr)rr�r�r �
child_conn�parent_connr�s rr��_UpperCaser.__init__�s.�����(�(��.�,;�,@�,@�,B�)����)rc��URR5 [URRS5H,nURRUR
55 M. URR5 gr)rr!�iterrr"r,�upper�r�rs  r�run�_UpperCaser.run�sW������� ��d�o�o�*�*�D�1�A��O�O� � �����+�2������rc��[U5[LdeURRU5 URR	5$r)rKr�rr,r"rs  r�submit�_UpperCaser.submit�s;���A�w�#�~��~������a� ����$�$�&�&rc��URRS5 URR5 URR5 gr)rr,r!rr�s r�stop�_UpperCaser.stop�s8�������d�#������ ������r)rrN)	r�r�r�r�r�rrr!r�r_rrrr�s��C� �'�
 rrc�J�\rSrSrSrSrSr\S5r\S5r	Sr
Srg	)
�_TestSubclassingProcessi��r�c�
�[5nSUlUR5 URUR	S5S5 URUR	S5S5 UR5 UR
5 g)NTrE�HELLO�world�WORLD)rr�r�rrr!r�)r��
uppercasers  r�test_subclassing�(_TestSubclassingProcess.test_subclassing�sg�� �]�
� �
����������*�*�7�3�W�=�����*�*�7�3�W�=��������rc�"�URS:Xa*URSRUR55 [RnUR[RU5 URURU4S9nUR5 UR5 [USS9nUR5nURSU5 URSU5 URSU5 SSS5 g!,(df   g=f)	Nr�r�r��utf-8��encoding�ZeroDivisionErrorztest_multiprocessing.pyz1/0 # MARKER)r�r�r�r�TESTFNr��unlinkr��_test_stderr_flushr�r��open�readr�)r��testfnr��fr�s     r�test_stderr_flush�)_TestSubclassingProcess.test_stderr_flush�s����9�9�	�!��M�M�7�>�>�t�y�y�I�J��!�!�����	�(�(�&�1��|�|�4�#:�#:�&��|�K���
�
���	�	��
�&�7�
+�q��&�&�(�C��M�M�-�s�3��M�M�3�S�9��M�M�.�#�.�,�
+�
+�s
�0AD�
Dc���[R"U[R[R-[R-5n[USSSS9[
lSS- g)N�wr.F�r0�closefdr�r)rCr5�O_WRONLY�O_CREAT�O_EXCLr�r�)rr7�fds   rr4�*_TestSubclassingProcess._test_stderr_flush�sA��
�W�W�V�R�[�[�2�:�:�5��	�	�A�
B���"�c�G�U�C��
�	�!�rc���[R"U[R[R-[R-5n[USSSS9[
l[
R"U5 g)Nr<r.Fr=)rCr5r?r@rAr�r�r�)rrVr7rBs    r�_test_sys_exit�&_TestSubclassingProcess._test_sys_exitsF��
�W�W�V�R�[�[�2�:�:�5��	�	�A�
B���"�c�G�U�C��
�����rc��URS:Xa*URSRUR55 [RnUR[RU5 /SQS4H�nURURX!4S9nSUl	UR5 [U5 URURS5 [USS	9nUR5nSSS5 URWR!5[#U55 [$R"U5 M� /S
QnUHyupxUR'US9 UR[(R*US9nSUl	UR5 [U5 URURU5 SSS5 M{ g!,(df   N�=f!,(df   M�=f)Nr�r��r�rC�zignore thisr�Tr�r.r/)))Tr�)�Fr))�rK)rr)r_r�rS)r�r�r�rr2r�r3r�rEr�r�r(rr�r5r6�rstripr�rCrr�r�)	r�r7rVr�r8�content�casesrSr�s	         r�
test_sys_exit�%_TestSubclassingProcess.test_sys_exitsf���9�9�	�!��M�M�7�>�>�t�y�y�I�J��!�!�����	�(�(�&�1�
��
�F����D�$7�$7�v�>N��O�A��A�H�
�G�G�I���O����Q�Z�Z��+��f�w�/�1��&�&�(��0����W�^�^�-�s�6�{�;��I�I�f��
� ��$�N�D����4��(��L�L����t�L�<��������	��Q��� � ����X�6�)�(�$�0�/��)�(�s�F7�
AG�7
G	�
G	r_N)r�r�r�r�r�r+r9rr4rErPr�r_rrr$r$�s>��"�M��/�"��������
&7rr$c�j�[US5(aUR5$UR5S:H$)N�emptyr)rurS�qsize�r�s r�queue_emptyrV7s+���q�'����w�w�y���w�w�y�A�~�rc�j�[US5(aUR5$UR5U:H$)N�full)rurXrT)r��maxsizes  r�
queue_fullrZ=s+���q�&����v�v�x���w�w�y�G�#�#rc��\rSrSr\S5rSr\S5rSr\S5r	Sr
Sr\S	5rS
r
SrSrS
rSrSrSrSrg)�
_TestQueueiDc��UR5 [S5HnUR5 M UR5 g)N�)rr�rr�)rr$�child_can_start�parent_can_continuer�s     r�	_test_put�_TestQueue._test_putGs1�������q��A��I�I�K�����!rc��SnURUS9nUR5nUR5nURURX#U4S9nSUlUR5 UR
[U5S5 UR
[X!5S5 URS5 URSS5 URSSS5 URS	S5 URS
SS5 URS5 [R"[5 UR
[U5S5 UR
[X!5S5 [UR5n[UR5nUR[ R"USS5 UR%UR&S5 UR[ R"USSS5 UR%UR&S5 UR[ R"US5 UR%UR&S5 UR[ R"USS[(5 UR%UR&[(5 UR[ R"USS[*5 UR%UR&S5 UR[ R"USS[,S
9 UR%UR&[,5 UR/5 UR15 UR
[U5S5 UR
[X!5S5 UR35 [5U5 g)Nr^�rYr�TFr�rCrIrrr��rr0)r rHr�rar�r�rrVrZr��
put_nowaitr�r=r�r�r��pyqueue�Fullr�r��TIMEOUT1�TIMEOUT2�TIMEOUT3r�rr�r%)r��MAXSIZEr$r_r`r�r�rfs        r�test_put�_TestQueue.test_putNs������
�
�7�
�+���*�*�,��"�j�j�l���|�|��>�>��*=�>��������
�
������U�+�T�2�����E�3�U�;�
�	�	�!��
�	�	�!�T��
�	�	�!�T�4� �
�	�	�!�U��
�	�	�!�U�D�!�
�����	
�
�
�5������U�+�U�3�����E�3�T�:��E�I�I�&��"�5�#3�#3�4�
����'�,�,��Q��6��$�$�S�[�[�!�4����'�,�,��Q��t�<��$�$�S�[�[�!�4����'�,�,�
�A�6��$�$�Z�%7�%7��;����'�,�,��Q��h�?��$�$�S�[�[�(�;����'�,�,��Q��x�@��$�$�S�[�[�!�4����'�,�,��Q��h��G��$�$�S�[�[�(�;������ � �"�����U�+�T�2�����E�3�U�;��	�	���E�rc���UR5 URS5 URS5 URS5 URS5 URS5 UR5 g)Nr�rCrIrrr�)rr�r��rr$r_r`s    r�	_test_get�_TestQueue._test_get�sQ������
�	�	�!��
�	�	�!��
�	�	�!��
�	�	�!��
�	�	�!�����!rc��UR5nUR5nUR5nURURXU4S9nSUlUR5 UR
[U5S5 UR5 UR5 [R"[R5Hn[U5(aM O UR
[U5S5 UR
UR5S5 UR
URSS5S5 UR
URS5S5 UR
URSS9S5 UR
UR5S	5 UR
[U5S5 [UR5n[UR5nUR!["R$US5 UR'UR(S
5 UR!["R$USS5 UR'UR(S
5 UR!["R$U5 UR'UR(S
5 UR!["R$US[*5 UR'UR([*5 UR!["R$US[,5 UR'UR(S
5 UR!["R$U[.S9 UR'UR([.5 UR15 [3U5 g)Nr�TFr�rCrIr0rrr�r)r rHr�rqr�r�rrVr�rr�sleeping_retryr@�
get_nowaitrr�r�rg�Emptyr�r�rirjrkr�r%)r�r$r_r`r��_rrus        r�test_get�_TestQueue.test_get�s����
�
����*�*�,��"�j�j�l���|�|��>�>��*=�>��������
�
������U�+�T�2������ � �"��'�'��(=�(=�>�A��u�%�%��?�	
����U�+�U�3�����)�)�+�Q�/�������4��.��2�������4��!�,�������1��-�q�1��������a�(�����U�+�T�2��E�I�I�&��"�5�#3�#3�4�
����'�-�-��e�4��$�$�S�[�[�!�4����'�-�-��e�T�:��$�$�S�[�[�!�4����'�-�-��4��$�$�Z�%7�%7��;����'�-�-��d�H�=��$�$�S�[�[�(�;����'�-�-��e�X�>��$�$�S�[�[�!�4����'�-�-��h��?��$�$�S�[�[�(�;��	�	���E�rc�L�[SS5HnURU5 M g)Nrtr�)r�r�)rr$r�s   r�
_test_fork�_TestQueue._test_fork�s���r�2��A��I�I�a�L�rc���UR5n[S5HnURU5 M [R"[
5 UR
URU4S9nSUlUR5 [S5H#nURUR5U5 M% UR[RURS5 UR5 [!U5 g)Nrtr�Tr�F)r r�r�r�r=r�r�r{r�r�rrr�rgrvr�r%)r�r$r�r�s    r�	test_fork�_TestQueue.test_fork�s����
�
����r��A��I�I�a�L��	
�
�
�5��
�L�L����u�h�L�?�����	���	��r��A����U�Y�Y�[�!�,�����'�-�-����E�:�	�����E�rc�B�UR5nURUR5S5 URS5 URUR5S5 URS5 URUR5S5 UR
5 URUR5S5 UR
5 URUR5S5 [U5 g![a UR	S5 N�f=f)Nrzqsize method not implementedr�r�rC)r rrTr�r�r�rr%�r�r�s  r�
test_qsize�_TestQueue.test_qsize�s����J�J�L��	:����Q�W�W�Y��*�	
���a���������A�&�	���a���������A�&�	�����������A�&�	�����������A�&��A���#�	:��M�M�8�9�	:�s� D�D�Dc��[URS5H-n[R"[5 UR5 M/ gr)rrr�r=r��	task_done)rr��objs   r�_test_task_done�_TestQueue._test_task_done�s,������t�$�C��J�J�u��
�K�K�M�%rc��UR5n[S5Vs/sHnURURU4S9PM  nnUHnSUlUR5 M [S5HnUR
U5 M UR5 UHnUR
S5 M UHnUR5 M [U5 gs snf)Nrrr�Trt)	�
JoinableQueuer�r�r�r�r�r�r�r%)r�r$r��workersr�s     r�test_task_done�_TestQueue.test_task_dones����"�"�$��"�!�H�&�$�q��<�<�t�';�';�5�(�<�K�$�	�&��A��A�H�
�G�G�I���r��A��I�I�a�L��	�
�
���A��I�I�d�O���A�
�F�F�H���E���#&s�%Cc���[R"5 Sn[US-SSS9nURS5 SSS5 [R
"[R"55 [U5 SSS5 SSS5 g!,(df   NU=f![Ra URS5 NIf=f!,(df   NS=f!,(df   g=f)N�imported_by_an_imported_module�.pyr<r.r/z�if 1:
                    import multiprocessing

                    q = multiprocessing.Queue()
                    q.put('knock knock')
                    q.get(timeout=3)
                    q.close()
                    del q
                z?Probable regression on import lock contention; see Issue #22853)r�temp_cwdr5�writer�
DirsOnSysPathrC�getcwd�
__import__rgrvr})r��module_namer8s   r�test_no_import_lock_contention�)_TestQueue.test_no_import_lock_contentions���
�
�
�
!�:�K��k�E�)�3��A�Q������B��,�,�R�Y�Y�[�9�3��{�+�:�"�
!�A�A���}�}�3��I�I�2�3�3��:�9��"�
!�sW�C�B�1C�*C�,B�7C�
B	�C�%C�>C�C�C�
C	�C�
C#c��[R"5n[R"5nUR	[
RURSS5 [R"5U-
nURUS5 [U5 g)NT皙�����?r)
rr r�r�r�rgrvr�assertGreaterEqualr%)r�r�r��deltas    r�test_timeout�_TestQueue.test_timeout.sb���!�!�#����� �����'�-�-�����e�<���� �5�(��	
����u�-��A�rc���URS:wa*URSRUR55 "SS[5n[R
R
5 UR5nURU"55 URS5 URUR[
RS95 [U5 SSS5 [R
R
5 URSS9nURU"55 URS5 URUR5S5 URUR[
RS95 URUR!55 [U5 SSS5 g!,(df   N�=f![a N|f=f!,(df   g=f)	Nr�r�c��\rSrSrSrSrg)�F_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializablei>c��[er)rEr�s rr��Q_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializable.__reduce__?s��$�$rr_N�r�r�r�r�r�r�r_rr�NotSerializabler�>s��
%rr�Tr0r�rd)r�r�r��object�testr�captured_stderrr r�r�rr@r%rrTr�rS)r�r�r�s   r�"test_queue_feeder_donot_stop_onexc�-_TestQueue.test_queue_feeder_donot_stop_onexc9sV���9�9��#��M�M�7�>�>�t�y�y�I�J�	%�f�	%��\�\�
)�
)�
+��
�
��A�
�E�E�/�#�$�
�E�E�$�K��O�O�A�E�E�'�*?�*?�E�@�A���N�,��\�\�
)�
)�
+��
�
�1�
�%�A�
�E�E�/�#�$�
�E�E�$�K�
�� � �����A�.�

�O�O�A�E�E�'�*?�*?�E�@�A��O�O�A�G�G�I�&���N�,�
+�,�
+��'�
��
��,�
+�s>�(A/F4�=7G�5 G�AG�4
G�
G�G�G�G�
G#c�^�URS:wa*URSRUR55 "SS[5m"U4SjS[R
R5nT"5n[RR5 U"[R"5S9nURU5 URS5 URUR[RS	95 SSS5 URUR5 URUR 5 g!,(df   NE=f)
Nr�r�c�$�\rSrSrSrSrSrSrg)�K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablei_zMock unserializable objectc� �SUlSUlg�NF)�reduce_was_called� on_queue_feeder_error_was_calledr�s rr��T_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__init__as��).��&�8=��5rc��SUl[e�NT)r�rEr�s rr��V_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__es��)-��&�$�$r)r�r�N)r�r�r�r�r�r�r�r�r_rrr�r�_s��,�
>�
%rr�c�0>�\rSrSrSr\U4Sj5rSrg)�E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueueiiz1Queue with overloaded _on_queue_feeder_error hookc�d>�[U[5(a[UT5(aSUlgggr�)rrEr�)rLr�r�s  �r�_on_queue_feeder_error�\_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueue._on_queue_feeder_errorks/����q�.�1�1�"�3��8�8�;?�C�8�9�2rr_N)r�r�r�r�r��staticmethodr�r�)r�s�r�	SafeQueuer�is���C�
�
@��
@rr�)r�Tr0)r�r�r�r�rrr r�rr��get_contextr�r�rr@r�r�)r�r��not_serializable_objr�r�s    @r�'test_queue_feeder_on_queue_feeder_error�2_TestQueue.test_queue_feeder_on_queue_feeder_errorYs�����9�9��#��M�M�7�>�>�t�y�y�I�J�	%�f�	%�	@��.�.�4�4�	@� /�0��
�\�\�
)�
)�
+��o�9�9�;�<�A�
�E�E�&�'�
�E�E�$�K��O�O�A�E�E�'�*?�*?�E�@�A�
,�	
���,�>�>�?����,�M�M�N�,�
+�s
�A(D=�=
Ec�*�[R"5[R"54HBnUR5 UR	5 URUR
55 MD [R"5[R"54HcnURS5 UR5 UR	5 UR[S5 UR
5 SSS5 Me g!,(df   Mw=f)N�foo�	is closed)
rr r�r!r"r�rSr��assertRaisesRegex�OSErrorr�s  r�"test_closed_queue_empty_exceptions�-_TestQueue.test_closed_queue_empty_exceptionss���
!�&�&�(�/�*G�*G�*I�I�A�
�G�G�I�
�M�M�O��O�O�A�G�G�I�&�J�
!�&�&�(�/�*G�*G�*I�I�A�
�E�E�%�L�
�G�G�I�
�M�M�O��'�'���=����	�>�=�	J�>�=�s�%D�
D	c��[R"5[R"54HrnUR5 UR	[
S5 UR
S5 SSS5 UR	[
S5 UR5 SSS5 Mt g!,(df   NB=f!,(df   M�=f)Nr�r�)rr r�r!r�rFr�rr�s  r�$test_closed_queue_put_get_exceptions�/_TestQueue.test_closed_queue_put_get_exceptions�s~�� �&�&�(�/�*G�*G�*I�I�A�
�G�G�I��'�'�
�K�@����e��A��'�'�
�K�@�����A�@�	J�@�@��@�@�s�B"�B3�"
B0	�3
C	r_N)r�r�r�r�rrarmrqrxr{r~r�r�r�r�r�r�r�r�r�r�r_rrr\r\Ds����"��"�9�v�"��"�4�l�����8� ����
�,3�*	��@$O�L�"rr\c�j�\rSrSr\SSj5r\S5rSrSr\S
Sj5r	Sr
S	rS
rSr
g)�	_TestLocki�Nc�`�UR5 UbUR[U55 ggr)�acquirer��repr)�lock�ls  r�_acquire�_TestLock._acquire�s%�������=�
�H�H�T�$�Z� �rc�p�UR5 UR5 [R"S5 g)N��?)r�r�r�r=)r�res  r�_acquire_event�_TestLock._acquire_event�s������
�	�	���
�
�3�rc��URS:wa*URSRUR55 UR5nUR	S[U55 UR
5 UR	S[U55 UR5 Sn/n[R"URX4US9nUR5 [R"S5 UR	SUS	3US
5 UR5 [R"URU4US9nUR5 [R"S5 UR	S[U55 UR5 Sn[R"5R!5nUR#URX4US9nUR5 UR%5 UR	S
US	3US
5 UR5nUR'5nUR#UR(X4SS9nUR5 UR+5 UR	S[U55 UR-5 g)Nr�r�z<Lock(owner=None)>z<Lock(owner=MainProcess)>�T1�r�rSr-rz<Lock(owner=MainProcess|�)>rz<Lock(owner=SomeOtherThread)>�P1z<Lock(owner=�P2z<Lock(owner=SomeOtherProcess)>)r�r�r��Lockrr�r��releaserPr�r�r�r�r=r�Managerr�r�r�rHr�rr7)r�r��tnamer�r��pnamer�res        r�test_repr_lock�_TestLock.test_repr_lock�s���9�9��#��M�M�7�>�>�t�y�y�I�J��y�y�{�����-��T�
�;��������4�t�D�z�B������������D�M�M�#'�)�"'�
)��	
���	��
�
�3�����3�E�7�"�=�q��t�D��������D�M�M�#'�'�"'�
)��	
���	��
�
�3�����8�$�t�*�E��������#�#�%�*�*�,���L�L��
�
�#�i�#�
�
%��	
���	�	�������<��w�b�1�1�Q�4�8��y�y�{���
�
����L�L�� 3� 3�#�m�"�
�
$��	
���	�
�
�
�����9�D��J�G�	���
rc�F�UR5nURUR5S5 URURS5S5 URUR5S5 UR	[
[R4UR5 g�NTF)r�rr�r�r�rFrP�ThreadError�r�r�s  r�	test_lock�_TestLock.test_lock�sq���y�y�{����������.�������e�,�e�4���������.����:�y�'<�'<�=�t�|�|�Lrc���[U5HnUR5 M UbUR[U55 [R
"U5 [U5HnUR
5 M gr)r�r�r�r�r�r=r�)r�r6r��nrws     r�_acquire_release�_TestLock._acquire_release�sQ���q��A��L�L�N���=�
�H�H�T�$�Z� ��
�
�7���q��A��L�L�N�rc��URS:wa*URSRUR55 UR5nUR	S[U55 Sn[
U5HnUR5 M UR	SUS3[U55 [
U5HnUR5 M //pT[
U5HQnUR[R"URUSXVS-4S	US-3S
95 USR5 MS UHnUR5 M [
U5H"nURSUS-S
US-S3U5 M$ UR5n[R"URS9nUR5 UR5 UR	S[U55 Sn	[ R""5R%5nUR'URUSU4U	S
9n
U
R5 U
R5 UR	SU	S3US5 UR5nUR'UR(U4S9n
U
R5 U
R5 UR	S[U55 g)Nr�r�z<RLock(None, 0)>rIz<RLock(MainProcess, r�rr��Tr�rBz<RLock(MainProcess|Tz, rz!<RLock(SomeOtherThread, nonzero)>r�z<RLock(z, 1)>rr�z"<RLock(SomeOtherProcess, nonzero)>)r�r�r��RLockrr�r�r�r�r�rPr�r�r�r�r�rr�r�r�r�)r�r�r�rwr�r�r��t_�rlockr�r�s           r�test_repr_rlock�_TestLock.test_repr_rlock�sL���9�9��#��M�M�7�>�>�t�y�y�I�J��z�z�|�����+�T�$�Z�8�
���q��A��L�L�N�����/��s�"�5�t�D�z�B��q��A��L�L�N���2�1��q��A�
�H�H�Y�%�%�T�-B�-B�,0�#�q�A�#�+>�-.�q��s�e�9�6�
7�
�b�E�K�K�M�	�
�B��G�G�I���q��A��M�M�0��1���R��!��u�B�?��C���
�
������E�M�M�2��	���	�	�������<�d�5�k�J����#�#�%�*�*�,���L�L�� 5� 5�#�S�!�n�#�
�
%��	
���	�	�������7�5�'��/��1��6��
�
����L�L��
�
�U�H�L�=��	���	�	�������=�t�E�{�Krc���UR5nURUR5S5 URUR5S5 URUR5S5 URUR5S5 URUR5S5 URUR5S5 UR	[
[4UR5 gr�)r�rr�r�r�r6rqr�s  r�
test_rlock�_TestLock.test_rlocks����z�z�|����������.���������.���������.���������.���������.���������.����>�<�8�$�,�,�Grc�Z�UR5 SSS5 g!,(df   g=fr�r�r�s r�test_lock_context�_TestLock.test_lock_context"s��
�Y�Y�[���[�[�s��
*r_rr�)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r_rrr�r��sZ���!��!�
����
.�`M�����,L�\H�rr�c�,�\rSrSrSrSrSrSrSrg)�_TestSemaphorei'c�Z�URS[U5 URUR5S5 URS[U5 URUR5S5 URS[U5 URURS5S5 URS[U5 URUR	5S5 URS[U5 URUR	5S5 URS[U5 g)NrCTr�rF)r�r�rr�r��r��sems  r�_test_semaphore�_TestSemaphore._test_semaphore)s����'�'��9�c�:���������-��'�'��9�c�:���������-��'�'��9�c�:�������U�+�U�3��'�'��9�c�:���������-��'�'��9�c�:���������-��'�'��9�c�:rc�$�URS5nURU5 URUR5S5 UR	S[
U5 URUR5S5 UR	S[
U5 g)NrCrIrr)�	Semaphorerrr�r�r�rs  r�test_semaphore�_TestSemaphore.test_semaphore6sn���n�n�Q������S�!���������-��'�'��9�c�:���������-��'�'��9�c�:rc�H�URS5nURU5 g�NrC)�BoundedSemaphorerrs  r�test_bounded_semaphore�%_TestSemaphore.test_bounded_semaphore>s ���#�#�A�&�����S�!rc��URS:wa*URSRUR55 URS5n[	UR
5nUR
U"S5S5 URURS5 UR
U"SS5S5 URURS5 UR
U"S[5S5 URURS5 UR
U"S[5S5 URUR[5 UR
U"[S9S5 URUR[5 g)Nr�r�rFr4Tr0)r�r�r�rr�r�rr�r�rirjrk)r�rr�s   rr��_TestSemaphore.test_timeoutFs���9�9��#��M�M�7�>�>�t�y�y�I�J��n�n�Q�������,���������/��$�$�W�_�_�c�:�������-�u�5��$�$�W�_�_�c�:�������1�5�9��$�$�W�_�_�a�8������x�0�%�8��$�$�W�_�_�h�?������2�E�:��$�$�W�_�_�h�?rr_N)	r�r�r�r�rrrr�r�r_rrr�r�'s��;�;�"�@rr�c���\rSrSr\SSj5rSrSrSrSr	Sr
S	r\S
5r\
R"\S5S5r\S
5r\
R"\S5S5r\S5rSrSrg)�_TestConditioni]Nc��UR5 UR5 URU5 UR5 UR5 gr)r�r�r)r�cond�sleeping�wokenr6s     rr8�_TestCondition.f_s5�����������	�	�'��
�
�
�����rc��[R"[R5HnU"5U:Xa OM UR	X!5 g![a  M f=fr)rrtr@r�r�)r�r�r�rws    r�assertReachesEventually�&_TestCondition.assertReachesEventuallygsW���'�'��(=�(=�>�A�
��6�U�?��#�?�	
�'�'��4��'�
��
�s�A�
A�Ac�*�URS:XasURR5URR5-
nUR	US5 UR	UR
R5S5 gg![a gf=f)Nr�r)r��_sleeping_countr��_woken_countr�_wait_semaphorer�)r�r�sleeperss   r�check_invariant�_TestCondition.check_invariantqs����9�9��#�
� �0�0�:�:�<� �-�-�7�7�9�:��� � ��1�-�� � ��!5�!5�!?�!?�!A�1�E�$��'�
��
�s�A1B�
B�Bc�(^�UR5nURS5nURS5mURURXT4S9nSUlUR5 [R"URXT4S9nSUlUR5 UR5 UR5 URU4SjS5 UR5 UR5 UR5 URU4SjS5 UR5 UR5 UR5 URU4SjS5 URU5 [R"U5 [U5 g)	Nrr�Tc�>�[T5$r�r��rs�r�<lambda>�,_TestCondition.test_notify.<locals>.<lambda>��
���Y�u�-=rc�>�[T5$rr"r#s�rr$r%�r&rr�c�>�[T5$rr"r#s�rr$r%�r&rrC)�	Conditionrr�r8r�r�rPr�r�r�notifyr�rr	r"r()r�rrr�r�rs     @r�test_notify�_TestCondition.test_notify|s3����~�~����>�>�!�$�����q�!���L�L����d�e�-D�L�E�����	���	����D�F�F�$�%�1H�I�����	���	�	��������	
�$�$�%=�q�A�	
�������
�����	
�$�$�%=�q�A�	
�������
�����	
�$�$�%=�q�A�	
���T�"��$�$�Q�'��Q�rc��UR5nURS5nURS5n/n[S5H�nURURXU[
4S9nSUlUR5 URU5 [R"URXU[
4S9nSUlUR5 URU5 M� [S5HnUR5 M [S5HnUR5 M URS[U5 URU5 [S5H�nURURXU4S9nSUlUR5 URU5 [R"URXU4S9nSUlUR5 URU5 M� [S5HnUR5 M [R "["5 URS[U5 UR5 UR%5 UR'5 [S5HnUR5 M URS[U5 URU5 UHn[(R*"U5 M g)NrrIr�Tr^)r)rr�r�r8rir�r�r�rPr�r�r�r�rr�r=r��
notify_allr�r	r")	r�rrrr�r�r�r�r<s	         r�test_notify_all�_TestCondition.test_notify_all�s>���~�~����>�>�!�$�����q�!�����q��A����D�F�F�#'�5�(�"C��E�A��A�H�
�G�G�I��N�N�1��� � ����'+�u�h�&G�I�A��A�H�
�G�G�I��N�N�1����q��A�������q��A��M�M�O���'�'��9�e�<�	
���T�"��q��A����D�F�F�$�%�1H��I�A��A�H�
�G�G�I��N�N�1��� � ����d�e�5L�M�A��A�H�
�G�G�I��N�N�1����q��A������	
�
�
�5���'�'��9�e�<�	
�������������q��A��M�M�O���'�'��9�e�<�	
���T�"��A��(�(��+�rc�R^�UR5nURS5nURS5m/n[S5H�nURURXT4S9nSUlUR
5 URU5 [R"URXT4S9nSUlUR
5 URU5 M� [S5HnUR5 M [R"[5 URS[T5 UR5 UR!SS9 UR#5 UR%U4SjS5 UR5 UR!S	S9 UR#5 UR%U4S
jS5 UR5 UR!SS9 UR#5 URS[T5 UR'U5 UHn[(R*"U5 M g)NrrIr�Tr^rC)r�c�>�[T5$rr"r#s�rr$�._TestCondition.test_notify_n.<locals>.<lambda>r&rrrc�>�[T5$rr"r#s�rr$r3r&r)r)rr�r�r8r�r�r�rPr�r�r�r=r�r�r�r*r�rrr	r")	r�rrr�r�r�r�r<rs	        @r�
test_notify_n�_TestCondition.test_notify_n�s�����~�~����>�>�!�$�����q�!�����q��A����D�F�F�$�%�1H��I�A��A�H�
�G�G�I��N�N�1��� � ����d�e�5L�M�A��A�H�
�G�G�I��N�N�1����q��A������	
�
�
�5���'�'��9�e�<�	
�������a�������	
�$�$�%=�q�A�	
�������a��������$�$�%=�q�A�	
�������a��������'�'��9�e�<�	
���T�"��A��(�(��+�rc�
�UR5n[UR5nUR5 U"[5nUR5 UR
US5 URUR[5 gr�)	r)r�rr�rir�rr�r�)r�rrr�s    rr��_TestCondition.test_timeout"s[���~�~����T�Y�Y�'�������8�n����������e�$��$�$�T�\�\�8�<rc��^�U STlUR5 URU4Sj5nU(aTRS:wa[R"S5 SSS5 g!,(df   g=f)Nrc�">�TRS:H$rq�r���states�rr$�0_TestCondition._test_waitfor_f.<locals>.<lambda>0�
���E�K�K��Nrrrr�)r�r*�wait_forr�r�)rrr=r�s  ` r�_test_waitfor_f�_TestCondition._test_waitfor_f+sH���
��E�K��K�K�M��]�]�#:�;�F��U�[�[�A�-�������T�T�s�AA'�'
A5zneeds sharedctypesc�^�UR5nURSS5mURURUT4S9nSUlUR5 U UR
U4Sj5nURU5 URTRS5 SSS5 [S5HIn[R"S5 U T=RS	-
sl	UR5 SSS5 MK [U5 URURS5 g!,(df   N�=f!,(df   M�=f)
Nr�rBr�Tc�">�TRS:H$�Nrr;r<s�rr$�-_TestCondition.test_waitfor.<locals>.<lambda>?r?rrrrr�r�)r)rr�rAr�r�r@r�rr�r�r�r=r*r(r�)r�rr�r�r�r=s     @r�test_waitfor�_TestCondition.test_waitfor4s�����~�~����
�
�3��#���L�L�� 4� 4�D�%�=�L�I�����	���	�
��]�]�#:�;�F��O�O�F�#����U�[�[�!�,��
�q��A��J�J�t������q� �����
����	�Q��������Q�'��T����s�AD$�
&D5�$
D2�5
E	c�^�UR5 U Sn[R"5nURU4SjUS9n[R"5U-
nU(dU[-
U::aSUlSSS5 g!,(df   g=f)Nrc�">�TRS:H$rqr;r<s�rr$�8_TestCondition._test_waitfor_timeout_f.<locals>.<lambda>Rr?rr0T)r�r�r�r@�	CLOCK_RESr�)rrr=�successrr��dtr�s  `     r�_test_waitfor_timeout_f�&_TestCondition._test_waitfor_timeout_fLsd������
�
��H����!�B��]�]�#:�H�]�M�F����!�B�&�B��x�)�3��:� $��
�
�T�T�s�AA<�<
B
c�l�UR5nURSS5nURSS5nURS5nURURXX44S9nSUlUR
5 URUR[RS95 [S5HIn[R"S5 U U=RS	-
slUR5 SSS5 MK [!U5 URUR5 g!,(df   M�=f)
Nr�rFr�Tr0rIr�r�)r)rrr�rOr�r�r�r�rr5r�r�r=r�r*r()r�rr=rMrr�r�s       r�test_waitfor_timeout�#_TestCondition.test_waitfor_timeoutWs����~�~����
�
�3��"���*�*�S�%�(���n�n�Q����L�L�� <� <�#�G�9�
�
;�����	���	�������G�,@�,@��A�B��q��A��J�J�u������q� �����
����	�Q������
�
�&���s�&D$�$
D3	c���U UR5 SSS5 [R"S5 Ub&[R"U[
R5 gg!,(df   NN=fr�)r*r�r=rCr�rvr)rr�rs   r�_test_wait_result� _TestCondition._test_wait_resultosB��
�
�H�H�J���
�
�1�
��?��G�G�C����'���Q�s�A�
A*c�\�[U[5(a*[RS:wa[R
"5nOSnUR
5nU URURS55 URURS55 URURX!4S9nUR5 URURS55 Ub!UR[URS5 UR5 SSS5 g!,(df   g=f)Nr2rrr��<)r�ProcessesMixinr�r�rCr�r)rrr�rUr�r�r��KeyboardInterruptr�)r�rr�r�s    r�test_wait_result�_TestCondition.test_wait_resultws����d�N�+�+�����0G��)�)�+�C��C��N�N���
����Q�V�V�A�Y�'����Q�V�V�C�[�)����D�$:�$:�!���J�A�
�G�G�I��O�O�A�F�F�2�J�'����!�!�"3�Q�V�V�R�@�
�F�F�H��Q�Q�s
�CD�
D+r_r)r�r�r�r�rr8rrr+r/r5r�rArGr�HAS_SHAREDCTYPESrGrOrRrUr[r�r_rrrr]s�������5�	�(�TC,�J5,�n=��������)�+?�@�(�A�(�.�%��%����)�+?�@�'�A�'�.�(��(�rrc�4�\rSrSr\S5rSrSSjrSrg)�
_TestEventi�c�X�[R"[5 UR5 gr)r�r=rjr�rds  r�_test_event�_TestEvent._test_event�s���
�
�8��
�	�	�rc�v�UR5n[UR5nURUR	5S5 URU"S5S5 URURS5 URU"[5S5 URUR[5 UR5 URUR	5S5 URU"5S5 URURS5 URU"[5S5 URURS5 UR5 URURU4S9nSUlUR5 URU"5S5 UR5 g)NFr4Tr�)rHr�rrr�r�r�rir�r�r�rar�r�r�)r�rerr�s    r�
test_event�_TestEvent.test_event�sF���
�
����U�Z�Z�(��	
��������/�	
����c��E�*��$�$�T�\�\�3�7�����h���/��$�$�T�\�\�8�<�
�	�	��	
��������.�������&��$�$�T�\�\�3�7�����h���.��$�$�T�\�\�3�7�	���
�
�L�L�� 0� 0��x�L�@�����	���	�������&�	���rNc���UR5nURS:XarUR[U5S5 UR	5 UR[U5S5 UR5 UR[U5S5 gURS:XaGUR[U5S5 UR	5 UR[U5S5 gg)Nr�z<Event at .* unset>z<Event at .* set>r�z(<EventProxy object, typeid 'Event' at .*)rHr��assertRegexr�r�r�)r�res  r�	test_repr�_TestEvent.test_repr�s����
�
����9�9��#����T�%�[�*@�A��I�I�K����T�%�[�*>�?��K�K�M����T�%�[�*@�A�
�Y�Y�)�
#����T�%�[�*U�V��I�I�K����T�%�[�*U�V�$rr_)�returnN)	r�r�r�r�rrardrhr�r_rrr_r_�s ������!�FWrr_c�2�\rSrSrSrSrSrSrSrSr	g)	�
_DummyListi�c���[RR[R"S55n[R
"5nUR
X45 SURS'g)Nr�r)r�heap�
BufferWrapper�struct�calcsizer��__setstate__�
_lengthbuf)r��wrapperr�s   rr��_DummyList.__init__�sM��!�&�&�4�4�V�_�_�S�5I�J���#�#�%�����7�/�*������rc�~�UuUlUlURR5RS5Ulg)Nr�)�_wrapper�_lock�create_memoryview�castrs)r�r=s  rrr�_DummyList.__setstate__�s/��&+�#����
��-�-�9�9�;�@�@��E��rc�2�URUR4$r)rwrxr�s r�__getstate__�_DummyList.__getstate__�s���
�
�t�z�z�*�*rc�~�UR URS==S-
ss'SSS5 g!,(df   g=f�Nrr��rxrs)r�rws  rr��_DummyList.append�s'��
�Z�Z��O�O�A��!�#���Z�Z�s�.�
<c�n�UR URSsSSS5 $!,(df   g=frEr�r�s r�__len__�_DummyList.__len__�s��
�Z�Z��?�?�1�%��Z�Z�s�&�
4)rsrxrwN)
r�r�r�r�r�rrr}r�r�r�r_rrrlrl�s���F�+�$�&rrlc�0�[R"S5 g)Nr�r_r_rr�_waitr��s���J�J�t�rc�@�\rSrSrSrSSjrSrSrSrSr	Sr
S	rg
)�Bunchi�z
A bunch of threads.
c���X lX0lX@lUR5UlUR5UlUR
5UlU(dURR5 /n[U5HDnURURS9nSUlUR5 URU5 MF Sn	[R "X	U5Ulg)z�
Construct a bunch of `n` threads running the same function `f`.
If `wait_before_exit` is True, the threads won't terminate until
do_finish() is called.
rTc�6�UHnUR5 M gr)r�)r�r�s  r�finalize� Bunch.__init__.<locals>.finalizes��������rN)r8rSr��	DummyList�started�finishedrH�	_can_exitr�r�r��taskr�r�r�r�r��
_finalizer)
r��	namespacer8rSr��wait_before_exitr�r�r�r�s
          rr��Bunch.__init__�s������	��� �*�*�,���!�+�+�-��
�"���*�����N�N��� ����q��A��!�!����!�3�A��A�H�
�G�G�I��N�N�1��	�	�"�*�*�4�7�C��rc��[R"5nURRU5 UR"UR
6 URRU5 URRS5 URR5(deg!URRU5 URRS5 URR5(def=f)N�)
rCr�r�r�r8rSr�r�rr��r�rs  rr��
Bunch.tasks����i�i�k�������C� �	+��F�F�D�I�I���M�M� � ��%��N�N����#��>�>�(�(�*�*�*�*��
�M�M� � ��%��N�N����#��>�>�(�(�*�*�*�*�s�B#�#AC<c��[UR5UR:a0[5 [UR5UR:aM/ggr)r�r�r�r�r�s r�wait_for_started�Bunch.wait_for_starteds3���$�,�,��$�&�&�(��G��$�,�,��$�&�&�(rc��[UR5UR:a0[5 [UR5UR:aM/ggr)r�r�r�r�r�s r�wait_for_finished�Bunch.wait_for_finisheds3���$�-�-� �4�6�6�)��G��$�-�-� �4�6�6�)rc�8�URR5 gr)r�r�r�s r�	do_finish�Bunch.do_finishs�������rc�$�UR5 gr)r�r�s rr!�Bunch.closes�����r)r�r�rSr8r�r�r�NrJ)r�r�r�r�r�r�r�r�r�r�r!r�r_rrr�r��s&���D�8+����rr�c� �\rSrSrSrSrSrg)�
AppendTruei!c��Xlgr�r�)r�r�s  rr��AppendTrue.__init__"s���rc�:�URRS5 gr�)r�r�r�s rr��AppendTrue.__call__$s��������rr�Nr�r_rrr�r�!s���rr�c��\rSrSrSrSrSrSrSrSr	Sr
\S	5rSS
jr
Sr\S5rS
r\S5rSr\S5rSr\S5rSr\S5rSr\S5rSr\S5rSrSr\S5rSrSr g) �_TestBarrieri(z
Tests for Barrier objects.
r�g>@c�V�URURURS9Ulg)Nr0)�Barrierr��defaultTimeout�barrierr�s r�setUp�_TestBarrier.setUp/s ���|�|�D�F�F�D�4G�4G�|�H��rc�F�URR5 SUlgr)r��abortr�s r�tearDown�_TestBarrier.tearDown2s����������rc��URS:Xa/$URS:XaURR5$[5$)Nr�r�)r�r�r�rlr�s rr��_TestBarrier.DummyList6s:���9�9�	�!��I�
�Y�Y�)�
#��<�<�$�$�&�&��<�rc��[XX RS-
5nU"U6 UR5 UR5 g!UR5 f=fr�)r�r�r�r!)r�r8rSr�s    r�run_threads�_TestBarrier.run_threads>sA���$�4�����*��	�
�t�H�
���!�
�G�G�I��A�G�G�I�s�A�Ac��URnX@R:Xde[U5H{nUSRS5 [	US5XT-:XdeUR5 USRS5 [	US5US-U-:XdeUR5 M} URS:XdeUR(aeg![a N f=f)NrTr�)	�partiesr�r�r�r�r�	n_waitingr��broken)rr��resultsr��mr�s      r�	multipass�_TestBarrier.multipassFs����O�O���E�E�z��z��q��A��A�J���d�#��w�q�z�?�a�e�+�+�+��L�L�N��A�J���d�#��w�q�z�?�q�1�u��k�1�1�1��L�L�N�
�	��$�$��)�)�)��>�>�!�!�>��#�	��	�s�)C�
C�Cc��UR5UR5/nURURURX!45 g)z+
Test that a barrier is passed in lockstep
N)r�r�r�r�)r��passesr�s   r�test_barrier�_TestBarrier.test_barrierWs9���>�>�#�T�^�^�%5�6��������$�,�,��)H�Irc�$�URS5$)z3
Test that a barrier works for 10 consecutive runs
rt)r�r�s r�test_barrier_10�_TestBarrier.test_barrier_10^s��� � ��$�$rc�F�UR5nURU5 gr)rr�)rr�r$r�s    r�_test_wait_return_f� _TestBarrier._test_wait_return_fds���l�l�n��
�	�	�#�rc�:�UR5nURURURU45 [	UR
5Vs/sHo!R
5PM nnURURS5S5 [U5 gs snf)z)
test the return value from barrier.wait
rr�N)
r r�r�r�r�r�rr�countr%)r�r$r�r�s    r�test_wait_return�_TestBarrier.test_wait_returnist���
�
�������1�1�D�L�L�%�3H�I�(-�d�f�f�
�6�
�1�9�9�;�
��6�������q�)�1�-��E���7s�Bc�N�UR5 [U5S:wa[egr�)rr�rq)rr�r�s   r�_test_action_f�_TestBarrier._test_action_fss"�������w�<�1����rc���UR5nURUR[U5S9nUR	UR
X!45 UR
[U5S5 g)z
Test the 'action' callback
)r�r�N)r�r�r�r�r�r�rr�)r�r�r�s   r�test_action�_TestBarrier.test_actionysX���.�.�"���,�,�t�v�v�j��.A�,�B������,�,�w�.@�A�����W��q�)rc�$�UR5nX@RS-:Xa[eUR5 URS5 g![R
a URS5 g[a UR
5 gf=f�NrCT)rr�rqr�rP�BrokenBarrierErrorr�)rr��results1�results2r�s     r�
_test_abort_f�_TestBarrier._test_abort_f�sl��		�����A��E�E�1�H�}�"�"��L�L�N��O�O�D�!���+�+�	"��O�O�D�!��	��M�M�O�	�s�A	A�%B�3B�Bc�d�UR5nUR5nURURURX45 UR	[U5S5 UR	[U5URS-
5 URURR5 g)z;
Test that an abort will put the barrier in a broken state
rr�N)	r�r�r�r�rr�r�r�r�)r�r�r�s   r�
test_abort�_TestBarrier.test_abort�s����>�>�#���>�>�#������+�+��,�,��;�	=�����X���*�����X�����q��1�������+�+�,rc���UR5nXPRS-:XacURURS-
:a5[R"S5 URURS-
:aM5UR5 O"UR5 UR
S5 UR5 UR
S5 g![Ra UR
S5 NIf=f)NrCr�r�T)	rr�r�r�r=�resetr�rPr�)rr�r�r��results3r�s      r�
_test_reset_f�_TestBarrier._test_reset_f�s����L�L�N�����q��=��#�#�c�e�e�A�g�-��
�
�5�!��#�#�c�e�e�A�g�-��M�M�O�
&���������%�	����������	�/�/�
&�����%�
&�s�!C
�
%C2�1C2c��UR5nUR5nUR5nURURURXU45 UR	[U5S5 UR	[U5URS-
5 UR	[U5UR5 g)z<
Test that a 'reset' on a barrier frees the waiting threads
rr�N)r�r�r�r�rr�r�)r�r�r�r�s    r�
test_reset�_TestBarrier.test_reset�s����>�>�#���>�>�#���>�>�#������+�+��,�,��H�E�	G�����X���*�����X�����q��1�����X�����/rc���UR5nX`RS-:Xa[eUR5 URS5 UR5URS-:XaUR5 UR5 UR5 URS5 g![R
a URS5 N�[a UR
5 N�f=fr�)rr�rqr�rPr�r�r�)rr��barrier2r�r�r�r�s       r�_test_abort_and_reset_f�$_TestBarrier._test_abort_and_reset_f�s���		�����A��E�E�1�H�}�"�"��L�L�N��O�O�D�!��=�=�?�c�e�e�Q�h�&��M�M�O��
�
�������������+�+�	"��O�O�D�!��	��M�M�O�	�s�A	B.�.%C1�C1�0C1c��UR5nUR5nUR5nURUR5nURURUR
XAX#45 UR
[U5S5 UR
[U5URS-
5 UR
[U5UR5 g)z6
Test that a barrier can be reset after being broken.
rr�N)r�r�r�r�r�r�rr�)r�r�r�r�r�s     r�test_abort_and_reset�!_TestBarrier.test_abort_and_reset�s����>�>�#���>�>�#���>�>�#���<�<����'������5�5��,�,��H�O�	Q�����X���*�����X�����q��1�����X�����/rc���UR5nX0RS-:Xa[R"S5 URS5 g![R
a UR
S5 gf=f)NrCr�r�T)rr�r�r=rPr�r��rr�r�r�s    r�_test_timeout_f�_TestBarrier._test_timeout_f�sW���L�L�N�����q��=��J�J�s�O�	!��L�L�����+�+�	!��N�N�4� �	!�s�A�%A4�3A4c���UR5nURURURU45 UR	[U5URR5 g)z
Test wait(timeout)
N)r�r�r�r�rr�r�)r�r�s  rr��_TestBarrier.test_timeout�sM���.�.�"������-�-����g�/F�G�����W��t�|�|�';�';�<rc��URUR5nX0RS-:Xa[R"S5 UR5 g![
Ra URS5 gf=f)NrCr�T)rr�r�r�r=rPr�r�r�s    r�_test_default_timeout_f�$_TestBarrier._test_default_timeout_f�s]���L�L��+�+�,�����q��=��J�J�s�O�	!��L�L�N���+�+�	!��N�N�4� �	!�s�A�%A>�=A>c���URURSS9nUR5nURURX45 UR[
U5UR5 g)z$
Test the barrier's default timeout
r�r0N)r�r�r�r�r�rr�r�)r�r�r�s   r�test_default_timeout�!_TestBarrier.test_default_timeout�sW���,�,�t�v�v�s�,�3���.�.�"������5�5��7I�J�����W��w���7rc�f�URS5nUR5 UR5 gr�)r�r)r�r�s  r�test_single_thread�_TestBarrier.test_single_thread	s!���L�L��O��	����	���rc��[U5H/nUR5 U URU5 SSS5 M1 g!,(df   MC=fr)r�rr,)rr�r��connr�r�s      r�_test_thousand_f�_TestBarrier._test_thousand_f	s4���v��A��L�L�N���	�	�!�������s�A�
A	c�:�URS:Xa*URSRUR55 SnUR5nUR	S5up4[UR5HUnURURURXU4S9nUR5 URUR5 MW [U5H?n[UR5H#nURUR5U5 M% MA g)Nr�r���Fr�)r�r�r�r�r r�r�r�rr�r�r�r�rr")r�r�r�rr�jr�r�s        r�
test_thousand�_TestBarrier.test_thousand	s����9�9�	�!��M�M�7�>�>�t�y�y�I�J����y�y�{���9�9�U�+����t�v�v��A����D�$9�$9�!%���v�4� H��J�A�
�G�G�I��O�O�A�F�F�#�	��v��A��4�6�6�]��� � �����a�0�#�r)r�Nr�)!r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	r�r_rrr�r�(s���	
�A��N�I�� ���"��"� J�%����������
*��
��
�
-�����"0�����*
0��!��!�=��!��!�8��
����1rr�c	�p�\rSrSrSrSSSSS\"S5\"S	54/rS
r\S5r	SSjr
S
rSrSr
g)�
_TestValuei&	r%)r�i�i�^)�dg
@g�)�hi�����)r���r��x�yc�>�[(dURS5 gg�Nz%requires multiprocessing.sharedctypes�r]r�r�s rr��_TestValue.setUp2	������M�M�A�B� rc�T�[XR5Hup#USUlM gr	)�zip�codes_valuesr�)r�values�sv�cvs    rr�_TestValue._test6	s$���&�"2�"2�3�F�B��!�u�B�H�4rc	�p�U(a3URVVVs/sHup#nURX#5PM nnnnO2URVVVs/sHup#nURX#5PM nnnn[XPR5H$upgUR	UR
US5 M& UR
URU4S9nSUlUR5 UR5 [XPR5H$upgUR	UR
US5 M& gs snnnfs snnnf)Nr�r�TrC)r�RawValuerrrr�r�rr�r�r�)	r��raw�coder�rwrrrr�s	         r�
test_value�_TestValue.test_value<	s���,0�,=�,=�?�,=�.�$�q��m�m�D�0�,=�
�?�F�-1�,=�,=�?�,=�.�$�q��j�j��-�,=�
�?��&�"3�"3�4�F�B����R�X�X�r�!�u�-�5��|�|�4�:�:�V�I�|�>������
�
���	�	���&�"3�"3�4�F�B����R�X�X�r�!�u�-�5��?��?s�D*�D1c�"�URSS9 g�NT)r")r$r�s r�
test_rawvalue�_TestValue.test_rawvalueO	s�����D��!rc���URSS5nUR5nUR5nURSSSS9nUR5nUR5nUR5nURSSUS9nUR5n	UR5n
UR	Xy5 URSSSS9nUR[
US55 UR[
US55 UR[URSSSS9 URSS5nUR[
US55 UR[
US55 g)Nr�r��r�F�get_lock�get_obj�navalue)
rr,r-r�rrrur�rEr!)
r��val1�lock1�obj1�val2�lock2�obj2r��val3�lock3�obj3�arr4�arr5s
             r�test_getobj_getlock�_TestValue.test_getobj_getlockR	s*���z�z�#�q�!���
�
����|�|�~���z�z�#�q�t�z�,���
�
����|�|�~���y�y�{���z�z�#�q�t�z�,���
�
����|�|�~������%��z�z�#�q�u�z�-�������z�2�3������y�1�2����.�$�*�*�c�1�9��M��}�}�S�!�$�������z�2�3������y�1�2rr_NrJ)r�r�r�r�r�rrr�rrr$r(r:r�r_rrrr&	sW��"�M�	����	�e�C�j�%��*�%�
�L�C�����
.�&"�3rrc��\rSrSrSr\S5r\R"\	SLS5SSj5r
\R"\	SLS5S5r\R"\	SLS5S5r\R"\	SLS5S	5r
S
rg)�
_TestArrayil	r%c�^�[S[U55HnX==XS-
-
ss'M gr�)r�r�)r�seqr�s   rr8�_TestArray.fp	s)���q�#�c�(�#�A��F�c�A�#�h��F�$rNzrequires _ctypesc��/SQnU(aURSU5nOURSU5nUR[U5[U55 URUSUS5 UR[	USS5[	USS55 [
R
"S/SQ5=USS&USS&UR[	USS5U5 UR
U5 URURU4S	9nS
UlUR5 UR5 UR[	USS5U5 g)N)
i�iri�i5���i$i�i�i?r�rIrCre)r�rCrIrrrrrKr�T)�RawArray�Arrayrr�r��arrayr8r�r�r�r�)r�r"r?�arrr�s     r�
test_array�_TestArray.test_arrayu	s��@����-�-��S�)�C��*�*�S�#�&�C�����S��3�s�8�,�����Q���Q��(�����c�!�A�h���c�!�A�h��8�#�k�k�#�|�<�<��A�a��3�q��8�����c�!�f��s�+����s���L�L����c�V�L�4�����	���	�	��������c�!�f��s�+rc	�<�Sn[S5H�nURSU5nUR[U5U5 UR[	U5S/U-5 [S5USS&UR[	U5[	[S555 AM� g)NrtrIr�r)r�rErr�r�)r��sizerwrGs    r�test_array_from_size�_TestArray.test_array_from_size�	s�����
�q��A��*�*�S�$�'�C����S��X�t�,����T�#�Y���d�
�3��2�Y�C��F����T�#�Y��U�2�Y��8��
rc�"�URSS9 gr')rHr�s r�
test_rawarray�_TestArray.test_rawarray�	s�����D��!rc�p�URS[[S555nUR5nUR	5nURS[[S55SS9nUR5nUR	5nUR5nURS[[S55US9nUR5n	UR	5n
UR
Xy5 URS[S5SS9nUR[US55 UR[US55 UR[URS[S5SS9 URS[S55nUR[US55 UR[US55 g)Nr�rtr+Fr,r-�notalock)rEr�r�r,r-r�rrrur�rErD)
r��arr1r0r1�arr2r3r4r��arr3r6r7r8r9s
             r�test_getobj_getlock_obj�"_TestArray.test_getobj_getlock_obj�	sV���z�z�#�t�E�"�I��/���
�
����|�|�~���z�z�#�t�E�"�I��T�z�:���
�
����|�|�~���y�y�{���z�z�#�t�E�"�I��T�z�:���
�
����|�|�~������%��z�z�#�u�R�y�u�z�5�������z�2�3������y�1�2����.��*�*�c�5��9�:�	�	G��}�}�S�%��)�,�������z�2�3������y�1�2rr_rJ)r�r�r�r�r�rr8rG�skipIfr=rHrLrOrVr�r_rrr=r=l	s���"�M������_�_�U�d�]�$6�7�,�8�,�0�_�_�U�d�]�$6�7��8���_�_�U�d�]�$6�7�"�8�"��_�_�U�d�]�$6�7�3�8�3rr=c�H�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)
�_TestContainersi�	�r�c��UR[[S555nURUSS[[S555 UR5nURUSS/5 UR[[S555 URUSS[[S555 URUSS5 URUSS/SQ5 US-nURUSS/SQ5 URUSS/-/SQ5 URUSS[[S555 X/nURU5nURUVs/sHoUSSPM	 sn/SQ/SQ/5 URU/5nUR	S	5 URUS
SS/SQ5 gs snf)Nrtr�rC)rCrIrr)
rr�rCrIrrrr�rCrIrrr^)rr�rCrIrrrr�rCrIrrr�r^)
rr�rCrIrrr�r^rerK�	rEr)rr�rCrIrrr�r^rerKr]rE)r�r�r�extendr�)r�r�r�r
rL�elementr8s       r�	test_list�_TestContainers.test_list�	sz���I�I�d�5��9�o�&������1��t�E�"�I��/��I�I�K������1��r�"�	����e�A�h�� �����1��t�E�!�H�~�.�����1��q�!�����1�R��'�*�	�Q�������1��=�>�����a��V��%I�J�����1��t�E�"�I��/�
�F���I�I�a�L�����'(�)�q�G�Q�Z�q�)�
+�-K�L�	�

�I�I�q�c�N��	���������1��a��"I�J��

*s�%F?c�F�UR[[S555n[U5nUR[U5[[S555 UR[U5/5 [U5nSUS'UR[	U5S5 g)Nrtr^r)r�r�rr�next)r�r��its   r�test_list_iter�_TestContainers.test_list_iter�	sw���I�I�d�5��9�o�&��
�!�W������b��4��b�	�?�3�����b��2�&�
�!�W����!������b��3�'rc
��UR[S5Vs/sHoR[S55PM sn5nURUVs/sHo3SSPM	 sn/SQ/S-5 SUSS'URUSSS/SQ5 [SS5HnURX$SS/SQ5 M URUSR5S5 UR[	US5S5 [SSS5H nUR[	X$5S5 M" AUR5nURU5 Ags snfs snf)	NrI)rr�rC�7rrB)rr�rhr�rC)r�r�r�popr�r�)r��_ir��innerr�r�s      r�test_list_proxy_in_list�'_TestContainers.test_list_proxy_in_list�	s"���I�I�U�1�X�>�X�r�y�y��q��*�X�>�?������2��u��(��2�Y�K�!�O�D���!��R������1��a��*�-��q�!��A����Q�T�!�W�i�0��	
����1�����Q�'�����Q�q�T��A�&��q�!�Q��A����S���Y��*� �
��I�I�K��	�����
��#?��2s�#E�Ec
�N�UR5n[[SS55nUHn[U5X'M UR	UR5[SU555 UR	[
UR55U5 UR	[
UR55UVs/sHn[U5PM sn5 UR	[
UR55UVs/sHo3[U54PM sn5 gs snfs snf)N�A�Fc3�:# �UHo[U54v� M g7fr)�chr��.0r�s  r�	<genexpr>�,_TestContainers.test_dict.<locals>.<genexpr>
s���'E�W��C��F��W�s�)
�dictr�r�rrrr�sorted�keysrr�)r�r
�indicesr�s    r�	test_dict�_TestContainers.test_dict
s����I�I�K���u�R��}�%���A��q�6�A�D���������4�'E�W�'E�#E�F���������)�7�3��������
�+�g�-F�g��c�!�f�g�-F�G��������	�*�'�,J�'�Q��Q��[�'�,J�K��.G��,Js�<D
�?D"
c�h�UR5n[[SS55nUHn[U5X'M [	U5nUR[U5U5 UR[U5/5 [	U5nUR
5 UR[[U5 g)Nrorp)
rwr�r�rrrrr�r�rqrc)r�r
rzr�rds     r�test_dict_iter�_TestContainers.test_dict_iter

s����I�I�K���u�R��}�%���A��q�6�A�D��
�!�W������b��7�+�����b��2�&�
�!�W��	���	����,��b�1rc�z�URSSS9nURSSS9nURXS9nURUSS5 URUS	SS5 S
US	S'URUSS
5 URUS	SS
5 SUS	S'URUSS5 URUS	SS5 AAURUS
SS5 SUS	S'URUS	SS5 US
nUS	nSUS'URUSS5 URUS	SS5 UR5 UR[U5S5 URUSS5 URUSS5 UR	X/5nSUSS'URUSS5 URUSSS5 AAURUSSS5 UR	SS/U/5nURUS[5 URUSSSS5 g)NrCrr)�ferrets�hamstersrtrI)�water�feed)�pets�suppliesr�r�r��blanketsrer�r��rr�r��marmots�X�crBr�)rwrr�r�r�r�)r�r�r�r
r��outers      r�test_dict_proxy_nested�&_TestContainers.test_dict_proxy_nested
sb���y�y��Q�y�/���9�9�2�A�9�.���I�I�4�I�3������'�*�B�/�����:��w�/��4�$%��*�
�j�!�����*�-�q�1�����:��z�2�A�6�!"��*�
�g������'�*�A�.�����:��w�/��3�������6��9�-�q�1�$&��*�
�j�!�����:��z�2�B�7���y���Z�=����������'�*�A�.�����:��w�/��3�	���	�����Q���#�����'�*�A�.�����j�)�1�-��I�I�t�&�'����!��Y������i��!�,�����1��i��!�,�������1��i��!�,��	�	�B��8�Q�-�(�����e�A�h��-�����r��2��v�.��2rc��UR5nURUR55 USRS5 UR	USR5S5 UR
5nUR5US'USRS5 UR	USR5S5 g)Nr�{��)r�r�r r�rrrwr�s   r�test_nested_queue�!_TestContainers.test_nested_queueE
s����I�I�K��	��������	�!�����
�����1�����S�)��I�I�K���z�z�|��!��	�!�����
�����1�����S�)rc�N�UR5nSUlSUlSUlUR	URUR4S5 U?UR	[U5S5 UR
[US55 UR
[US5(+5 g)N�Bob�Builder�hidden)r�r�zNamespace(name='Bob')r-�job)�	Namespacer-r��_hiddenrr�r�ru)r�r�s  r�test_namespace�_TestContainers.test_namespaceO
s����N�N�����������	����!�&�&�!�%�%��*<�=�
�E�����Q��!8�9������6�*�+����G�A�u�-�-�.rr_N)r�r�r�r�r�r`rerlr{r~r�r�r�r�r_rrrZrZ�	s2�� �M�K�>(��(L�2�,3�\*�	/rrZc�f�Uc[R"U5 X-$URU5 X-$r)r�r=r)rrres   r�sqrr�^
s1���}��
�
�4��
�3�J�	�
�
�4���3�Jrc�
�X-$rr_)rrs  r�mulr�e
�	���3�Jrc�J�[R"U5 [SS-5e)Nri)r�r=rFr
s r�raise_large_valuerrorr�h
s���J�J�t��
�S�7�]�
#�#rc��U$rr_�rs r�identityr�l
s���Hrc�$�\rSrSrSrSrSrSrg)�
CountedObjectio
rc�V�U=RS-
sl[RU5$r�)�n_instancesr��__new__r`s rr��CountedObject.__new__r
s�����1����~�~�c�"�"rc�@�[U5=RS-slgr�)rKr�r�s r�__del__�CountedObject.__del__v
s���T�
���!�#�rr_N)r�r�r�r�r�r�r�r�r_rrr�r�o
s���K�#�$rr�c��\rSrSrSrg)�SayWhenErroriy
r_N�r�r�r�r�r�r_rrr�r�y
s��rr�c#�z# �US:Xa[S5e[U5HnX!:Xa[S5eUv� M g7f)NrBzSomebody said when)r�r�)�total�whenr�s   r�exception_throwing_generatorr�{
s<����r�z��/�0�0�
�5�\���9��3�4�4����s�9;c�^�\rSrSr\U4Sj5r\U4Sj5rSrSrSr	Sr
SrS	rS
r
SrSrS
rSrSrSrSrSrSrSrSrSr\S5rSr\S5rSrSrSrSr Sr!Sr"U=r#$) �	_TestPooli�
c�N>�[TU]5 URS5Ulgrq)�super�
setUpClass�Pool�pool�r�	__class__s �rr��_TestPool.setUpClass�
s���
�����8�8�A�;��rc�>�URR5 URR5 SUl[TU]5 gr)r�r7r�r��
tearDownClassr�s �rr��_TestPool.tearDownClass�
s2������������
�
�����
���rc���URRnURU"[S5[S55 URU"[SSS05[SS95 g)N)r�r�r_rrIr�)r��applyrr�)r��papplys  r�
test_apply�_TestPool.test_apply�
sK�������������T�*�C��F�3������R�#�a��1�3��8�<rc
��URRnURU"[[	[S555[	[[[	[S55555 URU"[[	[S55SS9[	[[[	[S55555 g)Nrtr^r���	chunksize)r��maprr�r�r�)r��pmaps  r�test_map�_TestPool.test_map�
s|���y�y�}�}������c�4��b�	�?�3�T�#�c�4��b�	�?�:S�5T�U�����c�4��c�
�#3�r�B��c�#�t�E�#�J�'7�8�9�	;rc
���URRn[[[	S5[	SSS555nURU"[U5[[R"[U555 [[[	S5[	SSS555nURU"[USS9[[R"[U555 g)Nrtr]rBr^r�r�r�)r��starmapr�rr�rr�r�)r��psmap�tupless   r�test_starmap�_TestPool.test_starmap�
s����	�	�!�!���c�%��)�U�1�R��_�5�6������s�F�+��i�/�/��V�<�=�	?��c�%��*�e�B�r�2�&6�7�8������s�F�b�9��i�/�/��V�<�=�	?rc
��[[[S5[SSS555nURURR[U5R5[[R"[U555 g)Nr^r�rB)
r�rr�rr��
starmap_asyncr�rr�r�)r�r�s  r�test_starmap_async�_TestPool.test_starmap_async�
s_���c�%��*�e�B�r�2�&6�7�8��������0�0��f�=�A�A�C��i�/�/��V�<�=�	?rc
��URURR[[	[S555R
5[	[[[	[S55555 g�Nrt)rr��	map_asyncr�r�r�rr�r�s r�test_map_async�_TestPool.test_map_async�
sK��������,�,�S�$�u�R�y�/�B�F�F�H��c�#�t�E�"�I��7�8�	:rc�2�URS:XaURR5O/nURR	[
S/URURS9R5 URS[U55 URS/US5 URR	[
S/URURS9R5 URS[U55 URUS[5 g)Nr��1)�callback�error_callbackr�rr�rC)r�r�r�r�r�r�r�rrr�r�rF)r��	call_argss  r�test_map_async_callbacks�"_TestPool.test_map_async_callbacks�
s���+/�9�9�	�+A�D�L�L�%�%�'�r�	��	�	���C�#��%.�%5�%5�+4�+;�+;�	�	=�=A�T�V�����C�	�N�+����!��i��l�+��	�	���C�#��%.�%5�%5�+4�+;�+;�	�	=�=A�T�V�����C�	�N�+����i��l�J�7rc�F�URS:Xa*URSRUR55 "SS[5nUR	[
5 URR[U"5/S-5 SSS5 g!,(df   g=f)Nr�r�c��\rSrSrSrSrg)�*_TestPool.test_map_unplicklable.<locals>.Ai�
c��[S5e)Nz
cannot picklerpr�s rr��5_TestPool.test_map_unplicklable.<locals>.A.__reduce__�
s
��"�?�3�3rr_Nr�r_rr�Ar��
s��
4rr�rt)	r�r�r�r�r�rqr�r�r�)r�r�s  r�test_map_unplicklable�_TestPool.test_map_unplicklable�
sl���9�9�	�!��M�M�7�>�>�t�y�y�I�J�	4��	4��
�
�|�
,��I�I�M�M�#���u�R�x�(�-�
,�
,�s�*B�
B c��URR[/SS9R[S9 g![
Ra URS5 gf=f)Nr�r�r0z2pool.map_async with chunksize stalled on null list)r�r�r�rrir�TimeoutErrorr}r�s r�test_map_chunksize�_TestPool.test_map_chunksize�
sS��	L��I�I����R�1��5�9�9�(�9�K���+�+�	L��I�I�J�K�	L�s�03�%A�Ac��URS:Xa*URSRUR55 UR[5 UR
R
[[SS5S5 SSS5 UR[5 UR
R
[[SS5S5 SSS5 UR[5 UR
R
[[SS5S5 SSS5 "SS5nUR[5 UR
R
[U"5S5 SSS5 UR[5 UR
R
[U"5S5 SSS5 g!,(df   GN4=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   g=f)	Nr�r�r�rBrtrIc�&�\rSrSrSrSrSrSrg)�E_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterablei�
c��U$rr_r�s r�__iter__�N_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__iter__�
s���rc��[er)r�r�s r�__next__�N_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__next__�
s��"�"rc��gr�r_r�s rr��M_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__len__�
s��rr_N)r�r�r�r�r�r�r�r�r_rr�SpecialIterabler��
s��
�
#�
rr�)	r�r�r�r�r�r�r�r�r�)r�r�s  r�"test_map_handle_iterable_exception�,_TestPool.test_map_handle_iterable_exception�
sK���9�9�	�!��M�M�7�>�>�t�y�y�I�J��
�
�|�
,��I�I�M�M�#�;�A�r�B�A�F�-��
�
�|�
,��I�I�M�M�#�;�A�r�B�A�F�-��
�
�|�
,��I�I�M�M�#�;�B��B�A�F�-�	�	��
�
�|�
,��I�I�M�M�#��0�!�4�-�
�
�
�|�
,��I�I�M�M�#��0�!�4�-�
,�%-�
,��-�
,��-�
,��-�
,��
,�
,�s<�,F)�,F;�",G�5'G�9'G.�)
F8�;
G	�
G�
G+�.
G<c���URR[S[45n[	UR
5nUR
U"5S5 URUR[5 g)Nre�1)	r��apply_asyncr�rir�rrr�r�)r�r�rs   r�
test_async�_TestPool.test_async�
sP���i�i�#�#�C�!�X��8���C�G�G�$��������#��$�$�S�[�[�(�;rc�X�URS5nURS:Xa[R"5OSnUR	[
S[[R-U45n[UR5nUR[RU[S9 URUR[5 UbUR!5 UR#5 UR%5 g!WbUR!5 UR#5 UR%5 f=f)NrIr�r^r0)r�r�rPrHrr�rjrr@r�rr�rr�r�r�r�r7r�)r�r�rer�rs     r�test_async_timeout�_TestPool.test_async_timeout�
s����I�I�a�L��
	�)-���i�)?�I�O�O�%�T�E��-�-��a��G�4I�4I�)I�5�%Q�R�C�����(�C����o�:�:�C���R��(�(����h�?�� ��	�	��
�K�K�M�
�F�F�H��� ��	�	��
�K�K�M�
�F�F�H�s�B-C4�45D)c
���URR[[[	S555nUR[U5[[
[[[	S55555 URR[[[	S555n[	S5H nUR[U5X"-5 M" UR[UR5 URR[[[	S55SS9n[	S5H nUR[U5X"-5 M" UR[UR5 g�Nrtrr^r�)r��imapr�r�r�rr�rcr��
StopIterationr��r�rdr�s   r�	test_imap�_TestPool.test_imap�
s���
�Y�Y�^�^�C��e�B�i��
1������b��4��C��e�B�i��(A�#B�C�
�Y�Y�^�^�C��e�B�i��
1���r��A����T�"�X�q�s�+�����-����5�
�Y�Y�^�^�C��e�D�k�!2�c�^�
B���t��A����T�"�X�q�s�+�����-����5rc��URS:Xa*URSRUR55 URR	[
[
SS5S5nUR[UR5 URR	[
[
SS5S5nUR[UR5 URR	[
[
SS5S5n[S5H nUR[U5X"-5 M" UR[UR5 URR	[
[
SS5S	5n[S
5H nUR[U5X"-5 M" UR[UR5 URR	[
[
SS5S5n[S5H nUR[U5X"-5 M" UR[UR5 g)Nr�r�r�rBrtrIr�rerCr^rr)
r�r�r�r�r
r�r�r�r�r�r�rrcrs   r�#test_imap_handle_iterable_exception�-_TestPool.test_imap_handle_iterable_exceptions����9�9�	�!��M�M�7�>�>�t�y�y�I�J��Y�Y�^�^�C�!=�a��!D�a�
H�����,����4�
�Y�Y�^�^�C�!=�a��!D�a�
H�����,����4�
�Y�Y�^�^�C�!=�b�!�!D�a�
H���q��A����T�"�X�q�s�+�����,����4��Y�Y�^�^�C�!=�b�!�!D�a�
H���q��A����T�"�X�q�s�+�����,����4�
�Y�Y�^�^�C�!=�b�!�!D�a�
H���q��A����T�"�X�q�s�+�����,����4rc
���URR[[[	S555nUR[
U5[[[[[	S55555 URR[[[	S55SS9nUR[
U5[[[[[	S55555 gr	)r��imap_unorderedr�r�r�rrxr�)r�rds  r�test_imap_unordered�_TestPool.test_imap_unordered"s���
�Y�Y�
%�
%�c�4��b�	�?�
;��������T�#�c�4��b�	�?�*C�%D�E�
�Y�Y�
%�
%�c�4��d��+<��
%�
L��������T�#�c�4��d��3D�*E�%F�Grc
��URS:Xa*URSRUR55 URR	[
[
SS5S5nUR[UR5 URR	[
[
SS5S5nUR[UR5 URR	[
[
SS5S5n[[[
[[S5555nUR[5 [S5H0n[U5nURXB5 URU5 M2 SSS5 URR	[
[
SS5S	5n[[[
[[S5555nUR[5 [S5H0n[U5nURXB5 URU5 M2 SSS5 g!,(df   N�=f!,(df   g=f)
Nr�r�r�rBrtrIr�rerC)r�r�r�r�rr�r�r�r�r�r�r�r�rcr�r�)r�rd�expected_valuesr�r�s     r�-test_imap_unordered_handle_iterable_exception�7_TestPool.test_imap_unordered_handle_iterable_exception)s����9�9�	�!��M�M�7�>�>�t�y�y�I�J��Y�Y�
%�
%�c�&B�1�b�&I�&'�)��	
���,����4�
�Y�Y�
%�
%�c�&B�1�b�&I�&'�)��	
���,����4�
�Y�Y�
%�
%�c�&B�2�q�&I�&'�)���s�3��U�2�Y��8�9��
�
�
�|�
,��2�Y���R����
�
�e�5��&�&�u�-��-��Y�Y�
%�
%�c�&B�2�q�&I�&'�)���s�3��U�2�Y��8�9��
�
�
�|�
,��2�Y���R����
�
�e�5��&�&�u�-��-�
,�-�
,��-�
,�s�<AH8�/AI	�8
I�	
Ic���URS:Xa[O[nURXRS5 URXRS5 URS:waXUR	S5nURS[
UR55 UR5 UR5 gg!UR5 UR5 f=f)Nr�rBrrI)
r��RemoteErrorrFr�r�rr��_poolr!r�)r��expected_errorr�s   r�test_make_pool�_TestPool.test_make_poolMs���)-���i�)?�+�)�	�	
���.�)�)�R�8����.�)�)�Q�7��9�9�	�!��	�	�!��A�
�� � ��C����L�1����	�����
"��
���	�����s�7%B>�>"C c�R�[RnURS:XaSnURS5n[	S5Vs/sHo1PM nnUR[RUSS9n[R"S5 UR5 UR5 gs snf)Nr�r�rIi'r�r�)
rr5r�r�r�r�r�r=r7r�)r��
sleep_timer�r�rSr�s      rr�_TestPool.test_terminate\s���)�)�
��9�9�	�!��J��I�I�a�L��$)�&�M�2�M�q�
�M��2����T�Z�Z����;���
�
�3��	���
�	�����	3s�B$c���URS5nURUR[/5/5 UR[	UR[/55/5 UR[	UR
[/55/5 URUR[/5R5/5 UR5 UR5 gr�)r�rr�r�r�r
rr�rr!r��r�r�s  r�test_empty_iterable�_TestPool.test_empty_iterablems����I�I�a�L��������s�B���,�����a�f�f�S�"�o�.��3�����a�.�.�s�B�7�8�"�=�������S�"�-�1�1�3�R�8�	���	�	���rc��URS:Xa�[[S55nUVs/sHn[U5PM nnUR	S5nUR[U5nUR
UR5U5 SSS5 WR5 UR[UR
[U5 ggs snf!,(df   NK=f)Nr�rtrC)r�r�r�r�r�r�rrr�r�rF)r��Lr�r�r��rs      r�test_context�_TestPool.test_contextys����9�9��#��U�2�Y��A�()�*��1��A���H�*����1����K�K��Q�'��� � �����(�3��
�F�F�H����j�!�+�+�s�A�>�$��*���s�C�7C
�
Cc��[S5e)Nr�rpr`s r�_test_traceback�_TestPool._test_traceback�s
���3��rc��URS:XGaURS5nURUR5 UR	S5 SSS5 WR
5 UR[W5[5 URURS5 URnUR[U5[RR5 UR!SUR"5 [$R&R)5nUeg![
anUnSnAN�SnAff=f!,(df   N�=f![a) [*R,"[*R."56 Of=fSSS5 O!,(df   O=fUR!SWR155 URS5nUR3[4[7SS5S5 UR	S5 O![
anUnSnAOSnAff=fUR[U5[85 URURS5 SSS5 O!,(df   O=fUR
5 g)Nr�r�zexpected RuntimeError)r�z&raise RuntimeError(123) # some commentrBzexpected SayWhenError)r�r�r�r-r}r|r�r�rKrqrrS�	__cause__rr��RemoteTracebackr��tbr�rr�r��
excepthook�exc_info�getvaluer�r�r�r�)r�r�rL�exc�cause�f1s      r�test_traceback�_TestPool.test_traceback�s����9�9��#����1���7��G�G�D�0�0�1��I�I�5�6�
�
�F�F�H��M�M�$�s�)�\�2����S�X�X�v�.��M�M�E��M�M�$�u�+��';�';�'K�'K�L��M�M�B�E�H�H�M����-�-�/�2�4��I�#$��!���C�������"$�4��N�N�C�L�L�N�3�4��3�	0�/�/��

�M�M�B��+�+�-�
)����1���7��E�E�#�;�A�r�B�A�F��I�I�5�6��!���C�����
�
�d�3�i��6��
�
�c�m�m�T�2�����
�F�F�Hs��D;�D"�D;�F�E�"
D8�,D3�.D;�3D8�8D;�;
E	�0E?�<F�>E?�?F�
F�I �!H�1I �
H�
H�I �H�>I � 
I.c��[S5e)Nr�rpr`s r�_test_wrapped_exception�!_TestPool._test_wrapped_exception�s
���5�!�!rc��URS5nUR[5 URUR5 SSS5 SSS5 WR5 g!,(df   N'=f!,(df   N0=fr�)r�r�rqr�r<r�r$s  r�test_wrapped_exception� _TestPool.test_wrapped_exception�sU��
�Y�Y�q�\�Q��"�"�<�0�����4�4�5�1��	
����1�0���\�s"�A6�A%�A6�%
A3	�/A6�6
Bc�H�[R"5nUR[5 UR	S5nUR[SS/5 [R"S5 UR5 UR5 SSS5 SSS5 UR[R"5U-
S5 g![R"S5 UR5 UR5 f=f!,(df   Nz=f!,(df   N�=f)NrCrr�r�g�������?)r�r�r�rFr�r�r�r=r!r��
assertGreater)r��t_startr�s   r�test_map_no_failfast�_TestPool.test_map_no_failfast�s����.�.�"��
�
�
�z�
*����1�����E�E�/�!�Q��8��J�J�s�O��G�G�I��F�F�H�
�+�	
���4�>�>�+�g�5�s�;���J�J�s�O��G�G�I��F�F�H��
���+�
*�s9�D�D�C�6D�D�8C?�?D�
D	�D�
D!c���[S5Vs/sH
n[5PM nnUVs/sHn[R"U5PM nnURR[U5 A[R"[5 [R"5 UR[SU55S15 UR[RS5 gs snfs snf)Nrtc3�.# �UHo"5v� M
 g7frr_)rtr�s  rru�3_TestPool.test_release_task_refs.<locals>.<genexpr>�s���1�D�b�R�T�T�D�s�r)r�r�r�r�r�r�r�r�r=r�r�
gc_collectrr�r�)r�r��objs�o�refss     r�test_release_task_refs� _TestPool.test_release_task_refs�s���*/�r��3��A�
����3�(,�-��1����A����-��	�	�
�
�h��%���
�
�5����������1�D�1�1�D�6�:�	
����2�2�A�6��4��-s
�C� C#c�Z�URS:XaURS5 URS5nU SSS5 UR[5 U SSS5 SSS5 UR5 g!,(df   NI=f!,(df   N8=f!,(df   NA=f)Nr��test not applicable to managerr�)r�r�r�r�rFr��r�r�s  r�
test_enter�_TestPool.test_enter�sw���9�9�	�!��M�M�:�;��y�y��|��
���
�
�
�z�
*����+�	
�	�	���T�����+�
*�s/�A:�B�B�B�:
B�
B	�B�
B*c��URS:XaURS5 URS5nUR5 UR	5 [
RRUl[R"S[45 Sn[R"5 SSS5 g!,(df   g=f)Nr�rPr�z%unclosed running multiprocessing pool)r�r�r�r7r�rr��RUN�_stater
�check_warnings�ResourceWarningrrIrQs  r�test_resource_warning�_TestPool.test_resource_warning�s����9�9�	�!��M�M�:�;��y�y��|�������	�	��&�*�*�.�.���
�
+�
+�8�/�J�L��D���� �L�L�L�s�B/�/
B=r_)$r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�rrr
rrrrrr%r*r-r9r<r?rDrMrRrYr��
__classcell__�r�s@rr�r��
s��������� �� �=�
;�?�?�
:�8�)�L�5�4<��6�5�4H�".�H
��"
�?�� �� �$�L�"��"��<�(
7�� !�!rr�c��[S5e)N�key)�KeyErrorr_rr�raisingr`�s��
�5�/�rc��S$)Nc��g)N�*r_r_rrr$�%unpickleable_result.<locals>.<lambda>�s��2rr_r_rr�unpickleable_resultre�s���rc�$�\rSrSrSrSrSrSrg)�_TestPoolWorkerErrorsir%c�F^�[R"S5nS/mU4SjnUR[US9nUR	[
UR5 URTS5 URTS[
5 UR5 UR5 g)NrCc�>�UTS'grEr_�r6�
scratchpads �r�errback�@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errbacks����J�q�Mr�r�r)rr�rr`r�r_rr�r�r!r�)r�r�rlr�rks    @r�test_async_error_callback�/_TestPoolWorkerErrors.test_async_error_callbacks}���� � ��#���V�
�	 ��m�m�G�G�m�<�����(�C�G�G�,����
�1�
�&����j��m�X�6�	���	�	���rc��^�SSKJn [R"S5n[	S5H�nS/mU4SjnUR[US9nURXR5 TSnURU5 URTSU5 URUR5 URUR5 M� UR5 UR5 g)Nr)�MaybeEncodingErrorrCr�c�>�UTS'grEr_rjs �rrl�?_TestPoolWorkerErrors.test_unpickleable_result.<locals>.errbacks��� #�
�1�
rrn)�multiprocessing.poolrrrr�r�rrer�rr�r��assertIsNotNoner6r�r!r�)r�rrr��	iterationrlr��wrappedrks       @r�test_unpickleable_result�._TestPoolWorkerErrors.test_unpickleable_results����;�� � ��#���r��I���J�
$��-�-� 3�G�-�L�C����0�'�'�:� ��m�G��O�O�G�$��!�!�*�Q�-�1C�D�� � ����-�� � ����/�#�	
���	�	���rr_N)r�r�r�r�r�roryr�r_rrrgrgs��#�M�
�rrgc�0�\rSrSrSrSrSrSrSrSr	g)	�_TestPoolWorkerLifetimei)r%c���[R"SSS9nURS[UR55 URVs/sHo"R
PM nn/n[
S5H)nURUR[U455 M+ [U5H.upgURUR5[U55 M0 UR5 SnU(aj[SUR55(dIUS-n[R"[ 5 U(a#[SUR55(dMIURVs/sHo"R
PM n	nUR#SU5 UR#SU	5 UR%['U5['U	55 UR)5 UR+5 gs snfs snf)NrIrt��maxtasksperchildr^�2c3�@# �UHoR5v� M g7fr�r�)rtr<s  rru�D_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>=s���#B�'�Q�J�J�L�L�'���r�)rr�rr�rrr�r�rr��	enumerater�_repopulate_pool�allr�r=r�rIrTrxr!r�)
r�r�r<�origworkerpidsr�r�rr��	countdown�finalworkerpidss
          r�test_pool_worker_lifetime�1_TestPoolWorkerLifetime.test_pool_worker_lifetime,sk��� � ��R�8������C����L�)�)*���1��A�%�%���1����s��A��N�N�1�=�=��q�e�4�5��"�'�*�H�Q����S�W�W�Y��A��/�+�	
�����	���#B�!�'�'�#B� B� B���N�I��J�J�u����#B�!�'�'�#B� B� B�+,�'�'�2�'�Q�5�5�'��2�����~�.������/����F�>�2�F�?�4K�L�	���	�	�����12��"3s�	G(�(G-c�^�[R"SSS9n/n[S5H*nURUR	[
US455 M, UR
5 UR5 [U5H.upEURUR5[U55 M0 g)NrIr�r~r^g333333�?)rr�r�r�rr�r!r�r�rr)r�r�r�r�rr�s      r�%test_pool_worker_lifetime_early_close�=_TestPoolWorkerLifetime.test_pool_worker_lifetime_early_closeIs���
� � ��Q�7�����q��A��N�N�1�=�=��q�#�h�7�8��	���	�	����!�'�*�H�Q����S�W�W�Y��A��/�+rc��SH6nUR[5 [R"SUS9 SSS5 M8 g!,(df   MJ=f)N)rrBr��12rIr~)r�rFrr�)r�r�s  r�"test_pool_maxtasksperchild_invalid�:_TestPoolWorkerLifetime.test_pool_maxtasksperchild_invalidVs9��'�E��"�"�:�.��$�$�Q��?�/�.�(�.�.�s	�>�
A
	c��Sn[RRRSU5up#nUR	US5 g)Na�if 1:
            from multiprocessing import Pool
            problem = None
            class A:
                def __init__(self):
                    self.pool = Pool(processes=1)
            def test():
                global problem
                problem = A()
                problem.pool.map(float, tuple(range(10)))
            if __name__ == "__main__":
                test()
        �-cr)r�rr�assert_python_okr�r��cmdr��outr�s     r�>test_worker_finalization_via_atexit_handler_of_multiprocessing�V_TestPoolWorkerLifetime.test_worker_finalization_via_atexit_handler_of_multiprocessing[s;�����|�|�1�1�B�B�4��M��������Q�rr_N)
r�r�r�r�r�r�r�r�r�r�r_rrr|r|)s��#�M��:0�@�
 rr|)�BaseManager�	BaseProxyrc�&�\rSrSrSrSrSrSrg)�FooBarisc��g)N�f()r_r�s rr8�FooBar.fts��rc��[er)rFr�s r�g�FooBar.gvs���rc��g)N�_h()r_r�s r�_h�	FooBar._hxs��rr_N)r�r�r�r�r8r�r�r�r_rrr�r�ss����rr�c#�<# �[S5H	nX-v� M g7fr�)r�)r�s r�bazr�{s���
�2�Y���c�	��s�c�$�\rSrSrSrSrSrSrg)�
IteratorProxyi)r�c��U$rr_r�s rr��IteratorProxy.__iter__�s���rc�$�URS5$)Nr�)�_callmethodr�s rr��IteratorProxy.__next__�s�����
�+�+rr_N)r�r�r�r��	_exposed_r�r�r�r_rrr�r�s���I��,rr�c��\rSrSrSrg)�	MyManageri�r_Nr�r_rrr�r��s��rr��Foo)�callable�Bar)r8r�)r��exposedr�)r��	proxytypec��\rSrSrSr\R"SSS9S5r\R"SSS9S5r\R"SSS9S5r	S	r
S
rg)�_TestMyManageri�r[�TSan: leaks threadsT��threadc���[[S9nUR5 URU5 UR	5 URURRS[R*45 g�N)�shutdown_timeoutr)
r��SHUTDOWN_TIMEOUTr��common�shutdownr��_processr�rvr}�r�r�s  r�test_mymanager�_TestMyManager.test_mymanager�sU���-=�>���
�
�����G������
	
�
�
�g�&�&�/�/�!�f�n�n�_�1E�Frc���[[S9nU URU5 SSS5 URURR
S[R*45 g!,(df   NF=fr�)r�r�r�r�r�r�rvr}r�s  r�test_mymanager_context�%_TestMyManager.test_mymanager_context�sP���-=�>��
��K�K�� ��
	
�
�
�g�&�&�/�/�!�f�n�n�_�1E�F��W�s�A"�"
A0c���[[S9nUR5 U URU5 SSS5 UR	UR
RS5 g!,(df   N5=fr�)r�r�r�r�rr�r�r�s  r�!test_mymanager_context_prestarted�0_TestMyManager.test_mymanager_context_prestarted�sN���-=�>���
�
��
��K�K�� ������)�)�2�2�A�6��W�s�A!�!
A/c���UR5nUR5nUR5nSVs/sHn[X%5(dMUPM nnSVs/sHn[X55(dMUPM nnUR	USS/5 UR	USS/5 UR	UR5S5 UR
[UR5 UR	URS5S5 UR
[URS5 UR	UR5S5 UR	UR5S5 UR	URS5S5 UR	URS5S5 UR	[U5[S5Vs/sHo�U-PM	 sn5 gs snfs snfs snf)N)r8r�r�r8r�r�r�r�rt)r�r�r�rurr8r�rFr�r�rr�r�r�)	r�r�r��barr�r-�foo_methods�bar_methodsr�s	         rr��_TestMyManager.common�ss���k�k�m���k�k�m���k�k�m��(8�O�(8��G�C�<N�t�(8��O�(8�O�(8��G�C�<N�t�(8��O�����s�C�j�1�����s�D�k�2��������%�(����*�c�e�e�,��������-�u�5����+�s����=��������%�(��������6�*��������-�u�5��������.��7�����c��%��)�$<�)�Q�q�S�)�$<�=��!P��O��%=s�G�
G�G"�1G"�G'
r_N)r�r�r�r�r�r�skip_if_sanitizerr�r�r�r�r�r_rrr�r��sw�� �M����4�T�B�	G�C�	G�
���4�T�B�G�C�G�
���4�T�B�7�C�7�>rr�c��[$r)�_queuer_rr�	get_queuer��s���Mrc��\rSrSrSrSrg)�QueueManageri�z$manager class used by server processr_N�r�r�r�r�r�r�r_rrr�r��s��.rr�r�c��\rSrSrSrSrg)�
QueueManager2i�z@manager class which specifies the same interface as QueueManagerr_Nr�r_rrr�r��s��Jrr��	xmlrpclibc�h�\rSrSrSr/SQr\SSr\S5r\	R"SSS9S	5rS
rg)�_TestRemoteManageri�r[)�hello worldNT�@uhallå världenuпривіт світs
hall� v�rldenNc��[X[[S9nUR5 UR	5nUR[
UR55 g)N��addressr��
serializerr�)r��
SERIALIZERr��connectr�r�r�r�rr�r�r�r$s     r�_putter�_TestRemoteManager._putter�sC�����-�/��	�����!�!�#��
�	�	�%��
�
�#�$rr�Tr�c�x�[R"S5n[[RS4U[
[S9nUR5 URUR5 URURURU4S9nSUl
UR5 [URU[
[S9nUR5 UR!5nUR#UR%5UR&5 UR)[*UR,[.R05 Ag)N� rr�r�T)rC�urandomr�r�HOSTr�r�r�r�r�r�r�r�r�r�r�r�rrr�r�r|r�r�r=)r�r�r�r��manager2r$s      r�test_remote�_TestRemoteManager.test_remote�s����*�*�R�.���"�'�'��+�W��-�/��	�
�
������(�(�)��L�L����G�O�O�W�3M�L�N�����	���	� ��O�O�W��-�/��	�����"�"�$���������d�k�k�2�	
���)�U�Y�Y��
�
�;�
rr_)
r�r�r�r�r�rr�rr�rr�r�r�r_rrr�r��sN�� �M��F�
�A�Y�F��%��%�
���4�T�B��C�rr��sha256c�R�\rSrSr\S5r\R"SSS9S5rSr	g)	�_TestManagerRestarti

c��[X[[S9nUR5 UR	5nURS5 g)Nr�r�)r�r�r�r�r�r�r�s     rr��_TestManagerRestart._putter
s:�����-�/��	�����!�!�#��
�	�	�-� rr�Tr�c�"�[R"S5n[[RS4U[
[S9nUR5nURnURR5 UR5 URURURU4S9nUR5 UR5 UR5nUR!UR#5S5 A[%US5(aUR'5 [XA[
[S9nUR5 UR)UR&5 g![%US5(aUR'5 ff=f![*a�nUR,[,R.:wae[0R2"S5 [XA[
[S9n[%US5(a UR)UR&5 SnAgSnAgSnAff=f)Nr�rr�r�r�r�r�)rCr�r�rr�r�r��
get_serverr��listenerr!r�r�r�r�r�rrrur�r�r��errno�
EADDRINUSEr�r=)r�r�r��srvr�addrr�r$rLs        r�test_rapid_restart�&_TestManagerRestart.test_rapid_restart
s����*�*�R�.���"�'�'��+�W�!�4D�F��	#��%�%�'�D��<�<�D�
�M�M���!��M�M�O����D�L�L�����7Q��R�A�
�G�G�I�
�F�F�H��%�%�'�E����U�Y�Y�[�-�8���w�
�+�+�� � �"���j�-�/��
	2��M�M�O��O�O�G�,�,�-���w�
�+�+�� � �"�,���
	2��w�w�%�*�*�*��
�J�J�s�O�"��*�!1�3�G��w�
�+�+����� 0� 0�1�1�,��
	2�s%�B=E�.+F�$E>�
H�A4H	�	Hr_N)
r�r�r�r�rr�rr�r�r�r_rrr�r�

s9���!��!�
���4�T�B�'2�C�'2rr�c� �\rSrSrSrSrSrg)�FakeConnectioniD
c��grr_)r��payloads  rr,�FakeConnection.sendE
s��rc�0�S[R"54$)Nz#ERROR)rgrvr�s rr"�FakeConnection.recvH
s�������(�(rr_N)r�r�r�r�r,r"r�r_rrrrD
s��
�)rrc�,�\rSrSrSrSrSrSrSrg)�TestManagerExceptionsiK
c�8�[R"5Ulgr)rr��mgrr�s rr��TestManagerExceptions.setUpM
s��"�*�*�,��rc�l�URR5 URR5 gr�rr�r�r�s rr��TestManagerExceptions.tearDownP
������������
�
�rc��URR5n[R"5(a4[R"5 UR[R5 UR5 URW"5S5 g![Ra n[R"U5nSnANGSnAff=fr)
rr r��	isenabled�disabler��enablerurgrvr�r�r)r�r$rLr�s    r�test_queue_get�$TestManagerExceptions.test_queue_getT
s~������� ��
�<�<�>�>��J�J�L��O�O�B�I�I�&�	 �����	
�����t�$���}�}�	 ����Q��B��	 �s�*B�C�&C�Cc��[R"5(a4[R"5 UR[R5 [
RR[5SS5 URW"5S5 g![Ra n[R"U5nSnANGSnAff=fr)r�rrr�rr�managers�dispatchrrgrvr�r�r)r�rLr�s   r�
test_dispatch�#TestManagerExceptions.test_dispatch_
s}��
�<�<�>�>��J�J�L��O�O�B�I�I�&�	 ��$�$�-�-�n�.>��d�K�	
�����t�$���}�}�	 ����Q��B��	 �s�)B�C�%C�C)rN)	r�r�r�r�r�r�rrr�r_rrr	r	K
s��-��	%�%rr	�c	��\rSrSrSr\S5rSrSrSr	Sr
\S5r\SS	j5r\
R"\S
5S5r\
R"\S
5\
R""\R&S:HS
5\
R""\S:*S5\
R"\"\S5S5S5555r\S5r\
R"\S
5\
R""\R&S:HS5S55rSrSrg)�_TestConnectionio
r�c��[UR[5HnURU5 M UR	5 gr)r�
recv_bytes�SENTINEL�
send_bytesr!)rr�msgs   r�_echo�_TestConnection._echos
s,�������2�C��O�O�C� �3��
�
�rc��UR5upURURU4S9nSUlUR	5 /SQn[S5nUS-n[R"S[[S555nURS:Xa-UR[UR55[5 URURU5S5 URUR5U5 URUR!U5S5 URUR#5U5 URS:XGa�[R"SS	/S-5n[U5S	/S[%U5-
--n	URUR!U5S5 URUR'U5[%U5UR(-5 UR[U5U	5 [R"SS	/S-5nS	/S
-[U5-S	/S[%U5-
--n	URUR!U5S5 URUR'US
UR(-5[%U5UR(-5 UR[U5U	5 [+[S55nURUR!U5S5 UR'U5n
UR-S
U
-5 [5UR65nURU"5S5 UR9UR:S	5 URU"S5S5 UR9UR:S	5 URU"[<5S5 UR9UR:[<5 URS5 [>R@"S5 URU"[<5S5 UR9UR:S	5 URUR5S5 [S5S-n
UR!U
5 URUR#5U
5 UR![B5 URE5 URS:XaxURURFS5 URURHS5 URK[LUR5 URK[LUR"5 URO5 g![.R0a(nURUR2U45 SnAGNkSnAff=f)Nr�T)r�r�Nr�rtr�rrr�rrIrez(                                        zexpected BufferTooShort, got %sFrBr�Xi)(r r�r$r�r�rrFr�r�r�rrK�filenor�r,r"r"r r��recv_bytes_into�itemsize�	bytearrayr}r�BufferTooShortrSr�r4r�r�rir�r=r!r!�readable�writabler��EOFErrorr�)r�rrr�r?r#�longmsgrG�bufferr�r�rLr4�really_big_msgs              r�test_connection�_TestConnection.test_connectiony
s0���9�9�;����L�L��
�
�*��L�?�����	���	����M�"����(���k�k�#�t�E�!�H�~�.���9�9��#����T�$�+�+�-�0�#�6�������3���.��������c�*��������-�t�4�������*�C�0��9�9��#��[�[��q�c�"�f�-�F��C�y�A�3�"�s�3�x�-�#8�8�H����T�_�_�S�1�4�8����T�1�1�&�9� ��X����7�
9����T�&�\�8�4��[�[��q�c�"�f�-�F��s�Q�w��c��*�a�S�F�S��X�4E�-F�F�H����T�_�_�S�1�4�8����T�1�1�&�!�f�o�o�:M�N� ��X����7�
9����T�&�\�8�4��u�X��/�F����T�_�_�W�5�t�<�
C��*�*�6�2���	�	�;�c�A�B��T�Y�Y�'��������'��$�$�T�\�\�1�5�����b��5�)��$�$�T�\�\�1�5�����h���/��$�$�T�\�\�8�<��	�	�$���
�
�2������h���.��$�$�T�\�\�1�5��������d�+��s��'7�8������'�������*�N�;�����!������9�9��#����T�]�]�D�1����T�]�]�D�1����h��	�	�2����h����8�	�����K#�1�1�
5�� � ����'��4�4��
5�s�5U�V
�"V�V
c�l�URSS9upURURS5S5 URUR5S5 URS:Xa�URUR
S5 URURS5 URUR
S5 URURS5 UR[URS5 UR[UR5 UR[UR5 gg)NFrr�r�TrC)
r rr,r"r�r-r.r�r�r4)r��reader�writers   r�test_duplex_false�!_TestConnection.test_duplex_false�
s������%��0���������Q���.���������*��9�9��#����V�_�_�d�3����V�_�_�e�4����V�_�_�e�4����V�_�_�d�3����g�v�{�{�A�6����g�v�{�{�3����g�v�{�{�3�$rc��UR5upURURU4S9nSUlUR	5 UR5 [
S5nURU5 URUR5U5 UR[5 UR5 UR5 g)Nr�TrE)r r�r$r�r�r!rr"rr r!r�)r�rrr�r#s     r�test_spawn_close� _TestConnection.test_spawn_close�
s��� �9�9�;����L�L��
�
�*��L�?�����	���	������G�n�������������*�C�0�����!��
�
��	���rc�2�URS:wa*URSRUR55 [S5nUR	5up#URU5 UR
UR5U5 URUS5 UR
UR5USS5 URUSS5 UR
UR5USS5 URUS5 UR
UR5[S	55 URUSS
5 UR
UR5[S	55 UR[UR
US5 UR[UR
USS5 UR[UR
USS
5 UR[UR
US5 UR[UR
USS5 g)Nr�r��abcdefghijklmnopqrstuvwxyzr�rerK��rr��r�rBrr)
r�r�r�rr r"rr r�rF)r�r#r�r�s    r�test_sendbytes�_TestConnection.test_sendbytes�
s����9�9��#��M�M�7�>�>�t�y�y�I�J��0�1���y�y�{���	���S����������-�	���S�!����������Q�R��1�	���S�!�Q����������Q�s��4�	���S�"����������r��3�	���S�"�a� ���������r��3����*�a�l�l�C��<����*�a�l�l�C��Q�?����*�a�l�l�C��Q�?����*�a�l�l�C��<����*�a�l�l�C��B�?rc��[R"U5 g![a)nUR[R:XaSnAgeSnAff=fr�)rC�fstatr�r��EBADF)rrBrLs   r�_is_fd_assigned�_TestConnection._is_fd_assigned
s?��	��H�H�R�L����	��w�w�%�+�+�%����	�s��
A�A�A�Ac��U(aP[SS5H@nURU5(aM[R"UR	5U5 MB [
R"U5n[(a%[R"U[R5n[R"XR5 [R"U5 g)Nrr9)r�rHrC�dup2r(r�recv_handle�msvcrt�open_osfhandler?r�r!)rr�data�create_dummy_fdsr�rBs      r�_writefd�_TestConnection._writefds~����1�c�]���*�*�1�-�-��G�G�D�K�K�M�1�-�#��
"�
"�4�
(���6��&�&�r�2�;�;�7�B�
�����
����r�$test needs multiprocessing.reductionc��URS:waURS5 URSS9upURURUS4S9nSUlUR
5 UR[R[R5 [[RS5nUR5n[(a[R"U5n[R "XUR"5 SSS5 UR%5 [[RS5nUR'UR)5S5 SSS5 g!,(df   Nb=f!,(df   g=f)	Nr��only makes sense with processesTrsfoor��wb�rb)r�r�r r�rQr�r�r�rr3r2r5r(rM�
get_osfhandler�send_handlerr�rr6)r�rrr�r8rBs      r�test_fd_transfer� _TestConnection.test_fd_transfer!s���9�9��#��M�M�;�<��9�9�D�9�1����L�L��
�
�Z��4H�L�I�����	���	����	�(�(�)�*:�*:�;�
�)�"�"�D�
)�Q�����B��v��)�)�"�-���!�!�$�A�E�E�2�	*�
	
����
�)�"�"�D�
)�Q����Q�V�V�X�v�.�*�
)�
*�
)��*�
)�s�.AE�3!E.�
E+�.
E<r2�*test semantics don't make sense on Windowsr9z)largest assignable fd number is too smallrKztest needs os.dup2()c���URS:waURS5 URSS9upURURUSS4S9nSUlUR
5 UR[R[R5 [[RS5nUR5n[S[5HnURU5(aM O UR!S	5 ["R$"UW5 [&R("XUR*5 ["R,"U5 SSS5 UR/5 [[RS
5nUR1UR35S5 SSS5 g!["R,"U5 f=f!,(df   N}=f!,(df   g=f)Nr�rUTrsbarr�rVr9z2could not find an unassigned large file descriptorrW)r�r�r r�rQr�r�r�rr3r2r5r(r��MAXFDrHr}rCrKrrYrr!r�rr6)r�rrr�r8rB�newfds       r�test_large_fd_transfer�&_TestConnection.test_large_fd_transfer4s[���9�9��#��M�M�;�<��9�9�D�9�1����L�L��
�
�Z���4N�L�O�����	���	����	�(�(�)�*:�*:�;�
�)�"�"�D�
)�Q�����B��s�E�*���+�+�E�2�2��+��	�	�N�O��G�G�B���
 ��%�%�d�1�5�5�9������*�	
����
�)�"�"�D�
)�Q����Q�V�V�X�v�.�*�
)��������*�
)��*�
)�s6�/8G�+,G�!F,�9G�!G�,G�G�
G�
G&c�N�[R"UR5S5 g)N�)rCr�r(�r�rs  r�_send_data_without_fd�%_TestConnection._send_data_without_fdUs��
��������&rzdoesn't make sense on Windowsc�6�URS:waURS5 URSS9upURURU4S9nSUlUR
5 UR[[RU5 UR5 g)Nr�rUTrr�)r�r�r r�rer�r�r�rqrrLr��r�rrr�s    r�test_missing_fd_transfer�(_TestConnection.test_missing_fd_transferYs{��
�9�9��#��M�M�;�<��9�9�D�9�1����L�L�� :� :�*��L�O�����	���	����,�	�(=�(=�t�D�	���rc��UR5upU U URS5 URUR5S5 URS:Xa6URUR5 URUR5 SSS5 SSS5 URS:XawURUR5 URUR5 UR[UR5 UR[UR5 gg!,(df   N�=f!,(df   N�=f�N�r�)
r r,rr"r�r�closedr�r�r�r�s   rr*�_TestConnection.test_contexths����y�y�{���
��
�F�F�4�L����Q�V�V�X�t�,��y�y�K�'�� � ����*�� � ����*��Q��9�9��#��O�O�A�H�H�%��O�O�A�H�H�%����g�q�v�v�.����g�q�v�v�.�	$����Q�Q�s#�D9�A8D(�D9�(
D6	�2D9�9
Er_NrJ)r�r�r�r�r�rr$r3r8r;rCrHrQrGr�
HAS_REDUCTIONrZrXr�r�r^rurCr`rerir*r�r_rrrro
sU��,�M�����
M�^4��*@�@�����	��	�����(N�O�/�P�/�$����(N�O�
�_�_�S�\�\�W�,�A�C�
�_�_�U�c�\�@�B�
�����V�,�/�1�/�1�B�C�P�/�4�'��'�����(N�O�
�_�_�S�\�\�W�,�.M�N��O�P��/rrc�p�\rSrSrSrSrSrSr\R"\
RS5S5rSr
g	)
�
_TestListenerixr%c��URRHmnURRUS9nURUR5 UR[URRURU5 Mo g)N��family)�
connection�families�Listenerr�r!r�r�r�)r�rur�s   r�test_multiple_bind� _TestListener.test_multiple_bind|sb���o�o�.�.�F����(�(��(�7�A��O�O�A�G�G�$����g�t���'?�'?��i�i��
1�/rc��URR5nURRUR5nUR	5nURS5 UR
UR5S5 SSS5 SSS5 SSS5 URS:Xa!UR[WR5 gg!,(df   NP=f!,(df   NY=f!,(df   Nb=frl�rvrx�Clientr��acceptr,rr"r�r�r�)r�r�r�r
s    rr*�_TestListener.test_context�s���
�_�_�
%�
%�
'�1����'�'��	�	�2�a��X�X�Z�1��F�F�4�L��$�$�Q�V�V�X�t�4� �3�(��9�9��#����g�q�x�x�0�$�	 �Z��3�2��(�
'�s;�&C0�C�2C�C�C0�
C�C�
C-	�)C0�0
C>c�d^�SnU4SjnSnTRRUS9n[R"X$RU4S9nUR5 UR
5nTRUR5S5 SSS5 UR5 SSS5 TRS:Xa/TR[5 WR
5 SSS5 gg!,(df   Ng=f!UR5 f=f!,(df   Nt=f!,(df   g=f)Nc��[S5e)NzConnection took too long...rprLs rrr�1_TestListener.test_empty_authkey.<locals>.handler�s���<�=�=rc�Z>�TRRXS9nURS5 g)N�r�rm)rvr}r,)r�r��clientr�s   �rr�-_TestListener.test_empty_authkey.<locals>.run�s&����_�_�+�+�D�+�B�F��K�K��rrr�r�rmr�)
rvrxrPr�r�r�r~rr"r�r�r�r�)r�rrrr^r�r�r
s`      r�test_empty_authkey� _TestListener.test_empty_authkey�s����	>�	���
�_�_�
%�
%�c�
%�
2�h��%�%�S�8H�8H�#�7N�O�F��L�L�N�
��_�_�&�!��$�$�Q�V�V�X�t�4�'����
�3��9�9��#��"�"�7�+����!�,�+�$�'�&�����
��3�
2��,�+�sG�1D�C;�(!C*�	C;�D�D!�*
C8	�4C;�;D
�
D�
D�!
D/z"test needs abstract socket supportc��URRS5nURRUR5nUR	5nURS5 UR
UR5S5 SSS5 SSS5 SSS5 URS:Xa!UR[WR5 gg!,(df   NP=f!,(df   NY=f!,(df   Nb=f)Nz
somethingrmr�r|)r�r�r�r
s    r�test_abstract_socket�"_TestListener.test_abstract_socket�s����_�_�
%�
%�m�
4�����'�'��(8�(8�9�V��_�_�&�!��K�K��%��$�$�Q�V�V�X�t�4�'�:�5��9�9��#����g�x���7�$�	'�&��:�9��5�
4�s;�&C1�C �2C�C �
C1�
C�C � 
C.	�*C1�1
C?r_N)r�r�r�r�r�ryr*r�rGrr�abstract_sockets_supportedr�r�r_rrrrrrxs@��"�M�1�1�"�0����8�8�=�?�8�?�8rrrc�:�\rSrSrSr\S5rSrSrSr	Sr
g)	�_TestListenerClienti�r�c�|�URRU5nURS5 UR5 g)NrE)rvr}r,r!)rr�rs   rr�_TestListenerClient._test�s+���~�~�$�$�W�-���	�	�'���
�
�rc��URRH�nURRUS9nURURUR
4S9nSUlUR5 UR5nURUR5S5 UR5 UR5 M� g)Nrtr�TrE)
rvrwrxr�rr�r�r�r~rr"r�r!)r�rur�r�rs     r�test_listener_client�(_TestListenerClient.test_listener_client�s����o�o�.�.�F����(�(��(�7�A����D�J�J�a�i�i�\��B�A��A�H�
�G�G�I��8�8�:�D����T�Y�Y�[�'�2�
�F�F�H�
�G�G�I�/rc��URR5nURURUR4S9nSUlUR
5 [R"S5 UR5nURUR5S5 UR5 UR5 UR5 g)Nr�Tr�rE)rvrxr�rr�r�r�r�r=r~rr"r!r�)r�r�r�rs    r�test_issue14725�#_TestListenerClient.test_issue14725�s����O�O�$�$�&���L�L��
�
�!�)�)��L�>�����	���	��
�
�1�
�
�x�x�z���������g�.��
�
��	����	���	rc��URRH�nURRUS9nURRUR5nUR5nUR
S5 URURS55 UR5 UR5 UR5 M� g)Nrt�hellor�)
rvrwrxr}r�r~r"r�r4r!)r��famr�r�r�s     r�test_issue16955�#_TestListenerClient.test_issue16955�s����?�?�+�+�C����(�(��(�4�A����&�&�q�y�y�1�A����
�A�
�L�L��"��O�O�A�F�F�1�I�&�
�G�G�I�
�G�G�I�
�G�G�I�,rr_N)r�r�r�r�r�rrr�r�r�r�r_rrr�r��s(��,�M�����
	�� 	rr�c�`�\rSrSrSrSr\S5rSr\S5r	Sr
\S5rS	rS
r
g)�	_TestPolli�r�c�
�UR5upURUR5S5 URS5 URUR5S5 URUR5S5 g)NFrT)r rr4r"r�s   r�test_empty_string�_TestPoll.test_empty_string�s]���y�y�{����������5�)�	���S���������4�(��������4�(rc��UH*n[R"S5 URU5 M, UR5 g�Nr)r�r=r"r!)rr�stringsrs    r�_child_strings�_TestPoll._child_strings�s.���A��J�J�s�O��O�O�A���	
�
�
�rc�J�SnUR5up#URURX14S9nUR5 UHNn[	S5HnURS5(dM O UR
5nURXW5 MP UR5 g)N)r�r�a�brsbyerslopr���r�)	r r�r�r�r�r4r rr�)r�r�r�r�r�rr�rs        r�test_strings�_TestPoll.test_strings�s���G���y�y�{����L�L�� 3� 3�1�,�L�G��	���	��A��3�Z���6�6�$�<�<�� �����A����Q�"��	
���rc�&�URS5 gr�)r4)rr)s  r�_child_boundaries�_TestPoll._child_boundariess��	
���q�	rc�h�URS5upURURU4S9nUR5 [R
"S5 SS/nUHnUR
U5 M UR5 UR5 URUR5U5 g)NFr�rCsfirstssecond)r r�r�r�r�r=r"r!r�r�r )r�r)r<r�r(r�s      r�test_boundaries�_TestPoll.test_boundariess����y�y������L�L�� 6� 6�a�T�L�B��	���	��
�
�1�
�
�y�!���C�
�L�L����	���	�	�����
�
�a�l�l�n�a�(rc�j�URS5 URS5 URS5 g)Nr�r��cd)r")rr�s  r�_child_dont_merge�_TestPoll._child_dont_merges&��	���T��	���T��	���U�rc�,�UR5upURURS5S5 URURS5S5 URURU4S9nUR5 URUR
5S5 URURS5S5 URURS5S5 URUR
5S5 URURS5S5 URURS5S5 URURS5S5 URUR
5S	5 UR5 g)
Nr4Frr�r�r�Tr�r�)r rr4r�r�r�r r�)r�r�r�r�s    r�test_dont_merge�_TestPoll.test_dont_merges%���y�y�{�����������e�,���������e�,��L�L�� 6� 6�a�T�L�B��	���	���������.���������d�+���������d�+���������.���������d�+���������d�+���������d�+���������/�	���rr_N)r�r�r�r�r�r�rr�r�r�r�r�r�r�r_rrr�r��sW��,�M�)�����
�����
)�����
rr�rSc�d�\rSrSrSr\S5r\S5r\S5rSr	\S5r
SrS	rg
)�_TestPicklingConnectionsi4r%c�J�SSKJn UR[RS9 g)Nr)�resource_sharerr0)rr�r!rr5)rr�s  rr��&_TestPicklingConnections.tearDownClass:s��3����W�%9�%9��:rc�0�UHxnURRUS9nURUR5 UR	5nURU5 UR5 UR5 Mz [R"[RS45nURUR55 UR	5upVURU5 UR5 UR5 UR5 g)Nrtr)rvrxr,r�r~r!�socket�
create_serverrr��getsocknamer")rrrwr�r��new_connr�s       r�	_listener�"_TestPicklingConnections._listener?s����C����'�'�s�'�3�A��I�I�a�i�i� ��x�x�z�H��I�I�h���N�N��
�G�G�I�
�
� � �-�"4�"4�a�!8�9���	�	�!�-�-�/�"��������	�	�(������	���	��	�	�rc���[URS5HOup#URRU5nUR	UR55 UR
5 MQ UR5up#[R"5nURU5 URUR55 UR
5 UR
5 gr)
rr"rvr}r,rr!r�r��sendall)rrr�r#r�s     r�_remote� _TestPicklingConnections._remoteRs���"�4�9�9�d�3�N�W��^�^�*�*�7�3�F��K�K��	�	��$��L�L�N�4�
�y�y�{�����������w�����s�y�y�{�#������
�
�rc��URRnUR5up#URURX14S9nSUlUR
5 UR5 UR5upVURURU4S9nSUlUR
5 UR5 UHwnSU-RS5n	UR5n
URX�45 UR5nURUR5U	R55 My URS5 [S5n	UR5n
URX�45 UR5n/nURS5n
U
(dOURU
5 M,SR!U5nURX�R55 UR5 URS5 UR5 UR5 UR!5 UR!5 g)Nr�TzThis connection uses family %s�asciiz$This connection uses a normal socketr^r)rvrwr r�r�r�r�r!r�rr"r,rrrr�r�)r�rw�lconn�lconn0�lpr#�rconn0�rpr�r#r�r��bufrs              r�
test_pickling�&_TestPicklingConnections.test_picklingas����?�?�+�+���	�	��
��
�\�\����v�6H�\�
I����	�
���
������	�	��
��
�\�\����V�I�\�
>����	�
���
������C�3�c�9�A�A�'�J�C��j�j�l�G��J�J��~�&��z�z�|�H����X�]�]�_�c�i�i�k�:��	�
�
�4���:�;���*�*�,��
�
�
�G�>�"��:�:�<������
�
�c�"�A����J�J�q�M�	�
�h�h�s�m������i�i�k�*�����
�
�
�4��
���
�
���
�
���	�
���	rc���UR5nURS5 UR5 UR5nUR5nURUS-5 UR5 g)N�all is wellrC)r"r,r!)rrr<r)r#s     r�child_access�%_TestPicklingConnections.child_access�sQ���I�I�K��	���}��	���	��I�I�K���f�f�h���	�	�#�a�%���
�
�rc�v�UR5upURURU4S9nSUlUR	5 UR5 URSS9upEUR
U5 UR5 URUR5S5 UR5 URSS9upEUR
U5 UR5 UR
S5 UR5 URUR5S5 UR5 g)Nr�TFrr��foobar�foobarfoobar)
r r�r�r�r�r!r,rr"r�)r�rrr�r)r<s      r�test_access�$_TestPicklingConnections.test_access�s��� �9�9�;����L�L�� 1� 1��
�L�F�����	���	������y�y��y�&����	�	�!��	���	��������=�1�	���	��y�y��y�&����	�	�!��	���	�	���x��	���	��������j�1�	���rr_N)
r�r�r�r�r�rr�r�r�r�r�r�r�r_rrr�r�4sb��#�M��;��;�����$����,�\�	��	�rr�c�D^�\rSrSrSrU4SjrU4SjrSrSrSr	U=r
$)�	_TestHeapi�r%c��>�[TU]5 [RRR
Ul[RR5[RRlgr)r�r�rrnro�_heap�old_heap�Heap�r�r�s �rr��_TestHeap.setUp�sH���
��
��'�,�,�:�:�@�@��
�3B�3G�3G�3L�3L�3N����*�*�0rc�t>�UR[RRl[
TU]5 gr)r�rrnror�r�r�r�s �rr��_TestHeap.tearDown�s&���37�=�=����*�*�0�
���rc
��SnSn/n[RRRnSUl[U5H~n[
[R"SS5S-5n[RRU5nURU5 [U5U:�a[R"U5nX5	AM� UR /nSn	Sn
[URR55HFnUH=up�nURUR R#U5X�X�-
S45 X�U
-
-
n	M? MH UR$R'5HGup�UH<up�URUR R#U5X�X�-
S45 X�U
-
-
n
M> MI UR)X�-[+SUR 555 UR-5 [[U5S-
5HonX�SS	up�nX�S-SS	unnnUU:wa<UR)X�R UR.5 UR)US5 M]UR)UU5 Mq SSS5 [R0"U5 U(aUR35 U(aMUR)UR4UR65 UR)[UR85S5 UR)[UR 5S5 UR)[UR$5SUR$5 UR)[UR5S5 g!,(df   GN=f)
N�r�rr�r�free�occupiedc3�8# �UHoRv� M g7fr�rK)rt�arenas  rru�&_TestHeap.test_heap.<locals>.<genexpr>�s��� F������s�rI)rrnror��_DISCARD_FREE_SPACE_LARGER_THANr�r��random�lognormvariater�r��	randrangerxr��_len_to_seqr�_arenas�index�_allocated_blocksr�r�sum�sortrK�shuffleri�_n_frees�
_n_mallocs�_pending_free_blocks)r��
iterations�	maxblocks�blocksrnr�rKr�r�r�r�r(r�r�r!�arena_blocks�narena�nstart�nstops                   r�	test_heap�_TestHeap.test_heap�s����
��	����#�#�1�1�7�7��/0��,��z�"�A��v�,�,�Q��2�T�9�:�D��$�$�2�2�4�8�A��M�M�!���6�{�Y�&��$�$�Y�/���I��#��Z�Z��C��D��H��$�*�*�1�1�3�4��*+�&�E�$��J�J���� 2� 2�5� 9�5� $�
�F� 4�5��%�Z�(�D�+,�5�(,�'=�'=�'C�'C�'E�#��#/�K�E��J�J���� 2� 2�5� 9�5� $�
�J� 8�9��e��,�H�$0�(F�
���T�_� � F���� F�F�
H�
�H�H�J��3�s�8�A�:�&��'*�v�b�q�z�$��t�*-��c�(�2�A�,�'�����F�?��$�$�T�<�<��+>�+C�+C�D��$�$�V�Q�/��$�$�T�6�2�'�-�D	���v����J�J�L��f�	
���������8�����T�6�6�7��;�����T�\�\�*�A�.�����T�3�3�4�a��9O�9O�P�����T�-�-�.��2�U�Z�s
�F!M0�0
M?c���[R"5(d4[R"5 UR[R5 [R
"5nUR"[R/UQ76 [R"S5 [S5HMn[RRS5n[RRS5nXClX4lMO g)Nrtr�r�)r�rrr�r�
get_threshold�
set_thresholdr�rrnro�buddy)r��
thresholdsr�r�r�s     r�test_free_from_gc�_TestHeap.test_free_from_gc
s����|�|�~�~��I�I�K��O�O�B�J�J�'��%�%�'�
�����(�(�6�:�6�
������t��A��$�$�2�2�1�5�A��$�$�2�2�1�5�A��G��G�r)r�)r�r�r�r�r�r�r�rr
r�r[r\s@rr�r��s#���"�M�O��>3�@�rr�c�*�\rSrSrS\4S\4S\4/rSrg)�_Fooi$rr�zr_N)	r�r�r�r�r=r>r?�_fields_r�r_rrr
r
$s��	�e��	�h��	�j��
�Hrr
c�D�\rSrSrSrSr\S5rS
SjrSr	Sr
Srg	)�_TestSharedCTypesi+r%c�>�[(dURS5 ggrrr�s rr��_TestSharedCTypes.setUp/rrc�N�U=RS-slU=RS-slU=RS-slU=RS-slU=RS-slU=RS-sl[[	U55HnXW==S-ss'M gr	)r�rrr�r�)rrrrr�rG�stringr�s        r�_double�_TestSharedCTypes._double3sn��	���1���	���1���	���1�������
������
���������s�3�x��A��F�a�K�F�!rc	�:�[SSUS9n[[SUS9n[[SUS9n[[SSUS9nUR	S[[
S	55US9nUR	S
SUS9n[S5UlURURX#XEXg4S
9nSUlUR5 UR5 URURS5 URURS5 URURS5 URUR S5 URUR"S5 [
S	5Hn	URXiU	S-5 M URUR[S55 g)Nr�rer+gUUUUUU�?rrIrCr
rtr�r�rEr�T�gUUUUUU�?rr^�@�
hellohello)rr>r?r
rEr�r�rr�r�rr�r�r�rr�rr)
r�r�rrrr�rGrr�r�s
          r�test_sharedctypes�#_TestSharedCTypes.test_sharedctypes>sN���#�q�t�$���(�G�$�/���*�g�D�1���D�!�Q�T�*���j�j��d�5��9�o�D�j�9�����C��$��/���W�~����L�L����A�!�#�3N�L�O�����	���	�	����������"�%����q�w�w��0�������'�*��������"����s�u�u�c�*��r��A��"�"�3�6�1�Q�3�/��������u�\�':�;rc�"�URSS9 g)NTr+)rr�s r�test_synchronize�"_TestSharedCTypes.test_synchronizeUs�����D��)rc��[SSS5n[U5nSUlSUlSUlURURS5 UR
URS5 URURS5 g)NrCr0rr)r
rrrrrr�)r�r�r�s   r�	test_copy�_TestSharedCTypes.test_copyXsj���1�c�7�#���3�i������������������"����s�u�u�c�*��������(rr_NrJ)r�r�r�r�r�r�rrrrr"r�r_rrrr+s0��"�M�C�����<�.*�)rrc�^�U4SjnU$)z@Run given test using both resource tracker communication formatsc�.>�[RnSH[nURUS9 [RR
R
USU5 T"U/UQ70UD6 SSS5 SSS5 M] g!,(df   N=f!,(df   M�=f)N)FT)�use_simple_format�_use_simple_format)r*�_resource_trackerrrG�mock�patchr�)r�rSrT�trackerr&r�s     �r�_inner�0resource_tracker_format_subtests.<locals>._inneres����"�4�4��!,�����/@��A��
�
�#�#�*�*��1�3D�F��T�+�D�+�F�+�F�B�A�"-�F�F��B�A�s#�,B�
A4�B�4
B�>B�
B	r_)r�r,s` r� resource_tracker_format_subtestsr.cs���,��Mrz&requires multiprocessing.shared_memoryc���\rSrSrSr\S5rSrSrSr	Sr
SrS	rS
r
Sr\R "\R$S:gS
5S5r\R "\R$S:gS5\S55rSrSrSrSrSr\R "\R$S:gS5\S55r\R "\R$S:gS5\S55rSrg)�_TestSharedMemoryipr%c��[U[5(a[R"U5nOUnXRS[U5&UR
5 gr)rr�r�SharedMemoryr�r�r!)�shmem_name_or_obj�binary_data�	local_smss   r�!_attach_existing_shmem_then_write�3_TestSharedMemory._attach_existing_shmem_then_writevsD���'��-�-�%�2�2�3D�E�I�)�I�+6�
�
�'�s�;�'�(����rc�D�U[[R"55-$r)r�rCr�)r��prefixs  r�
_new_shm_name�_TestSharedMemory._new_shm_names����B�I�I�K�(�(�(rc��URS5n[R"USSS9nURUR5 UR[5 [R"US-SSS9 SSS5 [R(aLURnUS-UlUR[5 UR	5 SSS5 X2lgg!,(df   Np=f!,(df   N'=f!X2lf=f)N�test01_nullT���createrKzaF)	r:rr2r�r3r�rF�
_USE_POSIX�_name)r��	name_tsmb�sms�	orig_names    r�*test_shared_memory_name_with_embedded_null�<_TestSharedMemory.test_shared_memory_name_with_embedded_null�s����&�&�}�5�	��(�(��4�c�J������
�
�#�
�
�
�z�
*��&�&�y�5�'8��S�Q�+��#�#��	�	�I�
&�%��-��	��&�&�z�2��J�J�L�3�&�	�$�+�
*��3�2��&�	�s0�C�C>�;C-�C>�
C*�-
C;�7C>�>Dc� �URS5n[R"USSS9nURUR5 URURU5 URURS5 UR[UR5UR5 URUR[U55 UR[UR5[U55 SURS'URURSS5 [R"U5nURURSS5 UR5 [R"USUR-S9nURURSUR-5 UR5 UR[ 5 [R"SS	S9 SSS5 UR[ 5 [R"S
S9 SSS5 ["R$R'S5n[R(nURS
5URS5/nUVs/sHo�U-PM	 nnXul[R"SSS9n	URU	R5 URU	R,US5 Xul[R"SSS9n
URU
R5 URU
R,US5 SSS5 [R.(a�URS5n[R"USSS9nUR[05 URURS5 [R"U5n
U
R	5 U
R5 UR5 UR	5 SSS5 UR[25 [R"USSS9nSSS5 [R.(aW"SS[R5nU"U5nURURUR5 UR5 UR[05 [R"S5nUR	5 SSS5 UR5 g!,(df   GN=f!,(df   GN�=fs snf!,(df   GN�=f!UR	5 f=f!,(df   GNT=f!,(df   GN2=f!,(df   N�=f)N�test01_tsmbTr>r?rcrr�r����F�r@�,multiprocessing.shared_memory._make_filename�	test01_fn�	test02_fnr��test01_dblunlinkr�c�F�\rSrSr\R
\R-rSrg)�O_TestSharedMemory.test_shared_memory_basics.<locals>.OptionalAttachSharedMemoryi�r_N)	r�r�r�r�rCr@�O_RDWR�_flagsr�r_rr�OptionalAttachSharedMemoryrQ�s�����b�i�i�/�rrT�test01_notthere)r:rr2r�r3rr-r�rKr�r�r�r�r!�
assertLessr�rFrGr)r*�_SHM_NAME_PREFIX�side_effectrBrA�FileNotFoundError�FileExistsError)r�rCrD�also_sms�same_sms�mock_make_filename�NAME_PREFIX�namesr-�shm1�shm2�name_dblunlink�sms_uno�sms_duo�there_can_only_be_one_smsrT�ok_if_exists_sms�nonexisting_smss                  r�test_shared_memory_basics�+_TestSharedMemory.test_shared_memory_basics�s���&�&�}�5�	��(�(��4�c�J������
�
�#�	
������9�-�������#�.�����C�G�G��c�h�h�7�	
�
�
�c�h�h��C��)��
�
�c�#�(�(�m�S��X�.������
���������R�(�!�-�-�i�8��������a��"�-�����!�-�-�i�b����k�J������
�
�r�#�(�(�{�3������
�
�z�
*��&�&�d��<�+��
�
�z�
*��&�&�e�4�+�
�]�]�
 �
 �:�<�?Q�'�8�8�K��'�'��4�d�6H�6H��6U�V�E�5:�:�E�D�4�'�E�E�:�-2�*� �-�-�T��B�D��O�O�D�K�K�(����T�Z�Z��q��2�-2�*� �-�-�T��B�D��O�O�D�K�K�(����T�Z�Z��q��2�#<�&�#�#�"�/�/�0B�C�N�#�0�0�����G�
�"�"�#4�5�	%��+�+�G�L�L�$�?�+�8�8��H�G��N�N�$��M�M�O��M�M�O��N�N�$�6��
�
��
/�)6�(B�(B����)�%�0��#�#�
0�]�-G�-G�
0�9�)�D�����-�2�2�C�H�H�=��"�"�$��
�
�0�
1�+�8�8�9J�K�O��"�"�$�2�	�	�	��c+�
*��+�
*��;�<�<��T�N�N�$��6�5��0�
/��02�
1�st� T�T�7T4�T/�B,T4�U�A"U�=U�+U-�'U?�
T�
T,�/T4�4
U�U�U�
U*�-
U<�?
V
c�`�[RRS5n[RnURS5URS5/nUVs/sHoBU-PM	 nnX1l[R"SSS9nURUR5 URURUS5 X1l[R"SSS9nURUR5 URURUS5 SSS5 gs snf!,(df   g=f)NrL�	test03_fn�	test04_fnTr�r?r)rGr)r*rrWr:rXr2r�r3rrB)r�r]r^r_r-r`ras       r�test_shared_memory_recreate�-_TestSharedMemory.test_shared_memory_recreates����]�]�
 �
 �:�<�?Q�'�8�8�K��'�'��4�d�6H�6H��6U�V�E�5:�:�E�D�4�'�E�E�:�-2�*� �-�-�T��B�D��O�O�D�K�K�(����T�Z�Z��q��2�-2�*� �-�-�T��B�D��O�O�D�K�K�(����T�Z�Z��q��2�#<�<��;�<�<�s�7D�D�%B,D�D�
D-c��UR[5 [R"SSS9nSSS5 UR[5 [R"SSS9nSSS5 UR[5 [R"SS9nSSS5 g!,(df   Nt=f!,(df   NR=f!,(df   g=f)NTrBr?rrK)r�rFrr2)r��sms_invalids  r�#test_invalid_shared_memory_creation�5_TestSharedMemory.test_invalid_shared_memory_creations���
�
�
�z�
*�'�4�4�D�r�J�K�+��
�
�z�
*�'�4�4�D�q�I�K�+��
�
�z�
*�'�4�4�D�A�K�+�
*�+�
*��+�
*��+�
*�s#�B�	B+�<B<�
B(�+
B9�<
C
c	��[[RS-5GH�nURUS9 [R
"SSS9nUR
UR5 SURSS&[R"X!S	9n[R"U5nURU[R
5 URURUR5 UR[URSS5S5 UR[URSS5S5 S
URSS&UR[URSS5S
5 UR[URSS5S
5 SURSS&UR[URSS5S5 UR[URSS5S5 SSS5 GM� g!,(df   GM�=f)Nr���protoTr>r?�picklerr^��protocolsnewvalsoldval)r��pickle�HIGHEST_PROTOCOLrrr2r�r3r��dumps�loadsr�rr-r�)r�rurD�pickled_sms�sms2s     r�"test_shared_memory_pickle_unpickle�4_TestSharedMemory.test_shared_memory_pickle_unpickle's����6�2�2�Q�6�7�E����E��*�#�0�0��3�G������
�
�+�(�����!��%�l�l�3�?���|�|�K�0���%�%�d�M�,F�,F�G�� � ����4�9�9�5�� � ��s�w�w�q��|�!4�i�@�� � ��t�x�x��!�}�!5�y�A� )�����!��� � ��s�w�w�q��|�!4�i�@�� � ��t�x�x��!�}�!5�y�A� )�����1�
�� � ��s�w�w�q��|�!4�i�@�� � ��t�x�x��!�}�!5�y�A�-+�*�8�*�*�s�F>G<�<
H	c���[[RS-5H�nURUS9 [R
"SSS9nSURSS&[R"X!S	9nUR5 UR5 UR[5 [R"U5 SSS5 SSS5 M� g!,(df   N=f!,(df   M�=f)
Nr�rtTr>r?rvrr^rw)
r�ryrzrrr2r�r{r!r3r�rYr|)r�rurDr}s    r�.test_shared_memory_pickle_unpickle_dead_object�@_TestSharedMemory.test_shared_memory_pickle_unpickle_dead_objectAs����6�2�2�Q�6�7�E����E��*�#�0�0��3�G��(�����!��$�l�l�3�?���	�	���
�
���&�&�'8�9��L�L��-�:�+�*�8�:�9��+�*�s$�A.C�C	�4C�	
C�C�
C)	c�D�[R"SSS9nURUR5 UR	UR
URS4S9nSUlUR5 UR5 UR[URSS5S5 UR	UR
US4S9nSUlUR5 UR5 UR[URSS5S5 UR5 g)NTr>r?showdyr�r�sHELLO)rr2r�r3r�r6r-r�r�r�rr�r�r!)r�rDr�s   r�#test_shared_memory_across_processes�5_TestSharedMemory.test_shared_memory_across_processesPs����(�(��3�?������
�
�#�
�L�L��9�9��(�(�H�%�
�
�����	���	�	��������s�w�w�r��{�+�X�6�
�L�L��9�9��x��
�
�����	���	�	��������s�w�w�r��{�+�X�6��	�	�rr)z#not feasible in non-posix platformsc�(�[RR5nUR5 UR	[S55n[R"URR[R5 UR	[S55nUR[5 [R"[R"5[R5 SSS5 UR5 g!,(df   N=fr�)rr�SharedMemoryManagerr��
ShareableListr�rCr�r�rrvrr�rZr�r�)r��smm�sl�sl2s    r�4test_shared_memory_SharedMemoryServer_ignores_sigint�F_TestSharedMemory.test_shared_memory_SharedMemoryServer_ignores_sigintls����&�&�:�:�<���	�	���
�
�u�R�y�
)��
	������ � �&�-�-�0�����b�	�*���
�
�0�
1��G�G�B�I�I�K����/�2�	����2�
1�s�19D�
Dzresource_tracker is posix onlyc��Sn[RRRSU5up#nUR	U5 g)Nz�if 1:
            from multiprocessing.managers import SharedMemoryManager


            smm = SharedMemoryManager()
            smm.start()
            sl = smm.ShareableList(range(10))
            smm.shutdown()
        r�)r�rrr�rr�s     r�>test_shared_memory_SharedMemoryManager_reuses_resource_tracker�P_TestSharedMemory.test_shared_memory_SharedMemoryManager_reuses_resource_tracker�s;��
���|�|�1�1�B�B�4��M����	
����rc�:�[RR5nUR[5 URSS9 SSS5 UR
5 [SS5Vs/sHo!R[U55PM nn[SSS5Vs/sHoARUS9PM nn[R"USRRS	9nUR[U5S5 [R
"USRS	9nUR[UR5S5 USRnUR!5 ["R$S
:wa2UR[&5 [R
"US	9n	SSS5 [RR5n
U
RS5nU
RSS9nURRnSSS5 ["R$S
:wa3UR[&5 [R"US	9n
SSS5 gg!,(df   GN=fs snfs snf!,(df   N�=f!,(df   N�=f!,(df   g=f)Nr]r�r�rtr���r�r-r2�howdy)rrr�r�rFr2r�r�r�r�shmr-rr�r�r�r�r�r�rY)r��smm1r��lolr�lom�doppleganger_list0�doppleganger_shm0�	held_name�
absent_shm�smm2r�r��	absent_sls              r�-test_shared_memory_SharedMemoryManager_basics�?_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics�s����'�'�;�;�=��
�
�
�z�
*����1��%�+��
�
��6;�A�r�l�D�l��"�"�5��8�,�l��D�38��S�"�3E�G�3E�a�!�!�q�!�)�3E��G�*�8�8�c�!�f�j�j�o�o�N������/�0�!�4�)�6�6�C��F�K�K�H������$5�$9�$9� :�B�?���F�K�K�	��
�
���<�<�7�"��"�"�#4�5�*�7�7�Y�G�
�6��
%�
%�
9�
9�
;�t��#�#�G�,�B��#�#��#�-�C������I�<��<�<�7�"��"�"�#4�5�)�7�7�Y�G�	�6�5�#�-+�
*��E��G�6�5��<�
;��
6�5�s;�I�*#I �I%�I*�7I;�/J�
I�*
I8�;
J	�
Jc���[R"/SQ5nURURR5 URURR[U55 UR[[U55[U55 UR[5 US SSS5 UR[5 SUS'SSS5 URS5nSUS'URX!RS55 URURS5 UR[U5S5 [R "5 [R""S5 UR[$5 UR'S5 SSS5 URUR'S	5S
5 SSS5 URUSS5 URUSS5 UR[)U5S5 S
US
'URUS
S
5 SUS'URUSS5 URURS5 UR+[$S5 SUS'SSS5 URUSS5 SUS'URUSS5 URUSS5 UR+[$S5 SUS'SSS5 URUSS5 UR+[$S5 SUS'SSS5 URUSS5 [R "5 [R""S5 URUR-S
5S5 URUR-S5S5 URUR-S5S5 SSS5 UR/S5n[R"XS9nUR1URRURR5 URX4RR5 UR[U5[U55 URURUR5 SUS'URUSS5 UR1USS5 URR35 URR	5 [R"URRS9nURURRURR5 SUS'URUSS5 URR35 URR35 [R"5nUR[U5S5 URURS5 URUR-S5S5 UR[$5 UR'S5 SSS5 URR35 URR	5 g!,(df   GN�=f!,(df   GN�=f!,(df   GN=f!,(df   GN�=f!,(df   GNX=f!,(df   GN=f!,(df   GN�=f!,(df   GNA=f!URR	5 f=f!,(df   N�=f!URR	5 f=f) N)r��HoWdYgX9��vq�r^NTrcrerCrr�z8s8sdqxxxxxx?xxxxxxxx?q�ignore�100r^rIrJTrc�somerrz8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyuencodésr�r�u	encodéess	123456789sadios�test03_duplicater��MrBipr�any)rr�r�r�r3r�r-r�r�r��
IndexError�_get_packing_formatrr�r��warnings�catch_warnings�simplefilterrFr�r�r�r�r:rTr!)r�r��current_format�name_duplicate�sl_copy�sl_tethered�empty_sls       r�'test_shared_memory_ShareableList_basics�9_TestSharedMemory.test_shared_memory_ShareableList_basics�s���
�
(�
(�>�
��	
������
�
�&�	
�
�
�b�f�f�k�k�3�r�7�+��
�
�c�$�r�(�m�S��W�-��
�
�z�
*��q�E�+��
�
�z�
*��B�q�E�+��/�/��2����1������)?�)?��)B�C�	
������$=�>�	
����R��!�$��
$�
$�
&��!�!�(�+��"�"�:�.������/����R�X�X�c�]�A�.�'�	
����A���(�����B���&�	
����"�I�>�	
���1������A���#���1������A���'�������$7�8�
�
#�
#�J�$?�A�"�B�q�E�A�	
����A���'���1������A��
�+�����A���)�
�
#�
#�J�$?�A��B�q�E�A�	
����A���)�
�
#�
#�J�$?�A� �B�q�E�A�	
����A���)��
$�
$�
&��!�!�(�+����R�X�X�b�\�1�-����R�X�X�h�/��3����R�X�X�h�/��3�'��+�+�,>�?���-�-�b�F��
	!���������W�[�[�-=�-=�>����^�[�[�-=�-=�>����T�"�X�t�G�}�5����R�Y�Y����7��G�B�K����W�R�[�"�-�����2���+��K�K�����K�K��� �$�1�1�r�v�v�{�{�C����������k�o�o�&:�&:�;���B������B���%�������
������!�.�.�0��	"����S��]�A�.����X�_�_�b�1����X�^�^�E�2�A�6��"�"�:�.����t�$�/��L�L��� ��L�L���!�I+�
*��+�
*��$/�.��'�
&��.A�A��A�A��A�A��'�
&��(
�K�K��� ��"/�.��
�L�L���!�s��/Z�Z�",[�Z/� )[�<[�$[%�[7�A:\	�=C2\�A-]�<\:�"]�
Z�
Z,�/
Z>	�9[�
[�
["�%
[4�7
\�	
\�\7�:
]�]�]'c��[[RS-5GH�nURUS9 [R
"[S55nUR
URR5 [R"X!S9n[R"U5nURU[R
5 URUSS5 URX$5 SUS'URUSS5 S	US
'URUS
S	5 [R
"[S55nUR
URR5 [R"XQS9nUR[U5[U55 URR5 URR5 URR5 SSS5 GM� g!,(df   GM�=f)Nr�rtrtrwrBr]�changedrr�newvaluerIi�)r�ryrzrrr�r�r�r3r{r|r�r�assertIsNotr�r!)r�rur��
serialized_sl�deserialized_sl�	larger_sl�serialized_larger_sls       r�)test_shared_memory_ShareableList_pickling�;_TestSharedMemory.test_shared_memory_ShareableList_pickling)sy���6�2�2�Q�6�7�E����E��*�"�0�0��r��;��������
�
�.� &���R� @�
�"(�,�,�}�"=���%�%�#�]�%@�%@�B�� � ���!4�a�8�� � ��5�%.���"�� � ��A��	�2�"��1��� � ���!3�Z�@�)�7�7��c�
�C�	����	�
�
� 4� 4�5�'-�|�|�I�'N�$�� � ��]�!3�S�9M�5N�O��
�
�#�#�%��#�#�)�)�+�������/+�*�8�*�*�s�F3G1�1
H	c��[[RS-5H�nURUS9 [R
"[S55n[R"X!S9nURR5 URR5 UR[5 [R"U5 SSS5 SSS5 M� g!,(df   N=f!,(df   M�=f)Nr�rtrtrw)
r�ryrzrrr�r{r�r!r3r�rYr|)r�rur�r�s    r�5test_shared_memory_ShareableList_pickling_dead_object�G_TestSharedMemory.test_shared_memory_ShareableList_pickling_dead_objectDs����6�2�2�Q�6�7�E����E��*�"�0�0��r��;�� &���R� @�
����������
�
���&�&�'8�9��L�L��/�:�+�*�8�:�9��+�*�s$�A=C)�,C�C)�
C&�"C)�)
C8	c���Sn[R"[RSSU/[R[RS9nUR
R
5R5R5nUR5 UR5 Sn[R"[RU5Hn[R"USS9nM ["R$S:XaT[&R("S	U3S
5 UR*R-5R5nUR/SU5 SSS5 g![ a  Mf=f!,(df   g=f)NaXif 1:
            import os, time, sys
            from multiprocessing import shared_memory

            # Create a shared_memory segment, and send the segment name
            sm = shared_memory.SharedMemory(create=True, size=10)
            sys.stdout.write(sm.name + '\n')
            sys.stdout.flush()
            time.sleep(100)
        �-Er�r�zIA SharedMemory segment was leaked after a process was abruptly terminatedFrKr)�/rz[resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown)�
subprocess�Popenr�r��PIPEr��readline�strip�decoder7rrrtr5rr2rYrCr-r*�
unregisterr�r6r�)r�r�r�r-�err_msgrwr�r�s        r�4test_shared_memory_cleaned_after_process_termination�F_TestSharedMemory.test_shared_memory_cleaned_after_process_terminationRs,��	���
�
�s�~�~�t�T�3�?�%/�_�_�%/�_�_�6�9:��8�8�$�$�&�,�,�.�5�5�7�D�
�K�K�M�
�F�F�H�;�G��+�+�G�,@�,@�'�J���'�4�4�T�%�H�C�K��w�w�'�!�!�+�+�a��v�J��H�
�h�h�m�m�o�,�,�.���
�
�D�EH�J�=6�6��)�����6�6�s2�BE%�	E�A,E%�
E"�E%�!E"�"E%�%
E3c���Sn[R"SSS9n[R"SXR5up4nURSU5 UR
US5 [R"SURS	9nUR5 UR5 UR5 g![a Nf=f!UR5 O![a Of=fUR5 f=f)
Nz�if 1:
            import sys
            from multiprocessing.shared_memory import SharedMemory
            mem = SharedMemory(create=False, name=sys.argv[1], track=False)
            mem.close()
        Trtr?r�sresource_trackerrF)r@r-)
rr2rr�r-rIrr!r3r�)r�r��memr�r�r��mem2s       r�test_shared_memory_untracking�/_TestSharedMemory.test_shared_memory_untrackings������(�(��2�>��	�(�9�9�$��X�X�N�L�B�S����0�#�6����R��#� �-�-�U����J�D��J�J�L�
��
�
��
�I�I�K���
��
��
��
�
����
��
���I�I�K�sB�A7C�B2�2
B?�>B?�C6�C�C6�
C"�C6�!C"�"C6c��Sn[R"SSS9n[R"SXR5up4nURUS5 UR
SU5 UR5 [R"URS5 UR5 g![a N>f=f!UR5 O![a Of=f[R"URS5 UR5 f=f)	Nz�if 1:
            import sys
            from multiprocessing.shared_memory import SharedMemory
            mem = SharedMemory(create=False, name=sys.argv[1], track=True)
            mem.close()
        Trtr?r�rs[resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdownr)
rr2rr�r-rr�r3r�r*r�rBr!)r�r�r�r�r�r�s      r�test_shared_memory_tracking�-_TestSharedMemory.test_shared_memory_tracking�s������(�(��2�>��	�(�9�9�$��X�X�N�L�B�S����R��#��M�M�A�BE�
G�
��
�
��
�'�'��	�	�?�C��I�I�K���
��
��
��
�
����
��
���'�'��	�	�?�C��I�I�K�sB�AB4�"B$�$
B1�0B1�4D	�6C�D	�
C�D	�C�5D	r_N)r�r�r�r�r�r�r6r:rFrhrmrqrr�r�rGrXrCr-r�r.r�r�r�r�r�r�r�r�r�r_rrr0r0ps%��#�M�����)�
&�n�`3�,B�B�4
.��8�_�_�R�W�W��'�)N�O��P��.�_�_�R�W�W��'�)I�J�%��&�K��(H�<o"�b�60�+J�Z�_�_�R�W�W��'�)I�J�%��&�K��4�_�_�R�W�W��'�)I�J�%��&�K�rr0c�j�\rSrSrSrSrSr\S5rSr	\
R"S5S5rS	r
g
)�
_TestFinalizei�r%c��[RR5Ul[RR	5 gr)r�_finalizer_registryr�registry_backupr�r�s rr��_TestFinalize.setUp�s+��#�7�7�<�<�>���� � �&�&�(rc��[R"5 UR[R5 [RRUR5 gr)r�r�rrr��updater�r�s rr��_TestFinalize.tearDown�s9��
�
�
������1�1�2�� � �'�'��(<�(<�=rc��"SS[5nU"5n[R"X1RSS9 A[R
"5 U"5n[R"XARSS9nU"5 U"5 A[R
"5 U"5n[R"XaRSS9 U"5n[R"XqRSSS	9 U"5n[R"X�RS
SS	9 U"5n	[R"X�RSSS	9 U"5n
[R"X�RS
SS	9 [R"SURSSS	9 [R"SURSSS	9 [R"5 UR5 [R"S5 g)Nc��\rSrSrSrg)�)_TestFinalize._test_finalize.<locals>.Fooi�r_Nr�r_rrr�r�����rr�)r�rL)r�)r�)�d10r�)rS�exitpriority)�d01r)�d02)�d03)rLi����)�STOPi����)
r�r�Finalizer,r�r��_exit_functionr!rC�_exit)rrr�r�r��close_br�r�r�r�r�s           r�_test_finalize�_TestFinalize._test_finalize�s9��	�&�	�
�E���
�
�a����0�
�
�
�
���E���-�-��9�9�6�:���	��	�
�
�
�
���E���
�
�a����0��e���
�
�c�9�9�8�!�D��e���
�
�c�9�9�8�!�D��e���
�
�c�9�9�8�!�D��e���
�
�c�9�9�8�!�D��
�
�d�D�I�I�F��E��
�
�d�D�I�I�I�D�I�	
�����
�
��
����rc�(�UR5upURURU4S9nSUlUR	5 UR5 [
URS5Vs/sHoDPM nnURU/SQ5 gs snf)Nr�Tr�)r�r�r�r�r�r�rL)	r r�r�r�r�r�rr"r)r�rrr�r�r�s      r�
test_finalize�_TestFinalize.test_finalize�sz���9�9�;����L�L�� 3� 3�:�-�L�H�����	���	�	����!%�d�i�i��!8�9�!8�#�#�!8��9�����!L�M��:s�-Br�c�^^^^	�Sm"U4SjS[5mSm	SmUU	4SjnUUU	4Sjn[R"5n[R"5n[
R"S5 [R"SSS5 [R"US	9[R"US	9/n[R"U5 [R"S
5 Sm	SSS5 TbTe[R"U5 [R"U6 [R"5 g!,(df   NS=f![R"U5 [R"U6 [R"5 f=f)Nc��grr_r_rr�cb�,_TestFinalize.test_thread_safety.<locals>.cb����rc�">�\rSrSrU4SjrSrg)�-_TestFinalize.test_thread_safety.<locals>.Fooic�h>�Xl[R"UT[R"SS5S9 g)Nr�r^)r�)r�rr�r��randint)r�r�s �rr��6_TestFinalize.test_thread_safety.<locals>.Foo.__init__s#������
�
�d�B�V�^�^�A�s�5K�Lr)r�N)r�r�r�r�r�r�)r�s�rr�r�s���
M�
Mrr�Fc��>�T(dL[R"[R"5S-5 [R"5 T(dMKgg![
anUmSnANSnAff=fr�)r�r=r�r�_run_finalizersr|)rLr6�finishs ��r�run_finalizers�8_TestFinalize.test_thread_safety.<locals>.run_finalizers	sN�����
�
�6�=�=�?�T�1�2���(�(�*��f��!���C���s�A�
A,� A'�'A,c�>�0nT(dC[S5Vs1sH
nT"5iM snU[R"S5'T(dMBggs snf![anUmUR	5 SnAN1SnAff=f)Nrtr�)r�r��getrandbitsr|r�)r
r�rLr�r6rs   ���r�make_finalizers�9_TestFinalize.test_thread_safety.<locals>.make_finalizerssk����A���@E�R�y�/I�y�!���y�/I�A�f�(�(��+�,�	�f��0J�� ���C��G�G�I�I���s'�
A�A�A�A�
A:�A5�5A:g���ư>r�rrT)r�r��getswitchintervalr�rr�setswitchintervalrrPr�r	�
start_threadsr�r=r�)
r�rr�old_interval�
old_thresholdr�r�r�r6rs
      @@@@r�test_thread_safety� _TestFinalize.test_thread_safety�s���	�	M�&�	M�����		�
	��,�,�.���(�(�*�
�
	��%�%�d�+����Q��1�%� �'�'�~�>� �'�'��?�A�G�!�/�/��8��
�
�3����9����	��
�!�!�,�/����m�,��J�J�L�9�8��
�!�!�,�/����m�,��J�J�L�s&�A,D;�D*�
D;�*
D8�4D;�;AE;)r�N)r�r�r�r�r�r�r�rr�r�rr
r
r�r_rrr�r��sK��"�M�)�>�
�%��%�N	N�
���u�%�4�&�4rr�c� �\rSrSrSrSrSrg)�_TestImportStari6c��SSKn[RR[R
5n[RR
URU5S5nURU5nUVs/sHEn[RR[RRU5S5SPMG nnUVs/sHnSU-PM
 nnURS5 URS5 U$s snfs snf)Nrz*.pyr�zmultiprocessing.zmultiprocessing.__init__r)�globrCr��dirnamer�__file__r��escape�splitext�splitr�r�)r�r�folder�pattern�filesr8�modulesr�s        r�get_module_names� _TestImportStar.get_module_names8s����������!9�!9�:���'�'�,�,�t�{�{�6�2�F�;���	�	�'�"��EJ�K�U��2�7�7�#�#�B�G�G�M�M�!�$4�Q�$7�8��;�U��K�3:�;�7�a�%��)�7��;����1�2����(�)����	L��;s
�6AC=�Dc�.�UR5n[RS:Xa4URS5 URS5 URS5 O-URS5 [(dURS5 [
cURS5 UHrn[
U5 [RUnUR[US5U5 URH%nUR[X45U<SU<35 M' Mt g)	Nr2zmultiprocessing.popen_forkz multiprocessing.popen_forkserverz!multiprocessing.popen_spawn_posixz!multiprocessing.popen_spawn_win32zmultiprocessing.sharedctypes�__all__z does not have attribute )rr�r�r�rpr=r�rr�rur)r�rr-�mod�attrs     r�test_import�_TestImportStar.test_importCs����'�'�)���<�<�7�"��N�N�7�8��N�N�=�>��N�N�>�?��N�N�>�?� �=����A�B��=��N�N�9�:��D��t���+�+�d�#�C��O�O�G�C��3�T�:���������C�&�7:�D�A��$�rr_N)r�r�r�r�rr"r�r_rrrr6s��	�rrc�:�\rSrSrSrSr\S5rSrSr	Sr
g)	�_TestLoggingiar%c��[R"5nUR[R5 URUSL5 UR
S5 URS5 UR[5 g)Nzthis will not be printedz
nor will this)	r�
get_logger�setLevelr�
SUBWARNINGr��debug�info�	LOG_LEVEL)r��loggers  r�test_enable_logging� _TestLogging.test_enable_loggingesV�� �+�+�-��������(�����d�*�+����/�0����O�$����	�"rc�l�[R"5nURUR55 gr)rr'r,�getEffectiveLevel)rrr-s   r�_test_level�_TestLogging._test_levelms%�� �+�+�-���	�	�&�*�*�,�-rc��SnSn[R"5n[R"5nURn[R
"SS9upgUR
U5 URURU4S9nUR5 URXR55 UR5 UR5 UR
[R5 UR
U5 URURU4S9nUR5 URX&R55 UR5 UR5 UR
U5 UR
[S9 g)Nr��%Frr�)�level)rr'�logging�	getLoggerr6r r(r�r2r�rr"r�r!�NOTSETr,)	r��LEVEL1�LEVEL2r-�root_logger�
root_levelr6r7r�s	         r�
test_level�_TestLogging.test_levelrs������ �+�+�-���'�'�)�� �&�&�
�(�-�-�U�;���������L�L�� 0� 0��y�L�A��	���	��������/�	����	���	�������'����V�$��L�L�� 0� 0��y�L�A��	���	��������/�	����	���	����Z�(����i��(rc�x�[R"5nURnUR[R
5 [R"5n[R"U5nSnUR[R"U55 URU5 URS5 [R"S5 URS5 [R R#[$5nUR'5nUR)SUS3U5 UR)SUS3U5 UR)SUS	3U5 URU5 UR+U5 UR-5 g!URU5 UR+W5 UR-5 f=f)
Nz*[%(levelname)s] [%(filename)s] %(message)sr��2�3z[INFO] [z] 1z] 2z	[DEBUG] [z] 3)rr'r6r(r�DEBUGr�r�r7�
StreamHandler�setFormatter�	Formatter�
addHandlerr+r*rCr��basenamerr5r��
removeHandlerr!)r�r-�original_levelr�rr�logging_format�filename�
log_records        r�
test_filename�_TestLogging.test_filename�sG�� �+�+�-������	��O�O�D�J�J�'��[�[�]�F��+�+�F�3�G�I�N�� � ��!2�!2�>�!B�C����g�&��K�K����I�I�c�N��L�L����w�w�'�'��1�H����*�J��M�M�H�X�J�c�2�J�?��M�M�H�X�J�c�2�J�?��M�M�I�h�Z�s�3�Z�@��O�O�N�+�� � ��)��M�M�O��
�O�O�N�+�� � ��)��M�M�O�s�D/F�4F9r_N)r�r�r�r�r�r.rr2r>rNr�r_rrr%r%as*��"�M�#��.��.�)�8rr%c�h�\rSrSrSr\S5r\R"\	"\
S5S5S5rSrg)	�_TestPollEintri�r%c�z�[R"S5 [R"U[R
5 gr�)r�r=rCr�rv�SIGUSR1)rrs  r�_killer�_TestPollEintr._killer�s���
�
�3��
����V�^�^�$rrS�requires SIGUSR1c�^�S/mU4Sjn[R"5n[R"[RU5nUR	UR
U4S9nUR
5 UR	[RSS9nUR
5 UR5 UR5 URTS5 URURS5 [R"[RU5 g!UR5 f=f![R"[RU5 f=f)NFc�>�STS'g)NTrr_)rS�
got_signals �r�record�._TestPollEintr.test_poll_eintr.<locals>.record�s��� �J�q�Mrr�)rCr)
rCr�rvrSr�rTr�r�r=r�r�rr�)r�rZr�
oldhandler�killerr�rYs      @r�test_poll_eintr�_TestPollEintr.test_poll_eintr�s�����W�
�	!��i�i�k���]�]�6�>�>�6�:�
�	6��\�\����S�F�\�C�F��L�L�N�
��L�L��
�
��L�>�����	��������
��O�O�J�q�M�*����Q�Z�Z��+��M�M�&�.�.�*�5��	���
��
�M�M�&�.�.�*�5�s%�+D+�2>D�0AD+�D(�(D+�+'Er_N)
r�r�r�r�r�rrTrGrrurvr^r�r_rrrQrQ�sC��"�M��%��%�������3�5G�H�6�I�6rrQc�F�\rSrSr\R
"\S5S5rSrg)�TestInvalidHandlei��skipped on Windowsc� �[RRS5nUR5 SUlUR[[
4[RRS5 g![[
4a NOf=f!SUlf=f)Ni�M�rB)rrv�
Connectionr4rFr��_handler�rds  r�test_invalid_handles�&TestInvalidHandle.test_invalid_handles�sy���)�)�4�4�X�>��	 ��I�I�K� �D�L����:�w�/�)�4�4�?�?��	E��
�G�$�	��	��
 �D�L�s#�A.�.B�>B�B�B�	B
r_N)	r�r�r�r�rGrX�WIN32rfr�r_rrrara�s"��
�_�_�U�0�1�E�2�Errac� �\rSrSrSrSrSrg)�	OtherTesti�c��"SS[5nUR[R[RR
U"5S5 g)Nc� �\rSrSrSrSrSrg)�FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectioni�c��g)N�something bogusr_�r�rKs  rr �QOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.recv_bytes�s��)rc��grr_�r�rOs  rr"�QOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.send_bytes����rr_N)r�r�r�r�r r"r�r_rr�_FakeConnectionrm�s��
*�
rrv�abc)r�r�r�AuthenticationErrorrv�deliver_challenge�r�rvs  r�#test_deliver_challenge_auth_failure�-OtherTest.test_deliver_challenge_auth_failure�s=��	�f�	�
	
���/�=�=�)�4�4�F�F�)�+�V�	5rc��"SS[5nUR[R[RR
U"5S5 g)Nc�&�\rSrSrSrSrSrSrg)�EOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnectionic��SUlgrE�r�r�s rr��NOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.__init__s	����
rc��U=RS-
slURS:Xa[RR$URS:Xagg)Nr�rCror)r�rrv�
_CHALLENGErps  rr �POtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.recv_bytess=���
�
�a��
��:�:��?�*�5�5�@�@�@��Z�Z�1�_�-�rc��grr_rss  rr"�POtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.send_bytes
rurr�N)r�r�r�r�r�r r"r�r_rrrvrs��
�
�
rrvrw)r�r�rrxrv�answer_challengerzs  r�"test_answer_challenge_auth_failure�,OtherTest.test_answer_challenge_auth_failure�s=��	�f�	�	
���/�=�=�)�4�4�E�E�)�+�V�	5rr_N)r�r�r�r�r{r�r�r_rrrjrj�s��5�5rrj�md5c�*�\rSrSrSrSrSrSrSrg)�ChallengeResponseTestissupadupasecretkeyc�V�[RRURU5$r)rrv�_create_responser�)r��messages  r�create_response�%ChallengeResponseTest.create_responses$���)�)�:�:��L�L�'�
�	
rc�V�[RRURX5$r)rrv�_verify_challenger�)r�r��responses   r�verify_challenge�&ChallengeResponseTest.verify_challenges$���)�)�;�;��L�L�'�
�	
rc�P�SH�nURSU<35 SnU(aSURS5-nOSnX2-nURU5nURU5(dUR	U5 URX$5 SSS5 M� g!,(df   M�=f)N)Nr�r�zalgo=sis-twenty-bytes-longs{%s}r�r)rrr��
startswithr}r�)r��algor#r9r�s     r�test_challengeresponse�,ChallengeResponseTest.test_challengeresponse s���+�D�������j�)�-���$�t�{�{�7�';�;�F� �F��l���/�/��4���*�*�6�2�2��I�I�h�'��%�%�c�4�*�)�,�)�)�s�A.B�
B%	r_N)	r�r�r�r�r�r�r�r�r�r_rrr�r�s��#�G�
�

�
5rr�c�.�U=RS-
slgr�)r�)�nss r�initializerr�:s���G�G�q�L�Grc�,�\rSrSrSrSrSrSrSrg)�TestInitializersi=c��[R"5UlURR5UlSURlgrE)rr�rr�r�r�r�s rr��TestInitializers.setUp?s1��"�*�*�,����(�(�$�$�&�������rc�l�URR5 URR5 grrr�s rr��TestInitializers.tearDownDrrc�P�[RR5nUR[UR
S5 UR[UR45 URURRS5 UR5 UR5 gr�)rr�SyncManagerr��	TypeErrorr�r�r�rr�r�r�)r�r�s  r�test_manager_initializer�)TestInitializers.test_manager_initializerHsj���$�$�0�0�2�����)�Q�W�W�a�0�	����d�g�g�Z�(���������q�)�	�
�
��	���rc�$�UR[[RSS9 [R"S[UR
45nUR
5 UR5 URUR
RS5 g)Nr�)r�)
r�r�rr�r�r�r!r�rr�r$s  r�test_pool_initializer�&TestInitializers.test_pool_initializerPsa�����)�_�%9�%9�q��I�� � ��K�$�'�'��<��	���	�	������������q�)r)rr�N)	r�r�r�r�r�r�r�r�r�r_rrr�r�=s���
��*rr�c�X�URSS9ng![Ra gf=f)NF)�block)rrgrv)r��items  r�_this_sub_processr�\s-��
��u�u�5�u�!����=�=�
��
�s��)�)c��[R"5n[R"[U4S9nSUlUR5 UR
5 g)Nr�T)rr r�r�r�r�r�)r$�subProcs  r�
_test_processr�bs>���!�!�#�E��%�%�->�e�X�N�G��G�N��M�M�O��L�L�Nrc�
�X-$rr_r�s r�_afuncr�ir�rc��[R"SS9nUR[/SQ5nUR	5 UR5 g)Nrrr%)r�rCrIrrr�r^re)rr�r�r�r!r�)r�rs  r�pool_in_processr�ls5�����!�,�D�����.�/�A��J�J�L��I�I�Krc�6�\rSrSrSr\S5rSrSrSr	g)�
_file_likeirc��XlSUlgr)�	_delegate�_pid)r��delegates  rr��_file_like.__init__ss��!����	rc�|�[R"5nXR:wa
Xl/UlUR$r)rCr�r��_cacher�s  r�cache�_file_like.cachews-���i�i�k���)�)���I��D�K��{�{�rc�:�URRU5 gr)r�r�rss  rr��_file_like.write�s���
�
���$�rc�z�URRSRUR55 /Ulg)Nr)r�r�r�r�r�r�s r�flush�_file_like.flush�s(�������R�W�W�T�Z�Z�0�1���r)r�r�r�N)
r�r�r�r�r��propertyr�r�r�r�r_rrr�r�rs%������� �rr�c�&�\rSrSrSrSrSrSrg)�TestStdinBadfiledescriptori�c�t�[R"[S9nUR5 UR	5 g�Nr)rr�r�r�r�)r�r�s  r�test_queue_in_process�0TestStdinBadfiledescriptor.test_queue_in_process�s$���&�&�m�<���
�
���	�	�rc�t�[R"[S9nUR5 UR	5 gr�)rr�r�r�r�r$s  r�test_pool_in_process�/TestStdinBadfiledescriptor.test_pool_in_process�s$���#�#�?�;��	���	�	���rc��^�[R"5n[U5mTRS5 [R
"U4SjS9nTR
5 UR5S:Xdeg)Nr�c�$>�TR5$r)r�)�flikes�rr$�:TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>�s���e�k�k�mrr)r�r�r�r�rr�r�r5)r��sior�r�s   @r�
test_flushing�(TestStdinBadfiledescriptor.test_flushing�sQ����k�k�m���3���
���E���&�&�.C�D��
���
��|�|�~��&�&�&rr_N)r�r�r�r�r�r�r�r�r_rrr�r��s���
�
'rr�c���\rSrSr\S5rSSjr\S5rSSjrSr	Sr
\R"S5S	5r
\S
5r\R"S5S5rSrS
rg)�TestWaiti�c��[S5H\nU(a,[R"[R"5S-5 UR	U[
R"545 M^ UR5 g)Nrtr)r�r�r=r�r,rCr�r!)rr<�slowr�s    r�_child_test_wait�TestWait._child_test_wait�sL���r��A���
�
�6�=�=�?�U�2�3�
�F�F�A�r�y�y�{�#�$��	
���	rc��^�SSKJn /n/m/n[S5H�n[R"SS9upg[R
"URXq4S9nSUlUR5 UR5 URU5 TRU5 URUR5 M� U(a:U"U5H%nUR5n	URU	5 M' U(aM:UR!5 [#U4Sj[S	555n
UR%XJ5 g![a% URU5 UR5 M�f=f)
Nrr
rrFrr�Tc3�R># �UHnTHo!UR4v� M M g7fr)r)rtr�r�r�s   �rru�%TestWait.test_wait.<locals>.<genexpr>�s����G�i���A�a�e�e�*��*�i�s�$'rt)�multiprocessing.connectionrr�rr r�r�r�r�r!r�r�r�r"r/r�r�rxr)r�r�r�readers�messagesr�r)r<r�r#r�r�s           @r�	test_wait�TestWait.test_wait�s���3��������q��A�"�'�'�u�5�D�A��'�'�t�/D�/D�A�9�U�A��A�H�
�G�G�I�
�G�G�I��N�N�1���L�L��O��O�O�A�F�F�#����'�]��)��&�&�(�C�
�O�O�C�(�#��g�	�
�
���G�e�B�i�G�G������,�� ���N�N�1�%��G�G�I��s�
D;�;+E*�)E*c�@�[R"5nURU5 [S5HYnU(a,[R"[
R
"5S-5 UR
SU-RS55 M[ UR5 g)Nrtr�%s
r�)	r�r�r�r�r=r�r�rr!)rr�r�rr�s     r�_child_test_wait_socket� TestWait._child_test_wait_socket�sg���M�M�O��	�	�	�'���r��A���
�
�6�=�=�?�U�2�3�
�I�I�v��z�)�)�'�2�3��	
���	rc��SSKJn [R"[R
S45nUR
5n/n/n0n[S5Hfn[R"URXA4S9n	SU	lU	R5 URU	5 URU	R5 Mh [S5H*nUR!5up�URU
5 /Xz'M, UR#5 U(afU"U5HQn
U
R%S5nU(d#UR'U
5 U
R#5 M>XzRU5 MS U(aMfSRS[S	555R)S
5n
UR+5H$nUR-SRU5U
5 M& g)Nrr
rrr�Tr�rc3�,# �UH
nSU-v� M g7f)r�Nr_rss  rru�,TestWait.test_wait_socket.<locals>.<genexpr>�s���9�y�!�6�A�:�y�s�rtr�r)r�rr�r�rr�r�r�rr�r�r�r�r�r�r�r~r!r"r�rrr)r�r�rr�r�r�r��dicr�r�r)rwr#r��vs               r�test_wait_socket�TestWait.test_wait_socket�sc��3�� � �-�"4�"4�a�!8�9���}�}����������q��A��'�'�t�/K�/K�.2�\�;�A��A�H�
�G�G�I��L�L��O��O�O�A�F�F�#�
��q��A��8�8�:�D�A��N�N�1���C�F��	
���	���'�]���f�f�R�j����N�N�1�%��G�G�I��F�M�M�#�&�
#��g��7�7�9�u�R�y�9�9�@�@��I������A����S�X�X�a�[�(�3�rc�&�URS5 gr�)r�r�s r�test_wait_slow�TestWait.test_wait_slow�s�����t�rc�&�URS5 gr�)r�r�s r�test_wait_socket_slow�TestWait.test_wait_socket_slow�s�����d�#rr�c�^�SSKJn Sn[R"5up4[R
"5nU"X4/U5n[R
"5U-
nUR
U/5 URXr[-
5 URS5 U"X4/S5nUR
Xc/5 g)Nrr
r0r�)
r�rrr r�r�rrBrLr,)r�rr6r�r�r�r�r�s        r�test_wait_timeout�TestWait.test_wait_timeout�s���3����#�#�%������ ���A�6�7�#����� �5�(������b�!����5�I�"5�6�	���t���A�6�2�������c�"rc�P�UR5 [R"U5 gr)r�r�r=)rr�periods   r�signal_and_sleep�TestWait.signal_and_sleep	s�����
��
�
�6�rc���SSKJn SnSn[R"S5n[R"5upV[R
"URXB4S9nUR5 URUR[5 URURSS95 [R"5nU"XWRU/US-5n	[R"5U-
n
URX�R/5 UR!X�S-5 UR#X�S-
5 UR%S5 [R"5nU"XWRU/S5n	[R"5U-
n
URU"U	5U"URU/55 UR!U
S	5 UR%S5 [R"5nU"XWRU/S5n	[R"5U-
n
URU"U	5U"XWRU/55 UR!U
S	5 UR'5 UR)5 g)
Nrr
rIc��[USS9$)Nc��[U5$r)r�r�s rr$�>TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>s��B�q�Er)r^)rx)r�s rr$�,TestWait.test_wait_integer.<locals>.<lambda>s��F�1�/�:rr�r�r0rCg�������?)r�rrrr r�r�r�r�r�r�r�r�r�r�rrVrBr,r7r�)r�rr��sorted_rr�r�r�r�r�r�s           r�test_wait_integer�TestWait.test_wait_integers���3���:���'�'��*���#�#�%����#�#�4�+@�+@�*-��
:��	
���	����a�j�j�#�.�������B��/�0���� ���A�z�z�1�%�x�"�}�5����� �5�(������z�z�l�+�����!�|�,����5�Q�,�/�	���t����� ���A�z�z�1�%�r�*����� �5�(��������w��
�
�A��'?�@�����s�#�	���t����� ���A�z�z�1�%�r�*����� �5�(��������w��:�:�q�/A�'B�C�����s�#�	���
�	���rc�0�SSKJn [R"5up#[R
"5nU"U/SS9n[R
"5U-
nUR
U/5 URUS5 UR5 UR5 g)Nrr
rBr0r�)	r�rrr r�r�rrVr!)r�rr�r�r�r�s      r�test_neg_timeout�TestWait.test_neg_timeout:sp��3��#�#�%����N�N����A�3��#���N�N��q� ������b�!�����1��	���	�	���	rr_NrJ)r�r�r�r�rr�r�r�r�r�r�rr
r�r�r	r		r�r_rrr�r��s�������-�<����!4�F�$�
���z�*�#�+�#�"����
���z�*�)�+�)�V	rr�c�x�\rSrSr\R
"\S5S5r\R"\S5S5r	Sr
g)�TestInvalidFamilyiIrbc��UR[5 [RR	S5 SSS5 g!,(df   g=f)Nz\\.\test�r�rFrrvrxr�s r�test_invalid_family�%TestInvalidFamily.test_invalid_familyKs0��
�
�
�z�
*��&�&�/�/��<�+�
*�
*��	� ?�
A
z skipped on non-Windows platformsc��UR[5 [RR	S5 SSS5 g!,(df   g=f)Nz/var/test.piper	r�s r�test_invalid_family_win32�+TestInvalidFamily.test_invalid_family_win32Ps1��
�
�
�z�
*��&�&�/�/�0@�A�+�
*�
*�r	r_N)r�r�r�r�rGrXrhr	rr	r�r_rrr	r	IsE��
�_�_�U�0�1�=�2�=����� B�C�B�D�Brr	c�:�\rSrSr\S5r\S5rSrSrg)�	TestFlagsiYc�T�UR[[R55 gr)r,r�r��flags�rrs  r�run_in_grandchild�TestFlags.run_in_grandchildZs���	�	�%��	�	�"�#rc��SSKn[R"U5nURSS9upEUR	UR
U4S9n[R"[S9 UR5 SSS5 UR5nUR5 UR5 UR5 [[R5U4n[!UR#U55 g!,(df   N�=f)NrFrr�)�category)�jsonrr�r r�r	r�r��DeprecationWarningr�r"r�r!r�r�r	�printr{)	rrUr	�mpr)r<r��grandchild_flagsr	s	         r�run_in_child�TestFlags.run_in_child^s����
�
(�
(��
6���w�w�e�w�$����J�J�c�3�3�1�$�J�?��
�
$�
$�.@�
A�
�G�G�I�B��6�6�8��	����	���	�	���	��s�y�y�!�#3�4��
�d�j�j��� �B�
A�s�C.�.
C<c��SSKnS[R"5<S3n[R"[
RSSSSU/5nURURS55upEURXE5 g)	NrzIfrom test._test_multiprocessing import TestFlags; TestFlags.run_in_child(�)r�z-Sz-Or�r�)
r	rrQr��check_outputr�r�r|r�r)r�r	�progrO�child_flagsr"	s      r�
test_flags�TestFlags.test_flagsmst���
&�&5�&F�&F�&H�%K�1�
N�	
��&�&�
�^�^�T�4��t�T�:�<��(,�
�
�4�;�;�w�3G�(H�%������7rr_N)	r�r�r�r�rr	r#	r*	r�r_rrr	r	Ys-���$��$��!��!�
8rr	c�*�\rSrSr\S5rSrSrg)�TestTimeoutsi}c���[R"S5 URS5 UR5 [R
R
U5nURS5 UR5 g)Nr�r�r�)r�r=r,r!rrvr})r�childr�rs    r�
_test_timeout�TestTimeouts._test_timeout~sK���
�
�1�
�
�
�
�3��
���
��)�)�0�0��9���	�	�#���
�
�rc���[R"5n[R"S5 [R"SS9up#[R
R
SS9n[R"URX4R4S9nUR5 UR5 URUR5S5 UR5 UR5nURUR5S5 UR5 UR5 [U5 [R"U5 g![R"U5 f=f)	NrTr�AF_INETrtr�r�r�)r��getdefaulttimeout�setdefaulttimeoutrr rvrxr�r0	r�r�r!rr"r~r()r��old_timeout�parentr/	r�r�rs       rr��TestTimeouts.test_timeout�s����.�.�0��	2��$�$�S�)�+�0�0��=�M�F��*�*�3�3�9�3�E�A��'�'�t�/A�/A�.3�Y�Y�-?�A�A�
�G�G�I��K�K�M����V�[�[�]�C�0��L�L�N��8�8�:�D����T�Y�Y�[�#�.��J�J�L�
�G�G�I���O��$�$�[�1��F�$�$�[�1�s�DE�E$r_N)r�r�r�r�rr0	r�r�r_rrr-	r-	}s������2rr-	c��\rSrSrSrSrg)�TestNoForkBombi�c��[R"5n[RR	[RR[5S5nUS:waQ[RRRX!5up4nURUS5 URSU5 g[RRRX!5up4nURUR5S5 URUS5 g)Nzmp_fork_bomb.pyr{rsRuntimeErrors123)rrQrCr�r�rrr�rr�assert_python_failurerr�r�rM)r�r�r-r�r�r�s      r�test_noforkbomb�TestNoForkBomb.test_noforkbomb�s���
�
-�
-�
/���w�w�|�|�B�G�G�O�O�H�5�7H�I��
��<��<�<�5�5�K�K�D�U�L�B�S����S�#�&��M�M�/�3�/��<�<�5�5�F�F�t�P�L�B�S����S�Z�Z�\�6�2����S�#�&rr_N)r�r�r�r�r=	r�r_rrr:	r:	�s��
'rr:	c�*�\rSrSr\S5rSrSrg)�TestForkAwareThreadLocki�c� �US:�aP[R"URUS-
U4S9nUR5 UR	5 [U5 O(UR
[[R55 UR	5 g)Nr�r�)
rr�r/	r�r!r(r,r�r�_afterfork_registry)rr�rr�s    rr/	�TestForkAwareThreadLock.child�s`���q�5��'�'�s�y�y��!��T�{�K�A�
�G�G�I��J�J�L���O��I�I�c�$�2�2�3�4��
�
�rc�j�[R"S5up[R"5n[	[R
5n[R"URSU4S9nUR5 UR5 UR5n[U5 URXd5 g)NFr�r�)
rr r�ForkAwareThreadLockr�rB	r�r/	r�r!r"r(�assertLessEqual)r�r)r<r��old_sizer��new_sizes       rr��!TestForkAwareThreadLock.test_lock�s~���#�#�E�*����$�$�&���t�/�/�0���#�#�4�:�:�Q��F�C��	���	�	���	��6�6�8���Q�����X�0rr_N)r�r�r�r�rr/	r�r�r_rrr@	r@	�s��
����	1rr@	c�6�\rSrSrSrSr\S5rSrSr	g)�TestCloseFdsi�c�T�[(a#[R"5R5$[R"5R5n/nUS:a/URU5 [R
"U5nUS:aM/UHn[R"U5 M U$)Nr�)rhr��detachr�rC�dupr!)r�rB�to_closers    r�get_high_socket_fd�TestCloseFds.get_high_socket_fd�s~���5��=�=�?�)�)�+�+�����'�'�)�B��H��r�'�����#��V�V�B�Z���r�'����������Irc���[(aA[R"[R[RUS9R	5 g[
R"U5 g)N)r()rhr�r3	�SOCK_STREAMr!rC)r�rBs  rr!�TestCloseFds.close�s5���5��M�M�&�.�.�&�*<�*<�R�H�N�N�P��H�H�R�Lrc��[R"U[R[R5nUR	5 URS5 g![anURU5 SnAgSnAff=fr)r��fromfdr3	rS	r!r,r|)rrrBrrLs     r�_test_closefds�TestCloseFds._test_closefds�sX��	��
�
�b�&�.�.�&�2D�2D�E�A�
�G�G�I��I�I�d�O��	�	��I�I�a�L�L��	�s�4A�
A=�"A8�8A=c�(�[(d[R"S5e[R"5upUR5n[R"URX#4S9nUR5 UR5 UR5n[U5 URU5 UR5 UR5 [R"5S:XaURUS5 gSnURU[5 UR!UR"["R$:H=(d UR&U:HU5 g!URU5 UR5 UR5 f=f)Nzrequires fd picklingr�r{i6')rprGrHrr rP	r�rW	r�r!r"r(rQr�r�r�r�r�rG�winerror)r�r6r7rBr�rL�WSAENOTSOCKs       r�test_closefd�TestCloseFds.test_closefd�s���}��#�#�$:�;�;�(�-�-�/���
�
$�
$�
&��
	��'�'�t�/B�/B�.4�\�;�A�
�G�G�I��L�L�N����
�A���O��J�J�r�N��L�L�N��L�L�N��+�+�-��7��M�M�!�T�"��K��!�!�!�W�-��O�O�A�G�G�u�{�{�2�6��J�J�+�5�q�
:��
�J�J�r�N��L�L�N��L�L�N�s
�
AE�3Fr_N)
r�r�r�r�rP	r!rrW	r\	r�r_rrrK	rK	�s%���$�����:rrK	c���\rSrSr\"\R\R5r\	S5r
\R"\
"\S5S5S5r\	S5r\R"\
"\S5S5S5rSrg	)
�TestIgnoreEINTRic���Sn[R"[RU5 URS5 UR5nURU5 UR	SUR
-5 g)Nc��grr_�r�frames  rrr�-TestIgnoreEINTR._test_ignore.<locals>.handlerr�r�ready�x)rvrSr,r"r"�
CONN_MAX_SIZE)rrrrrs    r�_test_ignore�TestIgnoreEINTR._test_ignoresR��	��
�
�f�n�n�g�.��	�	�'���I�I�K���	�	�!������s�0�0�0�1rrSrVc��[R"5up[R"URU4S9nSUlUR5 UR
5 URUR5S5 [R"S5 [R"UR[R5 [R"S5 UR!S5 URUR5S5 [R"S5 [R"UR[R5 URUR#5SUR$-5 [R"S5 UR'5 UR
5 g!UR
5 f=f)Nr�Tre	ri�rf	)rr r�rh	r�r�r!rr"r�r=rCr�rrvrSr,r rg	r�rhs    r�test_ignore�TestIgnoreEINTR.test_ignore s��*�/�/�1���	��'�'�t�/@�/@�.8�]�<�A��A�H�
�G�G�I��������T�Y�Y�[�'�2��J�J�s�O��G�G�A�E�E�6�>�>�*��J�J�s�O��I�I�d�O����T�Y�Y�[�$�/��J�J�s�O��G�G�A�E�E�6�>�>�*����T�_�_�.��t�7I�7I�0I�J��J�J�s�O�
�F�F�H��J�J�L��D�J�J�L�s�FF5�5Gc�<�Sn[R"[RU5 [RR	5nURUR5 UR5nURS5 SSS5 g!,(df   g=f)Nc��grr_rb	s  rrr�6TestIgnoreEINTR._test_ignore_listener.<locals>.handler9r�r�welcome)rvrSrrvrxr,r�r~)rrrrr�r�s     r�_test_ignore_listener�%TestIgnoreEINTR._test_ignore_listener7s`��	��
�
�f�n�n�g�.�
�
'�
'�
0�
0�
2�a��I�I�a�i�i� ����
�A�
�F�F�9��3�
2�
2�s�=B
�
Bc��[R"5up[R"URU4S9nSUlUR5 UR
5 UR5n[R"S5 [R"UR[R5 [R"S5 [RR!U5nUR#UR5S5 UR%5 UR
5 g!UR
5 f=f)Nr�Trrp	)rr r�rq	r�r�r!r"r�r=rCr�rrvrSrvr}rr�)r�rrr�r�r�s      r�test_ignore_listener�$TestIgnoreEINTR.test_ignore_listenerAs���*�/�/�1���	��'�'�t�/I�/I�.8�]�<�A��A�H�
�G�G�I������i�i�k�G��J�J�s�O��G�G�A�E�E�6�>�>�*��J�J�s�O�$�/�/�6�6�w�?�F����V�[�[�]�I�6�
�F�F�H��J�J�L��D�J�J�L�s�DD+�+D=r_N)r�r�r�r��maxr�
PIPE_MAX_SIZE�
SOCK_MAX_SIZErg	rrh	rGrrurvrk	rq	rt	r�r_rrr_	r_	s�����-�-�w�/D�/D�E�M��2��2�������3�5G�H��I��,����������3�5G�H��I�rr_	c��\rSrSr\S5rSrSr\S5r	Sr
\"S5S5rS	r
S
rSrSr\R$"\R(S
:HS5\"S5S55r\S5r\S5rSrSrg)�TestStartMethodiTc�L�UR[R"55 gr)r,rrQr	s  r�_check_context�TestStartMethod._check_contextUs���	�	�/�2�2�4�5rc�:�URSS9up#URURU4S9nUR5 UR	5 UR5nUR	5 UR
5 URXQR55 g)NFrr�)	r r�r|	r�r!r"r�rrQ)r�r�r)r<r��child_methods      r�
check_context�TestStartMethod.check_contextYst���x�x�u�x�%����K�K�t�2�2�!��K�>��	���	�	���	��v�v�x��	���	�	��������';�';�'=�>rc��SH�n[R"U5nURUR	5U5 URUR5U5 UR
[URS5 UR
[URS5 URU5 M� g![a M�f=f)N�r{rOrerO)	rr�rFrrQr�r�r~r�	)r��methodr�s   rr*�TestStartMethod.test_contextcs���5�F�
�%�1�1�&�9��
���S�1�1�3�V�<��M�M�#�/�/�+�S�1����j�#�*>�*>��H����j�#�*>�*>��E����s�#�6���
��
�s�B5�5
C�Cc��grr_r_rr�_dummy_func�TestStartMethod._dummy_funcos��rc�H�SH�n[R"SSS9 [R"U5nUR	UR
S9nUR
5 UR5 UR[R"SS95 M� g![a M�f=f)Nr�	Tryrrw)
rr~r�rFr�r�	r�r�rrQ)r�r�	r�r's    r�test_spawn_dont_set_context�+TestStartMethod.test_spawn_dont_set_contextss���6�F��,�,�T��>�
�%�1�1�&�9���k�k��)9�)9�k�:�G��M�M�O��L�L�N����o�>�>�$�O�P�6��
�
��
�s�B�
B!� B!z+freeze_support is not start method specificc�*�[R"SSS9 [R"5 UR[R"SS95 [R"S5 [R"SSS9 g![R"SSS9 f=f)NTryrwrO)rr~�freeze_supportrrQr�s r�$test_freeze_support_dont_set_context�4TestStartMethod.test_freeze_support_dont_set_context�ss��	�(�(��T�:�	?��*�*�,�����0�0�D�A�
C�
�,�,�W�5��,�,�T��>��O�,�,�T��>�s�AA;�;Bc��[R"S5nUR[S5 UR/SQ5 SSS5 g![a [R"S5ef=f!,(df   g=f)Nrezforkserver should be availablez&module_names must be a list of stringsrH)rr�rFrGrHr�r��set_forkserver_preload)r�r�s  r�test_context_check_module_types�/TestStartMethod.test_context_check_module_types�sn��	F�!�-�-�l�;�C��
#�
#�I�/W�
X��&�&�y�1�Y�
X���	F��#�#�$D�E�E�	F��
X�
X�s�A�A/�!A,�/
A=c�>�[R"[5 Sn[R"5nSGHn[R"USS9 UR
[R"5U5 [R"5nUR
UR5U5 UR[U5RR5RU55 URURRR5RU55 UR[5 US-
nGM [R"USS9 URUS5 g![
a GMLf=f![R"USS9 f=f)Nrr�	Tryr�)rr�	�PRELOADrQr~rFrr�r�rKr��lowerr�r�r�	r�)r�r��
old_methodr�	r�s     r�test_set_get�TestStartMethod.test_set_get�sB���.�.�w�7���$�5�5�7�
�	E�9���#�4�4�V�4�H�� � ��!A�!A�!C�V�L�%�1�1�3��� � ��!5�!5�!7��@�����S�	� 2� 2� 8� 8� :� E� E�f� M�N�����K�K�(�(�.�.�0�;�;�F�C�E��"�"�?�3���
��:�
�,�,�Z�t�D�����q�)��"�����
�,�,�Z�t�D�s/�F�E3�C<F�3
F�=F�F�F�Fc��[R"5n[RS:XaUR	US/5 gURUSS/:H=(d# USS/:H=(d U/SQ:H=(d U/SQ:H5 g)Nr2rOr{r�	)rOr{re)r�get_all_start_methodsr�r�rr�)r��methodss  r�test_get_all�TestStartMethod.test_get_all�sz��!�7�7�9���<�<�7�"����W�w�i�0��O�O�G���'8�8�G�#���'8�8�G�#�'F�F�G�$�'F�F�
Hrc��[R"5S:waURS5 [RR[RR
[5S5n[RRRU5up#nUR5nUR5nUR5S:wdUS:wa([U5 [U5 URS5 gg)Nrez*test only relevant for 'forkserver' methodz
mp_preload.py�okrz(failed spawning forkserver or grandchild)rrQr�rCr�r�rrr�rrr�r�rMr 	r})r�r-r�r�r�s     r�test_preload_resources�&TestStartMethod.test_preload_resources�s����+�+�-��=��M�M�F�G��w�w�|�|�B�G�G�O�O�H�5��G���|�|�1�1�B�B�4�H�����j�j�l���j�j�l���:�:�<�4��3�"�9��#�J��#�J��I�I�@�A�$-rr2z*Only Spawn on windows so no risk of mixing�avoids redundant testing.c�d�SH�n[R"S5R5n[R"U5nUR[U4S9nSnUR[U5 UR5 SSS5 M� SH�n[R"5Hrn[R"U5R5n[R"U5nUR[U4S9nUR5 UR5 Mt M� g!,(df   GM,=f)N)rOrer{r�zA SemLock created in a fork)
rr�r r�r%r�rqr�r�	r�)r��process_methodr$�process_ctxr�r��queue_methods       r�test_mixed_startmethod�&TestStartMethod.test_mixed_startmethod�s���
6�N�#�/�/��7�=�=�?�E�)�5�5�n�E�K��#�#�;�e�X�#�F�A�3�G��'�'��g�>����	�?�>�6�4�L�"1�"G�"G�"I��'�3�3�L�A�G�G�I��-�9�9�.�I���'�'�{�%��'�J�����	�����#J�4�	?�>�s�-D�
D/	c�&�URS5 gr�r
)rr$s  r�_put_one_in_queue�!TestStartMethod._put_one_in_queue�s
��
�	�	�!�rc��URS5 [R"URU4S9nUR	5 UR5 gr�)r�rr�r�	r�r�)rr$r's   r�_put_two_and_nest_once�&TestStartMethod._put_two_and_nest_once�s9��
�	�	�!��!�)�)��1F�1F�e�X�V���
�
�����rc��[R"5n[R"URU4S9nUR	5 UR5 /nUR
5(d6URUR55 UR
5(dM6UR[U5[SS/55 g)Nr�rCr�)rr r�r�	r�r�rSr�r�assertSetEqualr�)r�r$r'r�s    r�test_nested_startmethod�'TestStartMethod.test_nested_startmethod�s��� �%�%�'��!�)�)��1L�1L�TY�S[�\���
�
���������+�+�-�-��N�N�5�9�9�;�'��+�+�-�-�
	
���C��L�#�q�!�f�+�6rr_N)r�r�r�r�rr|	r�	r*r�r�	r�	rar�	r�	r�	r�	r�	rGrXr�r�r�	r�	r�	r�	r�r_rrrz	rz	Ts����6��6�?�
$��
��
�
Q�!�!N�O�?�P�?�2�*�,H�
B��_�_�S�\�\�W�,�A�C� �!<�=��>�C��&��������7rrz	r\c��\rSrSrSrSrSrSr\R"\
RRS5S5S5r
\S	5rS
rSrSrS
r\R("\"\S5S5S5rSrg)�TestResourceTrackeri�c��Sn[RGH�nURUS9 US;aSSS5 M%[R"5up4[
R"[RSSURXBS9/U/[
RS9n[R"U5 [USS	S
9nUR5R5RS5nUR5R5RS5nSSS5 [!WU5 UR#5 UR%5 SUS
3n	[&R("[&R*U	5Hn
[!WU5 M UR6R95RS5nUR6R5 SRU5n
UR;X�5 UR;USU-5 SSS5 GM� g!,(df   GN=f![,aFnUR/UR0[0R2[0R445 SnA M�SnAff=f!,(df   GMl=f)Na�if 1:
            import time, os
            import multiprocessing as mp
            from multiprocessing import resource_tracker
            from multiprocessing.shared_memory import SharedMemory

            mp.set_start_method("spawn")


            def create_and_register_resource(rtype):
                if rtype == "semaphore":
                    lock = mp.Lock()
                    return lock, lock._semlock.name
                elif rtype == "shared_memory":
                    sm = SharedMemory(create=True, size=10)
                    return sm, sm._name
                else:
                    raise ValueError(
                        "Resource type {{}} not understood".format(rtype))


            resource1, rname1 = create_and_register_resource("{rtype}")
            resource2, rname2 = create_and_register_resource("{rtype}")

            os.write({w}, rname1.encode("ascii") + b"\n")
            os.write({w}, rname2.encode("ascii") + b"\n")

            time.sleep(10)
        )r.)�noop�dummyr�r�)r<r.)�pass_fdsr�rWT)r>r�zA z< resource was leaked after a process was abruptly terminatedr.z8resource_tracker: There appear to be 2 leaked {} objectszresource_tracker: %r: \[Errno)r*r,rrC�piper�r�r�r�r�r�r!r5r�rMr�r/r7rrrtr@r�r�r��ENOENT�EINVALr�r6rg)r�r�r.r)r<r�r8�name1�name2r�rwrLr�r�s              r�test_resource_tracker�)TestResourceTracker.test_resource_tracker�s�����:&�4�4�E����E��*��-�-��	+�*�
�w�w�y����$�$�c�n�n�%)�4����a��1M�&O�/0�c�,6�O�O�=��������!�T�4�0�A��J�J�L�/�/�1�8�8��A�E��J�J�L�/�/�1�8�8��A�E�1�!���.����
�������w�'1�2�� �/�/��0E�0E�29�;�A��(���6�;��h�h�m�m�o�,�,�W�5������� �&�&,�f�!�'#��� � ��/�� � ��&F��&N�O�I+�*�5�1�0��#���
�
�a�g�g����e�l�l�/K�L���	��1+�*�sV�I/�A<I/�4AH
�A"I/�2H�>A>I/�

H�I/�
I,	�&:I'	� I/�'I,	�,I/�/
I?	c��SSKJn URnUbI[R"U[
R5 [R"U[
R*S9 [R"5 [R"S5 UR5 SSS5 URn[R"XA5 [R"S5 [R "S5n[R"SS9n[R"S	5 UR#5nUR%5 UR'5 [(R*"U5nA[,R."5 UR1U"55 U(aqUR3[5U5S
5 USn	UR7[9U	R:[<55 UR7S[?U	R@5;5 OUR3[5U5S5 SSS5 g!,(df   GN�=f!,(df   g=f)Nr�r()r�r�r�rOT)rZ�alwaysr�zresource_tracker: process died)!� multiprocessing.resource_trackerr(r�rCr�rvr�r�wait_processr�r�r�rr�r=rr�rr�r�r�r�r�r�rrr�r��
issubclassr	�UserWarningr�r�)
r�r�
should_dier(rr��all_warnrr��the_warns
          r�check_resource_tracker_death�0TestResourceTracker.check_resource_tracker_deathCs���	G��$�$���?��G�G�C����(�� � ������?�
�
$�
$�
&��!�!�(�+��,�,�.�'� �$�$��
������
�
�3���)�)�'�2��
�
$�
$�D�
1�X��!�!�(�+��-�-�/�C��K�K�M��K�K�M����S�!�B���J�J�L����b�d�#��� � ��X���2�#�A�;�����
�8�+<�+<�k� J�K���� @�#&�x�'7�'7�#8�!9�:�� � ��X���2�%2�
1�'�
&��2�
1�s�4'H*�DH<�*
H9�<
I
c�D�UR[RS5 gr�)r�	rvrr�s r�test_resource_tracker_sigint�0TestResourceTracker.test_resource_tracker_siginths���)�)�&�-�-��?rc�D�UR[RS5 gr�)r�	rvr}r�s r�test_resource_tracker_sigterm�1TestResourceTracker.test_resource_tracker_sigtermls���)�)�&�.�.�%�@r�netbsdzKgh-125620: Skip on NetBSD due to long wait for SIGKILL process termination.c�D�UR[RS5 gr�)r�	rvr�r�s r�test_resource_tracker_sigkill�1TestResourceTracker.test_resource_tracker_sigkillps��	
�)�)�&�.�.�$�?rc��SSKJn UR5 URSU4;nX2R	5-nURU5 g)Nrr�	)r�	r(rr��_check_aliver,)rrr(�reuseds    r�_is_resource_tracker_reused�/TestResourceTracker._is_resource_tracker_reusedvsD��F��(�(�*�#�'�'�D�#�;�6���0�0�2�2���	�	�&�rc�v�SSKJn UR5 URn[R
"SS9up4[R"URXB4S9nUR5 UR5nUR5 UR5 UR5 URU5 g)Nrr�	Frr�)
r�	r(rr�rr r�r�	r�r"r�r!r�)r�r(rr)r<r��is_resource_tracker_reuseds       r�test_resource_tracker_reused�0TestResourceTracker.test_resource_tracker_reused�s���F��(�(�*��$�$���#�#�5�1����#�#�4�+K�+K�*+��
3��	���	�%&�V�V�X�"�	
����	���	�	���	����2�3rc��SnSS[U5-
-nUR[5 [R"X!5 SSS5 g!,(df   g=f)Nrr�r>)r�r�rFr*�register)r�r.�too_long_name_resources   r�test_too_long_name_resource�/TestResourceTracker.test_too_long_name_resource�sF�� ��!$��c�%�j�(8�!9��
�
�
�z�
*��%�%�&<�D�+�
*�
*�s�A	�	
Ac���SSKJn U"5nUR5 URUR	55 URUR5 URSS5 U(aURSS5 SnOSnURUR	55 URUR5 UR5 URURU5 g)Nr��ResourceTracker�somenamer�	r�)r�	r�	rr�r�	r�	_exitcoder�	r��_stopr)r��cleanupr�	r+�expected_exit_codes     r�%_test_resource_tracker_leak_resources�9TestResourceTracker._test_resource_tracker_leak_resources�s���	E�!�#����� �����,�,�.�/����'�+�+�,�����W�-�����z�7�3�!"��!"������,�,�.�/����'�+�+�,��
�
������*�*�,>�?rc��SH*nURUS9 URUS9 SSS5 M, g!,(df   M>=f)zt
Test the exit code of the resource tracker.

If no leaked resources were found, exit code should be 0, otherwise 1
�TF)r�	N)rr�	)r�r�	s  r�test_resource_tracker_exit_code�3TestResourceTracker.test_resource_tracker_exit_code�sA��%�G����g��.��:�:�#�;��/�.�%�.�.�s	�2�
A	�pthread_sigmaskz pthread_sigmask is not availablec��SSKJn [R"[R[55n[R[R[R1nUH�n[R"[RU15 UR[R"[R[55U15 U"5nUR5 UR[R"[R[55U15 UR5 M� [R"[RU5 g![R"[RU5 f=f)Nrr�	)
r�	r�	rvr�	�	SIG_BLOCKr�r}rrS�SIG_SETMASKrrr�	)r�r�	�orig_sigmask�signals�sigr+s      r�%test_resource_tracker_blocked_signals�9TestResourceTracker.test_resource_tracker_blocked_signals�s��
	E��-�-�f�.>�.>���F���>�>�6�=�=�&�.�.�A��
	E����&�&�v�'9�'9�C�5�A�� � ��!7�!7��8H�8H�#�%�!P�SV�RW�X�)�+���&�&�(�� � ��!7�!7��8H�8H�#�%�!P�SV�RW�X��
�
��
�
�"�"�6�#5�#5�|�D��F�"�"�6�#5�#5�|�D�s
�$CE�'Fr_N)r�r�r�r�r�	r�	r�	r�	rGrXr�r�r�r�	r�r�	r�	r�	r�	r�	rrurvr�	r�r_rrr�	r�	�s���FP�P#3�J@�A��_�_�S�\�\�,�,�X�6�b�d�@�d�@�����4�$E�@�*
������):�;�=_�`�E�a�Err�	c�n�\rSrSr\S5rSrSrSr\	RRS5rSr
g)	�TestSimpleQueuei�c���UR5 URUR55 URUR55 UR5 g!UR5 f=fr)rr�rSr�rps    r�_test_empty�TestSimpleQueue._test_empty�sQ������	&��I�I�e�k�k�m�$��I�I�e�k�k�m�$��#�#�%���#�#�%�s�>A!�!A3c���[R"5nUR5 UR[S5 UR5 SSS5 g!,(df   g=f)Nr�)r�SimpleQueuer!r�r�rSr�s  r�test_empty_exceptions�%TestSimpleQueue.test_empty_exceptions�s@��
�'�'�)��	���	�
�
#�
#�G�[�
9�
�G�G�I�:�
9�
9�s�A�
A$c��[R"5n[R"5n[R"5n[R"URXU4S9nSUlUR
5 URUR55 UR5 UR5 URUR55 URUR5S5 URUR5S5 URUR55 UR5 g)Nr�TF)rr
rHr�r�	r�r�r�rSr�rrrrr�)r�r$r_r`r�s     r�
test_empty�TestSimpleQueue.test_empty�s����+�+�-��)�/�/�1��-�3�3�5���&�&��#�#��*=�>�
������
�
��������
�&������ � �"��������'��������d�+��������e�,�������
�&��	�	�rc�n�[R"5nUR5 UR5 gr)rr
r!�r�r$s  rr��TestSimpleQueue.test_close�s"���+�+�-��
���
�
���
rc���[R"5nUR5 URURR
5 URURR
5 gr)rr
r!r��_readerrn�_writerr	
s  r�test_closed�TestSimpleQueue.test_closedsE���+�+�-��
���
�����
�
�,�,�-�����
�
�,�,�-rr_N)r�r�r�r�rr�	r
r
r�r�r�cpython_onlyr
r�r_rrr�	r�	�sA���&��&���0�
�\�\���.��.rr�	c��\rSrSrSrSrg)�TestPoolNotLeakOnFailureic�^^�Sm/m"UU4SjS5nUR[S5 [RR	S[
RRUS9S9nUR5 UR5 SSS5 UR[ST555 g!,(df   N0=f)	NrIc�@>�\rSrSrU4SjrU4SjrSrSrSrSr	g)	�RTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcessic�R>�SUlSUlSUlTRU5 g)NzFake Process)r-r�r=r�)r�rT�forked_processess  �rr��[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.__init__s&���*��	� $��
�!��
� �'�'��-rc�@>�TS::a[S5eTS-mSUlg)Nr�Manually induced OSErrorr�r�)r�r=)r��will_fail_ins �rr��XTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.starts(����1�$�!�"<�=�=���!��&��
rc��SUlg)N�stoppingr<r�s rr7�\TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.terminate"s	��'��
rc�4�URS:XaSUlgg)Nr
�stoppedr<r�s rr��WTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.join%s���:�:��+�!*�D�J�,rc�L�URS:H=(d URS:H$)Nr�r
r<r�s rr��[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.is_alive)s���z�z�Y�.�J�$�*�*�
�2J�Jr)r�r-r=N)
r�r�r�r�r�r�r7r�r�r�)r
r
s��r�FailingForkProcessr
s���
.�
'�
(�
+�
Krr%
r
r�)r�)�contextc3�@# �UHoR5v� M g7frr�)rtr's  rru�ITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>2s���C�2B�w� � �"�"�2B�r�)r�r�rr�r�rGr)�	MagicMockr!r�rr�)r�r%
r�r
r
s   @@r�test_release_unused_processes�6TestPoolNotLeakOnFailure.test_release_unused_processess��������	K�	K�0�
#�
#�G�-G�
H��$�$�)�)�!�X�]�]�5L�5L�*�6M�6,�)�-�A�
�G�G�I�
�F�F�H�	I�
	
����C�2B�C�C�	E�I�
H�s�AB/�/
B=r_N)r�r�r�r�r*
r�r_rrr
r
s��$Err
c��\rSrSrSr\RRrSr	Sr
\S5r\r
SrSr\S5rS	r\S
5rS&Sjr\S5rS&S
jr\S5rS'SjrSr\S5rSr\S5rSr\S5rSr\S5rS(Sjr Sr!\S5r"Sr#\S5r$Sr%\S5r&Sr'\S 5r(S!r)\S"5r*S#r+S$r,g%))�TestSyncManagerTypesi5a9Test all the types which can be shared between a parent and a
child process by using a manager which acts as an intermediary
between them.

In the following unit-tests the base type is created in the parent
process, the @classmethod represents the worker process and the
shared object is readable and editable between the two.

# The child.
@classmethod
def _test_list(cls, obj):
    assert obj[0] == 5
    assert obj.append(6)

# The parent.
def test_list(self):
    o = self.manager.list()
    o.append(5)
    self.run_worker(self._test_list, o)
    assert o[1] == 6
c�p�UR5UlURR5 SUlgr)�
manager_classr�r�r�r�s rr��TestSyncManagerTypes.setUpNs)���)�)�+�����������	rc��URbSURR5(a4URR5 URR5 URR5 SUlSUlgr)r�r�r7r�r�r�r�s rr��TestSyncManagerTypes.tearDownSsZ���9�9� �T�Y�Y�%7�%7�%9�%9��I�I���!��I�I�N�N�������������	rc�.�[R"5 gr)r�
reap_childrenr`s rr��TestSyncManagerTypes.setUpClass[s�����rc��[UR5 [n[R"5n[
R"USS9H'n[[R"55S::dM' g [R"5U-
nS[
l
[
R"S[R"5SUSS35 g)	NF��errorr�T�"multiprocessing.Manager still has � active children after �.1frm)r(r��WAIT_ACTIVE_CHILDREN_TIMEOUTr�r�rrtr�rrJ�environment_altered�
print_warning)r�r6�
start_timerwrNs     r�wait_proc_exit�#TestSyncManagerTypes.wait_proc_exitas���	�T�Y�Y��.���^�^�%�
��'�'��u�=�A��?�2�2�4�5��:��>����!�J�.�B�*.�G�'��!�!�$F�%4�%D�%D�%F�$G�H;�;=�c�(�(�#L�
Mrc��[R"X4S9UlSURlURR	5 UR5 UR
URRS5 g)Nr�Tr)rr�r�r�r�r@
rr�)r��workerr�s   r�
run_worker�TestSyncManagerTypes.run_workerssV��#�+�+�6��H��	���	�	���	�	��������������+�+�Q�/rc��UR5(deUR5 UR5 URS5 g�Nr�)r�rr��rr�s  rra� TestSyncManagerTypes._test_eventzs/���z�z�|�|��|����
��	�	������rc���URR5nUR5 URURU5 UR5(aeUR
S5 grG
)r�rHr�rD
rar�r�r�rKs  rrd�TestSyncManagerTypes.test_event�sL���L�L��� ��	��������(�(�!�,��8�8�:�:��~�	���u�
rc�$�UR5 gr�r�rH
s  r�
_test_lock�TestSyncManagerTypes._test_lock�������
rc���[URU5"5nURURU5 UR	5 UR[UR5 gr)r�r�rD
rO
r�r�rq�r��lnamerKs   rr��TestSyncManagerTypes.test_lock�sD���D�L�L�%�(�*���������+�	�	�	�����,��	�	�2rc�D�UR5 UR5 gr�r�r�rH
s  r�_test_rlock� TestSyncManagerTypes._test_rlock�������
����
rc�r�[URU5"5nURURU5 gr)r�r�rD
rX
rS
s   rr��TestSyncManagerTypes.test_rlock�s)���D�L�L�%�(�*������(�(�!�,rc�$�UR5 grrN
rH
s  rr�$TestSyncManagerTypes._test_semaphore�rQ
rc��[URU5"5nURURU5 UR	5 gr)r�r�rD
rr�)r��snamerKs   rr�#TestSyncManagerTypes.test_semaphore�s2���D�L�L�%�(�*������,�,�a�0�	�	�	�rc�"�URSS9 g)Nr
)r`
)rr�s rr�+TestSyncManagerTypes.test_bounded_semaphore�s�����"4��5rc�D�UR5 UR5 grrW
rH
s  r�_test_condition�$TestSyncManagerTypes._test_condition�rZ
rc�p�URR5nURURU5 gr)r�r)rD
re
rK
s  r�test_condition�#TestSyncManagerTypes.test_condition�s(���L�L�"�"�$������,�,�a�0rc�H�URS:XdeUR5 gr�)r�r�rH
s  r�
_test_barrier�"TestSyncManagerTypes._test_barrier�s���{�{�a�����	�	�rc�r�URRS5nURURU5 gr�)r�r�rD
rk
rK
s  rr��!TestSyncManagerTypes.test_barrier�s*���L�L� � ��#������*�*�A�.rc�>�U SSS5 g!,(df   g=frr_rH
s  r�
_test_pool�TestSyncManagerTypes._test_pool�s�����S�S�s��
c�n�URRSS9nURURU5 g)Nrrr%)r�r�rD
rp
rK
s  r�	test_pool�TestSyncManagerTypes.test_pool�s+���L�L�����*���������+rc�@�UR5S:XdeUR5(deUR5(aeUR5S:XdeUR5(aeUR5S:XdeUR5(deg�NrCr�r^)rTrXrSrrH
s  r�_test_queue� TestSyncManagerTypes._test_queue�sz���y�y�{�a�����x�x�z�z��z��9�9�;�;����w�w�y�A�~��~��9�9�;�;����w�w�y�A�~��~��y�y�{�{��{rc��[URU5"S5nURS5 URS5 URURU5 UR5(deUR
5(aegrv
)r�r�r�rD
rw
rSrX)r��qnamerKs   r�
test_queue�TestSyncManagerTypes.test_queue�sc���D�L�L�%�(��+��	���a��	���a������(�(�!�,��w�w�y�y��y��6�6�8�8��|�8rc�&�URS5 g)Nr�)r{
r�s r�test_joinable_queue�(TestSyncManagerTypes.test_joinable_queue�s������(rc��[R"5nURUSS5 URURS5S5 URUR	S5S5 UR5 UR
5 UHnM UR[U5S5 URURS5S5 g)Nrr�r�)	rG�TestCaserr�r�r��reverser�ri)rr��casers    r�
_test_list�TestSyncManagerTypes._test_list�s���� � �"������Q���#�������1��q�)�������1��q�)����
����
��A�������S��1�%���������Q�'rc���URR5nURS5 URURU5 URU5 UR
[U5S5 g)Nr�r)r�r�r�rD
r�
rvrr�rK
s  rr`�TestSyncManagerTypes.test_list�sS���L�L�����	������������+����Q������Q���#rc�P�[R"5nUR[U5S5 URUSS5 URUR	S5S5 UR[
UR55S/5 UR[
UR55S/5 UR[
UR55S/5 URUR5SS05 URUR5S5 g)Nr�r�r�)r�r�)rGr�
rr�r�assertListEqualr�r�ryr�assertDictEqualr�assertTupleEqual�popitem�rr�r�
s   r�
_test_dict�TestSyncManagerTypes._test_dict�s���� � �"������S��1�%�����U��Q�'����������+����T�#�)�)�+�.���=����T�#�(�(�*�-��w�7����T�#�*�*�,�/�!��5����S�X�X�Z�%���4����c�k�k�m�Z�8rc���URR5nSUS'URURU5 UR	U5 UR[
U5S5 g)Nr�r�r)r�rwrD
r�
rvrr�rK
s  rr{�TestSyncManagerTypes.test_dict�sQ���L�L�������%���������+����Q������Q���#rc���[R"5nURURS5 URUR	5S5 URS5 g)Nr�rC)rGr�
rr�rr�r�
s   r�_test_value� TestSyncManagerTypes._test_value�sE��� � �"��������A�&��������A�&�����
rc���URRSS5nURURU5 UR	UR
S5 UR	UR
5S5 g)Nr�r�rC)r�rrD
r�
rr�rrK
s  rr$�TestSyncManagerTypes.test_valuesV���L�L���s�A�&������(�(�!�,�������!�$��������!�$rc���[R"5nURUSS5 URUSS5 UR[U5S5 UR	[U5SS/5 g)Nrr�rC)rGr�
rr�r�
r�r�
s   r�_test_array� TestSyncManagerTypes._test_arraysd��� � �"������Q���#�����Q���#�����S��1�%����T�#�Y��A��/rc�x�URRSSS/5nURURU5 g)Nr�rr�)r�rErD
r�
rK
s  rrH�TestSyncManagerTypes.test_arrays0���L�L���s�Q��F�+������(�(�!�,rc��[R"5nURURS5 URURS5 gr�)rGr�
rrrr�
s   r�_test_namespace�$TestSyncManagerTypes._test_namespaces8��� � �"���������"��������"rc��URR5nSUlSUlUR	UR
U5 gr�)r�r�rrrD
r�
rK
s  rr��#TestSyncManagerTypes.test_namespaces6���L�L�"�"�$������������,�,�a�0r)r�r�Nr�)r)r )-r�r�r�r�r�rrr�r/
r�r�rr�r�r@
rD
rardrO
r�rX
r�rrrre
rh
rk
r�rp
rs
rw
r{
r~
r�
r`r�
r{r�
r$r�
rHr�
r�r�r_rrr-
r-
5s����*$�,�,�8�8�M��
�� �� ��M�M�$0����������3�����-������
6�����1�����/�����
,������)��
(��
(�$��	9��	9�$�����%��0��0�-��#��#�
1rr-
c�0�\rSrSr\"S5S5rSrg)�TestNamedResourcei%zspawn specific test.c�f�[RnUR[RU5 [	USSS9nUR[R"S55 SSS5 [R"U5up4nURXURS5S9 g!,(df   NF=f)Nr<r.r/aW                import multiprocessing as mp
                ctx = mp.get_context('spawn')
                global_resource = ctx.Semaphore()
                def submain(): pass
                if __name__ == '__main__':
                    p = ctx.Process(target=submain)
                    p.start()
                    p.join()
            �r#)rr2r�r3r5r��textwrap�dedentrr�rr��r�r7r8r�r�r�s      r� test_global_named_resource_spawn�2TestNamedResource.test_global_named_resource_spawn&s����!�!�����	�(�(�&�1�
�&�#��
0�A�
�G�G�H�O�O�	%�	�	
�1�%�5�5�f�=����	
����*�*�W�"5��6�1�
0�s�&B"�"
B0r_N)r�r�r�r�rar�
r�r_rrr�
r�
%s�� �!7�8�7�9�7rr�
c�.�\rSrSrSr\S5rSrSrg)�_TestAtExiti?r%c�<^�SSKnU4SjnURU5 g)Nrc�t>�[TS5nURS5 SSS5 g!,(df   g=f)Nr<�deadbeef)r5r�)r8�output_paths �r�exit_handler�5_TestAtExit._write_file_at_exit.<locals>.exit_handlerFs'����k�3�'�1����
�#�(�'�'�s�)�
7)�atexitr�	)r�r�
r�
r�
s `  r�_write_file_at_exit�_TestAtExit._write_file_at_exitCs����	$�	����%rc��[R"5n[RR	US5nURURU4S9nUR5 UR	5 [U5nURUR5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nz
output.txtr�r�
)r�temp_dirrCr�r�r�r�
r�r5rr6)r�r�
r�
r�r8s     r�test_atexit�_TestAtExit.test_atexitKs���
�
�
�
!�X��'�'�,�,�x��>�K����D�$<�$<�K�>��R�A�
�G�G�I�
�F�F�H��k�"�a�� � �����:�6�#�"�
!�
#�"��"�
!�s$�A'C�=!B/�C�/
B=	�9C�
Cr_N)	r�r�r�r�r�rr�
r�
r�r_rrr�
r�
?s��"�M��&��&�7rr�
c�d�\rSrSrSrS1rSS1rSrSr\	S5r
S	r\	S
5rSr
SrS
rg)�_TestSpawnedSysPathiVz>Test that sys.path is setup in forkserver and spawn processes.r�rerOc��[[R5Ul[R
"SS9UlSUl[RRURURS35n[USSS9nURS5 SSS5 [RVs/sH
o3(dMUPM sn[RSS&[RRS	UR5 [RRS	S
5 URURUR5 [ R""UR5Ulg!,(df   N�=fs snf)Nztest_sys_path-)r9�unique_test_modr�r<r.r/z# A simple test module
rr)r�r�r��_orig_sys_path�tempfile�mkdtemp�	_temp_dir�	_mod_namerCr�r5r��insertr�rUr�rr��_ctx)r��module_pathr r�s    rr��_TestSpawnedSysPath.setUp]s���"�3�8�8�n���!�)�)�1A�B���*����g�g�l�l�4�>�>�d�n�n�5E�S�3I�J��
�+�s�W�
5���I�I�0�1�6�"%�(�(�0�(�Q�a�q�(�0������������4�>�>�*�������2���
�
�d�'�'��);�);�<�#�/�/��0A�0A�B��	�
6�
5��0s�E+�-
E<�;E<�+
E9c�|�UR[RSS&[R"UR
SS9 g)NT)�
ignore_errors)r�
r�r��shutil�rmtreer�
r�s rr��_TestSpawnedSysPath.tearDownjs'���)�)�������
�
�d�n�n�D�9rc�T�UR[[R55 gr)r�r�r�rr#s r�enq_imported_module_names�-_TestSpawnedSysPath.enq_imported_module_namesns��
�	�	�%����$�%rc��URR5S:waURS5 URUR[
R5 [RRR5 URRSUR/5 URR5nURRURU4S9nUR5 UR!5 UR#5nUR%5 UR'URU5 g)Nre�forkserver specific test.r;r�)r�
rQr�rIr�
r�rrrer�r�	r�	r r�r�
r�r�rr!r�)r�r�r��child_imported_moduless    r�(test_forkserver_preload_imports_sys_path�<_TestSpawnedSysPath.test_forkserver_preload_imports_sys_pathrs����9�9�%�%�'�<�7��M�M�5�6����������5��"�"�.�.�4�4�6��	�	�(�(�
3�T�^�^�D�	F��I�I�O�O����y�y� � ��5�5�Q�D�!�B���
�
���	�	��!"�����	���	��
�
�d�n�n�&<�=rc���UR[R5 [R"U5 URS5 g![
anURU5 SnAgSnAff=fr)r�r�r��	importlib�
import_module�ImportError)r$�mod_namer6s   r�enq_sys_path_and_import�+_TestSpawnedSysPath.enq_sys_path_and_import�sQ��
�	�	�#�(�(��	��#�#�H�-�
�I�I�d�O���	��I�I�c�N�N��	�s�A	�	
A.�A)�)A.c��URR5nURRURXR4S9nUR5 UR
5 UR5nUR5nUR5 URSU5 URURU5 URUSS[RSS5 URUSUR3S9 g)Nr�rr�zchild could not import r�
)r�
r r�r�
r�
r�r�rr!rIr�r�
rr�r�r)r�r�r��child_sys_path�import_errors     r�test_child_sys_path�'_TestSpawnedSysPath.test_child_sys_path�s����I�I�O�O����y�y� � ��3�3�1�n�n�:M�!�O���
�
���	�	��������u�u�w��	���	�����^�,��
�
�d�n�n�n�5�������+�S�X�X�a�b�\�:����,�.E�d�n�n�EU�,V��Wrc���[R"5S:waURS5 [RR[RR
[5S5n[RRRU5up#nURUR5R5S5 URUR5R5S5 g)Nre�forkserver specific testzmp_preload_flush.py�__main____mp_main__)rrQr�rCr�r�rrr�rrr�rr�rM�r�r-rwr�r�s     r�&test_std_streams_flushed_after_preload�:_TestSpawnedSysPath.test_std_streams_flushed_after_preload�s����+�+�-��=��M�M�4�5��w�w�|�|�B�G�G�O�O�H�5�7L�M���l�l�0�0�A�A�$�G����	
�������,�,�.�0E�F��������,�,�.�0E�Fr)r�
r�
r�
r�
N)r�r�r�r�r�r�r�r�r�r�r�
r�
r�
r�
r�
r�r_rrr�
r�
VsZ��H� �M�M�!�7�+�M�C�:��&��&�>� ����
X�Grr�
c�j�\rSrSrSr\"S5S5rSrSrSr	Sr
\"S	5S
5rSr
g)
�MiscTestCasei�c�Z�[R"U[[RSS/S9 g)N�SUBDEBUGr))�extra�not_exported)r�check__all__rrr�s r�test__all__�MiscTestCase.test__all__�s%�����T�?�/�:Q�:Q�+5�|�*D�	Frr�	c��[R"SS5upnURUS5 URX3R	S5S9 g)Nr�z�if 1:
            import sys
            sys.executable = None
            assert "multiprocessing" not in sys.modules, "already imported!"
            import multiprocessing
            import multiprocessing.spawn  # This should not fail
rr.r�
)rr�rrr�)r�r�r�r�s    r�,test_spawn_sys_executable_none_allows_import�9MiscTestCase.test_spawn_sys_executable_none_allows_import�sM��%�5�5��
F�
����	
����Q������*�*�W�"5��6rc���[RnUR[RU5 [	USSS9nUR[R"S55 SSS5 [R"U5up4nURSURS5R55 URXURS5S9 g!,(df   Nu=f)Nr<r.r/z�                import multiprocessing
                def f(x): return x*x
                if __name__ == '__main__':
                    with multiprocessing.Pool(200) as p:
                        print(sum(p.map(f, range(1000))))
            �	332833500r�
)rr2r�r3r5r�r�
r�
rr�rr�r�rr�
s      r�test_large_pool�MiscTestCase.test_large_pool�s����!�!�����	�(�(�&�1�
�&�#��
0�A�
�G�G�H�O�O�%��
�1�%�5�5�f�=��������c�j�j��&9�&?�&?�&A�B�����*�*�W�"5��6�1�
0�s�&C�
Cc��^^�[R"5S:waURS5 [R"5m[R
"U4SjSS9mU4Sjn[R"US9nUR5 UR[R5 URURS5 URTR5S	5 [T5 g)
Nr{zfork specific testc�&>�TRS5$)N�doner
rUs�rr$�=MiscTestCase.test_forked_thread_not_started.<locals>.<lambda>�s
���A�E�E�&�MrTrc�F>�TR5 TR5 gr)r�r�)r�s�rr/	�:MiscTestCase.test_forked_thread_not_started.<locals>.child�s���
�G�G�I�
�F�F�Hrrrr�
)rrQr�r rPr�r�r�r�rr@rr�rur%)r�r/	r�r�r�s   @@r�test_forked_thread_not_started�+MiscTestCase.test_forked_thread_not_started�s�����+�+�-��7��M�M�.�/��!�!�#�����$9�$�G��	�
�#�#�5�1��	���	�	���w�$�$�%�������Q�'���������0��A�rc��[R"5S:waURS5 [RR[RR
[5S5n[RRRU5up#nURUS5 UR5RS5nURU/SQ5 g)Nrer�
zmp_preload_main.pyr�
)r:�__mp_main__r8r8r�rrQr�rCr�r�rrr�rrr�rr�rr�
s     r�test_preload_main�MiscTestCase.test_preload_main�s����+�+�-��=��M�M�4�5��w�w�|�|�B�G�G�O�O�H�5�7K�L���l�l�0�0�A�A�$�G��������c�"��j�j�l� � ��&������G�Hrc���[R"5S:waURS5 [RR[RR
[5S5n[RRRUSS5up#nURUS5 UR5RS5nSnURUS	U3S
U3S	U3S
U3S/5 g)Nrer�
zmp_preload_sysargv.pyr�r�rr�
z['foo', 'bar']zmodule:zfun:rr)r�r-rwr�r��
expected_argvs      r�test_preload_main_sys_argv�'MiscTestCase.test_preload_main_sys_argv�s����+�+�-��=��M�M�4�5��w�w�|�|�B�G�G�O�O�H�5�7N�O���l�l�0�0�A�A��%�� ��������c�"��j�j�l� � ��&��(�
������m�_�%��=�/�"��m�_�%��=�/�"��
�	rr�
c�h�[RR[RR[5S5n[
RRRU5up#nURUS5 UR5RS5nURU/SQ5 g)Nzmp_preload_large_sysargv.pyrr�
)zpreload:5002:sentinelzworker:5002:sentinelr)rCr�r�rrr�rrr�rr�rr�
s     r� test_preload_main_large_sys_argv�-MiscTestCase.test_preload_main_large_sys_argvs���
�w�w�|�|�B�G�G�O�O�H�5�9�;���l�l�0�0�A�A�$�G��������c�"��j�j�l� � ��&������
�	rr_N)r�r�r�r�r�
rar�
r�
r�
rrrjrr�r_rrr�
r�
�sR��F�
!�!<�=�7�>�7�"7�$�,I��(&�&A�B��C�rr�
c�4�\rSrSr\S5r\S5rSrg)�	BaseMixini c��[RRR5[RR54Ulgr)rr'�	_danglingrrP�danglingr`s rr��BaseMixin.setUpClass!s5��'�/�/�9�9�>�>�@�!�+�+�0�0�2�4��rc��[RR5 [[R
R5[URS5-
nU(a.S[Rl[R"SU35 Sn[[R5[URS5-
nU(a.S[Rl[R"SU35 Sng)NrT�Dangling processes: r��Dangling threads: )r�rrIr�rr'r
rr=
r>
rP)rr�r�s   rr��BaseMixin.tearDownClass&s���	
�����!���/�/�9�9�:�S����a��=Q�Q�	��/3�D�L�L�,��!�!�$8���"D�E��	��i�)�)�*�S����a��-A�A���/3�D�L�L�,��!�!�$6�w�i�"@�A��rr_N)r�r�r�r�rr�r�r�r_rrrr s(���4��4����rrc���\rSrSrSr\Rr\Rr\"\R5r	\"\R5r
\"\R5r\"\R5r\"\R5r
\"\R5r\"\R5r\"\R 5r\"\R"5r\"\R$5r\"\R&5r\"\R(5r\"\R*5r\"\R,5r\"\R.5r\"\R05r\"\R25r\"\R45r\"\R65rSrg)rYi9r�r_N)r�r�r�r�r�rr�rvr�r�rrJr�r�r r r�r�r�rr
r)rHr�rrEr!rDr�r_rrrYrY9sN���D��%�%�G� �+�+�J�"�?�#B�#B�C�O�!�/�"@�"@�A�N�"�?�#B�#B�C�O�!�/�"@�"@�A�N���,�,�-�D���,�,�-�D���.�.�/�E� ��!>�!>�?�M���,�,�-�D���.�.�/�E��_�6�6�7�I�#�O�$D�$D�E���_�6�6�7�I���.�.�/�E��?�2�2�3�G���.�.�/�E���.�.�/�E��O�4�4�5�H��O�4�4�5�HrrYc�^�\rSrSrSr\Rr\"\R"S55r
\"\R"S55r\"\R"S55r\"\R"S55r
\"\R"S55r\"\R"S55r\"\R"S	55r\"\R"S
55r\"\R"S55r\"\R"S55r\"\R"S
55r\"\R"S55r\"\R"S55r\"\R"S55r\S5r\U4Sj5r\U4Sj5rSrU=r$)�ManagerMixiniRr�z
manager.Queuezmanager.JoinableQueuezmanager.Lockz
manager.RLockzmanager.Semaphorezmanager.BoundedSemaphorezmanager.Conditionz
manager.Eventzmanager.Barrierz
manager.Valuez
manager.Arrayzmanager.listzmanager.dictzmanager.Namespacec�:�URR"U0UD6$r)r�r�)rrSr�s   rr��ManagerMixin.Poolds���{�{����.��.�.rc�V>�[TU]5 [R"5Ulgr)r�r�rr�r�r�s �rr��ManagerMixin.setUpClasshs���
����%�-�-�/��rc�>�[n[R"5n[R"USS9H'n[[R"55S::dM' OV [R"5U-
nS[l[R"S[R"5SUSS35 [R"5 URR5S	:waYS[Rl[R"S
5 [R"URR55 URR!5 URR#5 SUl[$TU]M5 g)NFr7
r�Tr9
r:
r;
rmrz5Shared objects which still exist at manager shutdown:)r<
r�r�rrtr�rrJr=
r>
r�r�r��_number_of_objectsr��_debug_infor�r�r�r�)rr6r?
rwrNr�s     �rr��ManagerMixin.tearDownClassms%���
/���^�^�%�
��'�'��u�=�A��?�2�2�4�5��:��>����!�J�.�B�*.�G�'��!�!�$F�%4�%D�%D�%F�$G�H;�;=�c�(�(�#L�
M�	�
�
���;�;�)�)�+�q�0�04�D�L�L�,��!�!�#9�
:��!�!�#�+�+�"9�"9�";�<����������������
���rr_)r�r�r�r�r�rr�r��operator�
attrgetterr r�r�r�rr
r)rHr�rrEr�rwr�rr�r�r�r�r[r\s@rrrRsz����D��%�%�G��X�(�(��9�:�E��X�0�0�1H�I�J�M��H�'�'��7�8�D��X�(�(��9�:�E���,�,�-@�A�B�I��� 3� 3�4N� O�P����,�,�-@�A�B�I��X�(�(��9�:�E��x�*�*�+<�=�>�G��X�(�(��9�:�E��X�(�(��9�:�E��H�'�'��7�8�D��H�'�'��7�8�D���,�,�-@�A�B�I��/��/��0��0�� �� rrc��\rSrSrSr\RRr\RRr\	"\RR5r
\	"\RR5r\	"\RR5r\	"\RR5r
\	"\RR5r\	"\RR5r\	"\RR 5r\	"\RR"5r\	"\RR$5r\	"\RR&5r\	"\RR(5r\	"\RR*5r\	"\RR,5r\	"\RR.5r\	"\RR05rSrg)�ThreadsMixini�r�r_N)r�r�r�r�r�rr�	r�rvr�r�rJr�r r r�r�r�rr
r)rHr�rrEr�r_rrr"r"�st���D��#�#�+�+�G� �&�&�1�1�J�"�?�#8�#8�#H�#H�I�O�"�?�#8�#8�#H�#H�I�O���-�-�2�2�3�D���-�-�2�2�3�D���.�.�4�4�5�E� ��!6�!6�!D�!D�E�M���-�-�2�2�3�D���.�.�4�4�5�E��_�2�2�<�<�=�I�#�O�$9�$9�$J�$J�K���_�2�2�<�<�=�I���.�.�4�4�5�E��?�0�0�8�8�9�G���.�.�4�4�5�E���.�.�4�4�5�Err"c	�^^^�USn[5n1SknUR5GH�upx[U[5(dM[	U[
5(GaU[
LaM>[
UR5U::dUR5eUR(aTUR;aM�URH�n	U(aX�:waMU(aMSU	R5-USS-n
XYR5S-n"SSX�[R5nU	S:Xa[R"S	5"U5nU
=UlUlXLlTUlX�U
'M� GMA[	U[R5(dGMcU(aGMm"S
SU[$5nU=UlUlXLlX�U'GM� SS/mS/mUUU4Sjn
UU4SjnX�S
'X�S'g)Nr�>r�r�r��Withr��Mixinc��\rSrSrSrg)�*install_tests_in_module_dict.<locals>.Tempi�r_Nr�r_rr�Tempr'�s��rr(r�r�c��\rSrSrSrg)r'i�r_Nr�r_rrr(r'�s��rc�>�[R"[5 [RR	5 [RR
R
5TS'[R
R
5TS'[R"SS9TS'[R"TSS9 [RRS5(a[R "5n[%5 [&R("5 [R*"5R-[.5 g![a [R"TS-5ef=f!["a [R"S5ef=f)	Nrr�Trwryz start method not supported�linuxz1OSError raises on RLock creation, see issue 3111!)rr�	r�	r'�_cleanupr
rrPrQr~rFrGrHr�r�r�r�r�rKr�get_temp_dirr'r(r,)r�r�old_start_methodrUs ���r�setUpModule�1install_tests_in_module_dict.<locals>.setUpModule�s5����.�.�w�7����(�(�*�%�-�-�7�7�<�<�>�����)�)�.�.�0����-�>�>�$�O����	C��,�,�\��F�
�<�<�"�"�7�+�+�
;�&�,�,�.��	 �!������"�"�$�-�-�i�8���	C��#�#�L�$A�%B�C�
C�	C���
;��'�'�):�;�;�
;�s�D5�E�5$E�!E=c�>�Sn[RR5 [R"TSSS9 [[RR5[TS5-
nU(a0SnS[Rl[R"SU35 Sn[[R5[TS5-
nU(a0SnS[Rl[R"SU35 SnU(a[R"S5 [RR5 g)	NFrTryrr�rr�)r�rrIrr~r�r'r
r=
r>
rPr�r=r�_cleanup_tests)�
need_sleepr�r�rr.s   ��r�tearDownModule�4install_tests_in_module_dict.<locals>.tearDownModule�s�����
�	
�����!��(�(�)9�!�)<�D�I���/�/�9�9�:�S��!��=M�M�	���J�/3�D�L�L�,��!�!�$8���"D�E��	��i�)�)�*�S��!��-=�=����J�/3�D�L�L�,��!�!�$6�w�i�"@�A�����J�J�s�O����+�+�-rr/r4)�globalsr�rrKr�	r�r�r�r��
capitalizerGr�
r�requires_hashdigestr�r�r�rUr�)�remote_globsrU�	only_type�
exclude_typesr��local_globs�	ALL_TYPESr-�base�type_�newnamer%r(r/r4rr.s `             @@r�install_tests_in_module_dictrA�s�����j�)�J��)�K�3�I�!�'�'�)�
���$��%�%���d�L�)�)��|�#���t�)�)�*�i�7�K��9K�9K�K�7��!�!�l�$�:L�:L�&L���+�+����!3�� �� �5�#3�#3�#5�5��Q�R��@��#�$4�$4�$6��$@�A���4��(9�(9���I�%�)�=�=�h�G��M�D�4;�;��
�� 1�",��$0��!�(,�W�%�,���h�/�/�
0�
0���
�t�V�
�04�4�D�M�D�-�(�O�!%���A*�D�d�|�H��v��9�,.�:#.���%3�!�"r�SemLockzSemLock not availabler+z
Linux onlyc��\rSrSrSrSrg)�SemLockTestsic��"SS[R5nS[R"53nU"SSSUS5n[R	U5 g)Nc��\rSrSrSrg)�3SemLockTests.test_semlock_subclass.<locals>.SemLocki
r_Nr�r_rrrBrG
r�rrBztest_semlock_subclass-r�rrtF)rrBrCr��
sem_unlink)r�rBr-rs    r�test_semlock_subclass�"SemLockTests.test_semlock_subclasssG��	�&�.�.�	�'��	�	��}�5���A�q�"�d�E�*���#�#�D�)rr_N)r�r�r�r�rIr�r_rrrDrDs��*rrDc�2�\rSrSr\"SS5S5rSrg)�TestSharedMemoryNamesir&r�	c���[R"SU-5n[R"SU5up4nUR	SU5 URSUR
5U5 URSXU5 g)Na�
            import sys
            from multiprocessing import shared_memory
            from multiprocessing import resource_tracker
            import time

            resource_tracker._resource_tracker._use_simple_format = %s

            # Test various patterns of colons in names
            test_names = [
                "a:b",
                "a:b:c",
                "test:name:with:many:colons",
                ":starts:with:colon",
                "ends:with:colon:",
                "::double::colons::",
                "name\nwithnewline",
                "name-with-trailing-newline\n",
                "\nname-starts-with-newline",
                "colons:and\nnewlines:mix",
                "multi\nline\nname",
            ]

            for name in test_names:
                try:
                    shm = shared_memory.SharedMemory(create=True, size=100, name=name)
                    shm.buf[:5] = b'hello'  # Write something to the shared memory
                    shm.close()
                    shm.unlink()

                except Exception as e:
                    print(f"Error with name '{name}': {e}", file=sys.stderr)
                    sys.exit(1)

            print("SUCCESS")
        r�sSUCCESSs	tracebacksresource_tracker.py)r�
r�
rr�r�rIr�	)r�r&�test_scriptr�r�r�s      r�Gtest_that_shared_memory_name_with_colons_has_no_resource_tracker_errors�]TestSharedMemoryNames.test_that_shared_memory_name_with_colons_has_no_resource_tracker_errorsss���o�o�#'�F �G#' �#!��J%�5�5�d�K�H�����
�
�j�#�&�����s�y�y�{�C�8����/��:rr_N)r�r�r�r�rrOr�r_rrrLrLs��
�!�=�1�+;�2�+;rrL)r4Nr�)�rG�
unittest.mockr$rgr�
r�r�r�r�rCr�r�
r�r[rvrFr�r�r7r�
r�rpr�
rryr�r��test.supportr��test.support.script_helperrrrrrrr	r
rr�
r�*skip_if_broken_multiprocessing_synchronizerPr�r�multiprocessing.dummy�multiprocessing.heap�multiprocessing.managersru�multiprocessing.queuesrrr�HAVE_SEND_HANDLErpr�
�multiprocessing.sharedctypesrrr]r�	HAS_SHMEMrM�HAVE_ASAN_FORK_BUGrHrLrr%r(r-r*r/r)r,r�r�rirjrkr@r�r<
r��
HAVE_GETVALUEr�rhr7rDr^r�	�ctypesr<r=r>r?r�rKrarjr�
rlr�r�r�r�r�r�rr$rVrZr\r�r�rr_rlr�r�r�r�rr=rZr�r�r�r�r�rFr�r�r�r`rergr|r�r�rr�r�r�r�r�	r�r r�r�r�r�r�r�r8r�rr	r!rrrr�r�rr�r�r
rr.r0r�rr%rQrarjr�r�r�r�r�r�r�r�r�r�r	r	r-	r:	r@	rK	r_	rz	rXr�	r�	r
r-
r�
r�
r�
r�
rrYrr"rArurDrLr_rr�<module>r_sy	��
�����	��
�	�	����
��
�
��
��
���
����!��'�&�"�&�&�)�(�!�!�.�.�/A�B���2�2�4��!������+� ��)��.�.�M��8����-��I���
����
�
�]�
^�^�

�	���*��7�7�g��0�5�
�O�O�	�	���
��#2� �H�h��#0� �H�h���(�(��"���,�6��?�?�
�

����	 ��#�
��J�J�}�%�E�
�=�
>��)�=�=�K��2�81L�X�.�.�1L�p0�F�0�"�6��<
*� ��Z	8�<�Z	8�B �/�)�)� �,Q7�l�Q7�n�$�R��R�n
I��I�X3@�\�3@�ll�\�l�^	5W��5W�@&��&�.�
6�F�6�r���x1�<�x1�|C3��C3�LM3��M3�fY/�l�Y/�~��$�
�$�F�$�%�:�$��u!��u!�n��&�L�&�PB �l�B �PI�H��V���,�I�,�	��	�
���5�6��*�	���5�6�;��?�	���5�3�-��@�7>�\�7>�|
������/�;�/����k�I��6�K�K�K�
���{�#��
�/��/�d�#�#�H�-�32�,�32�.�32�l)�)�%�H�-�-�%�D��9��G/�l�G/�R78�L�78�t.�,�.�`L��L�d
���]�$J�K��#�#�H�-�@�|�@�.�L�@�Lb��b�P
�9�
�5)��5)�p�
���Y� H�I��#�#�H�-�B	��B	�.�J�B	�Pu�L�u�x%�h�'�'�%�VB�<�B�x6�\�6�DE��)�)�E�&�#�#�H�-�5��!�!�5�.�5�<�#�#�E�*��#�#�H�-�5�H�-�-�5�.�+�5�N��#�#�H�-�*�x�(�(�*�.�*�<
�������*'��!2�!2�'�*g�x� � �g�Z
B��)�)�
B� 8��!�!�8�H2�8�$�$�2�D'�X�&�&�'�"1�h�/�/�1�><:�8�$�$�<:�DA�h�'�'�A�F`7�h�'�'�`7�F
�������(�=�?�UE�(�+�+�UE�?�UE�n9.�h�'�'�9.�x&E�x�0�0�&E�R�#�#�H�-�l1�8�,�,�l1�.�l1�^7��)�)�7�47�,�7�.QG�,�QG�hp�8�$�$�p�l���26�Y�6�29 �9�9 �x6�9�6�2@E�_4�D
���W�-�y�9�9�;R�S�	�������(�,�7�*�8�$�$�*�8�T�*�
���Y� H�I�-;�H�-�-�-;�J�-;��oV���M������������I���
��
�F���P��E���)��I�$(�(�E�(�H�z�)�sf�3a�
a�a)�a8�9b�b�a�a�a&�%a&�)a5�4a5�8b�b�b�b#�"b#

Youez - 2016 - github.com/yon3zu
LinuXploit