Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_weakref.cpython-311.opt-2.pyc

�

SԚgF)���ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZddlmZddlmZdadZGd�d��ZGd	�d
��Zd�Zd�ZGd
�d��ZGd�d��ZGd�dej��Zejd*d���ZGd�de��ZGd�de��Z Gd�dej��Z!Gd�de��Z"ddlm#Z#Gd�de#j$��Z%Gd �d!e#j$��Z&Gd"�d#ej��Z'Gd$�d%ej��Z(d&Z)d'e)iZ*d(�Z+e,d)krej-��dSdS)+�N)�support)�
script_helper�	ALWAYS_EQ)�
gc_collect)�threading_helper�foobarc��eZdZd�ZdS)�Cc��dS�N���selfs �./usr/local/lib/python3.11/test/test_weakref.py�methodzC.methods����N)�__name__�
__module__�__qualname__rr
rrr
r
s#������
�
�
�
�
rr
c��eZdZdZd�ZdS)�CallableNc��||_dSr��bar�r�xs  r�__call__zCallable.__call__"s
������r)rrrrrr
rrrrs(������
�C�����rrc��d�}|S)Nc��dSrr
r
rr�fzcreate_function.<locals>.f'����rr
)r s r�create_functionr"&s���M�M��Hrc�(�t��jSr)r
rr
rr�create_bound_methodr$*s���3�3�:�rc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�Objectc��||_dSr��arg)rr)s  r�__init__zObject.__init__/s
������rc��d|jzS)Nz<Object %r>r(rs r�__repr__zObject.__repr__1s���t�x�'�'rc�Z�t|t��r|j|jkStSr��
isinstancer&r)�NotImplemented�r�others  r�__eq__z
Object.__eq__3s)���e�V�$�$�	)��8�u�y�(�(��rc�Z�t|t��r|j|jkStSrr.r1s  r�__lt__z
Object.__lt__7s)���e�V�$�$�	(��8�e�i�'�'��rc�*�t|j��Sr)�hashr)rs r�__hash__zObject.__hash__;s���D�H�~�~�rc��dS)N�r
rs r�some_methodzObject.some_method=����qrc��dS)N�r
rs r�other_methodzObject.other_method?r<rN)
rrrr*r,r3r5r8r;r?r
rrr&r&.s}���������(�(�(�����������������rr&c��eZdZd�ZdS)�RefCyclec��||_dSr)�cyclers rr*zRefCycle.__init__Ds
����
�
�
rN�rrrr*r
rrrArACs#����������rrAc��eZdZd�Zd�ZdS)�TestBasec��d|_dS�Nr��cbcalledrs r�setUpzTestBase.setUpJs
����
�
�
rc�&�|xjdz
c_dS�N�rI)r�refs  r�callbackzTestBase.callbackMs���
�
���
�
�
�
rN)rrrrKrPr
rrrFrFHs2�������������rrF�-C��6?c#�:��K�	d���fd�}tj��5tj|���}|���	dV�d�|���n#d�|���wxYw	ddd��dS#1swxYwYdS)NFc�b���s+tj���tj����)dSdSr)�time�sleep�gc�collect)�period�please_stops��rrWz"collect_in_thread.<locals>.collectXsD����	��J�v�����J�L�L�L��	�	�	�	�	r)�targetT)r�
disable_gc�	threading�Thread�start�join)rXrW�trYs`  @r�collect_in_threadraQs��������K�������

�	�	�	�����G�,�,�,��	���	�	�	�	��E�E�E��K�
�F�F�H�H�H�H���K�
�F�F�H�H�H�H����H���������������������s)�*B�A'�B�'A?�?B�B�Bc�f�eZdZd�Zd�Zd�Zejd���Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.d+�Z/d,�Z0d-�Z1d.�Z2d/�Z3d0�Z4d1�Z5d2�Z6d3�Z7d4�Z8d5�Z9d6S)7�ReferencesTestCasec�$�|�t��|�t��|�t��t��}t	j|��}t
|��~t
|��dSr)�check_basic_refr
r"r$�weakrefrO�repr)r�o�wrs   r�test_basic_refz!ReferencesTestCase.test_basic_refist�����Q�������_�-�-�-����0�1�1�1�
�C�C��
�[��^�^���R����
��R�����rc��Gd�dt��}|d���}tj|��}|�dt	|����|�dt|����dS)Nc��eZdZd�ZdS)�>ReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfigc��||Srr
rs  r�__getattr__zJReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfig.__getattr__ys���A�w�rN)rrrror
rr�MyConfigrmx�#������
�
�
�
�
rrpr>)�offset)�dictrfrO�assertInrg�str)rrp�obj�obj_weakrefs    r�test_repr_failure_gh99184z,ReferencesTestCase.test_repr_failure_gh99184ws���	�	�	�	�	�t�	�	�	��h�a� � � ���k�#�&�&���
�
�j�$�{�"3�"3�4�4�4��
�
�j�#�k�"2�"2�3�3�3�3�3rc��|�t��|�t��|�t��dSr)�check_basic_callbackr
r"r$rs r�test_basic_callbackz&ReferencesTestCase.test_basic_callback�sE���!�!�!�$�$�$��!�!�/�2�2�2��!�!�"5�6�6�6�6�6rc�$�ddl}|j}|��}tj|��}|�|��|��~|�|����|�|��|�|��dSrH)�	_testcapi�create_cfunctionrfrO�assertIs�assertIsNonererz)rr}r~r ris     r�test_cfunctionz!ReferencesTestCase.test_cfunction�s�������$�5�������
�[��^�^���
�
�b�b�d�d�A����
����"�"�$�$�������-�.�.�.��!�!�"2�3�3�3�3�3rc�X�t��}tj||j��}tj||j��}~t	��|�|��d��|�|��d��|�|jdd��dS)Nz$expected reference to be invalidated�z-callback not called the right number of times)r
rfrOrPrr��assertEqualrJ�rrh�ref1�ref2s    r�test_multiple_callbacksz*ReferencesTestCase.test_multiple_callbacks�s���
�C�C���{�1�d�m�,�,���{�1�d�m�,�,��
��������$�$�&�&�"H�I�I�I����$�$�&�&�"H�I�I�I�������D�	F�	F�	F�	F�	Frc��|fd�}t��}tj||��|_tj||��}~dS)Nc�.�|���dSr�rO)�objectrs  rrPzDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback�s���H�H�J�J�J�J�Jr)r
rfrO)rrP�cr�s    r�test_multiple_selfref_callbacksz2ReferencesTestCase.test_multiple_selfref_callbacks�sO��#'�	�	�	�	�
�C�C���;�q�(�+�+����{�1�h�'�'��
�A�Arc�r�t��}|�ttj|d���dS)N)rP)r
�assertRaises�	TypeErrorrfrO)rr�s  r�test_constructor_kwargsz*ReferencesTestCase.test_constructor_kwargs�s0��
�C�C�����)�W�[�!�d��C�C�C�C�Crc��t��}d|_tj||j��}tj||j��}~t��d�}|�t||��|�t||��tjt����}t��|�tt|��|�	|j
d��dS)NrNc��|jdSrr)�proxys r�checkz0ReferencesTestCase.test_proxy_ref.<locals>.check�s
���I�I�I�Irr�)r
rrfr�rPrr��ReferenceError�boolr�rJ)rrhr�r�r��ref3s      r�test_proxy_refz!ReferencesTestCase.test_proxy_ref�s���
�C�C������}�Q��
�.�.���}�Q��
�.�.��
�����	�	�	�	
���.�%��6�6�6����.�%��6�6�6��}�Q�S�S�!�!���������.�$��5�5�5�������*�*�*�*�*rc��|��}tj|��}|�|��d��|��}|�||d��dS)Nz,weak reference to live object should be livez-<ref>() should return original object if live)rfrO�assertIsNotNoner)r�factoryrhrO�o2s     rrez"ReferencesTestCase.check_basic_ref�sw���G�I�I���k�!�n�n�����S�S�U�U�C�	E�	E�	E�
�S�U�U���
�
�a��D�	F�	F�	F�	F�	Frc���d|_|��}tj||j��}~t	��|�|jdd��|�|��d��dS)NrrNz(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)rJrfrOrPrr�r�)rr�rhrOs    rrzz'ReferencesTestCase.check_basic_callback�s�����
��G�I�I���k�!�T�]�+�+��
�����������?�	A�	A�	A����#�#�%�%�J�	L�	L�	L�	L�	Lrc�L�t��}tj|��}tj|��}tj|��}|�||d��t��}tj|��}tj|��}tj|��}|�||d��|�tj|��dd��~t��|�tj|��dd��dS)Nz1reference object w/out callback should be re-usedr�zwrong weak ref count for objectrNz4wrong weak ref count for object after deleting proxy)r
rfrOr�rr��getweakrefcountr)rrhr�r�r�s     r�test_ref_reusez!ReferencesTestCase.test_ref_reuse�s��
�C�C���{�1�~�~���
�a� � ���{�1�~�~���
�
�d�D�H�	J�	J�	J�
�C�C���
�a� � ���{�1�~�~���{�1�~�~���
�
�d�D�H�	J�	J�	J�����0��3�3�Q�6�	8�	8�	8����������0��3�3�Q�K�	M�	M�	M�	M�	Mrc���t��}tj|��}tj|��}tj|��}|�||d��dS)Nz4proxy object w/out callback should have been re-used)r
rfr�rOr)rrh�proxy1rO�proxy2s     r�test_proxy_reusez#ReferencesTestCase.test_proxy_reuse�sb��
�C�C����q�!�!���k�!�n�n����q�!�!���
�
�f�f�K�	M�	M�	M�	M�	Mrc���t��}|�|tj|����t	j��}tj|��}|�|d��|�d��|�t|��d��|�
|d��ddg|dd�<|�t|��d��|�t|��d��|�d|d��d|d<|�|dd��|�|dd��t	j|��}tj|��}|�||��t	jtd	����}tj|��}|�|dd�|dd���|�|dd�|dd���|�|dd�|dd���|�|dd�|dd���dS)
Nz(proxy for empty UserList should be false�rNz+proxy for non-empty UserList should be truer��z,proxy didn't support __contains__() properlyr>�
)
r
�check_proxyrfr��collections�UserList�assertFalse�appendr��len�
assertTruert�range)rrh�L�p�L2�p2�L3�p3s        r�test_basic_proxyz#ReferencesTestCase.test_basic_proxy�s4��
�C�C������G�M�!�,�,�-�-�-�� �"�"���M�!��������F�G�G�G�	�����������Q����#�#�#�����H�I�I�I��1�v��!�!�!������Q����#�#�#�����Q����#�#�#��
�
�a��J�K�K�K���!������1��q�!�!�!�����1��q�!�!�!�
�
!�!�
$�
$��
�]�2�
�
������B����
�
!�%��)�)�
,�
,��
�]�2�
�
������A�A�A���1�1�1��&�&�&�����A�B�B���A�B�B��(�(�(�����B�Q�B���B�Q�B��(�(�(�����A�a�C��"�Q�q�S�'�*�*�*�*�*rc��Gd�dt��}|��}|�dttj|������|�t
tj|����d��dS)Nc��eZdZd�Zd�ZdS)�0ReferencesTestCase.test_proxy_unicode.<locals>.Cc��dS)N�stringr
rs r�__str__z8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__����xrc��dS)N�bytesr
rs r�	__bytes__z:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__r�rN)rrrr�r�r
rrr
r�s2������
 �
 �
 �
 �
 �
 �
 �
 rr
r�r�)r�rt�dirrfr�r��bytes)rr
�instances   r�test_proxy_unicodez%ReferencesTestCase.test_proxy_unicodes���	 �	 �	 �	 �	 ��	 �	 �	 �
�1�3�3���
�
�k�3�w�}�X�'>�'>�#?�#?�@�@�@�����w�}�X�6�6�7�7��B�B�B�B�Brc��Gd�d��}|��}tj|��}|�tj|��d��dS)Nc��eZdZd�ZdS)�.ReferencesTestCase.test_proxy_index.<locals>.Cc��dS)Nr�r
rs r�	__index__z8ReferencesTestCase.test_proxy_index.<locals>.C.__index__"����rrN)rrrr�r
rrr
r�!�#������
�
�
�
�
rr
r�)rfr�r��operator�index�rr
rhr�s    r�test_proxy_indexz#ReferencesTestCase.test_proxy_index sl��	�	�	�	�	�	�	�	�
�A�C�C���M�!����������*�*�B�/�/�/�/�/rc���Gd�d��}|��}tj|��}|�|dzd��|dz}|�|d��dS)Nc��eZdZd�Zd�ZdS)�,ReferencesTestCase.test_proxy_div.<locals>.Cc��dS�N�*r
r1s  r�__floordiv__z9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__*r�rc��dS)N�r
r1s  r�
__ifloordiv__z:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__,r�rN)rrrr�r�r
rrr
r�)s2������
�
�
�
�
�
�
�
rr
r>r�r��rfr�r�r�s    r�test_proxy_divz!ReferencesTestCase.test_proxy_div(s���	�	�	�	�	�	�	�	�

�A�C�C���M�!��������a���$�$�$�	�a�������B�����rc��Gd�d��}|��}tj|��}|�|dzd��|�d|zd��|dz}|�|d��dS)Nc� �eZdZd�Zd�Zd�ZdS)�/ReferencesTestCase.test_proxy_matmul.<locals>.Cc��dS)N�r
r1s  r�
__matmul__z:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__6����trc��dS)N�]���r
r1s  r�__rmatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__8r�rc��dS)N�1r
r1s  r�__imatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__:s���srN)rrrr�r�r�r
rrr
r�5sA������
�
�
�
�
�
�
�
�
�
�
rr
r>r�r�r�r�r�s    r�test_proxy_matmulz$ReferencesTestCase.test_proxy_matmul4s���	�	�	�	�	�	�	�	�
�A�C�C���M�!��������Q���%�%�%�����Q���%�%�%�	�Q�������C� � � � � rc�D�|�tj��dSr)�check_shared_without_callbackrfrOrs r� test_shared_ref_without_callbackz3ReferencesTestCase.test_shared_ref_without_callbackKs���*�*�7�;�7�7�7�7�7rc�D�|�tj��dSr)r�rfr�rs r�"test_shared_proxy_without_callbackz5ReferencesTestCase.test_shared_proxy_without_callbackNs���*�*�7�=�9�9�9�9�9rc��td��}||d��}||d��}|�||d��~~||��}||d��}|�||d��~~||��}||��}|�||d��~~||d��}||��}|�||d��dS)NrNz%both callbacks were None in the C APIz&callbacks were NULL, None in the C APIz%both callbacks were NULL in the C APIz&callbacks were None, NULL in the C API)r&r)r�makerefrh�p1r�s     rr�z0ReferencesTestCase.check_shared_without_callbackQs����1�I�I��
�W�Q��
�
��
�W�Q��
�
���
�
�b�"�E�F�F�F���
�W�Q�Z�Z��
�W�Q��
�
���
�
�b�"�F�G�G�G���
�W�Q�Z�Z��
�W�Q�Z�Z���
�
�b�"�E�F�F�F���
�W�Q��
�
��
�W�Q�Z�Z���
�
�b�"�F�G�G�G�G�Grc���t��}tj|��}|�||��|�t|��tjd��|d��|�|jdd��|d���|�|jdd��|�	t|��|�	t|ddd��dS)	Nzproxy is not of callable typez	twinkies!z1call through proxy not passed through to originalzSplat.)rrNr�r�)rrfr�r�r�type�CallableProxyTyper�rr�r�)rrhr�s   r�test_callable_proxyz&ReferencesTestCase.test_callable_proxycs����J�J���}�Q��������D�!�!�!��
�
�d�4�j�j�'�";�4�	6�	6�	6���[����������H�	J�	J�	J���x�����������H�	J�	J�	J�	
���)�T�*�*�*�	
���)�T�1�a��3�3�3�3�3rc��d|_|�|jdd��d|_|�|jdd��|`|�t|d��d��d|_|�|jdd��d|_|�|jdd��|`|�t|d��d	��dS)
NrNz)proxy does not reflect attribute additionr�z-proxy does not reflect attribute modification�fooz(proxy does not reflect attribute removalz4object does not reflect attribute addition via proxyz8object does not reflect attribute modification via proxyz3object does not reflect attribute removal via proxy)r�r�r��hasattr)rrhr�s   rr�zReferencesTestCase.check_proxyxs����������A�@�	B�	B�	B���������A�D�	F�	F�	F�
�E�������.�.�?�	A�	A�	A���	�������K�	M�	M�	M���	�������F�	H�	H�	H��I������E�*�*�J�	L�	L�	L�	L�	Lrc��Gd�d��}|��}tj|��}|d=|�|jd��dS)Nc��eZdZdZd�ZdS)�3ReferencesTestCase.test_proxy_deletion.<locals>.FooNc��||_dSr)�result)r�accessors  r�__delitem__z?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__�s
��&����r)rrrrrr
rr�Foor��s(�������F�
'�
'�
'�
'�
'rrr)rfr�r�r)rr�gr s    r�test_proxy_deletionz&ReferencesTestCase.test_proxy_deletion�sk��	'�	'�	'�	'�	'�	'�	'�	'�
�C�E�E���M�!����
�a�D������1�%�%�%�%�%rc���Gd�dt��}|��}|�ttj|����t|����dS)Nc��eZdZdS)�0ReferencesTestCase.test_proxy_bool.<locals>.ListN�rrrr
rr�Listr�s�������rr
)�listr�r�rfr�)rr
�lysts   r�test_proxy_boolz"ReferencesTestCase.test_proxy_bool�s[�������4�����t�v�v������g�m�D�1�1�2�2�D��J�J�?�?�?�?�?rc����d�G�fd�d��}|���tj���}|�t��5d|vddd��dS#1swxYwYdS)Nc���eZdZ�fd�ZdS)�1ReferencesTestCase.test_proxy_iter.<locals>.MyObjc����tSr)r0)rrvs �r�__iter__z:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__�s����%�%rN�rrrr)rvs�r�MyObjr�s.�������
&�
&�
&�
&�
&�
&�
&rr�blech)rfr�r�r�)rrr�rvs   @r�test_proxy_iterz"ReferencesTestCase.test_proxy_iter�s������	&�	&�	&�	&�	&�	&�	&�	&�	&�	&��e�g�g���M�#����
�
�
�y�
)�
)�	�	�
�q�L�L�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A!�$A!c����gd���fd�}|���G�fd�d��}|��}|�t|��gd���dS)N)r:r>�c3��K��Ed{V��dSrr
)�arrs�r�
iterator_funcz9ReferencesTestCase.test_proxy_next.<locals>.iterator_func�s������N�N�N�N�N�N�N�N�Nrc���eZdZ�fd�ZdS)�:ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklyc�,��tj���Sr�rfr�)r�its �rrzCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__�s����}�R�(�(�(rNr)r s�r�IteratesWeaklyr�s.�������
)�
)�
)�
)�
)�
)�
)rr!)r�r)rrr!�weak_itrr s    @@r�test_proxy_nextz"ReferencesTestCase.test_proxy_next�s������i�i��	�	�	�	�	�
�]�_�_��	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�!�.�"�"��	
����g���	�	�	�2�2�2�2�2rc����d��G�fd�d��}|��}d}|�t|��5t|��ddd��dS#1swxYwYdS)Nc��dSrHr
r
rr�<lambda>z8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>�s��!�rc���eZdZ�fd�ZdS)�1ReferencesTestCase.test_proxy_bad_next.<locals>.Ac�,��tj���Srr)r�not_an_iterators �rrz:ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__�s����}�_�5�5�5rNr)r*s�r�Ar(�s.�������
6�
6�
6�
6�
6�
6�
6rr+z'Weakref proxy referenced a non-iterator)�assertRaisesRegexr�r)rr+�a�msgr*s    @r�test_proxy_bad_nextz&ReferencesTestCase.test_proxy_bad_next�s����$�)��	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�
�A�C�C��7��
�
#�
#�I�s�
3�
3�	�	���G�G�G�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac	���Gd�d��}|��}|�d�ttj|������d��dS)Nc��eZdZd�Zd�ZdS)�5ReferencesTestCase.test_proxy_reversed.<locals>.MyObjc��dS)Nr�r
rs r�__len__z=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__�����qrc� �td��S)N�cba)�iterrs r�__reversed__zBReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__�s���E�{�{�"rN)rrrr4r9r
rrrr2�s2������
�
�
�
#�
#�
#�
#�
#rr�r7)r�r_�reversedrfr��rrrvs   r�test_proxy_reversedz&ReferencesTestCase.test_proxy_reversed�sq��	#�	#�	#�	#�	#�	#�	#�	#��e�g�g���������'�-��*<�*<�!=�!=�>�>��F�F�F�F�Frc��Gd�d��}|��}|�t��5ttj|����ddd��n#1swxYwYGd�d��}|��}|�t��5ttj|����ddd��dS#1swxYwYdS)Nc��eZdZd�ZdS)�1ReferencesTestCase.test_proxy_hash.<locals>.MyObjc��dSr�r
rs rr8z:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__�r�rN�rrrr8r
rrrr@�r�rrc��eZdZdZdS)r@NrBr
rrrz1ReferencesTestCase.test_proxy_hash.<locals>.MyObj�s�������H�H�Hr)r�r�r7rfr�r<s   r�test_proxy_hashz"ReferencesTestCase.test_proxy_hash�s}��	�	�	�	�	�	�	�	��e�g�g��
�
�
�y�
)�
)�	%�	%����s�#�#�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	�	�	�	�	�	�	�	��e�g�g��
�
�
�y�
)�
)�	%�	%����s�#�#�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s#�"A � A$�'A$�"C�C�Cc�F�t��}tj|��}tj||j��}|�tj|��dd��tj|��}tj||j��}|�tj|��dd��~~~~t��|�tj|��dd��|�tjd��dd��dS)Nr�z*got wrong number of weak reference objectsr:rzAweak reference objects not unlinked from referent when discarded.rNz2got wrong number of weak reference objects for int)r
rfrOrPr�r�r�r)rrhr�r�r�r�s      r�test_getweakrefcountz'ReferencesTestCase.test_getweakrefcount�s$��
�C�C���{�1�~�~���{�1�d�m�,�,������0��3�3�Q�A�	C�	C�	C���q�!�!����q�$�-�0�0������0��3�3�Q�A�	C�	C�	C�
�$�����������0��3�3�Q�1�	2�	2�	2�
	
����0��3�3�Q�I�	K�	K�	K�	K�	Krc��t��}tj||j��}tj||j��}~t	��|�tj|��|gd��t��}tj||j��}tj||j��}~t	��|�tj|��|gd��~t	��|�tj|��gd��|�tjd��gd��dS)Nzlist of refs does not matchzlist of refs not clearedrNz#list of refs does not match for int)r
rfrOrPrr��getweakrefsr�s    r�test_getweakrefsz#ReferencesTestCase.test_getweakrefss@��
�C�C���{�1�d�m�,�,���{�1�d�m�,�,�����������,�Q�/�/�$��2�	4�	4�	4�
�C�C���{�1�d�m�,�,���{�1�d�m�,�,�����������,�Q�/�/�$��2�	4�	4�	4�
���������,�Q�/�/��/�	1�	1�	1�	
����,�Q�/�/��:�	<�	<�	<�	<�	<rc���Gd�dt��}|d��}tj|��}|�|dzd��|�d|zd��dS)Nc��eZdZdS)�6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNr	r
rr�FrL��������DrrMg@g�?g@)�floatrfr�r�)rrMr r�s    r�test_newstyle_number_opsz+ReferencesTestCase.test_newstyle_number_opss���	�	�	�	�	��	�	�	�
�A�c�F�F���M�!��������S��#�&�&�&�����q��#�&�&�&�&�&rc�����Gd�dt���i��fd�����fd�}	|��|�d��n#�$rYnwxYw	|��|�d��dS#�$rYdSwxYw)Nc��eZdZdS)�?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNr	r
rr�
BogusErrorrS%rNrrTc����|=dSrr
)�k�datas �r�removez;ReferencesTestCase.test_callbacks_protected.<locals>.remove(s����Q���rc�>��d�}d�tj|���<��)Nc��dS)Nr
r
r
rrr&zRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>+s���r)rfrO)r rTrWrXs ���r�encapsulatez@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulate*s&�����A�+/�D���Q��'�'�(��rzexception not properly restored)�	Exception�fail)rr[rTrWrXs  @@@r�test_callbacks_protectedz+ReferencesTestCase.test_callbacks_protected"s	�����	�	�	�	�	��	�	�	���	�	�	�	�	�	�	�	�	�	�	�	�	9��K�M�M�M�
�I�I�7�8�8�8�8���	�	�	��D�	����	9��K�M�M�M�
�I�I�7�8�8�8�8�8���	�	�	��D�D�	���s#�
A�A�
A�
A3�3A<�;A<c���ddl�Gd�dt��}|��}tj|�fd���}~~|��}|��|_tj|j�fd���}|��}||_~~dS)Nrc��eZdZdS)�0ReferencesTestCase.test_sf_bug_840829.<locals>.CNr	r
rrr
raHrNrr
c�"���j��Sr�rW��ignorerVs �rr&z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Ls���:�2�:�<�<�rc�"���j��Srrcrds �rr&z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Ts���j�b�j�l�l�r)rVr�rfrO�i�c1)rr
r�rirh�c2rVs      @r�test_sf_bug_840829z%ReferencesTestCase.test_sf_bug_840829;s����	�	�	�	�	�	�	�	�	��	�	�	�
�A�C�C��
�[��7�7�7�7�
8�
8��
�
�
�Q�S�S���q�s�s���
�[���:�:�:�:�
;�
;��
�Q�S�S������
�B�Brc���ddl}Gd�dt��}Gd�dt��}|��}||_tj||j��|_~~~|j��dS)Nrc��eZdZdS)�4ReferencesTestCase.test_callback_in_cycle.<locals>.JNr	r
rr�JrmfrNrrnc��eZdZd�ZdS)�5ReferencesTestCase.test_callback_in_cycle.<locals>.IIc��|jdSr)rn�rres  r�	acallbackz?ReferencesTestCase.test_callback_in_cycle.<locals>.II.acallbackjs
������rN)rrrrsr
rr�IIrpis#������
�
�
�
�
rrt)rVr�rnrfrOrsrirW)rrVrnrt�Is     r�test_callback_in_cyclez)ReferencesTestCase.test_callback_in_cyclecs����	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�
�B�D�D������{�1�a�k�*�*���2
�q�"���
�����rc���ddl}Gd�d��}|��|��}}||_||_tj||j��|_~~|j��dS)Nrc��eZdZd�ZdS)�=ReferencesTestCase.test_callback_reachable_one_way.<locals>.Cc�0�|j|j|jdSr��merhrirrs  r�cbz@ReferencesTestCase.test_callback_reachable_one_way.<locals>.C.cb��������������rN�rrrr}r
rrr
ry��#������
�
�
�
�
rr
)rVr|rhrfrOr}rirW)rrVr
rhris     r�test_callback_reachable_one_wayz2ReferencesTestCase.test_callback_reachable_one_way�s����	�	�	�	�	�	�	�	�	�	�	�����a�a�c�c�B����������B���&�&�������
�����rc��ddl}Gd�dt��}Gd�d��}|��|��}}||_||_t	j||j��|_~~~~|j��dS)Nrc��eZdZd�ZdS)�=ReferencesTestCase.test_callback_different_classes.<locals>.Cc�0�|j|j|jdSrr{rrs  rr}z@ReferencesTestCase.test_callback_different_classes.<locals>.C.cb�r~rNrr
rrr
r��r�rr
c��eZdZdS)�=ReferencesTestCase.test_callback_different_classes.<locals>.DNr	r
rr�Dr��rNrr�)	rVr�r|rhrfrOr}rirW)rrVr
r�rhris      r�test_callback_different_classesz2ReferencesTestCase.test_callback_different_classes�s����	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	�	�����a�a�c�c�B����������B���&�&�����A�q���
�����rc�D��ddl}g�G�fd�dt��}|d��|d��}}||_||_tj||j��|_tj||j��|_�fd�}tj||��}~~~|��g��|j��|��dg��|�|��d���dd�=|j��|��g��dS)Nrc� ��eZdZd�Z�fd�ZdS)�AReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.Cc��||_dSr)�	attribute)r�values  rr*zJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__�s
��!&����rc�<����|j��dSr)r�r��rre�alists  �rrszKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallback�s������T�V�$�$�$�$�$rN)rrrr*rs�r�s�rr
r��s=�������
'�
'�
'�
%�
%�
%�
%�
%�
%�
%rr
rNr�c�2����d��dS)N�C went away�r��rer�s �r�C_went_awayzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_away�s����L�L��'�'�'�'�'rr�)	rVr�r�rfrOrsrir�rW)rrVr
rhrir�rir�s       @r�#test_callback_in_cycle_resurrectionz6ReferencesTestCase.test_callback_in_cycle_resurrection�sX����	�	�	���	%�	%�	%�	%�	%�	%�	%��	%�	%�	%���1���q�q��t�t�B����������B���-�-�����B���-�-���	(�	(�	(�	(�	(�
�[��K�
(�
(����A������#�#�#���
����
	
������0�0�0��������t�$�$�$��!�!�!�H���
���������#�#�#�#�#rc���ddl}g��fd�}G�fd�dt��}|��|��}}||_||_|j}t	j||��|_t	j||j��|_t	j||��}|�|��|��~~~~|��g��|j	��|��dg��|�|��d���dd�=|j	��|��g��dS)Nrc�2����d��dS)N�safe_callback calledr�r�s �r�
safe_callbackzDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callback�s����L�L�/�0�0�0�0�0rc���eZdZ�fd�ZdS)�8ReferencesTestCase.test_callbacks_on_callback.<locals>.Cc�2����d��dS)Nz	cb calledr�r�s  �rr}z;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cb�s������[�)�)�)�)�)rNrr�s�rr
r��s.�������
*�
*�
*�
*�
*�
*�
*rr
r�)
rVr�r2r}rfrOrirr�rW)	rrVr�r
r��drP�external_wrr�s	        @r�test_callbacks_on_callbackz-ReferencesTestCase.test_callbacks_on_callback�sw����	�	�	���	1�	1�	1�	1�	1�	*�	*�	*�	*�	*�	*�	*��	*�	*�	*��q�s�s�A�A�C�C�1���������4���{�1�h�'�'����{�8�Q�T�*�*����k�(�M�:�:���
�
�k�k�m�m�X�.�.�.�
�a��A������#�#�#���
��������!7� 8�9�9�9���������-�-�-��!�!�!�H���
���������#�#�#�#�#rc�D�|�tj��dSr)�check_gc_during_creationrfrOrs r�test_gc_during_ref_creationz.ReferencesTestCase.test_gc_during_ref_creations���%�%�g�k�2�2�2�2�2rc�D�|�tj��dSr)r�rfr�rs r�test_gc_during_proxy_creationz0ReferencesTestCase.test_gc_during_proxy_creations���%�%�g�m�4�4�4�4�4rc�v�tj��}tjddd��tj��Gd�d��}d�}|��}|��}||_||��|_	|��}t
j||��tj|�dS#tj|�wxYw)NrNc��eZdZdS)�6ReferencesTestCase.check_gc_during_creation.<locals>.ANr	r
rrr+r�rNrr+c��dSrr
)�argss rrPz=ReferencesTestCase.check_gc_during_creation.<locals>.callback ����Dr)rV�
get_threshold�
set_thresholdrWr-rirfrO)rr��
thresholdsr+rP�
referencedr-s       rr�z+ReferencesTestCase.check_gc_during_creations����%�'�'�
�
���A�q�!�!�!�
�
����	�	�	�	�	�	�	�	�	�	�	��Q�S�S�
�
�A�C�C������w�z�"�"���	*�����A��K�
�H�-�-�-�
��j�)�)�)�)��B��j�)�)�)���s�9B(�(B8c�@�Gd�dt��}|��}dS)Nc��eZdZd�ZdS)�>ReferencesTestCase.test_ref_created_during_del.<locals>.Targetc�.�tj|��adSr)rfrO�ref_from_delrs r�__del__zFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__8s��&�{�4�0�0���rN�rrrr�r
rr�Targetr�7s#������
1�
1�
1�
1�
1rr�)r�)rr��ws   r�test_ref_created_during_delz.ReferencesTestCase.test_ref_created_during_del2s=��
	1�	1�	1�	1�	1�V�	1�	1�	1�

�F�H�H���rc	��tjt��}|�t|jddddd��t
j��dSrH)rfrOr\r�r�r*rVrW)r�rs  r�	test_initzReferencesTestCase.test_init>sD��
�K�	�"�"�����)�Q�Z��A�q�!�Q�?�?�?�
�
�����rc�*�Gd�dt��}g}tjt��tj||j��}d}tj��|�|��d��|�||g��dS)Nc��eZdZdS)�*ReferencesTestCase.test_classes.<locals>.ANr	r
rrr+r�HrNrr+)r�rfrO�intr�rVrWr�)rr+�lr-s    r�test_classeszReferencesTestCase.test_classesFs���	�	�	�	�	��	�	�	�����C�����K��1�8�$�$����
�
�����������d�#�#�#�����Q�C� � � � � rc��td��}td��}td��}tj|��}tj|��}tj|��}tj|��}|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�|t
k��|�|t
k��~~~t
j��|||fD] }|�|��d���!|�||k��|�||k��|�||k��|�||k��|�	||k||u��|�	||k||u��dS)NrNr�)
r&rfrOr�r�rrVrWrr�)	rr�y�zr-�br�r�r�s	         r�
test_equalityz ReferencesTestCase.test_equalityRs#���1�I�I���1�I�I���1�I�I���K��N�N���K��N�N���K��N�N���K��N�N��	
����Q���������a�� � � �����a�� � � �����Q���������Q���������a�� � � �����a�� � � �����Q���������Y��'�'�'�����i��(�(�(�
�q�!�
�
�����A�q��	%�	%�A��M�M�!�!�#�#�t�$�$�$�$�
	
����a�� � � �����Q���������a�� � � �����Q���������a���a��(�(�(�����a���!��,�,�,�,�,rc��tjtjtjtjg}td��}td��}t
j|��}t
j|��}|D]}|�t|||��� ~~tj��|D]}|�t|||��� dSrM)r��lt�gt�le�ger&rfrOr�r�rVrW)r�opsrr�r-r��ops       r�
test_orderingz ReferencesTestCase.test_orderingws����{�H�K���h�k�B���1�I�I���1�I�I���K��N�N���K��N�N���	3�	3�B����i��Q��2�2�2�2�
�q�
�
�����	3�	3�B����i��Q��2�2�2�2�	3�	3rc��td��}td��}tj|��}tj|��}|�t	|��t	d����~~tj��|�t	|��t	d����|�tt|��dSr�)	r&rfrOr�r7rVrWr�r�)rrr�r-r�s     r�test_hashingzReferencesTestCase.test_hashing�s����2�J�J���2�J�J���K��N�N���K��N�N������a���$�r�(�(�+�+�+�
�q�
�
����	
����a���$�r�(�(�+�+�+����)�T�1�-�-�-�-�-rc���Gd�d��}tj��}|d��x}}td��D]}||��x||<}�~tj��dS)Nc��eZdZd�ZdS)�1ReferencesTestCase.test_trashcan_16602.<locals>.Cc�v��|sdStj|����fd�}tj||��|_dS)Nc������}dSrr
)�wparentrh�wselfs  �rr}zFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb�s�������A�A�Ar)rfrOr�)r�parentr}r�s   @rr*z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__�sO������F���D�)�)�� � � � � �&�{�6�2�6�6����rNrDr
rrr
r��s#������
7�
7�
7�
7�
7rr
�d)rf�WeakKeyDictionaryr�rVrW)rr
r��rootr��ns      r�test_trashcan_16602z&ReferencesTestCase.test_trashcan_16602�s���
	7�	7�	7�	7�	7�	7�	7�	7�
�%�'�'���1�T�7�7���q��s���	�	�A��q��t�t�O�A�a�D�1�1��
�
�����rc���td��}d�}tj||��}|�|j|��tj|��}|�|j��dS)NrNc��dSrr
r�s rr&z<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>����t�r)r&rfrOr�__callback__r�)rrrPr�r�s     r�test_callback_attributez*ReferencesTestCase.test_callback_attribute�sg���1�I�I��#�#���{�1�h�'�'���
�
�d�'��2�2�2��{�1�~�~�����$�+�,�,�,�,�,rc���td��}tj||j��}|�|j��~t
j��|�|j��dSrM)	r&rfrOrPr�r�rrr�)rrrOs   r�&test_callback_attribute_after_deletionz9ReferencesTestCase.test_callback_attribute_after_deletion�sf���1�I�I���k�!�T�]�+�+�����S�-�.�.�.�
���������#�*�+�+�+�+�+rc���td��}d�}tj||��}|�t��5d�|_ddd��dS#1swxYwYdS)NrNc��dSrr
r�s rr&z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�r�rc��dSrr
r�s rr&z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�s��D�r)r&rfrOr��AttributeErrorr�)rrrPr�s    r�test_set_callback_attributez.ReferencesTestCase.test_set_callback_attribute�s����1�I�I��#�#���{�1�h�'�'��
�
�
�~�
.�
.�	1�	1� 0� 0�D��	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�	A�A�Ac��Gd�dt��}|d��}tj|d���}~tj��dS)Nc��eZdZd�ZdS)�;ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelc��dSrr
rs rr�zCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__�r!rNr�r
rr�
ObjectWithDelr��s������#�#�#�#�#rr�rNc�(�tj��Sr)rrr�s rr&z6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>�s��'�*<�*>�*>�r)r&rfrOrr)rr�rr�s    r�test_callback_gcsz$ReferencesTestCase.test_callback_gcs�sh��	$�	$�	$�	$�	$�F�	$�	$�	$��M�!�����{�1�>�>�?�?��
�������rN):rrrrjrxr{r�cpython_onlyr�r�r�r�r�rerzr�r�r�r�r�r�r�r�r�r�r�r�rr
rr#r/r=rDrFrIrPr^rjrvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
rrrcrcgsh���������	4�	4�	4�7�7�7�

��	4�	4���	4�	F�	F�	F����$D�D�D�+�+�+�$F�F�F�	L�	L�	L�M�M�M�.M�M�M�+�+�+�8	C�	C�	C�0�0�0�
 �
 �
 �
!�
!�
!�.8�8�8�:�:�:�H�H�H�$4�4�4�*L�L�L�*	&�	&�	&�@�@�@����(
3�
3�
3�
�
�
�G�G�G�%�%�%� K�K�K�,<�<�<�4'�'�'�9�9�9�2&�&�&�P&�&�&�P���0���8,$�,$�,$�\$$�$$�$$�L3�3�3�5�5�5�*�*�*�2
�
�
����
!�
!�
!�#-�#-�#-�J
3�
3�
3�
.�
.�
.����*-�-�-�,�,�,�1�1�1�����rrcc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�SubclassableWeakrefTestCasec��Gd�dtj��}td��}||d���}|�|��|��|�|j��|�|jd��~t��|�	|����|�|j��dS)Nc�*��eZdZd�fd�	Z�fd�Z�xZS)�=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefNr�c�Z��||_t���||��dSr)r��superr*)r�obrPr��	__class__s    �rr*zFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__�s*���"��
���� � ��X�.�.�.�.�.rc�R��d|_t�����S�NT)�calledr�r)rr�s �rrzFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__�s ���"����w�w�'�'�)�)�)rr�)rrrr*r�
__classcell__)r�s@r�MyRefr��sV�������
/�
/�
/�
/�
/�
/�
*�
*�
*�
*�
*�
*�
*�
*�
*rrr���r�)
rfrOr&rr�rr�r�rr�)rrrh�mrs    r�test_subclass_refsz.SubclassableWeakrefTestCase.test_subclass_refs�s���	*�	*�	*�	*�	*�G�K�	*�	*�	*�
�5�M�M��
�U�1�B�
�
�
���
�
�b�b�d�d�A��������	�"�"�"������2�&�&�&�
��������"�"�$�$��������	�"�"�"�"�"rc���Gd�dtj��}td��}||��}tj|��}|�||��|�tj|��||g��|�tj|��d��||��}|�tj|��d��tj|��}|�t|��d��|�||d��|�	||dd���|�	||dd���dS)Nc��eZdZdS)�XSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefNr	r
rrrr
�rNrrr�r�r�rrN)
rfrOr&�assertIsNotr�rHr�r�rrt)rrrh�r1�r2�r3�refss       r�-test_subclass_refs_dont_replace_standard_refszISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs�s_��	�	�	�	�	�G�K�	�	�	��2�J�J��
�U�1�X�X��
�[��^�^������R� � � �����,�Q�/�/�"�b��:�:�:�����0��3�3�Q�7�7�7�
�U�1�X�X������0��3�3�Q�7�7�7��"�1�%�%������T���A�&�&�&��
�
�b�$�q�'�"�"�"��
�
�b�$�q�r�r�(�#�#�#��
�
�b�$�q�r�r�(�#�#�#�#�#rc�D�Gd�dtj��}td��}||t��}||t��}|�||��tj|��}|�||��|�||��dS)Nc��eZdZdS)�USubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefNr	r
rrrr�rNrrr�)rfrOr&�idrurrHrt)rrrhrr
rs      r�*test_subclass_refs_dont_conflate_callbackszFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks�s���	�	�	�	�	�G�K�	�	�	��2�J�J��
�U�1�b�\�\��
�U�1�c�]�]������R� � � ��"�1�%�%���
�
�b�$�����
�
�b�$�����rc�r�Gd�dtj��}td��}||ddd��}|�|jd��|�|jd��|�|���d��|�t|d����dS)Nc�$�eZdZdZd�Zd�Zd�ZdS)�HSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef��slot1�slot2c�D�tj�|||��Sr)rfrO�__new__)r�r�rPrrs     rrzPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__�s���{�*�*�4��X�>�>�>rc�"�||_||_dSrr)rr�rPrrs     rr*zQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__s��"��
�"��
�
�
rc� �|j|jzSrrrs r�methzMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.meths���z�D�J�.�.rN)rrr�	__slots__rr*r r
rrrr�sF������(�I�
?�
?�
?�
#�
#�
#�
/�
/�
/�
/�
/rrr��abc�def�abcdef�__dict__)	rfrOr&r�rrr r�r�)rrrhr�s    r�test_subclass_refs_with_slotsz9SubclassableWeakrefTestCase.test_subclass_refs_with_slots�s���	/�	/�	/�	/�	/�G�K�	/�	/�	/�
�2�J�J���E�!�T�5�%�(�(�������%�(�(�(������%�(�(�(���������8�,�,�,������J�/�/�0�0�0�0�0rc�d��	Gd�dtj��}�fd�}t��}|||��}||_~~���jd��t��}|||��}|||��}||_||_~~~���jd��dS)Nc��eZdZdS)�HSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNr	r
rrrr)rNrrc�(���xjdz
c_dSrMrI)r�rs �rrPzKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbacks����M�M�Q��M�M�M�Mrr)rfrOr
rhr�rJr�)rrrPrhrr
s`     r�test_subclass_refs_with_cyclez9SubclassableWeakrefTestCase.test_subclass_refs_with_cycles����A�	�	�	�	�	�G�K�	�	�	�
	�	�	�	�	�
