Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_interpreters.cpython-311.opt-2.pyc
�

�KeZ��(�ddlZddlZddlZddlmZddlZddlZddlmZddl	m
Z
e
jd��Zddl	m
Z
d�Zd�Zd%d	�Zejd
���ZGd�dej��ZGd
�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�d e��ZGd!�d"e��ZGd#�d$e��Z dS)&�N)�dedent)�support)�
import_helper�_xxsubinterpreters)�interpretersc��tj��\}}|�dd��}td|�d|�d���}|t	|d���fS)N�
z
                z-
        import contextlib
        with open(zg, 'w', encoding='utf-8') as spipe:
            with contextlib.redirect_stdout(spipe):
                z	
        �utf-8��encoding)�os�pipe�replacer�open)�script�r�w�indented�wrappeds     �@/usr/local/apps/python3/lib/python3.11/test/test_interpreters.py�_captured_scriptrst��
�7�9�9�D�A�q��~�~�d�$8�9�9�H�������	���
�
�G��D��W�-�-�-�-�-�c��tj��D]3}|jdkr�	|����$#t$rY�0wxYwdS�Nr)r�list_all�id�close�RuntimeError��interps r�clean_up_interpretersr!sf���'�)�)�����9��>�>��	��L�L�N�N�N�N���	�	�	��D�	�����s�8�
A�Ac��t|��\}}|5|�||���|���cddd��S#1swxYwYdS)N��channels)r�run�read)r �requestr$r�rpipes     r�_run_outputr)$s���$�W�-�-�M�F�E�	����
�
�6�H�
�-�-�-��z�z�|�|���������������������s�+A
�
A�Ac#�B��K�tj��\�}��fd�}tj|���}|���dV�t|d��5}|�d��ddd��n#1swxYwY|���dS)Nc�T����td��d�����dS)Nz7
            # wait for "signal"
            with open(z5) as rpipe:
                rpipe.read()
            )r%r)r rs��rr%z_running.<locals>.run.sF����
�
�6��������	�	�	�	�	r��targetr�done)r
r�	threading�Thread�startr�write�join)r rr%�t�spipers`    @r�_runningr6+s�������
�7�9�9�D�A�q�������	���$�$�$�A��G�G�I�I�I�	�E�E�E�	
�a������
���F�����������������������F�F�H�H�H�H�Hs�B�B�Bc��eZdZd�ZdS)�TestBasec�"�t��dS�N)r!��selfs r�tearDownzTestBase.tearDownAs�������rN)�__name__�
__module__�__qualname__r=�rrr8r8?s#������ � � � � rr8c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�CreateTestsc��tj��}|�|tj��|�|tj����dSr:)r�create�assertIsInstance�Interpreter�assertInr�r<r s  r�test_in_mainzCreateTests.test_in_mainGsL���$�&�&�����f�l�&>�?�?�?��
�
�f�l�3�5�5�6�6�6�6�6rc�<���tj���d���fd�}tj|���}�5|���ddd��n#1swxYwY|���|��t
j����dS)Nc�~��tj�����������dSr:)rrE�acquire�release)r �locks��r�fz%CreateTests.test_in_thread.<locals>.fOs/���!�(�*�*�F��L�L�N�N�N��L�L�N�N�N�N�Nrr,)r/�Lockr0r1r3rHrr)r<rPr4r rOs   @@r�test_in_threadzCreateTests.test_in_threadLs������~������	�	�	�	�	�	�

��A�&�&�&��
�	�	�
�G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�������
�
�f�l�3�5�5�6�6�6�6�6s�A�A�Ac�&�tj��\}tj��}t|t	d����}tjt
|����}|�tj��|||g��dS)Nz�
            from test.support import interpreters
            interp = interpreters.create()
            print(interp.id)
            )rrrEr)rrG�int�assertEqual)r<�mainr �out�interp2s     r�test_in_subinterpreterz"CreateTests.test_in_subinterpreterZs����%�'�'����$�&�&���&�&�*�#�#����
�*�3�s�8�8�4�4������.�0�0�4���2I�J�J�J�J�Jrc��ttj����}g}td��D]*}tj��}|�|���+|D]}|����tj��}|�ttj����||hz��dS�N�)�setrr�rangerE�appendrrU)r<�before�
interp_lst�_�interpsr s      r�test_after_destroy_allz"CreateTests.test_after_destroy_alles����\�*�,�,�-�-���
��q���	'�	'�A�"�)�+�+�G����g�&�&�&�&� �	�	�F��L�L�N�N�N�N��$�&�&������\�2�4�4�5�5�v���7H�I�I�I�I�Irc��ttj����}tj��}tj��}tj��}|���|���tj��}|�ttj����|||hz��dSr:)r]rrrErrU)r<r`�interp1rX�interp3r s      r�test_after_destroy_somez#CreateTests.test_after_destroy_somess����\�*�,�,�-�-���%�'�'���%�'�'���%�'�'���
�
�����
�
�����$�&�&������\�2�4�4�5�5�v��&�@Q�7Q�R�R�R�R�RrN)r>r?r@rJrRrYrdrhrArrrCrCEsj������7�7�7�
7�7�7�	K�	K�	K�J�J�J�S�S�S�S�SrrCc��eZdZd�Zd�ZdS)�GetCurrentTestsc�~�tj��}tj��}|�||��dSr:)r�get_main�get_currentrU)r<rV�currents   r�	test_mainzGetCurrentTests.test_main�s:���$�&�&���*�,�,������$�'�'�'�'�'rc��t���}tj��}t	|td����}tjt|����}|�||��dS)Nz�
            from test.support import interpreters
            cur = interpreters.get_current()
            print(cur.id)
            )	�
_interpretersrlrrEr)rrGrT�assertNotEqual)r<rVr rWrns     r�test_subinterpreterz#GetCurrentTests.test_subinterpreter�sw���%�%�'�'���$�&�&���&�&�*�#�#����
�*�3�s�8�8�4�4�����G�T�*�*�*�*�*rN)r>r?r@rorsrArrrjrj�s2������(�(�(�
	+�	+�	+�	+�	+rrjc� �eZdZd�Zd�Zd�ZdS)�ListAllTestsc�r�tj��}|�dt|����dS�N�)rrrU�len)r<rcs  r�test_initialzListAllTests.test_initial�s2���'�)�)������C��L�L�)�)�)�)�)rc�,�tj��}tj��}tj��}g}tj��D]}|�|j���|�||j|j|jg��dSr:)rrmrErr_rrU�r<rV�first�second�idsr s      r�test_after_creatingz ListAllTests.test_after_creating�s����'�)�)���#�%�%���$�&�&����"�+�-�-�	"�	"�F��J�J�v�y�!�!�!�!�����t�w���&�)�<�=�=�=�=�=rc�H�tj��}tj��}tj��}|���g}tj��D]}|�|j���|�||j|jg��dSr:)rrmrErrr_rrUr|s      r�test_after_destroyingz"ListAllTests.test_after_destroying�s����'�)�)���#�%�%���$�&�&��
���
�
�
���"�+�-�-�	"�	"�F��J�J�v�y�!�!�!�!�����t�w��	�2�3�3�3�3�3rN)r>r?r@rzr�r�rArrruru�sA������*�*�*�	>�	>�	>�
4�
4�
4�
4�
4rruc���eZdZd�Zd�Zd�Zd�Zejd��d���Z	ejd��d���Z
d�Zejd��d	���Zd
�Z
d�Zd�Zd
S)�TestInterpreterAttrsc�V�tj��}tj��}tj��}|�|jtj��|�|jtj��|�|jtj��dSr:)rrlrmrErFrrq�
InterpreterID)r<rVrnr s    r�test_id_typez!TestInterpreterAttrs.test_id_type�s����$�&�&���*�,�,���$�&�&�����d�g�}�'B�C�C�C����g�j�-�*E�F�F�F����f�i��)D�E�E�E�E�Erc�b�tj��}|�|jd��dSr)rrlrUr�r<rVs  r�test_main_idz!TestInterpreterAttrs.test_main_id�s.���$�&�&�������!�$�$�$�$�$rc���tjd��}|�|jd��|�t
��5tjd��ddd��dS#1swxYwYdS�Nrx�1)rrGrUr�assertRaises�	TypeErrorrIs  r�test_custom_idz#TestInterpreterAttrs.test_custom_id�s����)�!�,�,�������A�&�&�&�
�
�
�y�
)�
)�	*�	*��$�S�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*��
A,�,A0�3A0c��tjd��}|�t��5d|_ddd��dS#1swxYwYdS�Nrx�)rrGr��AttributeErrorrrIs  r�test_id_readonlyz%TestInterpreterAttrs.test_id_readonly�s����)�!�,�,��
�
�
�~�
.�
.�	�	��F�I�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Aznot ready yet (see bpo-32604)c�`�tj��}|�|j��dSr:)rrl�assertFalse�isolatedr�s  r�test_main_isolatedz'TestInterpreterAttrs.test_main_isolated�s,���$�&�&�������'�'�'�'�'rc�`�tj��}|�|j��dSr:)rrEr�r�rIs  r�$test_subinterpreter_isolated_defaultz9TestInterpreterAttrs.test_subinterpreter_isolated_default�s,���$�&�&�������)�)�)�)�)rc���tjd���}tjd���}|�|j��|�|j��dS)NT�r�F)rrE�
assertTruer�r��r<rfrXs   r�%test_subinterpreter_isolated_explicitz:TestInterpreterAttrs.test_subinterpreter_isolated_explicit�sZ���%�t�4�4�4���%�u�5�5�5������(�)�)�)�����)�*�*�*�*�*rc�b�tjd��}|�|j��dSrw)rrGr�r�rIs  r�test_custom_isolated_defaultz1TestInterpreterAttrs.test_custom_isolated_default�s.���)�!�,�,�������)�)�)�)�)rc���tjdd���}tjdd���}|�|j��|�|j��dS)NrxTr�F)rrGr�r�r�r�s   r�test_custom_isolated_explicitz2TestInterpreterAttrs.test_custom_isolated_explicit�s^���*�1�t�<�<�<���*�1�u�=�=�=������(�)�)�)�����)�*�*�*�*�*rc��tjd��}|�t��5d|_ddd��dS#1swxYwYdS)NrxT)rrGr�r�r�rIs  r�test_isolated_readonlyz+TestInterpreterAttrs.test_isolated_readonly�s����)�!�,�,��
�
�
�~�
.�
.�	#�	#�"�F�O�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#r�c��tj��}tj��}|�||��|�||��dSr:)rrErUrrr�s   r�
test_equalityz"TestInterpreterAttrs.test_equality�sP���%�'�'���%�'�'������'�*�*�*����G�W�-�-�-�-�-rN)r>r?r@r�r�r�r��unittest�skipr�r�r�r�r�r�r�rArrr�r��s
������F�F�F�%�%�%�*�*�*����
�X�]�2�3�3�(�(�4�3�(��X�]�2�3�3�*�*�4�3�*�+�+�+��X�]�2�3�3�*�*�4�3�*�+�+�+�#�#�#�
.�.�.�.�.rr�c�^�eZdZd�Zejd��d���Zd�Zd�Zd�Z	d�Z
dS)	�TestInterpreterIsRunningc�z�tj��}|�|�����dSr:)rrlr��
is_runningr�s  rroz"TestInterpreterIsRunning.test_main�s2���$�&�&��������)�)�*�*�*�*�*r�Fails on FreeBSDc�d�tj��}|�|�����t	|��5|�|�����ddd��n#1swxYwY|�|�����dSr:)rrEr�r�r6r�rIs  rrsz,TestInterpreterIsRunning.test_subinterpreter�s����$�&�&������*�*�,�,�-�-�-�
�f�
�
�	1�	1��O�O�F�-�-�/�/�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�����*�*�,�,�-�-�-�-�-s�
(A>�>B�Bc���tj��}t|td|j�d�����}|�|���d��dS)Nz`
            import _xxsubinterpreters as _interpreters
            if _interpreters.is_running(zZ):
                print(True)
            else:
                print(False)
            �True)rrEr)rrrU�strip)r<r rWs   r�test_from_subinterpreterz1TestInterpreterIsRunning.test_from_subinterpretersl���$�&�&���&�&�*�)/��*�*�*�#�#����	
��������f�-�-�-�-�-rc���tj��}|���|�t��5|���ddd��dS#1swxYwYdSr:)rrErr�rr�rIs  r�test_already_destroyedz/TestInterpreterIsRunning.test_already_destroyed
s����$�&�&��������
�
�
�|�
,�
,�	 �	 �������	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 ��A$�$A(�+A(c��tjd��}|�t��5|���ddd��dS#1swxYwYdS�N�@B)rrGr�rr�rIs  r�test_does_not_existz,TestInterpreterIsRunning.test_does_not_exists����)�)�4�4��
�
�
�|�
,�
,�	 �	 �������	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 ��A�A�Ac��tjd��}|�t��5|���ddd��dS#1swxYwYdS�N���)rrGr��
ValueErrorr�rIs  r�test_bad_idz$TestInterpreterIsRunning.test_bad_ids����)�"�-�-��
�
�
�z�
*�
*�	 �	 �������	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 r�N)r>r?r@ror�r�rsr�r�r�r�rArrr�r��s�������+�+�+��X�]�%�&�&�.�.�'�&�.�	.�	.�	.� � � � � � �
 � � � � rr�c�v�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
d
��d���ZdS)
�TestInterpreterClosec��tj��}tj��}tj��}tj��}|�t	tj����||||h��|���|�t	tj����|||h��dSr:)rrlrErUr]rr)r<rVrfrXrgs     r�
test_basiczTestInterpreterClose.test_basic s����$�&�&���%�'�'���%�'�'���%�'�'������\�2�4�4�5�5����'�:�	<�	<�	<��
�
��������\�2�4�4�5�5����1�	3�	3�	3�	3�	3rc���ttj����}t��}td��D]*}tj��}|�|���+|�ttj����||z��|D]}|����|�ttj����|��dSr[)r]rrr^rE�addrUr)r<r`rcrbr s     r�test_allzTestInterpreterClose.test_all+s����\�*�,�,�-�-���%�%���q���	 �	 �A�!�(�*�*�F��K�K����������\�2�4�4�5�5�v��7G�H�H�H��	�	�F��L�L�N�N�N�N�����\�2�4�4�5�5�v�>�>�>�>�>rc�F���tj��\���t��5����ddd��n#1swxYwY��fd�}tj|���}|���|���dS)Nc�����t��5����ddd��dS#1swxYwYdSr:)r�rr)rVr<s��rrPz)TestInterpreterClose.test_main.<locals>.f;s�����"�"�<�0�0�
�
��
�
����
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s�>�A�Ar,)	rrr�rrr/r0r1r3)r<rPr4rVs`  @rrozTestInterpreterClose.test_main6s������%�'�'���
�
�
�|�
,�
,�	�	��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	�	�
��A�&�&�&��	���	�	�	�	�������s�A�A�Ac���tj��}|���|�t��5|���ddd��dS#1swxYwYdSr:)rrErr�rrIs  rr�z+TestInterpreterClose.test_already_destroyedCs����$�&�&��������
�
�
�|�
,�
,�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tjd��}|�t��5|���ddd��dS#1swxYwYdSr�)rrGr�rrrIs  rr�z(TestInterpreterClose.test_does_not_existIs����)�)�4�4��
�
�
�|�
,�
,�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tjd��}|�t��5|���ddd��dS#1swxYwYdSr�)rrGr�r�rrIs  rr�z TestInterpreterClose.test_bad_idNs����)�"�-�-��
�
�
�z�
*�
*�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c	�x�tj��\}tj��}t|t	dt|j���d�����}|�|���d��|�ttj����||h��dS)Nza
            from test.support import interpreters
            interp = interpreters.Interpreter(z)
            try:
                interp.close()
            except RuntimeError:
                print('failed')
            �failed)
rrrEr)rrTrrUr�r])r<rVr rWs    r�test_from_currentz&TestInterpreterClose.test_from_currentSs����%�'�'����$�&�&���&�&�*�/2�6�9�~�~�*�*�*�#�#����	
��������h�/�/�/�����\�2�4�4�5�5��f�~�F�F�F�F�Frc��tj��\}tj��}tj��}|�t	tj����|||h��|�t
d|j�d�����|�t	tj����||h��dS)Nzf
            from test.support import interpreters
            interp2 = interpreters.Interpreter(int(zs))
            interp2.close()
            interp3 = interpreters.create()
            interp3.close()
            )rrrErUr]r%rr)r<rVrfrXs    r�test_from_siblingz&TestInterpreterClose.test_from_siblingas����%�'�'����%�'�'���%�'�'������\�2�4�4�5�5����1�	3�	3�	3����F��4;�J������	�	�	�	
����\�2�4�4�5�5��g��G�G�G�G�Grc���tj����fd�}tj|���}|���|���dS)Nc�0������dSr:)rrs�rrPz6TestInterpreterClose.test_from_other_thread.<locals>.frs����L�L�N�N�N�N�Nrr,)rrEr/r0r1r3)r<rPr4r s   @r�test_from_other_threadz+TestInterpreterClose.test_from_other_threadps]����$�&�&��	�	�	�	�	�
��A�&�&�&��	���	�	�	�	�������rr�c��tj��\}tj��}t|��5|�t
��5|���ddd��n#1swxYwY|�|�����ddd��dS#1swxYwYdSr:)	rrrEr6r�rrr�r�)r<rVr s   r�test_still_runningz'TestInterpreterClose.test_still_runningys&���%�'�'����$�&�&��
�f�
�
�	1�	1��"�"�<�0�0�
�
�������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��O�O�F�-�-�/�/�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s5�B3�A4�(B3�4A8	�8B3�;A8	�<*B3�3B7�:B7N)r>r?r@r�r�ror�r�r�r�r�r�r�r�r�rArrr�r�s�������	3�	3�	3�	?�	?�	?����������
���
G�G�G�
H�
H�
H�����X�]�%�&�&�1�1�'�&�1�1�1rr�c��eZdZd�Zd�Zej��d���Zej	d��d���Z
d�Zd�Zd�Z
d	�Zd
S)�TestInterpreterRunc��tj��}td��\}}|5|�|��|���}ddd��n#1swxYwY|�|d��dS)N�print("it worked!", end="")�
it worked!)rrErr%r&rU)r<r r�filerWs     r�test_successzTestInterpreterRun.test_success�s����$�&�&��'�(E�F�F����
�	�	��J�J�v�����)�)�+�+�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����l�+�+�+�+�+s�*A�A"�%A"c�b���tj���td��\�}|5��fd�}tj|���}|���|���|���}ddd��n#1swxYwY|�|d��dS)Nr�c�2�������dSr:)r%)r rs��rrPz,TestInterpreterRun.test_in_thread.<locals>.f�s����
�
�6�"�"�"�"�"rr,r�)	rrErr/r0r1r3r&rU)r<r�rPr4rWr rs     @@rrRz!TestInterpreterRun.test_in_thread�s������$�&�&��'�(E�F�F����
�	�	�
#�
#�
#�
#�
#�
#�� ��*�*�*�A�
�G�G�I�I�I�
�F�F�H�H�H��)�)�+�+�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����l�+�+�+�+�+s�AB�B�Bc���tj��}ddl}|�dd���5}|�d��|���d}t
d|j�d|�d	���}|�|��|�	d��|�
��}|�||��ddd��dS#1swxYwYdS)
Nrzw+r
r�zspam spam spam spam spamz�
                import os
                try:
                    os.fork()
                except RuntimeError:
                    with open('zE', 'w', encoding='utf-8') as out:
                        out.write('z')
                )rrE�tempfile�NamedTemporaryFiler2�flushr�namer%�seekr&rU)r<r r�r��expectedr�contents       r�	test_forkzTestInterpreterRun.test_fork�s3���$�&�&������
�
(�
(���
(�
@�
@�	0�D��J�J�r�N�N�N��J�J�L�L�L�1�H���
!%�	���%-�
�����F�
�J�J�v�����I�I�a�L�L�L��i�i�k�k�G����W�h�/�/�/�#	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�BC�C�Cr�c�
�tj��}t|��5|�t��5|�d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�
print("spam"))rrEr6r�rr%rIs  r�test_already_runningz'TestInterpreterRun.test_already_running�s����$�&�&��
�f�
�
�	,�	,��"�"�<�0�0�
,�
,��
�
�?�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s4�A8�A �A8� A$	�$A8�'A$	�(A8�8A<�?A<c��tjd��}|�t��5|�d��ddd��dS#1swxYwYdS)Nr�r�)rrGr�rr%rIs  rr�z&TestInterpreterRun.test_does_not_exist�s����)�)�4�4��
�
�
�|�
,�
,�	(�	(��J�J��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(��A�A�Ac��tjd��}|�t��5|�d��ddd��dS#1swxYwYdS)Nr�r�)rrGr�r�r%rIs  rr�zTestInterpreterRun.test_bad_id�s����)�"�-�-��
�
�
�z�
*�
*�	(�	(��J�J��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(r�c��tj��}|�t��5|�d��ddd��dS#1swxYwYdS)N�
�rrEr�r�r%rIs  r�test_bad_scriptz"TestInterpreterRun.test_bad_script�s����$�&�&��
�
�
�y�
)�
)�	�	��J�J�r�N�N�N�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac��tj��}|�t��5|�d��ddd��dS#1swxYwYdS)Ns
print("spam")r�rIs  r�test_bytes_for_scriptz(TestInterpreterRun.test_bytes_for_script�s����$�&�&��
�
�
�y�
)�
)�	)�	)��J�J�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)r�N)r>r?r@r�rRr�
requires_forkr�r�r�r�r�r�r�r�rArrr�r��s�������,�,�,�,�,�,��W����0�0���0�,�X�]�%�&�&�,�,�'�&�,�(�(�(�
(�(�(�
���
)�)�)�)�)rr�c��eZdZd�Zd�ZdS)�TestIsShareablec���gd�}|D]X}|�|��5tj|��}|�|��ddd��n#1swxYwY�YdS)N)N�spam�spamr�i����)�subTestr�is_shareabler�)r<�
shareables�obj�	shareables    r�test_default_shareablesz'TestIsShareable.test_default_shareables�s������
��	+�	+�C����c�"�"�
+�
+�(�5�c�:�:�	����	�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+s�*A�A	�A	c��Gd�d��}Gd�dt��}ddtdttt��t	��d||d	��|d
��g}|D]c}|�t
|����5|�tj	|����ddd��n#1swxYwY�ddS)Nc��eZdZd�Zd�ZdS)�2TestIsShareable.test_not_shareable.<locals>.Cheesec��||_dSr:�r�)r<r�s  r�__init__z;TestIsShareable.test_not_shareable.<locals>.Cheese.__init__�s
�� ��	�	�	rc��|jSr:r
r;s r�__str__z:TestIsShareable.test_not_shareable.<locals>.Cheese.__str__�s
���y� rN)r>r?r@rr
rArr�Cheeser�s2������
!�
!�
!�
!�
!�
!�
!�
!rrc��eZdZdS)�4TestIsShareable.test_not_shareable.<locals>.SubBytesN)r>r?r@rArr�SubBytesr�s������1�1rrTF.gY@�Wensleydaler�)
�bytes�NotImplemented�type�object�	Exceptionr�reprr�rr)r<rr�not_shareablesrs     r�test_not_shareablez"TestIsShareable.test_not_shareable�sL��	!�	!�	!�	!�	!�	!�	!�	!�	2�	2�	2�	2�	2�u�	2�	2�	2�
����������������}�%�%����!�!���""�	4�	4�C����d�3�i�i�(�(�
4�
4�� � � �-�c�2�2�4�4�4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s�(C�C	�	C	N)r>r?r@rrrArrr�r��s2������
+�
+�
+�4�4�4�4�4rr�c��eZdZd�Zd�ZdS)�TestChannelsc��tj��\}}|�|tj��|�|tj��dSr:)r�create_channelrF�RecvChannel�SendChannel)r<r�ss   r�test_createzTestChannels.test_createsL���*�,�,���1����a��!9�:�:�:����a��!9�:�:�:�:�:rc�P�|�tj��g��t��}t	d��D]*}tj��}|�|���+ttj����}|�||��dSr[)rUr�list_all_channelsr]r^rr�)r<�createdrb�ch�afters     r�
test_list_allzTestChannels.test_list_all
s�������7�9�9�2�>�>�>��%�%���q���	�	�A��,�.�.�B��K�K��O�O�O�O��L�2�4�4�5�5�������(�(�(�(�(rN)r>r?r@r"r(rArrrrs2������;�;�;�
)�)�)�)�)rrc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestRecvChannelAttrsc�|�tj��\}}|�|jtj��dSr:�rrrFrrq�	ChannelID)r<�rchrbs   rr�z!TestRecvChannelAttrs.test_id_types5���,�.�.���Q����c�f�m�&=�>�>�>�>�>rc���tjd��}|�|jd��|�t
��5tjd��ddd��dS#1swxYwYdSr�)rrrUrr�r��r<r.s  rr�z#TestRecvChannelAttrs.test_custom_id����&�q�)�)��������#�#�#�
�
�
�y�
)�
)�	*�	*��$�S�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*r�c��tjd��}|�t��5d|_ddd��dS#1swxYwYdSr�)rrr�r�rr0s  rr�z%TestRecvChannelAttrs.test_id_readonly!����&�q�)�)��
�
�
�~�
.�
.�	�	��C�F�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tj��\}}tj��\}}|�||��|�||��dSr:�rrrUrr)r<�ch1rb�ch2s    rr�z"TestRecvChannelAttrs.test_equality&sX���,�.�.���Q��,�.�.���Q�����c�"�"�"����C��%�%�%�%�%rN�r>r?r@r�r�r�r�rArrr*r*�P������?�?�?�*�*�*����
&�&�&�&�&rr*c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestSendChannelAttrsc�|�tj��\}}|�|jtj��dSr:r,)r<rb�schs   rr�z!TestSendChannelAttrs.test_id_type/s5���,�.�.���3����c�f�m�&=�>�>�>�>�>rc���tjd��}|�|jd��|�t
��5tjd��ddd��dS#1swxYwYdSr�)rr rUrr�r��r<r=s  rr�z#TestSendChannelAttrs.test_custom_id3r1r�c��tjd��}|�t��5d|_ddd��dS#1swxYwYdSr�)rr r�r�rr?s  rr�z%TestSendChannelAttrs.test_id_readonly:r3r�c��tj��\}}tj��\}}|�||��|�||��dSr:r5)r<rbr6r7s    rr�z"TestSendChannelAttrs.test_equality?sX���,�.�.���3��,�.�.���3�����c�"�"�"����C��%�%�%�%�%rNr8rArrr;r;-r9rr;c��eZdZd�Zd�Zejd��d���Zd�Zd�Z	d�Z
d�Zejd��d	���Zd
�Z
d�Zd�Zd
�Zd�Zd�ZdS)�TestSendRecvc���tj��\}}d}|�|��|���}|�||��|�||��dS�Nr�)rr�send_nowait�recvrU�assertIsNot�r<rr!�origrs     r�test_send_recv_mainz TestSendRecv.test_send_recv_mainHsj���*�,�,���1���	�
�
�d�����f�f�h�h������d�#�#�#�����d�#�#�#�#�#rc�p�tj��}|�td����dS)Na>
            from test.support import interpreters
            r, s = interpreters.create_channel()
            orig = b'spam'
            s.send_nowait(orig)
            obj = r.recv()
            assert obj == orig, 'expected: obj == orig'
            assert obj is not orig, 'expected: obj is not orig'
            �rrEr%rrIs  r�test_send_recv_same_interpreterz,TestSendRecv.test_send_recv_same_interpreterQsA���$�&�&���
�
�6����	�	�	�	�	rzbroken (see BPO-...)c	���tj��\}}tj��\}}d}|�|��ttj��tdt
|���d���t||������}|���}|�	|d��|�
t
|��t|����dS)Nr�z�
                obj1 = r.recv()
                assert obj1 == b'spam', 'expected: obj1 == orig1'
                # When going to another interpreter we get a copy.
                assert id(obj1) != ��, 'expected: obj1 is not orig1'
                orig2 = b'eggs'
                print(id(orig2))
                s.send_nowait(orig2)
                �rr!r#�eggs)rrrFr)rErr�dictrGrUrrrT�r<�r1�s1�r2�s2�orig1rW�obj2s        r�%test_send_recv_different_interpretersz2TestSendRecv.test_send_recv_different_interpreters]s����,�.�.���B��,�.�.���B���
���u�������!�!���%'�u�I�I�	���
�
��B�"�%�%�%������w�w�y�y������w�'�'�'����B�t�H�H�c�#�h�h�/�/�/�/�/rc�j���tj��\����fd�}tj|���}|���d}��|��|�������}|�||��|�	||��dS)Nc���		����}n*#tj$rtjd��YnwxYw�@��|��dS)NTg�������?)rGr�ChannelEmptyError�time�sleep�send)rrr!s ��rrPz8TestSendRecv.test_send_recv_different_threads.<locals>.fxsf���
$�$��&�&�(�(�C���#�5�$�$�$��J�s�O�O�O�O�O�$����	
$�
�F�F�3�K�K�K�K�Ks��#?�?r,r�)
rrr/r0r1rar3rGrUrH)r<rPr4rJrrr!s     @@r� test_send_recv_different_threadsz-TestSendRecv.test_send_recv_different_threadsus������*�,�,���1�	�	�	�	�	�	�
��A�&�&�&��	���	�	�	���	���t����	�������f�f�h�h������d�#�#�#�����d�#�#�#�#�#rc���tj��\}}d}|�|��|���}|�||��|�||��dSrE)rrrF�recv_nowaitrUrHrIs     r�test_send_recv_nowait_mainz'TestSendRecv.test_send_recv_nowait_main�sj���*�,�,���1���	�
�
�d�����m�m�o�o������d�#�#�#�����d�#�#�#�#�#rc��tj��\}}|�d��}|�|��dSr:)rrrd�assertIsNone)r<rrbrs    r�'test_send_recv_nowait_main_with_defaultz4TestSendRecv.test_send_recv_nowait_main_with_default�s?���*�,�,���1��m�m�D�!�!�����#�����rc�p�tj��}|�td����dS)Na�
            from test.support import interpreters
            r, s = interpreters.create_channel()
            orig = b'spam'
            s.send_nowait(orig)
            obj = r.recv_nowait()
            assert obj == orig, 'expected: obj == orig'
            # When going back to the same interpreter we get the same object.
            assert obj is not orig, 'expected: obj is not orig'
            rMrIs  r�&test_send_recv_nowait_same_interpreterz3TestSendRecv.test_send_recv_nowait_same_interpreter�sA���$�&�&���
�
�6�	�	�	�		�		�		�		�		rc	���tj��\}}tj��\}}d}|�|��ttj��tdt
|���d���t||������}|���}|�	|d��|�
t
|��t|����dS)Nr�z�
                obj1 = r.recv_nowait()
                assert obj1 == b'spam', 'expected: obj1 == orig1'
                # When going to another interpreter we get a copy.
                assert id(obj1) != rPrQr#rR)rrrFr)rErrrSrdrUrrrTrTs        r�,test_send_recv_nowait_different_interpretersz9TestSendRecv.test_send_recv_nowait_different_interpreters�s����,�.�.���B��,�.�.���B���
���u�������!�!���%'�u�I�I�	���
�
��B�"�%�%�%������~�~��������w�'�'�'����B�t�H�H�c�#�h�h�/�/�/�/�/rc���tjd��}|�tj��5|���ddd��dS#1swxYwYdSr�)rrr��ChannelNotFoundErrorrG�r<r&s  r� test_recv_channel_does_not_existz-TestSendRecv.test_recv_channel_does_not_exist�s���
�
%�i�
0�
0��
�
�
�|�@�
A�
A�	�	��G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac���tjd��}|�tj��5|�d��ddd��dS#1swxYwYdS�Nr�r�)rr r�rnraros  r� test_send_channel_does_not_existz-TestSendRecv.test_send_channel_does_not_exist�s���
�
%�i�
0�
0��
�
�
�|�@�
A�
A�	�	��G�G�G����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac���tjd��}|�tj��5|���ddd��dS#1swxYwYdSr�)rrr�rnrdros  r�'test_recv_nowait_channel_does_not_existz4TestSendRecv.test_recv_nowait_channel_does_not_exist�s���
�
%�i�
0�
0��
�
�
�|�@�
A�
A�	�	��N�N����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rqc���tjd��}|�tj��5|�d��ddd��dS#1swxYwYdSrs)rr r�rnrFros  r�'test_send_nowait_channel_does_not_existz4TestSendRecv.test_send_nowait_channel_does_not_exist�s���
�
%�i�
0�
0��
�
�
�|�@�
A�
A�	$�	$��N�N�7�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$ruc���tj��\}}|�tj��5|���ddd��dS#1swxYwYdSr:)rrr�r^rd)r<r&rbs   r�test_recv_nowait_emptyz#TestSendRecv.test_recv_nowait_empty�s����+�-�-���A�
�
�
�|�=�
>�
>�	�	��N�N����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac��t��}tj��\}}|�|��}|�d��|�d��|�d��|�d��|�|��}|�|��}|���}|�|��}|�|��}	|�||��|�|d��|�|d��|�|d��|�|d��|�|	|��dS)Nrxr�rR)rrrrdrF�assertIsrU)
r<�defaultr.r=�obj1rZ�obj3�obj4�obj5�obj6s
          r�test_recv_nowait_defaultz%TestSendRecv.test_recv_nowait_default�sM���(�(���.�0�0���S����w�'�'�������������������� � � ����� � � ����w�'�'�����w�'�'����� � �����w�'�'�����w�'�'���
�
�d�G�$�$�$��
�
�d�D�!�!�!�����q�!�!�!�����w�'�'�'�����w�'�'�'��
�
�d�G�$�$�$�$�$rN)r>r?r@rKrNr�r�r[rbrerhrjrlrprtrwryr{r�rArrrCrCFs������$�$�$�
�
�
��X�]�)�*�*�0�0�+�*�0�.$�$�$�,$�$�$��������X�]�)�*�*�0�0�+�*�0�.���
���
���
$�$�$�
���
%�%�%�%�%rrCr:)!�
contextlibr
r/�textwraprr�r_�testr�test.supportr�
import_modulerqrrr!r)�contextmanagerr6�TestCaser8rCrjrur�r�r�r�r�rr*r;rCrArr�<module>r�s;������	�	�	�	�������������������������&�&�&�&�&�&�+�
�+�,@�A�A�
�%�%�%�%�%�%�	.�	.�	.����������
�
���
�& � � � � �x� � � � �9S�9S�9S�9S�9S�(�9S�9S�9S�x+�+�+�+�+�h�+�+�+�&4�4�4�4�4�8�4�4�4�<>.�>.�>.�>.�>.�8�>.�>.�>.�B( �( �( �( �( �x�( �( �( �Vb1�b1�b1�b1�b1�8�b1�b1�b1�JI)�I)�I)�I)�I)��I)�I)�I)�\/4�/4�/4�/4�/4�h�/4�/4�/4�d)�)�)�)�)�8�)�)�)�"&�&�&�&�&�8�&�&�&�2&�&�&�&�&�8�&�&�&�2e%�e%�e%�e%�e%�8�e%�e%�e%�e%�e%r