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

�KeuR���ddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	e	j
d���ejddg�	��Zejddg�
��Z
eje
d��ZdZd
�ZGd�dej��ZGd�d��ZGd�de��ZGd�de��ZGd�deej��ZeGd�deej����ZGd�de��ZGd�deej��ZeGd�deej����ZGd �d!e��ZGd"�d#eej��ZeGd$�d%eej����ZGd&�d'e ��Z!Gd(�d)e��Z"Gd*�d+e"ej��Z#eGd,�d-e"ej����Z$Gd.�d/��Z%Gd0�d1e%ej��Z&eGd2�d3e%ej����Z'e(d4krej)��dSdS)5�N)�
gc_collect)�
import_helper)�threading_helperT)�module�queue�_queue)�blocked)�freshzNo _queue module found�c�R�|jdko|���|jkS�Nr)�maxsize�qsize)�qs �9/usr/local/apps/python3/lib/python3.11/test/test_queue.py�qfullrs"���9�q�=�3�Q�W�W�Y�Y�!�)�3�3�c��eZdZd�Zd�ZdS)�_TriggerThreadc��||_||_tj��|_tj�|��dS�N)�fn�args�	threading�Event�startedEvent�Thread�__init__)�selfrrs   rrz_TriggerThread.__init__s=�������	�%�O�-�-�����!�!�$�'�'�'�'�'rc�~�tjd��|j���|j|j�dS)N皙�����?)�time�sleepr�setrr�rs r�runz_TriggerThread.run!s=��	
�
�3�������������������rN)�__name__�
__module__�__qualname__rr&�rrrrs2������(�(�(�����rrc��eZdZd�Zd�ZdS)�BlockingTestMixinc�*�t||��}|���	||�|_|j���s|�d|z��|jt
j|��S#t
j|��wxYw)Nz*blocking function %r appeared not to block)r�start�resultr�is_set�failr�join_thread)r�
block_func�
block_args�trigger_func�trigger_args�threads      r�do_blocking_testz"BlockingTestMixin.do_blocking_test<s�����l�;�;��������	1�$�*�j�1�D�K��&�-�-�/�/�
&��	�	�F�$�%�&�&�&��;��(��0�0�0�0���(��0�0�0�0���s�AA<�<Bc��t||��}|���		||�|�d|z��n
#|$r�wxYw	tj|��|j���s|�d��dSdS#tj|��|j���s|�d��wwxYw)Nzexpected exception of kind %rz(trigger thread ended but event never set)rr.r1rr2rr0)rr3r4r5r6�expected_exception_classr7s       r�do_exceptional_blocking_testz.BlockingTestMixin.do_exceptional_blocking_testJs����l�;�;��������	F�
;��
�J�'�'��	�	�9�!9�:�;�;�;�;��,�
�
�
��
����;�
�(��0�0�0��&�-�-�/�/�
F��	�	�D�E�E�E�E�E�
F�
F��
�(��0�0�0��&�-�-�/�/�
F��	�	�D�E�E�E�E�
F���s�A�B�A�B�ACN)r'r(r)r8r;r*rrr,r,:s7������1�1�1�F�F�F�F�Frr,c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�BaseQueueTestMixinc�D�d|_tj��|_dSr
)�cumr�Lock�cumlockr%s r�setUpzBaseQueueTestMixin.setUp]s����� �~�'�'����rc�X�|���rtd���|�|�����|�|�����|�d��|�d��|�d��tgd�gd�gd����}|���|���|���g}|�	|||j
jd	��ttd
z
��D]?}|�|��|�|���d���@|�t|��d��d
tz}dtz}|�|��|�t|��d��|�|�����|�|�����	|�|d���|�d��n#|jj$rYnwxYw	|�|d���|�d��n#|jj$rYnwxYw|�|j|f|jd��|�|j|ddf|jd��tt��D]}|����|�|���d��	|�d���|�d��n#|jj$rYnwxYw	|�d���|�d��n#|jj$rYnwxYw|�|jd|jd��|�|jd|jd��dS)N�&Call this function with an empty queue�o�M��)rErFrG)rGrFrE)rErGrF)�Queue�	LifoQueue�
PriorityQueuez&Didn't seem to queue the correct data!��Queue should not be empty�Queue should not be full���Queue should be fullr��blockz(Didn't appear to block with a full queueg{�G�z�?��timeoutz+Didn't appear to time-out with a full queuer*T�
�Queue should be emptyz*Didn't appear to block with an empty queuez-Didn't appear to time-out with an empty queue��empty)TrU)r�RuntimeError�
assertTruerX�assertFalse�full�put�dict�get�assertEqual�	__class__r'�range�
QUEUE_SIZErr1r�Fullr8�Empty)rr�target_order�actual_order�i�lastr\s       r�basic_queue_testz#BaseQueueTestMixin.basic_queue_testas����7�7�9�9�	I��G�H�H�H�������	�	�"�"�"���������"�"�"�	���c�
�
�
�	���c�
�
�
�	���c�
�
�
��O�O�O�(7���,;�O�O�=�=�=������������!�%�%�'�'�2������|�A�K�4H�'I�A�	C�	C�	C��z�!�|�$�$�	D�	D�A�
�E�E�!�H�H�H��O�O�A�G�G�I�I�'B�C�C�C�C����E�!�H�H��&@�A�A�A��:�~���z�!��	���d��������a���"8�9�9�9���������#�#�#���������!�!�!�	�
�E�E�$�a�E� � � ��I�I�@�A�A�A�A���z��	�	�	��D�	����	�
�E�E�$��E�%�%�%��I�I�C�D�D�D�D���z��	�	�	��D�	����	
���a�e�d�W�a�e�R�8�8�8����a�e�d�D�"�%5�q�u�b�A�A�A��z�"�"�	�	�A�
�E�E�G�G�G�G����A�G�G�I�I�
�'>�?�?�?�	�
�E�E��E�N�N�N��I�I�B�C�C�C�C���z��	�	�	��D�	����	�
�E�E�$�E�����I�I�E�F�F�F�F���z��	�	�	��D�	����	
���a�e�R���
�;�;�;����a�e�Z���
�C�C�C�C�CsH�,I.�.J�?J�,J1�1K�K�#+N�N!� N!�%+O�O#�"O#c���	|���}|dkr|���dS|j5|xj|z
c_ddd��n#1swxYwY|����t)NTr)r_�	task_donerAr?)rr�xs   r�workerzBaseQueueTestMixin.worker�s���	������A��1�u�u����
�
�
�����
�
����A�
���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�K�K�M�M�M�	s�A�A�Ac��d|_g}dD]G}tj|j|f���}|���|�|���Ht
d��D]}|�|���|���|�	|jtt
d����d��dD]}|�d���|���|D]}|����dS)Nr)rrK��targetr�dz0q.join() did not block until all tasks were done���)r?rrrnr.�appendrbr]�joinr`�sum)rr�threadsrhr7s     r�queue_join_testz"BaseQueueTestMixin.queue_join_test�s��������	#�	#�A��%�T�[��t�D�D�D�F��L�L�N�N�N��N�N�6�"�"�"�"��s���	�	�A�
�E�E�!�H�H�H�H�	�����������3�u�S�z�z�?�?�K�	M�	M�	M��	�	�A�
�E�E�"�I�I�I�I�	�������	�	�F��K�K�M�M�M�M�	�	rc��|���}	|���|�d��dS#t$rYdSwxYw�Nz(Did not detect task count going negative)�	type2testrlr1�
ValueError�rrs  r�test_queue_task_donez'BaseQueueTestMixin.test_queue_task_done�sc���N�N����	B�
�K�K�M�M�M�
�I�I�@�A�A�A�A�A���	�	�	��D�D�	���s�A�
A�Ac��|���}|�|��|�|��	|���|�d��dS#t$rYdSwxYwrz)r{rxrlr1r|r}s  r�test_queue_joinz"BaseQueueTestMixin.test_queue_join�s���
�N�N�������Q�������Q����	B�
�K�K�M�M�M�
�I�I�@�A�A�A�A�A���	�	�	��D�D�	���s�A+�+
A9�8A9c��|�t��}|�|��|�|��dSr)r{rcrjr}s  r�
test_basiczBaseQueueTestMixin.test_basic�sC��
�N�N�:�&�&�����a� � � ����a� � � � � rc�`�|�t��}|�t��5|�dd���ddd��n#1swxYwY|�t��5|�dd���ddd��dS#1swxYwYdS�NrKrsrS)r{rc�assertRaisesr|r]r_r}s  r�&test_negative_timeout_raises_exceptionz9BaseQueueTestMixin.test_negative_timeout_raises_exception�s ���N�N�:�&�&��
�
�
�z�
*�
*�	!�	!�
�E�E�!�R�E� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�z�
*�
*�	!�	!�
�E�E�!�R�E� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s#�A�A� A�>B#�#B'�*B'c��|�t��}tt��D]}|�d���|�|jj��5|�d��ddd��n#1swxYwYtt��D]}|����|�|jj��5|���ddd��dS#1swxYwYdS)NrK)	r{rcrb�
put_nowaitr�rrd�
get_nowaitre�rrrhs   r�test_nowaitzBaseQueueTestMixin.test_nowait�si���N�N�:�&�&���z�"�"�	�	�A�
�L�L��O�O�O�O�
�
�
�t�z��
/�
/�	�	�
�L�L��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�"�"�	�	�A�
�L�L�N�N�N�N�
�
�
�t�z�/�
0�
0�	�	�
�L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�&B�B�B�C?�?D�Dc�>�|�d��}|�d��|�d��|�d��|�|jj��5|�d��ddd��n#1swxYwY|�|���d��d|_|�|jj��5|�d��ddd��dS#1swxYwYdS)N�rKrN�)	r{r]r�rrdr�r`rrr}s  r�test_shrinking_queuez'BaseQueueTestMixin.test_shrinking_queue�sl���N�N�1����	���a����	���a����	���a����
�
�
�t�z��
/�
/�	�	�
�L�L��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���������A�&�&�&���	�
�
�
�t�z��
/�
/�	�	�
�L�L��O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�4B�B�B�/D�D�DN)
r'r(r)rBrjrnrxr~r�r�r�r�r�r*rrr=r=\s�������(�(�(�6D�6D�6D�r������$B�B�B�B�B�B�!�!�!�!�!�!�
�
�
�����rr=c���eZdZ�fd�Z�xZS)�	QueueTestc�j��|jj|_t�����dSr)rrHr{�superrB�rras �rrBzQueueTest.setUp�s$�����)���
���
�
�����r�r'r(r)rB�
__classcell__�ras@rr�r���8���������������rr�c��eZdZeZdS)�PyQueueTestN�r'r(r)�py_queuerr*rrr�r����������E�E�Err�c��eZdZeZdS)�
CQueueTestN�r'r(r)�c_queuerr*rrr�r����������E�E�Err�c���eZdZ�fd�Z�xZS)�
LifoQueueTestc�j��|jj|_t�����dSr)rrIr{r�rBr�s �rrBzLifoQueueTest.setUps$�����-���
���
�
�����rr�r�s@rr�r�r�rr�c��eZdZeZdS)�PyLifoQueueTestNr�r*rrr�r�
r�rr�c��eZdZeZdS)�CLifoQueueTestNr�r*rrr�r�r�rr�c���eZdZ�fd�Z�xZS)�PriorityQueueTestc�j��|jj|_t�����dSr)rrJr{r�rBr�s �rrBzPriorityQueueTest.setUps$�����1���
���
�
�����rr�r�s@rr�r�r�rr�c��eZdZeZdS)�PyPriorityQueueTestNr�r*rrr�r�r�rr�c��eZdZeZdS)�CPriorityQueueTestNr�r*rrr�r�r�rr�c��eZdZdS)�FailingQueueExceptionN�r'r(r)r*rrr�r�$s�������rr�c�*��eZdZ�fd�Zd�Zd�Z�xZS)�FailingQueueTestc����|jj�G�fd�d���}||_t�����dS)Nc�.��eZdZ�fd�Z�fd�Z�fd�ZdS)�,FailingQueueTest.setUp.<locals>.FailingQueuec�@��d|_d|_�j|g|�R�dS)NF)�
fail_next_put�
fail_next_getr)rrrHs  �rrz5FailingQueueTest.setUp.<locals>.FailingQueue.__init__.s3���%*��"�%*��"����t�+�d�+�+�+�+�+�+rc�j��|jrd|_td�����||��S�NFzYou Lose)r�r��_put)r�itemrHs  �rr�z1FailingQueueTest.setUp.<locals>.FailingQueue._put2s8����%�<�).�D�&�/�
�;�;�;��z�z�$��-�-�-rc�h��|jrd|_td�����|��Sr�)r�r��_get)rrHs �rr�z1FailingQueueTest.setUp.<locals>.FailingQueue._get7s6����%�<�).�D�&�/�
�;�;�;��z�z�$�'�'�'rN)r'r(r)rr�r�)rHs�r�FailingQueuer�-s`�������
,�
,�
,�
,�
,�
.�
.�
.�
.�
.�

(�
(�
(�
(�
(�
(�
(rr�)rrHr�r�rB)rr�rHras  @�rrBzFailingQueueTest.setUp)sa�����
� ��	(�	(�	(�	(�	(�	(�	(�5�	(�	(�	(� )���
���
�
�����rc�	�|���rtd���ttdz
��D]}|�|���d|_	|�dd���|�d��n#t$rYnwxYwd|_	|�dd�	��|�d��n#t$rYnwxYw|�d
��|�t|��d��d|_	|�
|jd|jd
��|�d��n#t$rYnwxYw|�d
��d|_	|�|jd|jd
t��|�d��n#t$rYnwxYw|�d
��|�t|��d��|���|�t|��d��|�d
��|�t|��d��|�
|jd|jd
��tt��D]}|����|�|���d��|�d��d|_
	|���|�d��n#t$rYnwxYw|�|���d��d|_
	|�d�	��|�d��n#t$rYnwxYw|�|���d��|���|�|���d��d|_
	|�|jd
|jdt��|�d��n#t$rYnwxYw|�|���d��|���|�|���d��dS)NrDrKT�oopsrrQz)The queue didn't fail when it should haver!rSrirP)r\r*)r\TrUrMrV�firstrLrW)rrYrbrcr]r�r1r�rZrr8r_r;r�r�s   r�failing_queue_testz#FailingQueueTest.failing_queue_testAs����7�7�9�9�	I��G�H�H�H��z�!�|�$�$�	�	�A�
�E�E�!�H�H�H�H����	�
�E�E�&��E�"�"�"��I�I�A�B�B�B�B��$�	�	�	��D�	�������	�
�E�E�&�#�E�&�&�&��I�I�A�B�B�B�B��$�	�	�	��D�	����	���f�
�
�
�����a���"8�9�9�9����	��!�!�!�%��A�E�2�>�>�>��I�I�A�B�B�B�B��$�	�	�	��D�	����	
���f�
�
�
����	��-�-�a�e�5G���PR�.C�
E�
E�
E��I�I�A�B�B�B�B��$�	�	�	��D�	����	
���f�
�
�
�����a���"8�9�9�9�	���������E�!�H�H��&@�A�A�A�	���f�
�
�
�����a���"8�9�9�9����a�e�Y���r�:�:�:��z�"�"�	�	�A�
�E�E�G�G�G�G����A�G�G�I�I�
�'>�?�?�?�	���g�������	�
�E�E�G�G�G��I�I�A�B�B�B�B��$�	�	�	��D�	����������	�	�#>�?�?�?����	�
�E�E�#�E�����I�I�A�B�B�B�B��$�	�	�	��D�	����������	�	�#>�?�?�?�	���������A�G�G�I�I�
�'>�?�?�?����	��-�-�a�e�R���
�.C�
E�
E�
E��I�I�A�B�B�B�B��$�	�	�	��D�	����	
������	�	�#>�?�?�?�	���������A�G�G�I�I�
�'>�?�?�?�?�?s~�,B�
B�B� ,C
�
C�C�7E�
E"�!E"�=G�
G
�G
�)L5�5
M�M�5+N!�!
N.�-N.�=Q�
Q)�(Q)c��|�t��}|�|��|�|��dSr)r�rcr�r}s  r�test_failing_queuez#FailingQueueTest.test_failing_queue�sE��
���j�)�)������"�"�"�����"�"�"�"�"r)r'r(r)rBr�r�r�r�s@rr�r�'s]������������0O@�O@�O@�b#�#�#�#�#�#�#rr�c��eZdZeZdS)�PyFailingQueueTestNr�r*rrr�r��r�rr�c��eZdZeZdS)�CFailingQueueTestNr�r*rrr�r��r�rr�c�\�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�BaseSimpleQueueTestc�8�|���|_dSr)r{rr%s rrBzBaseSimpleQueueTest.setUp�s�����!�!����rc�*�		|���}n&#t$r|�|��YdSwxYw|�|��|���dkr)t	j|���dz����)NTg�?���MbP?)�pop�
IndexErrorr]�randomr"r#)rr�seq�rnd�sentinel�vals      r�feedzBaseSimpleQueueTest.feed�s���	0�
��g�g�i�i�����
�
�
����h�������
����
�E�E�#�J�J�J��z�z�|�|�c�!�!��
�3�:�:�<�<�$�.�/�/�/�	0s��;�;c�h�	|���}||krdS|�|���2r)r_rt�rr�resultsr�r�s     r�consumezBaseSimpleQueueTest.consume�s9��	 ��%�%�'�'�C��h������N�N�3����		 rc���			|�d���}n*#|jj$rtjd��YnwxYw�B||krdS|�|���a)NTFrQ��h㈵��>)r_rrer"r#rtr�s     r�consume_nonblockz$BaseSimpleQueueTest.consume_nonblock�s���
	 �
���%�%�e�%�,�,�C����z�'�%�%�%��J�t�$�$�$�$�$�%����
��h������N�N�3����
	 s��#A�Ac��			|�d���}n#|jj$rYnwxYw�.||krdS|�|���M)NTr�rS)r_rrertr�s     r�consume_timeoutz#BaseSimpleQueueTest.consume_timeout�s|��
	 �
���%�%��%�-�-�C����z�'�����D�����
��h������N�N�3����
	 s��-�-c�L�����	�
���
�g�
d�|����
�
���tjd���g��fd��	��	����
fd�t	|��D��}��	��
�fd�t	|��D��}tj||z��5	ddd��n#1swxYwY|����|���	����|�
����d���
S)N�*c������fd�}|S)Nc�t��	�|i|��dS#t$r }��|��Yd}~dSd}~wwxYwr)�
BaseExceptionrt)r�kwargs�e�
exceptions�fs   ��r�wrapperzHBaseSimpleQueueTest.run_threads.<locals>.log_exceptions.<locals>.wrapper�sh���)��A�t�&�v�&�&�&�&�&��$�)�)�)��%�%�a�(�(�(�(�(�(�(�(�(�����)���s�
�
7�2�7r*)r�r�r�s` �r�log_exceptionsz7BaseSimpleQueueTest.run_threads.<locals>.log_exceptions�s)����
)�
)�
)�
)�
)�
)�
�Nrc	�V��g|]%}tj��������f�����&S�rp�rr)�.0rh�	feed_funcr�rr�r�r�s  ������r�
<listcomp>z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>�sV���.�.�.���#�>�>�)�+D�+D�*+�S�#�x�)@�B�B�B�.�.�.rc�T��g|]$}tj�������f�����%Sr�r�)r�rh�consume_funcr�rr�r�s  �����rr�z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>�sT���0�0�0���%�^�^�L�-I�-I�,-�w��+A�C�C�C�0�0�0rr)�copy�reverser��Randomrbr�
start_threadsr[rZrXr`r)r�	n_threadsr�inputsr�r��feeders�	consumersr�r�r�r�r�r�s  ` ``  @@@@@@r�run_threadszBaseSimpleQueueTest.run_threads�s�����������������k�k�m�m�����
�
�
��m�B�����
�	�	�	�	�	�.�.�.�.�.�.�.�.�.�!�)�,�,�.�.�.��0�0�0�0�0�0�0�0�#�I�.�.�0�0�0�	��
+�G�i�,?�
@�
@�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����$�$�$�������	�	�"�"�"���������A�&�&�&��s�'B5�5B9�<B9c�"�|j}|�|�����|�|���d��|�d��|�|�����|�|���d��|�d��|�d��|�d��|�|�����|�|���d��|�|���d��|�|���d��|�|�	��d��|�|���d��|�|�d���d��|�|�����|�|���d��|�|�d�	��d��|�|�����|�|���d��|�
|jj��5|�d���ddd��n#1swxYwY|�
|jj��5|�d
�	��ddd��n#1swxYwY|�
|jj��5|�	��ddd��n#1swxYwY|�|�����|�|���d��dS)NrrKrNr�r�FrQr!rSr�)
rrZrXr`rr]r[r�r_r�r�rrer}s  rr�zBaseSimpleQueueTest.test_basic�s����F��������	�	�"�"�"���������A�&�&�&�	���a������������#�#�#���������A�&�&�&�	���a����	���Q����	���a������������#�#�#���������A�&�&�&���������!�$�$�$���������A�&�&�&����������+�+�+���������A�&�&�&�������U��+�+�Q�/�/�/���������#�#�#���������A�&�&�&�������s��+�+�Q�/�/�/�������	�	�"�"�"���������A�&�&�&�
�
�
�t�z�/�
0�
0�	�	�
�E�E��E����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�z�/�
0�
0�	 �	 �
�E�E�$�E����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �
�
�
�t�z�/�
0�
0�	�	�
�L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������	�	�"�"�"���������A�&�&�&�&�&s6�:L�L!�$L!�M*�*M.�1M.�N5�5N9�<N9c���|j}|�d��|�t��5|�d���ddd��dS#1swxYwYdSr�)rr]r�r|r_r}s  rr�z:BaseSimpleQueueTest.test_negative_timeout_raises_exceptions����F��	���a����
�
�
�z�
*�
*�	�	�
�E�E�"�E����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�"Ac��|j}ttd����}|�d|||j|j��}|�||��dS)NrrrK)r�listrbr�r�r�r`)rrr�r�s    r�
test_orderzBaseSimpleQueueTest.test_order!sY���F���e�C�j�j�!�!���"�"�1�a����D�L�I�I��	
����&�)�)�)�)�)rc���d}|j}ttd����}|�||||j|j��}|�t|��|��dS�N�2�')rrrbr�r�r�r`�sorted�r�Nrr�r�s     r�test_many_threadsz%BaseSimpleQueueTest.test_many_threads*sd�����F���e�E�l�l�#�#���"�"�1�a����D�L�I�I��	
�������&�1�1�1�1�1rc���d}|j}ttd����}|�||||j|j��}|�t|��|��dSr)rrrbr�r�r�r`rr	s     r�test_many_threads_nonblockz.BaseSimpleQueueTest.test_many_threads_nonblock5sl�����F���e�E�l�l�#�#���"�"�1�a��#'�9�d�.C�E�E��	
�������&�1�1�1�1�1rc���d}|j}ttd����}|�||||j|j��}|�t|��|��dS)Nri�)rrrbr�r�r�r`rr	s     r�test_many_threads_timeoutz-BaseSimpleQueueTest.test_many_threads_timeout?sl�����F���e�D�k�k�"�"���"�"�1�a��#'�9�d�.B�D�D��	
�������&�1�1�1�1�1rc�V�Gd�d��}d}|j}t|��D]}|�|����� t|��D]S}tj|�����}t
��|�|�����TdS)Nc��eZdZdS)�.BaseSimpleQueueTest.test_references.<locals>.CNr�r*rr�CrLs�������Drr�)rrbr]�weakref�refr_r�assertIsNone)rrr
rrh�wrs      r�test_referencesz#BaseSimpleQueueTest.test_referencesIs���	�	�	�	�	�	�	�	�
���F���q���	�	�A�
�E�E�!�!�#�#�J�J�J�J��q���	$�	$�A���Q�U�U�W�W�%�%�B��L�L�L����b�b�d�d�#�#�#�#�	$�	$rN)r'r(r)rBr�r�r�r�r�r�r�rrr
rrr*rrr�r��s�������"�"�"�	0�	0�	0� � � � � � � � � ����@#'�#'�#'�J���*�*�*�	2�	2�	2�2�2�2�2�2�2�
$�
$�
$�
$�
$rr�c�"��eZdZeZ�fd�Z�xZS)�PySimpleQueueTestc�j��|jj|_t�����dSr)r�_PySimpleQueuer{r�rBr�s �rrBzPySimpleQueueTest.setUp\s$�����2���
���
�
�����r)r'r(r)r�rrBr�r�s@rrrYs=��������E���������rrc�.��eZdZeZ�fd�Zd�Zd�Z�xZS)�CSimpleQueueTestc�j��|jj|_t�����dSr)r�SimpleQueuer{r�rBr�s �rrBzCSimpleQueueTest.setUpfs$�����/���
���
�
�����rc��|�|j|jj��|�|j|jj��dSr)�assertIsr{rr!r%s r�test_is_defaultz CSimpleQueueTest.test_is_defaultjs>���
�
�d�n�d�j�&<�=�=�=��
�
�d�n�d�j�&<�=�=�=�=�=rc	����|j�tj���d}g}G��fd�dt��}	|��}��t�����~|�������|d|krn�b|�|tt|dz������dS)Nrc�"��eZdZd�Z��fd�ZdS)�2CSimpleQueueTest.test_reentrancy.<locals>.Circularc��||_dSr)�circularr%s rrz;CSimpleQueueTest.test_reentrancy.<locals>.Circular.__init__zs
�� $��
�
�
rc�L����t�����dSr)r]�next)r�genrs ��r�__del__z:CSimpleQueueTest.test_reentrancy.<locals>.Circular.__del__}s!������d�3�i�i� � � � � rN)r'r(r)rr-)r,rs��r�Circularr'ysB�������
%�
%�
%�
!�
!�
!�
!�
!�
!�
!�
!rr.TrsrK)r�	itertools�count�objectr]r+rtr_r`rrb)rr
r�r.�or,rs     @@r�test_reentrancyz CSimpleQueueTest.test_reentrancyns�����
�F���o��������
	!�	!�	!�	!�	!�	!�	!�	!�v�	!�	!�	!�	���
�
�A�
�E�E�$�s�)�)������N�N�1�5�5�7�7�#�#�#��r�{�a����
	�	
����$�u�Q��U�|�|�"4�"4�5�5�5�5�5r)	r'r(r)r�rrBr$r3r�r�s@rrras]�������
�E������>�>�>�6�6�6�6�6�6�6rr�__main__)*r/r�rr"�unittestr�test.supportrrr�requires_working_threading�import_fresh_moduler�r��
skipUnless�need_c_queuercrrrr,r=r��TestCaser�r�r�r�r�r�r�r��	Exceptionr�r�r�r�r�rrr'�mainr*rr�<module>r>s�������
�
�
�
�����������������#�#�#�#�#�#�&�&�&�&�&�&�)�)�)�)�)�)�,��+�4�8�8�8�8�,�=�,�W�x�j�I�I�I��
+�-�
+�G�H�:�
F�
F�
F��"�x�"�7�,D�E�E��
�
�4�4�4������Y�%����@F�F�F�F�F�F�F�F�DV�V�V�V�V�*�V�V�V�p�����"���������)�X�.�����������H�-�����������&���������m�X�%6����������]�H�$5�����������*���������+�X�->����������*�H�,=������
-�,�,�,�,�I�,�,�,�q#�q#�q#�q#�q#�(�q#�q#�q#�j�����)�8�+<����������(�(�*;������q$�q$�q$�q$�q$�q$�q$�q$�h�����+�X�->�����&6�&6�&6�&6�&6�*�H�,=�&6�&6���&6�R�z����H�M�O�O�O�O�O��r