�C�C��
�U�1�h�
�
�����
��������*�*�*�
�C�C��
�U�1�h�
�
��
�U�1�h�
�
��������
���������*�*�*�*�*rN)rrrrrrr&r+r
rrr�r��s_������#�#�#�$$�$�$�"	 �	 �	 �1�1�1�"$+�$+�$+�$+�$+rr�c�^�eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	j
d���Zd�Zd	�Z
d
S)�WeakMethodTestCasec�.�	Gd�dt��}|S)Nc��eZdZd�ZdS)�'WeakMethodTestCase._subclass.<locals>.Cc��dS)Nrr
rs rr;z3WeakMethodTestCase._subclass.<locals>.C.some_method8r5rN)rrrr;r
rrr
r07s#������
�
�
�
�
rr
)r&)rr
s  r�	_subclasszWeakMethodTestCase._subclass5s6��A�	�	�	�	�	��	�	�	��rc���td��}tj|j��}|�|tj��|�|��t
|j����|�|��j|��|�|��j	|jj	��|�
|����d��dS)NrNr:)r&rf�
WeakMethodr;�assertIsInstance�
ReferenceTyper�r�__self__�__func__r��rrhr�s   r�
test_alivezWeakMethodTestCase.test_alive<s����1�I�I����q�}�-�-�����a��!6�7�7�7����a�a�c�c�4��
�#6�#6�7�7�7��
�
�a�a�c�c�l�A�&�&�&��
�
�a�a�c�c�l�A�M�$:�;�;�;������������"�"�"�"�"rc��td��}tj|j��}~t	j��|�|��d��dSrM)r&rfr4r;rVrWrr9s   r�test_object_deadz#WeakMethodTestCase.test_object_deadEsM���1�I�I����q�}�-�-��
�
�
�����
�
�a�a�c�c�4� � � � � rc���|���}|d��}tj|j��}|`t	j��|�|��d��dSrM)r2rfr4r;rVrWr)rr
rhr�s    r�test_method_deadz#WeakMethodTestCase.test_method_deadLs`���N�N����
�A�a�D�D����q�}�-�-��
�M�
�
�����
�
�a�a�c�c�4� � � � � rc�T��|���}g��fd�}|d��}tj|j|��}~t	j��|��|g��tj|_t	j��|��|g��dS)Nc�2����|��dSrr��r)�callss �rr}z=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbX�����L�L������rrN)r2rfr4r;rVrWr�r&�rr
r}rhr�rBs     @r�test_callback_when_object_deadz1WeakMethodTestCase.test_callback_when_object_deadTs�����N�N������	�	�	�	�	�
�A�a�D�D����q�}�b�1�1��
�
�
����������$�$�$��*��
�
�
����������$�$�$�$�$rc�6��|���}g��fd�}|d��}tj|j|��}|`t	j��|��|g��~t	j��|��|g��dS)Nc�2����|��dSrr�rAs �rr}z=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbhrCrrN)r2rfr4r;rVrWr�rDs     @r�test_callback_when_method_deadz1WeakMethodTestCase.test_callback_when_method_deadds�����N�N������	�	�	�	�	�
�A�a�D�D����q�}�b�1�1��
�M�
�
����������$�$�$�
�
�
����������$�$�$�$�$rc���td��}d�}tj|j|��}tj|��}~|�|��d��dS)NrNc��dSrr
)�_s rr}z-WeakMethodTestCase.test_no_cycles.<locals>.cbxr�r)r&rfr4r;rOr)rrhr}r�ris     r�test_no_cyclesz!WeakMethodTestCase.test_no_cyclestsb��
�1�I�I��	�	�	���q�}�b�1�1��
�[��^�^��
��
�
�b�b�d�d�D�!�!�!�!�!rc����fd�}�fd�}td��}td��}tj|j��}tj|j��}tj|j��}tj|j��}|||��|||��|||��|||��|||��|||��td��}	tj|	j��}
tj|	j��}|||
��|||��|||
��|||��|||j��||t
��~~~	t
j��|||||
|f}|D]?}
|D]:}��|
|k|
|u����|
|k|
|u���;�@dS)Nc�l����||k����||k��dSr�r�r��r-r�rs  �r�_eqz-WeakMethodTestCase.test_equality.<locals>._eq��7����O�O�A��F�#�#�#����Q�!�V�$�$�$�$�$rc�l����||k����||k��dSrrOrPs  �r�_nez-WeakMethodTestCase.test_equality.<locals>._ne�rRrrNr�)	r&rfr4r;r?rrVrWr�)rrQrTrr�r-r�r�r�r��er r�qr�s`              rr�z WeakMethodTestCase.test_equalitys���	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�
�1�I�I���1�I�I����q�}�-�-����q�}�-�-����q�~�.�.����q�~�.�.����A�q�	�	�	���A�q�	�	�	���A�q�	�	�	���A�q�	�	�	���A�q�	�	�	���A�q�	�	�	��1�I�I����q�}�-�-����q�~�.�.����A�q�	�	�	���A�q�	�	�	���A�q�	�	�	���A�q�	�	�	���A�q�}������A�y����
�q�!�
�
�����!�Q��1�a����	5�	5�A��
5�
5��� � ��a���a��0�0�0�� � ��a���!��4�4�4�4�
5�	5�	5rc�N�td��}td��}tj|j��}tj|j��}tj|j��}|�t
|��t
|����t
|��}~~tj��|�t
|��|��|�t
|��|��|�	tt|��dSrM)r&rfr4r;r?r�r7rVrWr�r�)rrr�r-r�r��has       rr�zWeakMethodTestCase.test_hashing�s���
�1�I�I���1�I�I����q�}�-�-����q�}�-�-����q�~�.�.������a���$�q�'�'�*�*�*�
�!�W�W��
�q�
�
��������a���"�%�%�%�����a���"�%�%�%����)�T�1�-�-�-�-�-rN)rrrr2r:r<r>rErHrr�rLr�r�r
rrr-r-3s����������#�#�#�!�!�!�!�!�!�%�%�%� %�%�%� 
��"�"���"�'5�'5�'5�R.�.�.�.�.rr-c���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+e,j-��d*���Z.e,j-��d+���Z/e,j-��d,���Z0d-�Z1e,j-��d.���Z2e,j-��e3j4d/��d0�����Z5e,j-��d1���Z6e,j-��e3j4d/��d2�����Z7e3j8d3���Z9d4S)5�MappingTestCaser�c���d}d�t|��D��}|�fd�|D����}|���}	t|��n#t$rYnwxYw~t	j��t
|��}~t	j��t
|��}|�|d��|�|d��dS)N�c�*�g|]}t����Sr
�rA��.0rgs  r�
<listcomp>z4MappingTestCase.check_len_cycles.<locals>.<listcomp>�s��.�.�.�����.�.�.rc3�.�K�|]}�|��V��dSrr
�r`rh�conss  �r�	<genexpr>z3MappingTestCase.check_len_cycles.<locals>.<genexpr>�s+�����/�/�A���Q���/�/�/�/�/�/r)rrNr)	r��items�next�
StopIterationrVrWr�rtr�)	r�	dict_typerd�Nrf�dctr �n1�n2s	  `      r�check_len_cyclesz MappingTestCase.check_len_cycles�s������.�.�U�1�X�X�.�.�.���i�/�/�/�/��/�/�/�/�/��
�Y�Y�[�[��	���H�H�H�H���	�	�	��D�	�����
�
����
��X�X���
�
����
��X�X���
�
�b�&�!�!�!�����Q�����s�	A�
A&�%A&c�H�|�tjd���dS)Nc�
�|dfSrMr
�rVs rr&z<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>��
��A�q�6�r)rnrfr�rs r�test_weak_keyed_len_cyclesz*MappingTestCase.test_weak_keyed_len_cycles�s%�����g�7�9I�9I�J�J�J�J�Jrc�H�|�tjd���dS)Nc�
�d|fSrMr
rqs rr&z=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>�s
��a��V�r)rnrf�WeakValueDictionaryrs r�test_weak_valued_len_cyclesz+MappingTestCase.test_weak_valued_len_cycles�s%�����g�9�;K�;K�L�L�L�L�Lrc���|jtjgtj���R�t	dd��D�]}d}tjd��tj|||��d�t	|��D��}|�fd�|D����}~|���}	t|��n#t$rYnwxYwt|��}~t|��}	|�
|d��|�||��|�
|	d��|�|	|����dS)NrNr�r\rc�*�g|]}t����Sr
r^r_s  rraz2MappingTestCase.check_len_race.<locals>.<listcomp>�s��2�2�2�A�X�Z�Z�2�2�2rc3�.�K�|]}�|��V��dSrr
rcs  �rrez1MappingTestCase.check_len_race.<locals>.<genexpr>�s+�����3�3��D�D��G�G�3�3�3�3�3�3r)�
addCleanuprVr�r�r�rWrfrgrhr��assertGreaterEqual�assertLessEqual)
rrird�thrjrfrkr rlrms
  `       r�check_len_racezMappingTestCase.check_len_race�sd�������(�>�2�+;�+=�+=�>�>�>�>���3�-�-�	)�	)�B��A��J�q�M�M�M���R��R�(�(�(�2�2��q���2�2�2�E��)�3�3�3�3�U�3�3�3�3�3�C�������B�
��R������ �
�
�
���
�����S���B���S���B��#�#�B��*�*�*�� � ��Q�'�'�'��#�#�B��*�*�*�� � ��R�(�(�(�(�'	)�	)s�0C�
C
�C
c�H�|�tjd���dS)Nc�
�|dfSrMr
rqs rr&z:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>�s
��!�Q��r)rrfr�rs r�test_weak_keyed_len_racez(MappingTestCase.test_weak_keyed_len_race�s%�����G�5�7G�7G�H�H�H�H�Hrc�H�|�tjd���dS)Nc�
�d|fSrMr
rqs rr&z;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>�rrr)rrfrvrs r�test_weak_valued_len_racez)MappingTestCase.test_weak_valued_len_race�s%�����G�7�9I�9I�J�J�J�J�Jrc��|���\}}|D]L}|�tj|��d��|�|||jd���Mt
|�����}t
|��������}|�	��|�	��|�||d��~~|�t|��|j��|d=t��|�t|��|jdz
d��~~t��|�t|��dd��tj
��}|�t|jd��t#��|d<t��|�t|jd��dS)NrN�#wrong object returned by weak dict!z/cloning of weak-valued dictionary did not work!r�/deleting object did not cause dictionary updatez0deleting the values did not clear the dictionaryr�)�make_weak_valued_dictr�rfr�rr)rrf�copy�sortr��COUNTrrvr��KeyError�__getitem__r
�rrs�objectsrh�items1�items2s      r�test_weak_valuesz MappingTestCase.test_weak_values�s����2�2�4�4�
��g��	@�	@�A����W�4�Q�7�7��;�;�;��M�M�!�T�!�%�[�>�
@�
@�
@�
@��d�j�j�l�l�#�#���d�i�i�k�k�'�'�)�)�*�*�����
�
�
����
�
�
������F�	H�	H�	H��F�����T���D�J�/�/�/��A�J���������T���D�J��N�F�	H�	H�	H��Q���������T���A�G�	I�	I�	I��*�,�,�����(�D�$4�a�8�8�8��#�#��Q���������(�D�$4�a�8�8�8�8�8rc�f�|���\}}|D]P}|�tj|��dd|z��|�|j||d���Q|���}|������}|�t|��t|��d��~~|�t|��|j
��|d=t��|�t|��|j
dz
d��~~t��|�t|��dd��td��}d	||<|�
||��|�d
|��dS)NrNz&wrong number of weak references to %r!r�z.cloning of weak-keyed dictionary did not work!rr�z.deleting the keys did not clear the dictionaryr�z$What is the meaning of the universe?�")�make_weak_keyed_dictr�rfr�rr)rfr��setr�r�rr&rt�assertNotInr�s      r�test_weak_keyszMappingTestCase.test_weak_keyss���
�1�1�3�3�
��g��	@�	@�A����W�4�Q�7�7��A�A�E�
G�
G�
G��M�M�!�%��a��>�
@�
@�
@�
@������������"�"�$�$������V���c�&�k�k�E�	G�	G�	G��F�����T���D�J�/�/�/��A�J���������T���T�Z�!�^�F�	H�	H�	H��Q���������T���A�E�	G�	G�	G��2�J�J��8��Q���
�
�a���������T�"�"�"�"�"rc�4�|���\}}|�|��|���}|�t	|��t	|����t|��}|D]n}|��}|�||��|�||��|�|j||��|�|���o|�t	|��d��t|��}|�t	t|�������t	|����|���D]n}|��}|�||��|�||��|�|j||��|�|���o|�t	|��d��dSrH)	r��check_iters�keyrefsr�r�rrtr)rX�rrsr�r�objects2rir�s       r�test_weak_keyed_itersz%MappingTestCase.test_weak_keyed_iters6s����1�1�3�3�
��g���������|�|�~�~������T���C��L�L�1�1�1���=�=���	 �	 �B�����B��M�M�"�d�#�#�#��M�M�"�d�#�#�#����R�V�T�"�X�.�.�.��O�O�B���������X����*�*�*���=�=������T�$�,�,�.�.�1�1�2�2�C��L�L�A�A�A��,�,�.�.�	 �	 �B�����B��M�M�"�d�#�#�#��M�M�"�d�#�#�#����R�V�T�"�X�.�.�.��O�O�B���������X����*�*�*�*�*rc�0�|���\}}|�|��|���}|�t	|��t	|����t|��}|D]m}|��}|�|||j��|�|j||jj��|�|���n|�t	|��d��t|��}|�t	t|�������t	|����|���D]m}|��}|�|||j��|�|j||jj��|�|���n|�t	|��d��dSrH)	r�r��	valuerefsr�r�rr)rX�
itervaluerefsr�s       r�test_weak_valued_itersz&MappingTestCase.test_weak_valued_itersQs����2�2�4�4�
��g���������~�~��������T���C��L�L�1�1�1���=�=���	 �	 �B�����B����R��b�f��.�.�.����R�V�T�"�&�\�%5�6�6�6��O�O�B���������X����*�*�*���=�=������T�$�"4�"4�"6�"6�7�7�8�8�#�g�,�,�G�G�G��$�$�&�&�	 �	 �B�����B����R��b�f��.�.�.����R�V�T�"�&�\�%5�6�6�6��O�O�B���������X����*�*�*�*�*rc��t|�����}|���D]}|�|���|�|d��t|�����}|D]}|�|���|�|d��t|�����}|���D]}|�|���|�|d��t|�����}|���D]}|�|���|�|d��dS)Nzitems() did not touch all itemsz!__iter__() did not touch all keysz!iterkeys() did not touch all keysz%itervalues() did not touch all values)rrfrXr��keys�values)rrsrf�itemr�rVr��vs        rr�zMappingTestCase.check_itersjsh���T�Z�Z�\�\�"�"���J�J�L�L�	�	�D��L�L���������� A�B�B�B��D�I�I�K�K� � ���	�	�A��K�K��N�N�N�N�����B�C�C�C��D�I�I�K�K� � �������	�	�A��K�K��N�N�N�N�����B�C�C�C��d�k�k�m�m�$�$�������	�	�A��M�M�!���������<�	>�	>�	>�	>�	>rc��t|��}tt||������}t|��|d=t	j��|�tt|����t|��t|��dz
g��~|�t|��|dz
��dS)N���rN)	r�r8�getattrrgrVrWrtrr�)rrsr��	iter_namer�r s      r�"check_weak_destroy_while_iteratingz2MappingTestCase.check_weak_destroy_while_iterating�s�����I�I��
�*�'�$�	�*�*�,�,�
-�
-���R�����B�K�
�
�����
�
�c�$�r�(�(�m�m�c�'�l�l�C��L�L�1�4D�%E�F�F�F������T���A��E�*�*�*�*�*rc��|��5\}}|�||��ddd��n#1swxYwY|��5\}}|�t|j|��ddd��n#1swxYwY|�||��|��5\}}|�t|j|��ddd��n#1swxYwY|�||��|��5\}}|||<ddd��n#1swxYwY|�|||��t
j|��}|��5\}}|�|��ddd��n#1swxYwY|�||��|��5\}}|���ddd��n#1swxYwY|�t|��d��dSrH)
r�r�r�r�popr�r��update�clearr�)rrs�testcontextrVr��ddicts      r�-check_weak_destroy_and_mutate_while_iteratingz=MappingTestCase.check_weak_destroy_and_mutate_while_iterating�sN���[�]�]�	&�f�q�!����Q��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�
�[�]�]�	=�f�q�!����h��(8�!�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�����D�!�!�!�
�[�]�]�	5�f�q�!����h���!�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�����D�!�!�!�
�[�]�]�	�f�q�!��D��G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����a��!�$�$�$��	�$����
�[�]�]�	�f�q�!��K�K�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����u�%�%�%�
�[�]�]�	�f�q�!��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����T���A�&�&�&�&�&sf�1�5�5�%A7�7A;�>A;�"%C�C�C�>	D�D�D�E=�=F�F�(G�G�Gc��td��}|��5t|��}|�t|�������|�t|��|dz
��|||<|�t|��|��ddd��n#1swxYwY|��5|�t|��|dz
��|���|�t|��|dz
��ddd��n#1swxYwY|��5|�t|��|dz
��|t|�����=|�t|��|dz
��ddd��n#1swxYwY|��5|�t|��|dz
��|���|�t|��|dz
��ddd��n#1swxYwY|��5|���|�t|��d��ddd��n#1swxYwY|�t|��d��dS)	Ni@�rNr�r�r:r>rr)r&r�r�rgr�r��popitemr�)rrsr�rhr�s     r�&check_weak_del_and_len_while_iteratingz6MappingTestCase.check_weak_del_and_len_while_iterating�s���
�6�N�N��
�[�]�]�	+�	+��D�	�	�A��H�H�T�$�)�)�+�+�&�&�'�'�'����S��Y�Y��A��.�.�.��D��G����S��Y�Y��*�*�*�
	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+��[�]�]�	/�	/����S��Y�Y��A��.�.�.��L�L�N�N�N����S��Y�Y��A��.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
�[�]�]�	/�	/����S��Y�Y��A��.�.�.��T�$�)�)�+�+�&�&�'����S��Y�Y��A��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��[�]�]�	/�	/����S��Y�Y��A��.�.�.��L�L�N�N�N����S��Y�Y��A��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��[�]�]�	+�	+��J�J�L�L�L����S��Y�Y��*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	
����T���A�&�&�&�&�&s]�BB8�8B<�?B<�
A!D:�:D>�D>�A/G
�
G�G�A!I�I�I�!8J%�%J)�,J)c�����|���\��|���d��|���d��|���d��|���d��|���\��tj��fd���}|��|��|���\��|��|��dS)Nr�rfr�r�c3�J�K�	t������}t|������j}tj��t|��|fV�d}tj��dS#d}tj��wxYwr�r8rfrgr�r)rVrWr&)r r�rsr�s  ��rr�zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext�s������	
��$�*�*�,�,�'�'���R�����K�K�M�M�%���
�����Q�i�i��l�"�"�"����
����������
���������A/B�B")r�r��
contextlib�contextmanagerr�r��rr�rsr�s  @@r�&test_weak_keys_destroy_while_iteratingz6MappingTestCase.test_weak_keys_destroy_while_iterating�s�����1�1�3�3�
��g��/�/��g�v�F�F�F��/�/��g�w�G�G�G��/�/��g�x�H�H�H��/�/��g�y�I�I�I��1�1�3�3�
��g�	�	"�
	�
	�
	�
	�
	�
#�	"�
	�	
�:�:�4��M�M�M��1�1�3�3�
��g��3�3�D�+�F�F�F�F�Frc����|���\��|���d��|���d��|���d��|���d��|���d��|���\��tj��fd���}|��|��|���\��|��|��dS)Nr�rfr�r�r�c3�J�K�	t������}t|������j}tj��|t|��fV�d}tj��dS#d}tj��wxYwrr�)r rVrsr�s  ��rr�zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext�s������	
��$�*�*�,�,�'�'���R�����K�K�M�M�%���
���������l�"�"�"����
����������
�������r�)r�r�r�r�r�r�r�s  @@r�(test_weak_values_destroy_while_iteratingz8MappingTestCase.test_weak_values_destroy_while_iterating�s�����2�2�4�4�
��g��/�/��g�v�F�F�F��/�/��g�w�G�G�G��/�/��g�x�H�H�H��/�/��g��O�O�O��/�/��g�{�K�K�K��2�2�4�4�
��g�	�	"�
	�
	�
	�
	�
	�
#�	"�
	�	
�:�:�4��M�M�M��2�2�4�4�
��g��3�3�D�+�F�F�F�F�Frc��td��}tj|di��}|�||d��dS�Nr�il�r&rfr�r��rrhrss   r�#test_make_weak_keyed_dict_from_dictz3MappingTestCase.test_make_weak_keyed_dict_from_dict�sA���1�I�I���(�!�C��1�1������a��#�&�&�&�&�&rc��td��}tj|di��}tj|��}|�||d��dSr�r��rrhrs�dict2s    r�.test_make_weak_keyed_dict_from_weak_keyed_dictz>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictsQ���1�I�I���(�!�C��1�1���)�$�/�/������a��#�&�&�&�&�&rc��tj��}tttt|j������}|D]}|j||<�
||fSr)rfr�r�mapr&r�r�r)�rrsr�rhs    rr�z$MappingTestCase.make_weak_keyed_dict	sW���(�*�*���s�6�5���#4�#4�5�5�6�6���	�	�A��e�D��G�G��W�}�rc��td��}tjd|i��}|�|d|��dSr��r&rfrvr�r�s   r�$test_make_weak_valued_dict_from_dictz4MappingTestCase.test_make_weak_valued_dict_from_dictsA���1�I�I���*�C��7�3�3������c��A�&�&�&�&�&rc��td��}tjd|i��}tj|��}|�|d|��dSr�r�r�s    r�0test_make_weak_valued_dict_from_weak_valued_dictz@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictsQ���1�I�I���*�C��7�3�3���+�D�1�1������c��A�&�&�&�&�&rc���|�ttjj��|�ttjii��|�ttjdd��td��}dD]g}tjdi||i��}|�t|�����|g��|�|||���hdS)Nr
r��rrsr2�iterable)	r�r�rfrvr*r&r�rr�)rrh�kwr�s    r�test_make_weak_valued_dict_miscz/MappingTestCase.test_make_weak_valued_dict_miscs������)�W�%@�%I�J�J�J����)�W�%@�"�b�I�I�I����)�W�%@�"�b�I�I�I��1�I�I��5�	'�	'�B��+�6�6�r�1�g�6�6�A����T�!�&�&�(�(�^�^�b�T�2�2�2����Q�r�U�A�&�&�&�&�	'�	'rc��tj��}tttt|j������}|D]}|||j<�
||fSr)rfrvrr�r&r�r�r)r�s    rr�z%MappingTestCase.make_weak_valued_dict'sW���*�,�,���s�6�5���#4�#4�5�5�6�6���	�	�A��D���K�K��W�}�rc�"�|��}|||<|||<|�t|��d��|���\}}|�t|��d��||ur|�||��n|�||��|���\}}|�t|��d��||ur|�||��dS|�||��dS)Nr�rNr)r�r�r�r)	r�klass�key1�value1�key2�value2�weakdictrVr�s	         r�
check_popitemzMappingTestCase.check_popitem.s���5�7�7��������������X����*�*�*����!�!���1�����X����*�*�*���9�9��M�M�!�V�$�$�$�$��M�M�!�V�$�$�$����!�!���1�����X����*�*�*���9�9��M�M�!�V�$�$�$�$�$��M�M�!�V�$�$�$�$�$rc�|�|�tjdt��dt����dS)Nr�r�)r�rfrvr
rs r�test_weak_valued_dict_popitemz-MappingTestCase.test_weak_valued_dict_popitem@s:�����7�6�!�1�3�3�����	5�	5�	5�	5�	5rc�|�|�tjt��dt��d��dS�Nzvalue 1zvalue 2)r�rfr�r
rs r�test_weak_keyed_dict_popitemz,MappingTestCase.test_weak_keyed_dict_popitemDs:�����7�4��3�3�	�1�3�3�	�	;�	;�	;�	;�	;rc�d�|�||d��|��}|�||��}|�||��|�||��|�|�|��|��|�|||��|�||��}|�||��|�||��|�|�|��|��|�|||��dS)Nz9invalid test -- value parameters must be distinct objects)r�
setdefaultrrt�get)rr��keyr�r�r�rhs       r�check_setdefaultz MappingTestCase.check_setdefaultHs$�������E�	F�	F�	F��5�7�7������V�,�,���
�
�a�� � � ��
�
�c�8�$�$�$��
�
�h�l�l�3�'�'��0�0�0��
�
�h�s�m�V�,�,�,�����V�,�,���
�
�a�� � � ��
�
�c�8�$�$�$��
�
�h�l�l�3�'�'��0�0�0��
�
�h�s�m�V�,�,�,�,�,rc�z�|�tjdt��t����dS)Nr�)r�rfrvr
rs r� test_weak_valued_dict_setdefaultz0MappingTestCase.test_weak_valued_dict_setdefaultYs8�����g�9�#�Q�S�S�!�#�#�	/�	/�	/�	/�	/rc�b�|�tjt��dd��dSr�)r�rfr�r
rs r�test_weak_keyed_dict_setdefaultz/MappingTestCase.test_weak_keyed_dict_setdefault]s4�����g�7��c�c�9�i�	9�	9�	9�	9�	9rc��|��}|�|��|�t|��t|����|���D]s}|�||d��|�|��}|�|||��|�||�|�����t|���D]f}|�||d��||}|�|||��|�||�|�����gdS)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)r�r�r�r�rtr�r)rr�rsr�rVr�s      r�check_updatezMappingTestCase.check_updateas3��
�5�7�7�������������X����D�	�	�2�2�2������	.�	.�A��M�M�!�T�#M�N�N�N�������A��M�M�!�X�a�[�)�)�)��M�M�!�X�\�\�!�_�_�-�-�-�-������	.�	.�A��M�M�!�X�'N�O�O�O��Q��A��M�M�!�X�a�[�)�)�)��M�M�!�X�\�\�!�_�_�-�-�-�-�		.�	.rc
�.�|�tjdt��dt��t��t��i��|�t
tjj��tj��}|�t
|jii��|�t
|jdd��|�t|�	����g��td��}dD]v}tj��}|jdi||i��|�t|�	����|g��|�|||���wdS)NrNr-r
r�r�)r�rfrvr
r�r�r�r�rr�r&)rr�rhr�s    r�test_weak_valued_dict_updatez,MappingTestCase.test_weak_valued_dict_updatetsX�����'�5��a�c�c�3����Q�S�S�!�#�#�6�	8�	8�	8�	
���)�W�%@�%G�H�H�H��'�)�)�����)�Q�X�r�2�6�6�6����)�Q�X�r�2�6�6�6�����a�f�f�h�h����,�,�,��1�I�I��5�	'�	'�B��+�-�-�A��A�H����A�w�������T�!�&�&�(�(�^�^�b�T�2�2�2����Q�r�U�A�&�&�&�&�		'�	'rc��t��}t��}t��}tjd|i��}tj||d���}|���}||d�}d|fd|fg}||z}	|�t|	��t|��t|��z��|�t|	��tj��||z}|�||	��||z}
|�t|
��t|��|z��|�t|
��tj��||z}|�||
��|���}||z}|�t|��t|��t|��z��|�t|��tj��||z}|�t|��|t|��z��|�t|��tj��~|�d|	��|�d|
��|�d|��|�d|��dS)NrN�rNr�)rNr�r>rr�)	r
rfrvr�r�rsrr�r�)
rr-r�r��wvd1�wvd2�wvd3�d1�pairs�tmp1�tmp2�tmp3�tmp4s
             r� test_weak_valued_union_operatorsz0MappingTestCase.test_weak_valued_union_operators�s[��
�C�C��
�C�C��
�C�C���*�A�q�6�2�2���*�q�Q�<�<�8�8���y�y�{�{���q�\�\���Q��!�Q�� ���d�{������d���T�$�Z�Z�$�t�*�*�%<�=�=�=��
�
�d�4�j�j�'�"=�>�>�>���������t�$�$�$��b�y������d���T�$�Z�Z�"�_�5�5�5��
�
�d�4�j�j�'�"=�>�>�>���
������t�$�$�$��y�y�{�{����
������d���T�$�Z�Z�$�u�+�+�%=�>�>�>��
�
�d�4�j�j�'�"=�>�>�>��D�y������d���R�$�t�*�*�_�5�5�5��
�
�d�4�j�j�'�"=�>�>�>�
�����D�!�!�!�����D�!�!�!�����D�!�!�!�����D�!�!�!�!�!rc	��|�tjt��dt��dt��di��dS)NrNr�r�)r�rfr�r
rs r�test_weak_keyed_dict_updatez+MappingTestCase.test_weak_keyed_dict_update�sE�����'�3��3�3��1�3�3��1�3�3��2�	4�	4�	4�	4�	4rc�z�tj��}td��}td��}d||<d||<|�t	|��d��||=|�t	|��d��|�t|�����|g��dS)N�1�2�	somethingr�rN)rfr�r&r�r�rr��rr��o1r�s    r�test_weak_keyed_delitemz'MappingTestCase.test_weak_keyed_delitem�s����%�'�'��
�C�[�[��
�C�[�[����"����"������Q����#�#�#�
�b�E�����Q����#�#�#�����a�f�f�h�h���"��.�.�.�.�.rc�0�t��}t��}t��}tj|d|di��}tj|d|di��}|���}|d|di}|df|dfg}||z}	|�t|	��t|��t|��z��|�t|	��tj��||z}|�||	��||z}
|�t|
��t|��|z��|�t|
��tj��||z}|�||
��|���}||z}|�t|��t|��t|��z��|�t|��tj��||z}|�t|��|t|��z��|�t|��tj��~|�d|	�	����|�d|
�	����|�d|�	����|�d|�	����dS)	NrNr�r�r:�5�6��)
r
rfr�r�r�rsrr�r�r�)
rrr��o3�wkd1�wkd2�wkd3r�r�r�r�r�r�s
             r�test_weak_keyed_union_operatorsz/MappingTestCase.test_weak_keyed_union_operators�s���
�S�S��
�S�S��
�S�S���(�"�a��Q��8�8���(�"�a��Q��8�8���y�y�{�{���#�r�3�
���a��2�q�'�"���d�{������d���T�$�Z�Z�$�t�*�*�%<�=�=�=��
�
�d�4�j�j�'�";�<�<�<���������t�$�$�$��b�y������d���T�$�Z�Z�"�_�5�5�5��
�
�d�4�j�j�'�";�<�<�<���
������t�$�$�$��y�y�{�{����
������d���T�$�Z�Z�$�u�+�+�%=�>�>�>��
�
�d�4�j�j�'�";�<�<�<��D�y������d���R�$�t�*�*�_�5�5�5��
�
�d�4�j�j�'�";�<�<�<������D�K�K�M�M�*�*�*�����D�K�K�M�M�*�*�*�����D�K�K�M�M�*�*�*�����D�K�K�M�M�*�*�*�*�*rc�~�tj��}td��}td��}||d<||d<|�t	|��d��|d=|�t	|��d��|�t|�����d|fg��dS)Nrrrzsomething elser�rN)rfrvr&r�r�rrfrs    r�test_weak_valued_delitemz(MappingTestCase.test_weak_valued_delitem�s����'�)�)��
�C�[�[��
�C�[�[����+�� ��
������Q����#�#�#�
�k�N�����Q����#�#�#�����a�g�g�i�i���,<�b�+A�*B�C�C�C�C�Crc��tj��}td��}|�t|j|��|�t|j|��|�t|jd��|�t|jd��|�t|jdd��dS)Nr�
)	rfr�r&r�r�rr�r��__setitem__)rr�rhs   r�test_weak_keyed_bad_delitemz+MappingTestCase.test_weak_keyed_bad_delitem�s����%�'�'���3�K�K��	
���(�A�M�1�5�5�5����(�A�M�1�5�5�5�	
���)�Q�]�R�8�8�8����)�Q�]�R�8�8�8����)�Q�]�R��<�<�<�<�<rc������tj��}d�G��fd�dt����fd�td��D����D]}|j||<�
~t|����������d�d}�D]
}|dz
}||=�t��|�	t|��d��|�	|d	��dS)
NFc�(��eZdZd�Zd�Z��fd�ZdS)�<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.Cc��||_dSrr)rrgs  rr*zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__s
����
�
�
rc�*�t|j��Sr)r7r�rs rr8zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__s���D�J�'�'�'rc�.���r�d=|j|jkS)Nr�r)rr2�mutate�objss  ��rr3zCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__s#����!��R���z�U�[�0�0rN)rrrr*r8r3)rr s��rr
r�sQ�������
�
�
�
(�
(�
(�
1�
1�
1�
1�
1�
1�
1�
1rr
c�&��g|]
}�|����Sr
r
)r`rgr
s  �rrazEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>s!���'�'�'����!���'�'�'rr:TrrNr�)rfr�r�r�r�rr��reverserr�r�)rr�rh�countr
rr s    @@@r�!test_weak_keyed_cascading_deletesz1MappingTestCase.test_weak_keyed_cascading_deletes�s#�����

�%�'�'����
	1�
	1�
	1�
	1�
	1�
	1�
	1�
	1��
	1�
	1�
	1�(�'�'�'�e�A�h�h�'�'�'���	�	�A��7�A�a�D�D�
��A�F�F�H�H�~�~��	
�����������	�	�A��Q�J�E��!�����������Q����#�#�#������"�"�"�"�"rc�r�tj��}|�t|��d��dS)Nz<WeakValueDictionary at 0x.*>)rfrv�assertRegexrg�rrss  r�test_make_weak_valued_dict_reprz/MappingTestCase.test_make_weak_valued_dict_repr%s3���*�,�,������d���%D�E�E�E�E�Erc�r�tj��}|�t|��d��dS)Nz<WeakKeyDictionary at 0x.*>)rfr�r&rgr's  r�test_make_weak_keyed_dict_reprz.MappingTestCase.test_make_weak_keyed_dict_repr)s3���(�*�*������d���%B�C�C�C�C�Crc��tj��}t��5td��D];}|�dt����}|�|d��~�<	ddd��dS#1swxYwYdS�Ni��r�)rfrvrar�r�rAr�rr�rgrs    r�$test_threaded_weak_valued_setdefaultz4MappingTestCase.test_threaded_weak_valued_setdefault-s����'�)�)��
�
 �
 �	�	��6�]�]�
�
���L�L��X�Z�Z�0�0��� � ��D�)�)�)��A�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�AA<�<B�Bc��tj��}t��5td��D]?}t	��|d<|�dd��}|�|d���@	ddd��dS#1swxYwYdSr,)rfrvrar�rAr�rr-s    r�test_threaded_weak_valued_popz-MappingTestCase.test_threaded_weak_valued_pop6s����'�)�)��
�
 �
 �	*�	*��6�]�]�
*�
*�� �
�
��"���E�E�"�b�M�M��� � ��D�)�)�)�)�
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�AB�B�Bc��tj��}t��5td��D]:}t	��}||d<|�t
|��d��d}�;	ddd��dS#1swxYwYdS)Ni@
r�rN)rfrvrar�rAr�r�)rr�rgrhs    r�%test_threaded_weak_valued_consistencyz5MappingTestCase.test_threaded_weak_valued_consistency?s���
�'�)�)��
�
 �
 �	�	��6�]�]�
�
���J�J����"��� � ��Q����+�+�+����
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�AA;�;A?�A?c����g}Gd�d��}Gd�d��}�fd�}d�}|�|tjtjf��|��}g}	g}
t	d��D]I}||��||��}
}|	�|��|
�|
��|
||<~~
�Jt
j|||f���}|tjurt
j||	f���}nt
j||
f���}|���|���|�	��|�	��|r|d	�dS)
Nc��eZdZd�ZdS)�?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeyc��||_dSr��ctr�rr8s  rr*zHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__R�
������rNrDr
rr�DummyKeyr5Qrqrr;c��eZdZd�ZdS)�AMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuec��||_dSrr7r9s  rr*zJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Vr:rNrDr
rr�
DummyValuer=Urqrr?c���	�durtj|��}dS|���}dS#t$r }|�|��Yd}~dSd}~wwxYwr)r��deepcopyr\r�)r��excrK�exrAs    �r�	dict_copyz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copyYsq���
��t�#�#��
�a�(�(�A�A�A������A�A�A���
�
�
��
�
�2��������������
���s�3�3�
A�A�Ac���d}|r_tjdt|��dz
��}|dz
}|�|��|dzdkrt	j��|�]dSdS)NrrNi')�random�randintr�r�rVrW)�lst�gc_ctrrgs   r�pop_and_collectzFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectbsz���F��
!��N�1�c�#�h�h��l�3�3���!�������
�
�
��E�>�Q�&�&��J�L�L�L��
!�
!�
!�
!�
!rip)rZr�r)
rtrfr�rvr�r�r\r]r^r_)r�type_rArBr;r?rDrJr�r�r�rgrVr��t_copy�	t_collects  `             r�check_threaded_weak_dict_copyz-MappingTestCase.check_threaded_weak_dict_copyLs������	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	!�	!�	!�	
�
�
�e�g�7��9T�U�V�V�V��E�G�G�������u���	�	�A��8�A�;�;�
�
�1�
�
�q�A��K�K��N�N�N��M�M�!�����A�a�D�����!��!�S��C�C�C���G�-�-�-�!�(��t�g�N�N�N�I�I�!�(��v�i�P�P�P�I����������������
�
�
��������	��a�&�L�	�	rc�F�|�tjd��dS�NF�rNrfr�rs r� test_threaded_weak_key_dict_copyz0MappingTestCase.test_threaded_weak_key_dict_copy�s#��	
�*�*�7�+D�e�L�L�L�L�Lr�cpuc�F�|�tjd��dSrrQrs r�$test_threaded_weak_key_dict_deepcopyz4MappingTestCase.test_threaded_weak_key_dict_deepcopy�s#��
	
�*�*�7�+D�d�K�K�K�K�Krc�F�|�tjd��dSrP�rNrfrvrs r�"test_threaded_weak_value_dict_copyz2MappingTestCase.test_threaded_weak_value_dict_copy�s#��	
�*�*�7�+F��N�N�N�N�Nrc�F�|�tjd��dSrrWrs r�&test_threaded_weak_value_dict_deepcopyz6MappingTestCase.test_threaded_weak_value_dict_deepcopy�s#��
	
�*�*�7�+F��M�M�M�M�Mrc�j�tj��}|�|jj��dSr)rfrvr��_remove�__closure__)rr�s  r�test_remove_closurez#MappingTestCase.test_remove_closure�s/���'�)�)�����!�)�/�0�0�0�0�0rN):rrrr�rnrsrwrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr$r(r*r�requires_working_threadingr.r0r2rNrRr�requires_resourcerUrXrZr�r^r
rrrZrZ�s�������E� � � �(K�K�K�M�M�M�)�)�)�0I�I�I�K�K�K�9�9�9�@#�#�#�<+�+�+�6+�+�+�2>�>�>�4+�+�+�'�'�'�2'�'�'�BG�G�G�4G�G�G�2'�'�'�
'�'�'����'�'�'�
'�'�'�
'�
'�
'����%�%�%�$5�5�5�;�;�;�-�-�-�"/�/�/�9�9�9�.�.�.�&'�'�'�"#"�#"�#"�J4�4�4�	/�	/�	/�#+�#+�#+�J	D�	D�	D�=�=�=�,#�,#�,#�\F�F�F�D�D�D�1��0�2�2���3�2��1��0�2�2�*�*�3�2�*�1��0�2�2�
�
�3�2�
�;�;�;�z1��0�2�2�M�M�3�2�M�
1��0�2�2��W��u�%�%�L�L�&�%�3�2�L�
1��0�2�2�O�O�3�2�O�
1��0�2�2��W��u�%�%�N�N�&�%�3�2�N�

��1�1���1�1�1rrZ)�
mapping_testsc�f�eZdZ	ed��ed��ed��d�ZejZd�ZdS)�WeakValueDictionaryTestCaserNr�r�)r�r��key3c�4�|j���Sr)�!_WeakValueDictionaryTestCase__refr�rs r�
_referencez&WeakValueDictionaryTestCase._reference�����z��� � � rN)	rrrr&rfrfrv�	type2testrgr
rrrcrc�sU������I��F�1�I�I�f�f�Q�i�i���q�	�	�B�B�E��+�I�!�!�!�!�!rrcc�j�eZdZ	ed��ded��ded��diZejZd�ZdS)	�WeakKeyDictionaryTestCaser�rNr�r�rdr�c�4�|j���Sr)�_WeakKeyDictionaryTestCase__refr�rs rrgz$WeakKeyDictionaryTestCase._reference�rhrN)	rrrr&rmrfr�rirgr
rrrkrk�sX������G�
�V�F�^�^�A�v�v�f�~�~�a�������B�E��)�I�!�!�!�!�!rrkc�b�eZdZGd�d��Zd�Zd�Zd�Zd�Zd�Ze	d���Z
d	�Zd
S)�FinalizeTestCasec��eZdZdS)�FinalizeTestCase.ANr	r
rrr+rq�s�������rr+c�Z�tjjdkrtj��dSdS)N�cpython)�sys�implementation�namerrrs r�_collect_if_necessaryz&FinalizeTestCase._collect_if_necessary�s0����"�i�/�/��� � � � � �0�/rc�����fd�}|���}g�tj||ddd���}|�|jd��|�|���||dddif��|�|��d	��|�|��d��|�|��d��|�|���d��|�|���d��|�|jd
��|��d	g��g�tj||ddd��}|�|���||dif��|�|���||dif��|�|��d��|�|��d��|�|���d��|�|���d��|�|jd
��|��g��g�tj||ddd���}~|���|�|��d��|�|��d��|�|���d��|�|���d��|�|jd
��|��d	g��dS)
Nc�J����||z|z��||z|zSrr�)rr�r��ress   �r�addz+FinalizeTestCase.test_finalize.<locals>.add�s+����J�J�q�1�u�q�y�!�!�!��q�5�1�9�r�C�+�Y)r�T)r|r}r���F)r|r}r~)rr�r�)r+rf�finalizer��alive�peek�detachrw)rr{r-r rzs    @r�
test_finalizezFinalizeTestCase.test_finalize�s:���	�	�	�	�	�
�F�F�H�H������Q��R��r�2�2�2�������$�'�'�'���������A�s�G�c�"�X�#>�?�?�?��������c�"�"�"��������d�#�#�#��������d�#�#�#���������4�(�(�(���������T�*�*�*������%�(�(�(�����s�e�$�$�$�����Q��R��R�0�0����������A�s�J��#;�<�<�<���������a��j�"�%=�>�>�>��������d�#�#�#��������d�#�#�#���������4�(�(�(���������T�*�*�*������%�(�(�(�����b�!�!�!�����Q��r�R�2�6�6�6��
��"�"�$�$�$��������d�#�#�#��������d�#�#�#���������4�(�(�(���������T�*�*�*������%�(�(�(�����s�e�$�$�$�$�$rc	�����fd�}|���}g�tj||dddd���}|�|���||dddd�f��|��|��dddd�fg��|�t��5tj||d���ddd��n#1swxYwY|�t��5tj||d�	��ddd��n#1swxYwY|�ttj|��|�ttj��dS)
Nc�6����||f��dSrr�)r��kwargsrzs  �r�finz-FinalizeTestCase.test_arg_errors.<locals>.fin�s����J�J��f�~�&�&�&�&�&rrNr�r�r:)�funcrvr�)r�r))rvr�r))r+rfr�r�r�r�r�)rr�r-r rzs    @r�test_arg_errorsz FinalizeTestCase.test_arg_errors�s����	'�	'�	'�	'�	'�
�F�F�H�H������Q��Q���q�9�9�9����������A�s�F�Q�q�4I�4I�#J�K�K�K�	�����������1�(=�(=�>�?�@�@�@�
�
�
�y�
)�
)�	1�	1���Q�S�a�0�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
�
�y�
)�
)�	5�	5�����!�4�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5����)�W�%5�q�9�9�9����)�W�%5�6�6�6�6�6s$�&C
�
C�C�/D�D�Dc� �|���}g}tj||jd��}tj||jd��}tj||jd��}tj||jd��}tj||jd��}~~|�|j��|�|j��|�|j��|�|�����|�|j��|��|�d��|��|�|j��|�d��|��|�d��~|���|�|j��|�d	��|��gd
�}|�	||��dS)N�f1�f2�f3�f4�f5r+�Br
r�)r+r�r�r
r�r�r�r�)
r+rfr�r�r�r�r�r�rwr�)	rr-rzr�r�r�r�r��expecteds	         r�
test_orderzFinalizeTestCase.test_orders����F�F�H�H����
�
�a���T�
2�
2��
�
�a���T�
2�
2��
�
�a���T�
2�
2��
�
�a���T�
2�
2��
�
�a���T�
2�
2��
�������!�!�!������!�!�!������!�!�!�����	�	���$�$�$������"�"�"�
������
�
�3����
����������"�"�"��
�
�3����
������
�
�3����
��"�"�$�$�$�	
�����"�"�"��
�
�3����
�����?�?�?������h�'�'�'�'�'rc���Gd�dtj��}|���}g��fd�}|||��}tj|��}tj|��}~~|�|����|�|����~|���|�|����|�|����|��dg��dS)Nc��eZdZdS)�4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNr	r
rr�MyFinalizerr�)rNrr�c�2����d��dS)N�{r�)rzs�rrPz1FinalizeTestCase.test_all_freed.<locals>.callback.s����J�J�s�O�O�O�O�Orr�)rfr�r+rOr�rwr�r�)rr�r-rPr �wr_callback�wr_frzs       @r�test_all_freedzFinalizeTestCase.test_all_freed's*���	�	�	�	�	�'�*�	�	�	�
�F�F�H�H����	�	�	�	�	��K��8�$�$���k�(�+�+���{�1�~�~���a����[�[�]�]�+�+�+����T�T�V�V�$�$�$�
��"�"�$�$�$����+�+�-�-�(�(�(����$�$�&�&�!�!�!�����s�e�$�$�$�$�$rc����fd�}tj�tdt��}tj�tdt��}tj�|��}tj�tdt��}d|_dS)Nc�f��tj�td��}td��ddzdS)N�g1�f3 errorrNr)rfr��print)r��clss �r�errorz,FinalizeTestCase.run_in_child.<locals>.errorBs4����!�#�u�d�3�3�B��*����
�a�C�C�C�Crr�r�r�F)rfr�r��_global_var�atexit)r�r�r�r�r�r�s`     r�run_in_childzFinalizeTestCase.run_in_child@s���	�	�	�	�	��
�c�5�$��
<�
<��
�
�c�5�$��
<�
<��
�
�c�5�
)�
)��
�
�c�5�$��
<�
<����	�	�	rc���d}tjd|��\}}}|�d�����}|�|gd���|�d|v��dS)NzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child()z-c�ascii)z	f4 foobarr�r�z	f1 foobarsZeroDivisionError)r�assert_python_ok�decode�
splitlinesr�r�)r�prog�rc�out�errs     r�test_atexitzFinalizeTestCase.test_atexitTsy��2��$�5�d�D�A�A���C���j�j��!�!�,�,�.�.������J�J�J�K�K�K����,��3�4�4�4�4�4rN)rrrr+rwr�r�r�r��classmethodr�r�r
rrroro�s�������
�
�
�
�
�
�
�
�!�!�!�
'%�'%�'%�R7�7�7�&%(�%(�%(�N%�%�%�2�!�!��[�!�&5�5�5�5�5rroc��eZdZd�ZdS)�ModuleTestCasec���dD]n}tt|��}|dkr|�|jd��|�|j|��|�|j|���odS)N)r6�	ProxyTyper�r4�WeakSetr�rvr�rf)r�rfr�rrr)rrvrvs   r�
test_nameszModuleTestCase.test_names^s���Z�	5�	5�D��'�4�(�(�C��y� � �� � ����;�;�;����S�\�4�0�0�0����S�-�t�4�4�4�4�
	5�	5rN)rrrr�r
