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

�Ke�'���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/apps/python3/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
)rs 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-r0s  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+r2r4r7r:r>r
rrr%r%.s}���������(�(�(�����������������rr%c��eZdZd�ZdS)�RefCyclec��||_dSr)�cyclers rr)zRefCycle.__init__Ds
����
�
�
rN�rrrr)r
rrr@r@Cs#����������rr@c��eZdZd�Zd�ZdS)�TestBasec��d|_dS�Nr��cbcalledrs r�setUpzTestBase.setUpJs
����
�
�
rc�&�|xjdz
c_dS�N�rH)r�refs  r�callbackzTestBase.callbackMs���
�
���
�
�
�
rN)rrrrJrOr
rrrErEHs2�������������rrE�-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��rrVz"collect_in_thread.<locals>.collectXsD����	��J�v�����J�L�L�L��	�	�	�	�	r)�targetT)r�
disable_gc�	threading�Thread�start�join)rWrV�trXs`  @r�collect_in_threadr`Qs��������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�`�eZdZd�Zd�Zejd���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+d(�Z,d)�Z-d*�Z.d+�Z/d,�Z0d-�Z1d.�Z2d/�Z3d0�Z4d1�Z5d2�Z6d3�Z7d4�Z8d5S)6�ReferencesTestCasec�$�|�t��|�t��|�t��t��}t	j|��}t
|��~t
|��dSr)�check_basic_refr
r!r#�weakrefrN�repr)r�o�wrs   r�test_basic_refz!ReferencesTestCase.test_basic_refist�����Q�������_�-�-�-����0�1�1�1�
�C�C��
�[��^�^���R����
��R�����rc��|�t��|�t��|�t��dSr)�check_basic_callbackr
r!r#rs r�test_basic_callbackz&ReferencesTestCase.test_basic_callbackwsE���!�!�!�$�$�$��!�!�/�2�2�2��!�!�"5�6�6�6�6�6rc�$�ddl}|j}|��}tj|��}|�|��|��~|�|����|�|��|�|��dSrG)�	_testcapi�create_cfunctionrerN�assertIs�assertIsNonerdrk)rrnrorrhs     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
rerNrOrrq�assertEqualrI�rrg�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�rN)�objectrs  rrOzDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback�s���H�H�J�J�J�J�Jr)r
rerN)rrO�crws    r�test_multiple_selfref_callbacksz2ReferencesTestCase.test_multiple_selfref_callbacks�sO��#'�	�	�	�	�
�C�C���;�q�(�+�+����{�1�h�'�'��
�A�Arc�r�t��}|�ttj|d���dS)N)rO)r
�assertRaises�	TypeErrorrerN)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)NrMc��|jdSrr)�proxys r�checkz0ReferencesTestCase.test_proxy_ref.<locals>.check�s
���I�I�I�Irrt)r
rrer�rOrr��ReferenceError�boolrurI)rrgrwrxr��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)rerN�assertIsNotNonerp)r�factoryrgrN�o2s     rrdz"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)NrrMz(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)rIrerNrOrrurq)rr�rgrNs    rrkz'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-usedrtzwrong weak ref count for objectrMz4wrong weak ref count for object after deleting proxy)r
rerNr�rpru�getweakrefcountr)rrgrwr�rxs     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
rer�rNrp)rrg�proxy1rN�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�rMz+proxy for non-empty UserList should be truert�z,proxy didn't support __contains__() properlyr=�
)
r
�check_proxyrer��collections�UserList�assertFalse�appendru�len�
assertTrue�assertIn�range)rrg�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}r��dirrer�ru�bytes)rr
�instances   r�test_proxy_unicodez%ReferencesTestCase.test_proxy_unicode
s���	 �	 �	 �	 �	 ��	 �	 �	 �
�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�)rer�ru�operator�index�rr
rgr�s    r�test_proxy_indexz#ReferencesTestCase.test_proxy_indexsl��	�	�	�	�	�	�	�	�
�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
r0s  r�__floordiv__z9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__r�rc��dS)N�r
r0s  r�
__ifloordiv__z:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__!r�rN)rrrr�r�r
rrr
r�s2������
�
�
�
�
�
�
�
rr
r=r�r��rer�rur�s    r�test_proxy_divz!ReferencesTestCase.test_proxy_divs���	�	�	�	�	�	�	�	�

�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
r0s  r�
__matmul__z:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__+����trc��dS)N�]���r
r0s  r�__rmatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__-r�rc��dS)N�1r
r0s  r�__imatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__/s���srN)rrrr�r�r�r
rrr
r�*sA������
�
�
�
�
�
�
�
�
�
�
rr
r=r�r�r�r�r�s    r�test_proxy_matmulz$ReferencesTestCase.test_proxy_matmul)s���	�	�	�	�	�	�	�	�
�A�C�C���M�!��������Q���%�%�%�����Q���%�%�%�	�Q�������C� � � � � rc�D�|�tj��dSr)�check_shared_without_callbackrerNrs r� test_shared_ref_without_callbackz3ReferencesTestCase.test_shared_ref_without_callback@s���*�*�7�;�7�7�7�7�7rc�D�|�tj��dSr)r�rer�rs r�"test_shared_proxy_without_callbackz5ReferencesTestCase.test_shared_proxy_without_callbackCs���*�*�7�=�9�9�9�9�9rc��td��}||d��}||d��}|�||d��~~||��}||d��}|�||d��~~||��}||��}|�||d��~~||d��}||��}|�||d��dS)NrMz%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%rp)r�makerefrg�p1r�s     rr�z0ReferencesTestCase.check_shared_without_callbackFs����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.)rrMrtr�)rrer�r�rp�type�CallableProxyTyperurr�r�)rrgrws   r�test_callable_proxyz&ReferencesTestCase.test_callable_proxyXs����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)
NrMz)proxy does not reflect attribute additionrtz-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�rur��hasattr)rrgr�s   rr�zReferencesTestCase.check_proxyms����������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)rrrr�r�r
rr�Foor��s(�������F�
'�
'�
'�
'�
'rr�r)rer�rur�)rr��grs    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�)�listrur�rer�)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)r/)r�objs �r�__iter__z:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__�s����%�%rN�rrrr)rs�r�MyObjr�s.�������
&�
&�
&�
&�
&�
&�
&rr�blech)rer�r�r�)rrr�rs   @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)r9r=�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�rer�)r�its �rrzCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__�s����}�R�(�(�(rNr)rs�r�IteratesWeaklyr�s.�������
)�
)�
)�
)�
)�
)�
)rr)rur�)rrr�weak_itr
rs    @@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��dSrGr
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)rs�r�Ar�s.�������
6�
6�
6�
6�
6�
6�
6rrz'Weakref proxy referenced a non-iterator)�assertRaisesRegexr�r�)rr�a�msgrs    @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)rrrr'r,r
rrrr%�s2������
�
�
�
#�
#�
#�
#�
#rr�r*)rur^�reversedrer��rrrs   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 rr7z:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__�r�rN�rrrr7r
rrrr3�r�rrc��eZdZdZdS)r3Nr5r
rrrz1ReferencesTestCase.test_proxy_hash.<locals>.MyObj�s�������H�H�Hr)r�r�r6rer�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)Nrtz*got wrong number of weak reference objectsr9rzAweak reference objects not unlinked from referent when discarded.rMz2got wrong number of weak reference objects for int)r
rerNrOrur�r�r)rrgrwrxr�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 clearedrMz#list of refs does not match for int)r
rerNrOrru�getweakrefsrvs    r�test_getweakrefsz#ReferencesTestCase.test_getweakrefs�s@��
�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�Fr?��������Drr@g@g�?g@)�floatrer�ru)rr@rr�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�
BogusErrorrFrArrGc����|=dSrr
)�k�datas �r�removez;ReferencesTestCase.test_callbacks_protected.<locals>.removes����Q���rc�>��d�}d�tj|���<��)Nc��dS)Nr
r
r
rrrzRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda> s���r)rerN)rrGrJrKs ���r�encapsulatez@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulates&�����A�+/�D���Q��'�'�(��rzexception not properly restored)�	Exception�fail)rrNrGrJrKs  @@@r�test_callbacks_protectedz+ReferencesTestCase.test_callbacks_protecteds	�����	�	�	�	�	��	�	�	���	�	�	�	�	�	�	�	�	�	�	�	�	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
rT=rArr
c�"���j��Sr�rV��ignorerUs �rrz7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>As���:�2�:�<�<�rc�"���j��SrrVrWs �rrz7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Is���j�b�j�l�l�r)rUr}rerN�i�c1)rr
r~rhr[�c2rUs      @r�test_sf_bug_840829z%ReferencesTestCase.test_sf_bug_8408290s����	�	�	�	�	�	�	�	�	��	�	�	�
�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�Jr`[rArrac��eZdZd�ZdS)�5ReferencesTestCase.test_callback_in_cycle.<locals>.IIc��|jdSr)ra�rrXs  r�	acallbackz?ReferencesTestCase.test_callback_in_cycle.<locals>.II.acallback_s
������rN)rrrrfr
rr�IIrc^s#������
�
�
�
�
rrg)rUr}rarerNrfrhrV)rrUrarg�Is     r�test_callback_in_cyclez)ReferencesTestCase.test_callback_in_cycleXs����	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�
�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��mer[rhres  r�cbz@ReferencesTestCase.test_callback_reachable_one_way.<locals>.C.cb��������������rN�rrrrpr
rrr
rl��#������
�
�
�
�
rr
)rUror[rerNrprhrV)rrUr
r[r\s     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rnres  rrpz@ReferencesTestCase.test_callback_different_classes.<locals>.C.cb�rqrNrrr
rrr
rw�rsrr
c��eZdZdS)�=ReferencesTestCase.test_callback_different_classes.<locals>.DNr�r
rr�Drz�rArr{)	rUr}ror[rerNrprhrV)rrUr
r{r[r\s      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~�rrX�alists  �rrfzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallback�s������T�V�$�$�$�$�$rN)rrrr)rf�r�s�rr
r�s=�������
'�
'�
'�
%�
%�
%�
%�
%�
%�
%rr
rMrtc�2����d��dS)N�C went away�r��rXr�s �r�C_went_awayzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_away�s����L�L��'�'�'�'�'rr�)	rUr}r~rerNrfrhrurV)rrUr
r[r\r�rhr�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  �rrpz;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cb�s������[�)�)�)�)�)rNrrr�s�rr
r��s.�������
*�
*�
*�
*�
*�
*�
*rr
r�)
rUr}r1rprerNrhrprurV)	rrUr�r
r~�drO�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_creationrerNrs r�test_gc_during_ref_creationz.ReferencesTestCase.test_gc_during_ref_creations���%�%�g�k�2�2�2�2�2rc�D�|�tj��dSr)r�rer�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)NrMc��eZdZdS)�6ReferencesTestCase.check_gc_during_creation.<locals>.ANr�r
rrrr�rArrc��dSrr
)�argss rrOz=ReferencesTestCase.check_gc_during_creation.<locals>.callback����Dr)rU�
get_threshold�
set_thresholdrVr rhrerN)rr��
thresholdsrrO�
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)rerN�ref_from_delrs r�__del__zFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__-s��&�{�4�0�0���rN�rrrr�r
rr�Targetr�,s#������
1�
1�
1�
1�
1rr�)r})rr��ws   r�test_ref_created_during_delz.ReferencesTestCase.test_ref_created_during_del's=��
	1�	1�	1�	1�	1�V�	1�	1�	1�

�F�H�H���rc	��tjt��}|�t|jddddd��t
j��dSrG)rerNrOr�r�r)rUrV)r�rs  r�	test_initzReferencesTestCase.test_init3sD��
�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
rrrr�=rArr)r}rerN�intr�rUrVru)rr�lr s    r�test_classeszReferencesTestCase.test_classes;s���	�	�	�	�	��	�	�	�����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)NrMrt)
r%rerNr�r�rrUrVrpru)	rr�y�zr �br~r�r�s	         r�
test_equalityz ReferencesTestCase.test_equalityGs#���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|||��� dSrL)r��lt�gt�le�ger%rerNr�r�rUrV)r�opsrr�r r��ops       r�
test_orderingz ReferencesTestCase.test_orderingls����{�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%rerNrur6rUrVr�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
)�wparentrg�wselfs  �rrpzFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb�s�������A�A�Ar)rerNr�)r�parentrpr�s   @rr)z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__�sO������F���D�)�)�� � � � � �&�{�6�2�6�6����rNrCr
rrr
r��s#������
7�
7�
7�
7�
7rr
�d)re�WeakKeyDictionaryr�rUrV)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)NrMc��dSrr
r|s rrz<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>����t�r)r%rerNrp�__callback__rq)rrrOrwrxs     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��dSrL)	r%rerNrOr�r�rrrq)rrrNs   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)NrMc��dSrr
r|s rrz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�r�rc��dSrr
r|s rrz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�s��D�r)r%rerNr��AttributeErrorr�)rrrOrws    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�rMc�(�tj��Sr)rrr|s rrz6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>�s��'�*<�*>�*>�r)r%rerNrr)rr�rrws    r�test_callback_gcsz$ReferencesTestCase.test_callback_gcs�sh��	$�	$�	$�	$�	$�F�	$�	$�	$��M�!�����{�1�>�>�?�?��
�������rN)9rrrrirlr�cpython_onlyrrryrr�r�rdrkr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	rr"r0r7r9r<rCrQr]rirtr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
rrrbrbgsY���������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�����rrbc�,�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�obrOr��	__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�������
/�
/�
/�
/�
/�
/�
*�
*�
*�
*�
*�
*�
*�
*�
*rr�r���r�)
rerNr%rpr�r�rur�rrq)rr�rg�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
rrr�r��rArr�r�rtr�rrM)
rerNr%�assertIsNotrur;r�r�rpr�)rr�rg�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
rrr�r�rArr�r�)rerNr%�id�strr�r;r�)rr�rgr�rrs      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)rerN�__new__)r�r�rOrrs     rrzPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__�s���{�*�*�4��X�>�>�>rc�"�||_||_dSrr
)rr�rOrrs     rr)zQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__�s��"��
�"��
�
�
rc� �|j|jzSrr
rs r�methzMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.meth�s���z�D�J�.�.rN)rrr�	__slots__rr)rr
rrr�r�sF������(�I�
?�
?�
?�
#�
#�
#�
/�
/�
/�
/�
/rr�r��abc�def�abcdef�__dict__)	rerNr%rurrrr�r�)rr�rgr�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
rrr�rrArr�c�(���xjdz
c_dSrLrH)r�rs �rrOzKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callback
s����M�M�Q��M�M�M�Mrr)rerNr
rgrurIr�)rr�rOrgr�rs`     r�test_subclass_refs_with_cyclez9SubclassableWeakrefTestCase.test_subclass_refs_with_cycles����A�	�	�	�	�	�G�K�	�	�	�
	�	�	�	�	�
�C�C��
�U�1�h�
�
�����
��������*�*�*�
�C�C��
�U�1�h�
�
��
�U�1�h�
�
��������
���������*�*�*�*�*rN)rrrr�rr	rrr
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_method-r(rN)rrrr:r
rrr
r$,s#������
�
�
�
�
rr
)r%)rr
s  r�	_subclasszWeakMethodTestCase._subclass*s6��A�	�	�	�	�	��	�	�	��rc���td��}tj|j��}|�|tj��|�|��t
|j����|�|��j|��|�|��j	|jj	��|�
|����d��dS)NrMr9)r%re�
WeakMethodr:�assertIsInstance�
ReferenceTyper�rp�__self__�__func__ru�rrgr�s   r�
test_alivezWeakMethodTestCase.test_alive1s����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��dSrL)r%rer(r:rUrVrpr-s   r�test_object_deadz#WeakMethodTestCase.test_object_dead:sM���1�I�I����q�}�-�-��
�
�
�����
�
�a�a�c�c�4� � � � � rc���|���}|d��}tj|j��}|`t	j��|�|��d��dSrL)r&rer(r:rUrVrp)rr
rgr�s    r�test_method_deadz#WeakMethodTestCase.test_method_deadAs`���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 �rrpz=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbM�����L�L������rrM)r&rer(r:rUrVrur%�rr
rprgr�r6s     @r�test_callback_when_object_deadz1WeakMethodTestCase.test_callback_when_object_deadIs�����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�r5s �rrpz=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cb]r7rrM)r&rer(r:rUrVrur8s     @r�test_callback_when_method_deadz1WeakMethodTestCase.test_callback_when_method_deadYs�����N�N������	�	�	�	�	�
�A�a�D�D����q�}�b�1�1��
�M�
�
����������$�$�$�
�
�
����������$�$�$�$�$rc���td��}d�}tj|j|��}tj|��}~|�|��d��dS)NrMc��dSrr
)�_s rrpz-WeakMethodTestCase.test_no_cycles.<locals>.cbmr�r)r%rer(r:rNrp)rrgrpr�rhs     r�test_no_cyclesz!WeakMethodTestCase.test_no_cyclesisb��
�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>._equ�7����O�O�A��F�#�#�#����Q�!�V�$�$�$�$�$rc�l����||k����||k��dSrrCrDs  �r�_nez-WeakMethodTestCase.test_equality.<locals>._nexrFrrMrt)	r%rer(r:r>rrUrVru)rrErHrr�r r�r~r�r��err�qr�s`              rr�z WeakMethodTestCase.test_equalityts���	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�
�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|��dSrL)r%rer(r:r>rur6rUrVr�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)rrrr&r.r0r2r9r<rr�r@r�r�r
rrr!r!(s����������#�#�#�!�!�!�!�!�!�%�%�%� %�%�%� 
��"�"���"�'5�'5�'5�R.�.�.�.�.rr!c�x�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-��d/���Z3e,j-��d0���Z4e,j-��d1���Z5e6j7d2���Z8d3S)4�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
�r@��.0rZs  r�
<listcomp>z4MappingTestCase.check_len_cycles.<locals>.<listcomp>�s��.�.�.�����.�.�.rc3�.�K�|]}�|��V��dSrr
�rTrg�conss  �r�	<genexpr>z3MappingTestCase.check_len_cycles.<locals>.<genexpr>�s+�����/�/�A���Q���/�/�/�/�/�/r)rrMr)	r��items�next�
StopIterationrUrVr�r�ru)	r�	dict_typerX�NrZ�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�
�|dfSrLr
�rIs rrz<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>��
��A�q�6�r)rbrer�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|fSrLr
res rrz=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>�s
��a��V�r)rbre�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)NrMr�rPrc�*�g|]}t����Sr
rRrSs  rrUz2MappingTestCase.check_len_race.<locals>.<listcomp>�s��2�2�2�A�X�Z�Z�2�2�2rc3�.�K�|]}�|��V��dSrr
rWs  �rrYz1MappingTestCase.check_len_race.<locals>.<genexpr>�s+�����3�3��D�D��G�G�3�3�3�3�3�3r)�
addCleanuprUr�r�r�rVrZr[r\r��assertGreaterEqual�assertLessEqual)
rr]rX�thr^rZr_rr`ras
  `       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�
�|dfSrLr
res rrz:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>�s
��!�Q��r)rsrer�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|fSrLr
res rrz;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>�rfr)rsrerjrs 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)NrM�#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 dictionaryrt)�make_weak_valued_dictrurer�rpr(r�rZ�copy�sortr��COUNTrrjr��KeyError�__getitem__r
�r�dict�objectsrg�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)NrMz&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_dictrurer�rpr(rZr~�setr�r�rr%r��assertNotInr�s      r�test_weak_keyszMappingTestCase.test_weak_keys
s���
�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��dSrG)	r��check_iters�keyrefsrur�r�r�r(rK�rr�r�r�objects2rhr�s       r�test_weak_keyed_itersz%MappingTestCase.test_weak_keyed_iters+s����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��dSrG)	r}r��	valuerefsrur�r�r(rK�
itervaluerefsr�s       r�test_weak_valued_itersz&MappingTestCase.test_weak_valued_itersFs����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)r�rZrKr��keys�values)rr�rZ�itemr�rIr��vs        rr�zMappingTestCase.check_iters_sh���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���rM)	r�r+�getattrr[rUrVr�r�ru)rr�r��	iter_namer�rs      r�"check_weak_destroy_while_iteratingz2MappingTestCase.check_weak_destroy_while_iteratingys�����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��dSrG)
r�r�r�r��poprur~�update�clearr�)rr��testcontextrIr��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@�rMrtr�r9r=rr)r%r�r�r[r�ru�popitemr�)rr�r�rgr�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�rZr�r�c3�J�K�	t������}t|������j}tj��t|��|fV�d}tj��dS#d}tj��wxYwr�r+rZr[r�r(rUrVr%)rr�r�r�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�r�r�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�rZr�r�r�c3�J�K�	t������}t|������j}tj��|t|��fV�d}tj��dS#d}tj��wxYwrr�)rrIr�r�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%rer�ru�rrgr�s   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��rrgr��dict2s    r�.test_make_weak_keyed_dict_from_weak_keyed_dictz>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dict�sQ���1�I�I���(�!�C��1�1���)�$�/�/������a��#�&�&�&�&�&rc��tj��}tttt|j������}|D]}|j||<�
||fSr)rer�r��mapr%r�r�r(�rr�r�rgs    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%rerjrur�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_dict
sQ���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��rr�r1�iterable)	r�r�rerjr)r%rur�r�)rrg�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)rerjr�r�r%r�r�r(r�s    rr}z%MappingTestCase.make_weak_valued_dictsW���*�,�,���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)NrtrMr)rur�r�rp)	r�klass�key1�value1�key2�value2�weakdictrIr�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�rerjr
rs r�test_weak_valued_dict_popitemz-MappingTestCase.test_weak_valued_dict_popitem5s:�����7�6�!�1�3�3�����	5�	5�	5�	5�	5rc�|�|�tjt��dt��d��dS�Nzvalue 1zvalue 2)r�rer�r
rs r�test_weak_keyed_dict_popitemz,MappingTestCase.test_weak_keyed_dict_popitem9s:�����7�4��3�3�	�1�3�3�	�	;�	;�	;�	;�	;rc�d�|�||d��|��}|�||��}|�||��|�||��|�|�|��|��|�|||��|�||��}|�||��|�||��|�|�|��|��|�|||��dS)Nz9invalid test -- value parameters must be distinct objects)r��
setdefaultrpr��get)rr��keyr�r�r�rgs       r�check_setdefaultz MappingTestCase.check_setdefault=s$�������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�rerjr
rs r� test_weak_valued_dict_setdefaultz0MappingTestCase.test_weak_valued_dict_setdefaultNs8�����g�9�#�Q�S�S�!�#�#�	/�	/�	/�	/�	/rc�b�|�tjt��dd��dSr�)r�rer�r
rs r�test_weak_keyed_dict_setdefaultz/MappingTestCase.test_weak_keyed_dict_setdefaultRs4�����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�rur�r�r�r�rp)rr�r�r�rIr�s      r�check_updatezMappingTestCase.check_updateVs3��
�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)NrMr r
r�r�)r�rerjr
r�r�r�rur�r�r%)rr�rgr�s    r�test_weak_valued_dict_updatez,MappingTestCase.test_weak_valued_dict_updateisX�����'�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)NrM�rMrt)rMr�r=rrt)	r
rerjr~rur�rpr�r�)
rr r�r~�wvd1�wvd2�wvd3�d1�pairs�tmp1�tmp2�tmp3�tmp4s
             r� test_weak_valued_union_operatorsz0MappingTestCase.test_weak_valued_union_operatorszs[��
�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)NrMrtr�)r�rer�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�	somethingrtrM)rer�r%rur�r�r��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)	NrMrtr�r9�5�6��)
r
rer�r~rur�rpr�r�r�)
rr�r��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)Nr�r�r�zsomething elsertrM)rerjr%rur�r�rZr�s    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��
)	rer�r%r�r�r�r�r��__setitem__)rr�rgs   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�)rrZs  rr)zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__�s
����
�
�
rc�*�t|j��Sr)r6r�rs rr7zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__�s���D�J�'�'�'rc�.���r�d=|j|jkS)Nr�r�)rr1�mutate�objss  ��rr2zCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__�s#����!��R���z�U�[�0�0rN)rrrr)r7r2)rrs��rr
r�sQ�������
�
�
�
(�
(�
(�
1�
1�
1�
1�
1�
1�
1�
1rr
c�&��g|]
}�|����Sr
r
)rTrZr
s  �rrUzEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>s!���'�'�'����!���'�'�'rr9TrrMrt)rer�r}r�r�r�r��reverserrur�)rr�rg�countr
rrs    @@@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.*>)rerj�assertRegexrf�rr�s  r�test_make_weak_valued_dict_reprz/MappingTestCase.test_make_weak_valued_dict_reprs3���*�,�,������d���%D�E�E�E�E�Erc�r�tj��}|�t|��d��dS)Nz<WeakKeyDictionary at 0x.*>)rer�rrfrs  r�test_make_weak_keyed_dict_reprz.MappingTestCase.test_make_weak_keyed_dict_reprs3���(�*�*������d���%B�C�C�C�C�Crc��tj��}t��5td��D];}|�dt����}|�|d��~�<	ddd��dS#1swxYwYdS�Ni��r�)rerjr`r�r�r@r��rr�rZrs    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!)rerjr`r�r@r�r�r"s    r�test_threaded_weak_valued_popz-MappingTestCase.test_threaded_weak_valued_pop+s����'�)�)��
�
 �
 �	*�	*��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�rM)rerjr`r�r@rur�)rr�rZrgs    r�%test_threaded_weak_valued_consistencyz5MappingTestCase.test_threaded_weak_valued_consistency4s���
�'�)�)��
�
 �
 �	�	��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�rr-s  rr)zHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__G�
������rNrCr
rr�DummyKeyr*F�#������
�
�
�
�
rr0c��eZdZd�ZdS)�AMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuec��||_dSrr,r.s  rr)zJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Kr/rNrCr
rr�
DummyValuer3Jr1rr5c���	�durtj|��}dS|���}dS#t$r }|�|��Yd}~dSd}~wwxYwr�)r~�deepcopyrOr�)r��excr?�exr7s    �r�	dict_copyz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copyNsq���
��t�#�#��
�a�(�(�A�A�A������A�A�A���
�
�
��
�
�2��������������
���s�3�3�
A�A�Ac���d}|r_tjdt|��dz
��}|dz
}|�|��|dzdkrt	j��|�]dSdS)NrrMi')�random�randintr�r�rUrV)�lst�gc_ctrrZs   r�pop_and_collectzFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectWsz���F��
!��N�1�c�#�h�h��l�3�3���!�������
�
�
��E�>�Q�&�&��J�L�L�L��
!�
!�
!�
!�
!rip)rYr�r)
r�rer�rjr�r�r[r\r]r^)r�type_r7r8r0r5r:r@r�r�r�rZrIr��t_copy�	t_collects  `             r�check_threaded_weak_dict_copyz-MappingTestCase.check_threaded_weak_dict_copyAs������	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	!�	!�	!�	
�
�
�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�rDrer�rs r� test_threaded_weak_key_dict_copyz0MappingTestCase.test_threaded_weak_key_dict_copy~s#��	
�*�*�7�+D�e�L�L�L�L�Lrc�F�|�tjd��dSr�rGrs r�$test_threaded_weak_key_dict_deepcopyz4MappingTestCase.test_threaded_weak_key_dict_deepcopy�s#��	
�*�*�7�+D�d�K�K�K�K�Krc�F�|�tjd��dSrF�rDrerjrs r�"test_threaded_weak_value_dict_copyz2MappingTestCase.test_threaded_weak_value_dict_copy�s#��	
�*�*�7�+F��N�N�N�N�Nrc�F�|�tjd��dSr�rLrs 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)rerjrq�_remove�__closure__)rr�s  r�test_remove_closurez#MappingTestCase.test_remove_closure�s/���'�)�)�����!�)�/�0�0�0�0�0rN)9rrrr�rbrgrkrsrvryr�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�rr	r
rrrr�requires_working_threadingr#r%r'rDrHrJrMrOrr�rSr
rrrNrN�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�L�L�3�2�L�
1��0�2�2�O�O�3�2�O�
1��0�2�2�N�N�3�2�N�

��1�1���1�1�1rrN)�
mapping_testsc�f�eZdZ	ed��ed��ed��d�ZejZd�ZdS)�WeakValueDictionaryTestCaserMrtr�)r�r��key3c�4�|j���Sr)�!_WeakValueDictionaryTestCase__refr~rs r�
_referencez&WeakValueDictionaryTestCase._reference�����z��� � � rN)	rrrr%rZrerj�	type2testr[r
rrrWrW�sU������I��F�1�I�I�f�f�Q�i�i���q�	�	�B�B�E��+�I�!�!�!�!�!rrWc�j�eZdZ	ed��ded��ded��diZejZd�ZdS)	�WeakKeyDictionaryTestCaser�rMr�rtrXr�c�4�|j���Sr)�_WeakKeyDictionaryTestCase__refr~rs rr[z$WeakKeyDictionaryTestCase._reference�r\rN)	rrrr%rarer�r]r[r
rrr_r_�sX������G�
�V�F�^�^�A�v�v�f�~�~�a�������B�E��)�I�!�!�!�!�!rr_c�b�eZdZGd�d��Zd�Zd�Zd�Zd�Zd�Ze	d���Z
d	�Zd
S)�FinalizeTestCasec��eZdZdS)�FinalizeTestCase.ANr�r
rrrre�s�������rrc�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)rprqr���F)rprqrr)rr�r�)rre�finalizeru�alive�peek�detachrk)rror rrns    @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��kwargsrns  �r�finz-FinalizeTestCase.test_arg_errors.<locals>.fin�s����J�J��f�~�&�&�&�&�&rrMrtr�r9)�funcrr�)r}r()rr}r()rrertrurvr�r�)rr|r rrns    @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{)rr�r�r
r�r�r�r{)
rrertr�r�rurwr�rkru)	rr rnr�r�r�r�r��expecteds	         r�
test_orderzFinalizeTestCase.test_order�s����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�rArr�c�2����d��dS)N�{r�)rns�rrOz1FinalizeTestCase.test_all_freed.<locals>.callback!s����J�J�s�O�O�O�O�Orr�)rertrrNr�rkrqru)rr�r rOr�wr_callback�wr_frns       @r�test_all_freedzFinalizeTestCase.test_all_freeds*���	�	�	�	�	�'�*�	�	�	�
�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 errorrMr)rert�print)r��clss �r�errorz,FinalizeTestCase.run_in_child.<locals>.error5s4����!�#�u�d�3�3�B��*����
�a�C�C�C�Crr�r�r�F)rertr��_global_var�atexit)r�r�r�r�r�r�s`     r�run_in_childzFinalizeTestCase.run_in_child3s���	�	�	�	�	��
�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�
splitlinesrur�)r�prog�rc�out�errs     r�test_atexitzFinalizeTestCase.test_atexitGsy��2��$�5�d�D�A�A���C���j�j��!�!�,�,�.�.������J�J�J�K�K�K����,��3�4�4�4�4�4rN)rrrrrkrxr~r�r��classmethodr�r�r
rrrcrc�s�������
�
�
�
�
�
�
�
�!�!�!�
'%�'%�'%�R7�7�7�&%(�%(�%(�N%�%�%�2�!�!��[�!�&5�5�5�5�5rrcc��eZdZd�ZdS)�ModuleTestCasec���dD]n}tt|��}|dkr|�|jd��|�|j|��|�|j|���odS)N)r*�	ProxyTyper�r(�WeakSetr�rjr�re)r�rerurrr)rrjrs   r�
test_nameszModuleTestCase.test_namesQs���Z�	5�	5�D��'�4�(�(�C��y� � �� � ����;�;�;����S�\�4�0�0�0����S�-�t�4�4�4�4�
	5�	5rN)rrrr�r
rrr�r�Ps#������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__)rP).rUrhr��unittestr�rer�r�r~r[rSr<�testr�test.supportrrrrr�r�r
rr!r#r%r@�TestCaserEr�r`rbr�r!rNrU�BasicTestMappingProtocolrWr_rcr�r��__test__r�r�mainr
rr�<module>r�s���	�	�	�	�
�
�
�
�������������������������������������
�
�
�
�������1�1�1�1�1�1�1�1�#�#�#�#�#�#�)�)�)�)�)�)�����
�
�
�
�
�
�
�
�
��������
�
�
������������*��������
�����x� ������������*V
�V
�V
�V
�V
��V
�V
�V
�re+�e+�e+�e+�e+�(�e+�e+�e+�PF.�F.�F.�F.�F.��*�F.�F.�F.�Rh1�h1�h1�h1�h1�h�h1�h1�h1�V������!�!�!�!�!�-�"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