rrr�r�]s#������5�5�5�5�5rr�a Doctest for examples in the library reference: weakref.rst

>>> from test.support import gc_collect
>>> import weakref
>>> class Dict(dict):
...     pass
...
>>> obj = Dict(red=1, green=2, blue=3)   # this object is weak referencable
>>> r = weakref.ref(obj)
>>> print(r() is obj)
True

>>> import weakref
>>> class Object:
...     pass
...
>>> o = Object()
>>> r = weakref.ref(o)
>>> o2 = r()
>>> o is o2
True
>>> del o, o2
>>> gc_collect()  # For PyPy or other GCs.
>>> print(r())
None

>>> import weakref
>>> class ExtendedRef(weakref.ref):
...     def __init__(self, ob, callback=None, **annotations):
...         super().__init__(ob, callback)
...         self.__counter = 0
...         for k, v in annotations.items():
...             setattr(self, k, v)
...     def __call__(self):
...         '''Return a pair containing the referent and the number of
...         times the reference has been called.
...         '''
...         ob = super().__call__()
...         if ob is not None:
...             self.__counter += 1
...             ob = (ob, self.__counter)
...         return ob
...
>>> class A:   # not in docs from here, just testing the ExtendedRef
...     pass
...
>>> a = A()
>>> r = ExtendedRef(a, foo=1, bar="baz")
>>> r.foo
1
>>> r.bar
'baz'
>>> r()[1]
1
>>> r()[1]
2
>>> r()[0] is a
True


>>> import weakref
>>> _id2obj_dict = weakref.WeakValueDictionary()
>>> def remember(obj):
...     oid = id(obj)
...     _id2obj_dict[oid] = obj
...     return oid
...
>>> def id2obj(oid):
...     return _id2obj_dict[oid]
...
>>> a = A()             # from here, just testing
>>> a_id = remember(a)
>>> id2obj(a_id) is a
True
>>> del a
>>> gc_collect()  # For PyPy or other GCs.
>>> try:
...     id2obj(a_id)
... except KeyError:
...     print('OK')
... else:
...     print('WeakValueDictionary error')
OK

�
libreftestc�R�|�tj����|Sr)�addTest�doctest�DocTestSuite)�loader�tests�patterns   r�
load_testsr��s"��	�M�M�'�&�(�(�)�)�)��Lr�__main__)rQ).rVrtr��unittestr�rfr�r�r�r\rTrF�testr�test.supportrrrrr�r�r
rr"r$r&rA�TestCaserFr�rarcr�r-rZra�BasicTestMappingProtocolrcrkror�r��__test__r�r�mainr
rr�<module>r�s���	�	�	�	�
�
�
�
�������������������������������������
�
�
�
�������1�1�1�1�1�1�1�1�#�#�#�#�#�#�)�)�)�)�)�)�����
�
�
�
�
�
�
�
�
��������
�
�
������������*��������
�����x� ������������*a
�a
�a
�a
�a
��a
�a
�a
�He+�e+�e+�e+�e+�(�e+�e+�e+�PF.�F.�F.�F.�F.��*�F.�F.�F.�Rj1�j1�j1�j1�j1�h�j1�j1�j1�Z������!�!�!�!�!�-�"H�!�!�!�!�!�!�!�!�
� F�!�!�!�`5�`5�`5�`5�`5�x�(�`5�`5�`5�F5�5�5�5�5�X�&�5�5�5�T�
�l
�:�&�����
�z����H�M�O�O�O�O�O��r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists