Sindbad~EG File Manager
�
'ΜgF)���ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlm
Z
ddlmZmZddlmZddlmZdadZGd�d�ZGd �d
�Zd�Zd�ZGd
�d�ZGd�d�ZGd�dej6�Zej:d)d��ZGd�de�ZGd�de�Z Gd�dej6�Z!Gd�de�Z"ddlm#Z#Gd�de#jH�Z%Gd�d e#jH�Z&Gd!�d"ej6�Z'Gd#�d$ej6�Z(d%Z)d&e)iZ*d'�Z+e,d(k(rejZ�yy)*�N)�support)�
script_helper� ALWAYS_EQ)�
gc_collect)�threading_helper�foobarc��eZdZd�Zy)�Cc��y�N���selfs �./usr/local/lib/python3.12/test/test_weakref.py�methodzC.methods���N)�__name__�
__module__�__qualname__rr
rrr
r
s��
rr
c��eZdZdZd�Zy)�CallableNc��||_yr��bar�r�xs r�__call__zCallable.__call__"s ����r)rrrrrr
rrrrs��
�C�rrc��d�}|S)Nc��yrr
r
rr�fzcreate_function.<locals>.f's��Trr
)r s r�create_functionr!&s
����Hrc�*�t�jSr)r
rr
rr�create_bound_methodr#*s���3�:�:�rc�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z y) �Objectc��||_yr��arg)rr(s r�__init__zObject.__init__/s ����rc� �d|jzS)Nz<Object %r>r'rs r�__repr__zObject.__repr__1s���t�x�x�'�'rc�`�t|t�r|j|jk(StSr��
isinstancer%r(�NotImplemented�r�others r�__eq__z
Object.__eq__3s%���e�V�$��8�8�u�y�y�(�(��rc�`�t|t�r|j|jkStSrr-r0s r�__lt__z
Object.__lt__7s%���e�V�$��8�8�e�i�i�'�'��rc�,�t|j�Sr)�hashr(rs r�__hash__zObject.__hash__;s���D�H�H�~�rc��y)N�r
rs r�some_methodzObject.some_method=���rc��y)N�r
rs r�other_methodzObject.other_method?r;rN)
rrrr)r+r2r4r7r:r>r
rrr%r%.s%���(�����rr%c��eZdZd�Zy)�RefCyclec��||_yr)�cyclers rr)zRefCycle.__init__Ds ����
rN�rrrr)r
rrr@r@Cs��rr@c��eZdZd�Zd�Zy)�TestBasec��d|_y�Nr��cbcalledrs r�setUpzTestBase.setUpJs ����
rc�.�|xjdz
c_y�N�rH)r�refs r�callbackzTestBase.callbackMs���
�
���
rN)rrrrJrOr
rrrErEHs���rrEc#���K�d���fd�}tj�5tj|��}|j � d��d�|j� ddd�y#d�|j�wxYw#1swYyxYw�w)zR
Ensure GC collections happen in a different thread, at a high frequency.
Fc�d���s-tj��tj��s�,yyr)�time�sleep�gc�collect)�period�please_stops��rrUz"collect_in_thread.<locals>.collectXs �����J�J�v���J�J�L�r)�targetNT)r�
disable_gc� threading�Thread�start�join)rVrU�trWs` @r�collect_in_threadr_Qsr�����
�K��
� � � ����G�,�� ��� � ���K�
�F�F�H�
� ���K�
�F�F�H��
� �s4�B�'B� A)�
B� B�)A=�=B�B �Bc�h�eZdZd�Zd�Zd�Zejd��Zd�Z d�Z
d�Zd�Zd �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�Z9y6)7�ReferencesTestCasec���|jt�|jt�|jt�t�}t j
|�}t
|�~t
|�yr)�check_basic_refr
r!r#�weakrefrN�repr)r�o�wrs r�test_basic_refz!ReferencesTestCase.test_basic_refisT�����Q�����_�-����0�1�
�C��
�[�[��^���R��
��R�rc���Gd�dt�}|d��}tj|�}|jdt |��|jdt|��y)Nc��eZdZd�Zy)�>ReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfigc��||Srr
rs r�__getattr__zJReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfig.__getattr__ys���A�w�rN)rrrrmr
rr�MyConfigrkx���
rrnr=)�offset)�dictrdrN�assertInre�str)rrn�obj�obj_weakrefs r�test_repr_failure_gh99184z,ReferencesTestCase.test_repr_failure_gh99184wsN�� �t� ��a� ���k�k�#�&���
�
�j�$�{�"3�4��
�
�j�#�k�"2�3rc��|jt�|jt�|jt�yr)�check_basic_callbackr
r!r#rs r�test_basic_callbackz&ReferencesTestCase.test_basic_callback�s-���!�!�!�$��!�!�/�2��!�!�"5�6rc��ddl}|j}|�}tj|�}|j |�|�~|j|��|j
|�|j|�yrG)� _testcapi�create_cfunctionrdrN�assertIs�assertIsNonercrx)rr{r|r rgs r�test_cfunctionz!ReferencesTestCase.test_cfunction�sg���$�5�5�����
�[�[��^���
�
�b�d�A��
����"�$�����-�.��!�!�"2�3rc�D�t�}tj||j�}tj||j�}~t �|j|�d�|j|�d�|j
|jdd�y)Nz$expected reference to be invalidated�z-callback not called the right number of times)r
rdrNrOrr~�assertEqualrI�rrf�ref1�ref2s r�test_multiple_callbacksz*ReferencesTestCase.test_multiple_callbacks�sy��
�C���{�{�1�d�m�m�,���{�{�1�d�m�m�,��
������$�&�"H�I����$�&�"H�I��������D� Frc��|fd�}t�}tj||�|_tj||�}~y)Nc�$�|j�yr�rN)�objectrs rrOzDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback�s���H�H�Jr)r
rdrN)rrO�cr�s r�test_multiple_selfref_callbacksz2ReferencesTestCase.test_multiple_selfref_callbacks�s8��#'� �
�C���;�;�q�(�+����{�{�1�h�'��
rc�f�t�}|jttj|d��y)N)rO)r
�assertRaises� TypeErrorrdrN)rr�s r�test_constructor_kwargsz*ReferencesTestCase.test_constructor_kwargs�s$��
�C�����)�W�[�[�!�d��Crc���t�}d|_tj||j�}tj||j�}~t�d�}|j
t||�|j
t||�tjt��}t�|j
tt|�|j|jd�y)NrMc��|jyrr)�proxys r�checkz0ReferencesTestCase.test_proxy_ref.<locals>.check�s ���I�Irr�)r
rrdr�rOrr��ReferenceError�boolr�rI)rrfr�r�r��ref3s r�test_proxy_refz!ReferencesTestCase.test_proxy_ref�s���
�C������}�}�Q��
�
�.���}�}�Q��
�
�.��
��� �
���.�%��6����.�%��6��}�}�Q�S�!�������.�$��5��������*rc��|�}tj|�}|j|�d�|�}|j||d�y)Nz,weak reference to live object should be livez-<ref>() should return original object if live)rdrN�assertIsNotNoner})r�factoryrfrN�o2s rrcz"ReferencesTestCase.check_basic_ref�sG���I���k�k�!�n�����S�U�C� E�
�U���
�
�a��D� Frc���d|_|�}tj||j�}~t �|j|jdd�|j
|�d�y)NrrMz(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)rIrdrNrOrr�r~)rr�rfrNs rrxz'ReferencesTestCase.check_basic_callback�s\����
��I���k�k�!�T�]�]�+��
����������?� A����#�%�J� Lrc�"�t�}tj|�}tj|�}tj|�}|j ||d�t�}tj|�}tj|�}tj|�}|j ||d�|jtj|�dd�~t�|jtj|�dd�y)Nz1reference object w/out callback should be re-usedr�zwrong weak ref count for objectrMz4wrong weak ref count for object after deleting proxy)r
rdrNr�r}r��getweakrefcountr)rrfr�r�r�s r�test_ref_reusez!ReferencesTestCase.test_ref_reuse�s���
�C���{�{�1�~���
�
�a� ���{�{�1�~���
�
�d�D�H� J�
�C���
�
�a� ���{�{�1�~���{�{�1�~���
�
�d�D�H� J�����0�0��3�Q�6� 8��������0�0��3�Q�K� Mrc��t�}tj|�}tj|�}tj|�}|j ||d�y)Nz4proxy object w/out callback should have been re-used)r
rdr�rNr})rrf�proxy1rN�proxy2s r�test_proxy_reusez#ReferencesTestCase.test_proxy_reuse�sF��
�C�����q�!���k�k�!�n�����q�!���
�
�f�f�K� Mrc���t�}|j|tj|��t j
�}tj|�}|j
|d�|jd�|jt|�d�|j|d�ddg|dd|jt|�d�|jt|�d�|jd|d�d|d<|j|dd�|j|dd�t j
|�}tj|�}|j||�t j
td ��}tj|�}|j|dd|dd�|j|dd|dd�|j|dd|dd�|j|dd|dd�y)
Nz(proxy for empty UserList should be false�rMz+proxy for non-empty UserList should be truer��z,proxy didn't support __contains__() properlyr=�
)
r
�check_proxyrdr��collections�UserList�assertFalse�appendr��len�
assertTruerr�range)rrf�L�p�L2�p2�L3�p3s r�test_basic_proxyz#ReferencesTestCase.test_basic_proxy�s���
�C������G�M�M�!�,�-�� � �"���M�M�!�������F�G� ���������Q���#�����H�I��1�v��!������Q���#�����Q���#��
�
�a��J�K���!������1��q�!�����1��q�!�
�
!�
!�!�
$��
�]�]�2�
������B��
�
!�
!�%��)�
,��
�]�]�2�
������A���1��&�����A�B���A�B��(�����B�Q���B�Q��(�����A�a��"�Q�q�'�*rc���Gd�dt�}|�}|jdttj|���|jt
tj|��d�y)Nc��eZdZd�Zd�Zy)�0ReferencesTestCase.test_proxy_unicode.<locals>.Cc��y)N�stringr
rs r�__str__z8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__���rc��y)N�bytesr
rs r� __bytes__z:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__r�rN)rrrr�r�r
rrr
r�s��
�
rr
r�r�)r�rr�dirrdr�r��bytes)rr
�instances r�test_proxy_unicodez%ReferencesTestCase.test_proxy_unicodesQ�� �� �
�3���
�
�k�3�w�}�}�X�'>�#?�@�����w�}�}�X�6�7��Brc��Gd�d�}|�}tj|�}|jtj|�d�y)Nc��eZdZd�Zy)�.ReferencesTestCase.test_proxy_index.<locals>.Cc��y)Nr�r
rs r� __index__z8ReferencesTestCase.test_proxy_index.<locals>.C.__index__"���rN)rrrr�r
rrr
r�!���
rr
r�)rdr�r��operator�index�rr
rfr�s r�test_proxy_indexz#ReferencesTestCase.test_proxy_index s<�� � �
�C���M�M�!����������*�B�/rc��Gd�d�}|�}tj|�}|j|dzd�|dz}|j|d�y)Nc��eZdZd�Zd�Zy)�,ReferencesTestCase.test_proxy_div.<locals>.Cc��y�N�*r
r0s r�__floordiv__z9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__*r�rc��y)N�r
r0s r�
__ifloordiv__z:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__,r�rN)rrrr�r�r
rrr
r�)s��
�
rr
r=r�r��rdr�r�r�s r�test_proxy_divz!ReferencesTestCase.test_proxy_div(sP�� � �
�C���M�M�!�������a���$� �a�������B�rc���Gd�d�}|�}tj|�}|j|dzd�|jd|zd�|dz}|j|d�y)Nc��eZdZd�Zd�Zd�Zy)�/ReferencesTestCase.test_proxy_matmul.<locals>.Cc��y)N�r
r0s r�
__matmul__z:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__6���rc��y)N�]���r
r0s r�__rmatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__8r�rc��y)N�1r
r0s r�__imatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__:s��rN)rrrr�r�r�r
rrr
r�5s��
�
�
rr
r=r�r�r�r�r�s r�test_proxy_matmulz$ReferencesTestCase.test_proxy_matmul4sd�� � �
�C���M�M�!�������Q���%�����Q���%� �Q�������C� rc�B�|jtj�yr)�check_shared_without_callbackrdrNrs r� test_shared_ref_without_callbackz3ReferencesTestCase.test_shared_ref_without_callbackKs���*�*�7�;�;�7rc�B�|jtj�yr)r�rdr�rs r�"test_shared_proxy_without_callbackz5ReferencesTestCase.test_shared_proxy_without_callbackNs���*�*�7�=�=�9rc�F�td�}||d�}||d�}|j||d�~~||�}||d�}|j||d�~~||�}||�}|j||d�~~||d�}||�}|j||d�y)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%r})r�makerefrf�p1r�s rr�z0ReferencesTestCase.check_shared_without_callbackQs����1�I��
�Q��
��
�Q��
���
�
�b�"�E�F���
�Q�Z��
�Q��
���
�
�b�"�F�G���
�Q�Z��
�Q�Z���
�
�b�"�E�F���
�Q��
��
�Q�Z���
�
�b�"�F�Grc��t�}tj|�}|j||�|j t|�tjd�|d�|j|jdd�|d��|j|jdd�|jt|�|jt|ddd�y) Nzproxy is not of callable typez twinkies!z1call through proxy not passed through to originalzSplat.)rrMr�r�)rrdr�r�r}�type�CallableProxyTyper�rr�r�)rrfr�s r�test_callable_proxyz&ReferencesTestCase.test_callable_proxycs����J���}�}�Q�������D�!��
�
�d�4�j�'�";�";�4� 6��[���������H� J��x���������H� J�
���)�T�*�
���)�T�1�a��3rc��d|_|j|jdd�d|_|j|jdd�|`|jt|d�d�d|_|j|jdd�d|_|j|jdd�|`|jt|d�d �y)
NrMz)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)rrfr�s rr�zReferencesTestCase.check_proxyxs������������A�@� B����������A�D� F�
�E�������.�?� A��� ��������K� M��� ��������F� H��I������E�*�J� Lrc��Gd�d�}|�}tj|�}|d=|j|jd�y)Nc��eZdZdZd�Zy)�3ReferencesTestCase.test_proxy_deletion.<locals>.FooNc��||_yr)�result)r�accessors r�__delitem__z?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__�s ��&��r)rrrr�rr
rr�Foor��s���F�
'rrr)rdr�r�r�)rr�gr s r�test_proxy_deletionz&ReferencesTestCase.test_proxy_deletion�s>�� '� '�
�E���M�M�!���
�a�D�������1�%rc��Gd�dt�}|�}|jttj|��t|��y)Nc��eZdZy)�0ReferencesTestCase.test_proxy_bool.<locals>.ListN�rrrr
rr�Listr�s�rr)�listr�r�rdr�)rr�lysts r�test_proxy_boolz"ReferencesTestCase.test_proxy_bool�s3���4���v������g�m�m�D�1�2�D��J�?rc���d�G�fd�d�}|��tj��}|jt�5d|vddd�y#1swYyxYw)Nc���eZdZ�fd�Zy)�1ReferencesTestCase.test_proxy_iter.<locals>.MyObjc����tSr)r/)rrts �r�__iter__z:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__�s����%�%rN�rrrr)rts�r�MyObjr�s���
&rr�blech)rdr�r�r�)rrr�rts @r�test_proxy_iterz"ReferencesTestCase.test_proxy_iter�sN����� &� &��g���M�M�#���
�
�
�y�
)�
�q�L� *�
)�
)�s�A�Ac����gd���fd�}|��G�fd�d�}|�}|jt|�gd��y)N)r9r=�c3�&�K��Ed{���y7��wrr
)�arrs�r�
iterator_funcz9ReferencesTestCase.test_proxy_next.<locals>.iterator_func�s������N�N�s���c���eZdZ�fd�Zy)�:ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklyc�.��tj��Sr�rdr�)r�its �rrzCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__�s����}�}�R�(�(rNr)rs�r�IteratesWeaklyr�s���
)rr)r�r )rrr�weak_itrrs @@r�test_proxy_nextz"ReferencesTestCase.test_proxy_next�s>����� �
�_�� )� )�!�"��
����g�� �2rc���d��G�fd�d�}|�}d}|jt|�5t|�ddd�y#1swYyxYw)Nc��yrGr
r
rr�<lambda>z8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>�s��!rc���eZdZ�fd�Zy)�1ReferencesTestCase.test_proxy_bad_next.<locals>.Ac�.��tj��Srr)r�not_an_iterators �rrz:ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__�s����}�}�_�5�5rNr)r(s�r�Ar&�s���
6rr)z'Weakref proxy referenced a non-iterator)�assertRaisesRegexr�r )rr)�a�msgr(s @r�test_proxy_bad_nextz&ReferencesTestCase.test_proxy_bad_next�sE���$�� 6� 6�
�C��7��
�
#�
#�I�s�
3���G�4�
3�
3�s�A�Ac ��Gd�d�}|�}|jdjttj|���d�y)Nc��eZdZd�Zd�Zy)�5ReferencesTestCase.test_proxy_reversed.<locals>.MyObjc��y)Nr�r
rs r�__len__z=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__����rc��td�S)N�cba)�iterrs r�__reversed__zBReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__�s���E�{�"rN)rrrr2r7r
rrrr0�s��
�
#rr�r5)r�r]�reversedrdr��rrrts r�test_proxy_reversedz&ReferencesTestCase.test_proxy_reversed�s<�� #� #��g���������'�-�-��*<�!=�>��Frc�h�Gd�d�}|�}|jt�5ttj|��ddd�Gd�d�}|�}|jt�5ttj|��ddd�y#1swY�WxYw#1swYyxYw)Nc��eZdZd�Zy)�1ReferencesTestCase.test_proxy_hash.<locals>.MyObjc��yr�r
rs rr7z:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__�r�rN�rrrr7r
rrrr>�r�rrc��eZdZdZy)r>Nr@r
rrrz1ReferencesTestCase.test_proxy_hash.<locals>.MyObj�s���Hr)r�r�r6rdr�r:s r�test_proxy_hashz"ReferencesTestCase.test_proxy_hash�s��� � ��g��
�
�
�y�
)�����s�#�$�*� � ��g��
�
�
�y�
)�����s�#�$�*�
)�*�
)��*�
)�s�B�4B(�B%�(B1c�8�t�}tj|�}tj||j�}|j tj
|�dd�tj|�}tj||j�}|j tj
|�dd�~~~~t�|j tj
|�dd�|j tj
d�dd�y)Nr�z*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
rdrNrOr�r�r�r)rrfr�r�r�r�s r�test_getweakrefcountz'ReferencesTestCase.test_getweakrefcount�s���
�C���{�{�1�~���{�{�1�d�m�m�,������0�0��3�Q�A� C����q�!�����q�$�-�-�0������0�0��3�Q�A� C�
�$���������0�0��3�Q�1� 2�
����0�0��3�Q�I� Krc��t�}tj||j�}tj||j�}~t �|jtj|�|gd�t�}tj||j�}tj||j�}~t �|jtj|�|gd�~t �|jtj|�gd�|jtjd�gd�y)Nzlist of refs does not matchzlist of refs not clearedrMz#list of refs does not match for int)r
rdrNrOrr��getweakrefsr�s r�test_getweakrefsz#ReferencesTestCase.test_getweakrefss��
�C���{�{�1�d�m�m�,���{�{�1�d�m�m�,���������,�,�Q�/�$��2� 4�
�C���{�{�1�d�m�m�,���{�{�1�d�m�m�,���������,�,�Q�/�$��2� 4�
�������,�,�Q�/��/� 1�
����,�,�Q�/��:� <rc��Gd�dt�}|d�}tj|�}|j|dzd�|jd|zd�y)Nc��eZdZy)�6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNrr
rr�FrJ���rrKg@g�?g@)�floatrdr�r�)rrKr r�s r�test_newstyle_number_opsz+ReferencesTestCase.test_newstyle_number_opssM�� �� �
�c�F���M�M�!�������S��#�&�����q��#�&rc������Gd�dt��i��fd�����fd�} |�|jd� |�|jd�y#�$rY�!wxYw#�$rYywxYw)Nc��eZdZy)�?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNrr
rr�
BogusErrorrQ%rLrrRc����|=yrr
)�k�datas �r�removez;ReferencesTestCase.test_callbacks_protected.<locals>.remove(s
����Q�rc�@��d�}d�tj|��<��)Nc��y)Nr
r
r
rrr$zRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>+s��r)rdrN)r rRrUrVs ���r�encapsulatez@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulate*s#����A�+/�D����Q��'�(��rzexception not properly restored)� Exception�fail)rrYrRrUrVs @@@r�test_callbacks_protectedz+ReferencesTestCase.test_callbacks_protected"sw��� �� ��� � � 9��M�
�I�I�7�8� 9��M�
�I�I�7�8��� �� ��� �� �s"�A�A�A�A�A'�&A'c���ddl�Gd�dt�}|�}tj|�fd��}~~|�}|�|_tj|j�fd��}|�}||_~~y)Nrc��eZdZy)�0ReferencesTestCase.test_sf_bug_840829.<locals>.CNrr
rrr
r_HrLrr
c�&���j�Sr�rU��ignorerTs �rr$z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Ls
���:�2�:�:�<rc�&���j�Srrarbs �rr$z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Ts
���j�b�j�j�lr)rTr�rdrN�i�c1)rr
r�rgrf�c2rTs @r�test_sf_bug_840829z%ReferencesTestCase.test_sf_bug_840829;sq��� � �� �
�C��
�[�[��7�
8��
�
�
�S���s���
�[�[����:�
;��
�S������
rc���ddl}Gd�dt�}Gd�dt�}|�}||_tj||j
�|_~~~|j�y)Nrc��eZdZy)�4ReferencesTestCase.test_callback_in_cycle.<locals>.JNrr
rr�JrkfrLrrlc��eZdZd�Zy)�5ReferencesTestCase.test_callback_in_cycle.<locals>.IIc��|jyr)rl�rrcs r� acallbackz?ReferencesTestCase.test_callback_in_cycle.<locals>.II.acallbackjs ����rN)rrrrqr
rr�IIrnis��
rrr)rTr�rlrdrNrqrgrU)rrTrlrr�Is r�test_callback_in_cyclez)ReferencesTestCase.test_callback_in_cyclecsW��� �� � �� �
�D������{�{�1�a�k�k�*���2
�q�"���
�
�rc���ddl}Gd�d�}|�|�}}||_||_tj||j
�|_~~|j�y)Nrc��eZdZd�Zy)�=ReferencesTestCase.test_callback_reachable_one_way.<locals>.Cc�L�|j|j|jyr��merfrgrps r�cbz@ReferencesTestCase.test_callback_reachable_one_way.<locals>.C.cb������������rN�rrrr{r
rrr
rw����
rr
)rTrzrfrdrNr{rgrU)rrTr
rfrgs r�test_callback_reachable_one_wayz2ReferencesTestCase.test_callback_reachable_one_way�sR��� � ���a�c�B�����������B����&�������
�
�rc���ddl}Gd�dt�}Gd�d�}|�|�}}||_||_t j
||j�|_~~~~|j�y)Nrc��eZdZd�Zy)�=ReferencesTestCase.test_callback_different_classes.<locals>.Cc�L�|j|j|jyrryrps rr{z@ReferencesTestCase.test_callback_different_classes.<locals>.C.cb�r|rNr}r
rrr
r��r~rr
c��eZdZy)�=ReferencesTestCase.test_callback_different_classes.<locals>.DNrr
rr�Dr��rLrr�) rTr�rzrfrdrNr{rgrU)rrTr
r�rfrgs r�test_callback_different_classesz2ReferencesTestCase.test_callback_different_classes�sb��� �� � � ���a�c�B�����������B����&�����A�q���
�
�rc�*��ddl}g�G�fd�dt�}|d�|d�}}||_||_tj||j
�|_tj||j
�|_�fd�}tj||�}~~~|j�g�|j�|j�dg�|j|�d��dd�=|j�|j�g�y)Nrc���eZdZd�Z�fd�Zy)�AReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.Cc��||_yr)� attribute)r�values rr)zJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__�s ��!&��rc�<���j|j�yr)r�r��rrc�alists �rrqzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallback�s������T�V�V�$rN)rrrr)rq�r�s�rr
r��s
���
'�
%rr
rMr�c�(���jd�y)N�C went away�r��rcr�s �r�C_went_awayzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_away�s����L�L��'rr�) rTr�r�rdrNrqrgr�rU)rrTr
rfrgr�rgr�s @r�#test_callback_in_cycle_resurrectionz6ReferencesTestCase.test_callback_in_cycle_resurrection�s������� %�� %��1��q��t�B�����������B����-������B����-��� (�
�[�[��K�
(����A������#���
�
��
������0������t�$��!�H���
�
�������#rc�Z��ddl}g��fd�}G�fd�dt�}|�|�}}||_||_|j}t j
||�|_t j
||j�|_t j
||�}|j|�|�~~~~|j�g�|j�|j�dg�|j|�d��dd�=|j�|j�g�y)Nrc�(���jd�y)N�safe_callback calledr�r�s �r�
safe_callbackzDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callback�s����L�L�/�0rc���eZdZ�fd�Zy)�8ReferencesTestCase.test_callbacks_on_callback.<locals>.Cc�(���jd�y)Nz cb calledr�r�s �rr{z;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cb�s������[�)rNr}r�s�rr
r��s���
*rr
r�)
rTr�r1r{rdrNrgr}r�rU) rrTr�r
r��drO�external_wrr�s @r�test_callbacks_on_callbackz-ReferencesTestCase.test_callbacks_on_callback�s������� 1� *�� *��s�A�C�1���������4�4���{�{�1�h�'����{�{�8�Q�T�T�*����k�k�(�M�:���
�
�k�m�X�.�
�a��A������#���
�
������!7� 8�9�������-��!�H���
�
�������#rc�B�|jtj�yr)�check_gc_during_creationrdrNrs r�test_gc_during_ref_creationz.ReferencesTestCase.test_gc_during_ref_creations���%�%�g�k�k�2rc�B�|jtj�yr)r�rdr�rs r�test_gc_during_proxy_creationz0ReferencesTestCase.test_gc_during_proxy_creations���%�%�g�m�m�4rc�n�tj�}tjddd�tj�Gd�d�}d�}|�}|�}||_||�|_ |�}t
j||�tj|�y#tj|�wxYw)NrMc��eZdZy)�6ReferencesTestCase.check_gc_during_creation.<locals>.ANrr
rrr)r�rLrr)c��yrr
)�argss rrOz=ReferencesTestCase.check_gc_during_creation.<locals>.callback ���r)rT�
get_threshold�
set_thresholdrUr+rgrdrN)rr��
thresholdsr)rO�
referencedr+s rr�z+ReferencesTestCase.check_gc_during_creations����%�%�'�
�
����A�q�!�
�
�
�� � � ��S�
�
�C������z�"��� *���A��K�K�
�H�-�
���j�)��B���j�)�s�0B � B4c�0�Gd�dt�}|�}y)Nc��eZdZd�Zy)�>ReferencesTestCase.test_ref_created_during_del.<locals>.Targetc�.�tj|�ayr)rdrN�ref_from_delrs r�__del__zFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__8s��&�{�{�4�0�rN�rrrr�r
rr�Targetr�7s��
1rr�)r�)rr��ws r�test_ref_created_during_delz.ReferencesTestCase.test_ref_created_during_del2s��
1�V� 1�
�H�rc ��tjt�}|jt|j
ddddd�t
j�yrG)rdrNrZr�r�r)rTrU)r�rs r� test_initzReferencesTestCase.test_init>s9��
�K�K� �"�����)�Q�Z�Z��A�q�!�Q�?�
�
�
�rc��Gd�dt�}g}tjt�tj||j�}d}tj�|j|�d�|j||g�y)Nc��eZdZy)�*ReferencesTestCase.test_classes.<locals>.ANrr
rrr)r�HrLrr))r�rdrN�intr�rTrUr�)rr)�lr+s r�test_classeszReferencesTestCase.test_classesFse�� �� ������C���K�K��1�8�8�$����
�
�
�������d�#�����Q�C� rc��td�}td�}td�}tj|�}tj|�}tj|�}tj|�}|j||k(�|j ||k7�|j ||k(�|j||k7�|j||k(�|j ||k7�|j ||k(�|j||k7�|j|t
k(�|j |t
k7�~~~t
j�|||fD]}|j|�d��|j ||k(�|j||k7�|j ||k(�|j||k7�|j||k(||u�|j||k7||u�y)NrMr�)
r%rdrNr�r�rrTrUr}r�) rr�y�zr+�br�r�r�s r�
test_equalityz ReferencesTestCase.test_equalityRs����1�I���1�I���1�I���K�K��N���K�K��N���K�K��N���K�K��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]}|jt|||��~~tj�|D]}|jt|||��yrL)r��lt�gt�le�ger%rdrNr�r�rTrU)r�opsrr�r+r��ops r�
test_orderingz ReferencesTestCase.test_orderingws����{�{�H�K�K����h�k�k�B���1�I���1�I���K�K��N���K�K��N���B����i��Q��2��
�q�
�
�
���B����i��Q��2�rc�v�td�}td�}tj|�}tj|�}|jt |�t d��~~tj�|jt |�t d��|jtt|�yr�) r%rdrNr�r6rTrUr�r�)rrr�r+r�s r�test_hashingzReferencesTestCase.test_hashing�s����2�J���2�J���K�K��N���K�K��N������a��$�r�(�+�
�q�
�
�
��
����a��$�r�(�+����)�T�1�-rc��Gd�d�}tj�}|d�x}}td�D]}||�x||<}�~tj�y)Nc��eZdZd�Zy)�1ReferencesTestCase.test_trashcan_16602.<locals>.Cc�v��|sytj|���fd�}tj||�|_y)Nc�����}yrr
)�wparentrf�wselfs �rr{zFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb�s
�����Ar)rdrNr�)r�parentr{r�s @rr)z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__�s.��������D�)�� �&�{�{�6�2�6��rNrCr
rrr
r��s��
7rr
�d)rd�WeakKeyDictionaryr�rTrU)rr
r��rootr��ns r�test_trashcan_16602z&ReferencesTestCase.test_trashcan_16602�sU��
7� 7�
�%�%�'���T�7���q��s��A���t�O�A�a�D�1���
�
�
�rc���td�}d�}tj||�}|j|j|�tj|�}|j|j�y)NrMc��yrr
r�s rr$z<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>����tr)r%rdrNr}�__callback__r~)rrrOr�r�s r�test_callback_attributez*ReferencesTestCase.test_callback_attribute�sU���1�I��#���{�{�1�h�'���
�
�d�'�'��2��{�{�1�~�����$�+�+�,rc���td�}tj||j�}|j |j
�~t
j�|j|j
�yrL) r%rdrNrOr�r�rrr~)rrrNs r�&test_callback_attribute_after_deletionz9ReferencesTestCase.test_callback_attribute_after_deletion�sV���1�I���k�k�!�T�]�]�+�����S�-�-�.�
��������#�*�*�+rc��td�}d�}tj||�}|jt�5d�|_ddd�y#1swYyxYw)NrMc��yrr
r�s rr$z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�r�rc��yrr
r�s rr$z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>�s��Dr)r%rdrNr��AttributeErrorr�)rrrOr�s r�test_set_callback_attributez.ReferencesTestCase.test_set_callback_attribute�sB���1�I��#���{�{�1�h�'��
�
�
�~�
.� 0�D��/�
.�
.�s� A�Ac��Gd�dt�}|d�}tj|d��}~tj�y)Nc��eZdZd�Zy)�;ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelc��yrr
rs rr�zCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__�r�rNr�r
rr�
ObjectWithDelr��s��#rr�rMc�*�tj�Sr)rrr�s rr$z6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>�s
��'�*<�*<�*>r)r%rdrNrr)rr�rr�s r�test_callback_gcsz$ReferencesTestCase.test_callback_gcs�s8�� $�F� $��!����{�{�1�>�?��
����rN):rrrrhrvryr�cpython_onlyrr�r�r�r�rcrxr�r�r�r�r�r�r�r�r�r�r�r�rrrr!r-r;rBrDrGrNr\rhrtrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
rrrarags1��� 4�7�
��� 4�� 4� F��$D�+�$F� L�M�.M�+�8 C�0�
�
!�.8�:�H�$4�*L�* &�@��(
3�
�G�%� K�,<�4'�9�2&�P&�P�0�8,$�\$$�L3�5�*�2
��
!�#-�J
3�
.��*-�,�1�rrac�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�SubclassableWeakrefTestCasec�t�Gd�dtj�}td�}||d��}|j|�|�|j |j
�|j
|jd�~t�|j|��|j |j
�y)Nc�*��eZdZd�fd� Z�fd�Z�xZS)�=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefc�4��||_t�|� ||�yr)r��superr))r�obrOr�� __class__s �rr)zFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__�s���"��
��� ��X�.rc�.��d|_t�|� �S�NT)�calledr�r)rr�s �rrzFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__�s���"����w�'�)�)rr�)rrrr)r�
__classcell__)r�s@r�MyRefr��s���
/�
*�
*rrr���r�)
rdrNr%r}r�r�r�r�rr~)rrrf�mrs r�test_subclass_refsz.SubclassableWeakrefTestCase.test_subclass_refs�s��� *�G�K�K� *�
�5�M��
�1�B�
���
�
�b�d�A������ � �"�������2�&�
������"�$������ � �"rc�z�Gd�dtj�}td�}||�}tj|�}|j||�|j tj
|�||g�|j tj|�d�||�}|j tj|�d�tj
|�}|j t|�d�|j||d�|j||dd�|j||dd�y)Nc��eZdZy)�XSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefNrr
rrrr�rLrrr�r�r�rrM)
rdrNr%�assertIsNotr�rFr�r�r}rr)rrrf�r1�r2�r3�refss r�-test_subclass_refs_dont_replace_standard_refszISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs�s��� �G�K�K� ��2�J��
�1�X��
�[�[��^������R� �����,�,�Q�/�"�b��:�����0�0��3�Q�7�
�1�X������0�0��3�Q�7��"�"�1�%������T��A�&��
�
�b�$�q�'�"��
�
�b�$�q�r�(�#��
�
�b�$�q�r�(�#rc��Gd�dtj�}td�}||t�}||t�}|j||�tj|�}|j||�|j||�y)Nc��eZdZy)�USubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefNrr
rrrr�rLrrr�)rdrNr%�idrsr rFrr)rrrfr
rr
s r�*test_subclass_refs_dont_conflate_callbackszFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks�sm�� �G�K�K� ��2�J��
�1�b�\��
�1�c�]������R� ��"�"�1�%���
�
�b�$���
�
�b�$�rc�H�Gd�dtj�}td�}||ddd�}|j|jd�|j|j
d�|j|j
�d�|jt|d��y)Nc�"�eZdZdZd�Zd�Zd�Zy)�HSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef��slot1�slot2c�D�tjj|||�Sr)rdrN�__new__)r�r�rOrrs rrzPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__�s���{�{�*�*�4��X�>�>rc� �||_||_yrr)rr�rOrrs rr)zQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__s��"��
�"��
rc�4�|j|jzSrrrs r�methzMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.meths���z�z�D�J�J�.�.rN)rrr� __slots__rr)rr
rrrr�s��(�I�
?�
#�
/rrr��abc�def�abcdef�__dict__) rdrNr%r�rrrr�r�)rrrfr�s r�test_subclass_refs_with_slotsz9SubclassableWeakrefTestCase.test_subclass_refs_with_slots�s��� /�G�K�K� /�
�2�J���!�T�5�%�(��������%�(�������%�(��������8�,������J�/�0rc�D��Gd�dtj�}�fd�}t�}|||�}||_~~�j �j
d�t�}|||�}|||�}||_||_~~~�j �j
d�y)z3Confirm https://bugs.python.org/issue3100 is fixed.c��eZdZy)�HSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNrr
rrrr'rLrrc�0���xjdz
c_yrLrH)r�rs �rrOzKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbacks����M�M�Q��MrrN)rdrNr
rfr�rIr�)rrrOrfr
rs` r�test_subclass_refs_with_cyclez9SubclassableWeakrefTestCase.test_subclass_refs_with_cycles���� �G�K�K� �
�
�C��
�1�h�
�����
���������*�
�C��
�1�h�
��
�1�h�
��������
����������*rN)rrrrrrr$r)r
rrr�r��s��#�$$�" �1�"$+rr�c�`�eZdZd�Zd�Zd�Zd�Zd�Zd�Ze jd��Zd�Zd �Z
y
)�WeakMethodTestCasec�$�Gd�dt�}|S)z3Return an Object subclass overriding `some_method`.c��eZdZd�Zy)�'WeakMethodTestCase._subclass.<locals>.Cc��y)Nrr
rs rr:z3WeakMethodTestCase._subclass.<locals>.C.some_method8r3rN)rrrr:r
rrr
r.7s��
rr
)r%)rr
s r� _subclasszWeakMethodTestCase._subclass5s�� �� ��rc���td�}tj|j�}|j |tj
�|j |�t
|j��|j|�j|�|j|�j|jj�|j|��d�y)NrMr9)r%rd�
WeakMethodr:�assertIsInstance�
ReferenceTyper�r}�__self__�__func__r��rrfr�s r�
test_alivezWeakMethodTestCase.test_alive<s����1�I�����q�}�}�-�����a��!6�!6�7����a�c�4��
�
�#6�7��
�
�a�c�l�l�A�&��
�
�a�c�l�l�A�M�M�$:�$:�;���������"rc��td�}tj|j�}~t j
�|j
|�d�yrL)r%rdr2r:rTrUr}r7s r�test_object_deadz#WeakMethodTestCase.test_object_deadEs;���1�I�����q�}�}�-��
�
�
�
���
�
�a�c�4� rc���|j�}|d�}tj|j�}|`t j
�|j
|�d�yrL)r0rdr2r:rTrUr})rr
rfr�s r�test_method_deadz#WeakMethodTestCase.test_method_deadLsI���N�N���
�a�D�����q�}�}�-��
�M�
�
�
���
�
�a�c�4� rc�L��|j�}g��fd�}|d�}tj|j|�}~t j
�|j
�|g�tj|_t j
�|j
�|g�y)Nc�(���j|�yrr��r(�callss �rr{z=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbX�����L�L��rrM)r0rdr2r:rTrUr�r%�rr
r{rfr�r@s @r�test_callback_when_object_deadz1WeakMethodTestCase.test_callback_when_object_deadTs~����N�N����� �
�a�D�����q�}�}�b�1��
�
�
�
��������$��*�*��
�
�
�
��������$rc�&��|j�}g��fd�}|d�}tj|j|�}|`t j
�|j
�|g�~t j
�|j
�|g�y)Nc�(���j|�yrr�r?s �rr{z=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbhrArrM)r0rdr2r:rTrUr�rBs @r�test_callback_when_method_deadz1WeakMethodTestCase.test_callback_when_method_deaddsv����N�N����� �
�a�D�����q�}�}�b�1��
�M�
�
�
��������$�
�
�
�
��������$rc��td�}d�}tj|j|�}tj|�}~|j|�d�y)NrMc��yrr
)�_s rr{z-WeakMethodTestCase.test_no_cycles.<locals>.cbxr�r)r%rdr2r:rNr})rrfr{r�rgs r�test_no_cyclesz!WeakMethodTestCase.test_no_cyclestsH��
�1�I�� ����q�}�}�b�1��
�[�[��^��
��
�
�b�d�D�!rc�z���fd�}�fd�}td�}td�}tj|j�}tj|j�}tj|j�}tj|j�}|||�|||�|||�|||�|||�|||�td�} tj| j�}
tj| j�}|||
�|||�|||
�|||�|||j�||t
�~~~ t
j�|||||
|f}|D]7}
|D]0}�j|
|k(|
|u��j|
|k7|
|u��2�9y)Nc�V���j||k(��j||k7�yr�r�r��r+r�rs �r�_eqz-WeakMethodTestCase.test_equality.<locals>._eq��%����O�O�A��F�#����Q�!�V�$rc�V���j||k7��j||k(�yrrMrNs �r�_nez-WeakMethodTestCase.test_equality.<locals>._ne�rPrrMr�) r%rdr2r:r>rrTrUr�)rrOrRrr�r+r�r�r�r��er r
�qr�s` rr�z WeakMethodTestCase.test_equalitysz��� %� %�
�1�I���1�I�����q�}�}�-�����q�}�}�-�����q�~�~�.�����q�~�~�.���A�q� ��A�q� ��A�q� ��A�q� ��A�q� ��A�q� ��1�I�����q�}�}�-�����q�~�~�.���A�q� ��A�q� ��A�q� ��A�q� ��A�q�}�}���A�y��
�q�!�
�
�
���!�Q��1�a����A���� � ��a���a��0�� � ��a���!��4��rc��td�}td�}tj|j�}tj|j�}tj|j�}|jt
|�t
|��t
|�}~~tj�|jt
|�|�|jt
|�|�|jtt|�yrL)r%rdr2r:r>r�r6rTrUr�r�)rrr�r+r�r��has rr�zWeakMethodTestCase.test_hashing�s���
�1�I���1�I�����q�}�}�-�����q�}�}�-�����q�~�~�.������a��$�q�'�*�
�!�W��
�q�
�
�
������a��"�%�����a��"�%����)�T�1�-rN)rrrr0r8r:r<rCrFrr�rJr�r�r
rrr+r+3sE���#�!�!�%� %�
���"��"�'5�R.rr+c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�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,jZ�d*��Z.e,jZ�d+��Z/e,jZ�d,��Z0d-�Z1e,jZ�d.��Z2e,jZ�e3jhd/�d0���Z5e,jZ�d1��Z6e,jZ�e3jhd/�d2���Z7e3jpd3��Z9y4)5�MappingTestCaser�c���d}t|�D�cgc]}t���}}|�fd�|D��}|j�} t|�~tj�t|�}~tj�t|�} |j|d�|j| d�ycc}w#t$rY�uwxYw)N�c3�.�K�|]}�|����y�wrr
��.0rf�conss �r� <genexpr>z3MappingTestCase.check_len_cycles.<locals>.<genexpr>�s�����/��A��Q�����)rrMr)
r�r@�items�next�
StopIterationrTrUr�rrr�)
r� dict_typer^�Nrera�dctr�n1�n2s
` r�check_len_cyclesz MappingTestCase.check_len_cycles�s������%*�1�X�.�X����X��.��/��/�/��
�Y�Y�[�� ���H�
�
�
�
��
��X���
�
�
��
��X���
�
�b�&�!�����Q���!/��� �� �s�B6�B;�; C�Cc�F�|jtjd��y)Nc�
�|dfSrLr
�rTs rr$z<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>����A�q�6r)rirdr�rs r�test_weak_keyed_len_cyclesz*MappingTestCase.test_weak_keyed_len_cycles�s�����g�7�7�9I�Jrc�F�|jtjd��y)Nc�
�d|fSrLr
rls rr$z=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>�s��a��Vr)rird�WeakValueDictionaryrs r�test_weak_valued_len_cyclesz+MappingTestCase.test_weak_valued_len_cycles�s�����g�9�9�;K�Lrc�l��|jtjgtj����t dd�D]�}d}tj
d�tj|||�t |�D�cgc]}t
���}}|�fd�|D��}~|j�} t|�t|�} ~t|�}
|j| d�|j| |�|j|
d�|j|
| ���ycc}w#t$rY�rwxYw)NrMr�rZrc3�.�K�|]}�|����y�wrr
r\s �rr_z1MappingTestCase.check_len_race.<locals>.<genexpr>�s�����3�U��D��G�U�r`)
�
addCleanuprTr�r�r�rUr@rarbrcr��assertGreaterEqual�assertLessEqual)rrdr^�thrererarfrrgrhs ` r�check_len_racezMappingTestCase.check_len_race�s��������(�(�>�2�+;�+;�+=�>���3�-�B��A��J�J�q�M����R��R�(�).�q��2��A�X�Z��E�2��3�U�3�3�C������B�
��R���S��B���S��B��#�#�B��*�� � ��Q�'��#�#�B��*�� � ��R�(�' ��3��!�
��
�s�?D"�5D'�' D3�2D3c�F�|jtjd��y)Nc�
�|dfSrLr
rls rr$z:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>�s��!�Q�r)ryrdr�rs r�test_weak_keyed_len_racez(MappingTestCase.test_weak_keyed_len_race�s�����G�5�5�7G�Hrc�F�|jtjd��y)Nc�
�d|fSrLr
rls rr$z;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>�rmr)ryrdrqrs r�test_weak_valued_len_racez)MappingTestCase.test_weak_valued_len_race�s�����G�7�7�9I�Jrc��|j�\}}|D]G}|jtj|�d�|j |||j
d��It
|j��}t
|j�j��}|j�|j�|j||d�~~|jt|�|j�|d=t�|jt|�|jdz
d�~~t�|jt|�dd�tj�}|jt|j d�t#�|d<t�|jt|j d�y)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 dictionaryr�)�make_weak_valued_dictr�rdr�r}r(r ra�copy�sortr��COUNTrrqr��KeyError�__getitem__r
�rrq�objectsrf�items1�items2s r�test_weak_valuesz MappingTestCase.test_weak_values�si���2�2�4�
��g��A����W�4�4�Q�7��;��M�M�!�T�!�%�%�[�>�
@���d�j�j�l�#���d�i�i�k�'�'�)�*�����
����
������F� H��F�����T��D�J�J�/��A�J�������T��D�J�J��N�F� H��Q�������T��A�G� I��*�*�,�����(�D�$4�$4�a�8��#��Q�������(�D�$4�$4�a�8rc���|j�\}}|D]K}|jtj|�dd|z�|j |j
||d��M|j
�}|j�j
�}|jt|�t|�d�~~|jt|�|j�|d=t�|jt|�|jdz
d�~~t�|jt|�dd�td�}d ||<|j||�|jd
|�y)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_dictr�rdr�r}r(rar��setr�r�rr%rr�assertNotInr�s r�test_weak_keyszMappingTestCase.test_weak_keyss@��
�1�1�3�
��g��A����W�4�4�Q�7��A�A�E�
G��M�M�!�%�%��a��>�
@��
���������"�"�$������V��c�&�k�E� G��F�����T��D�J�J�/��A�J�������T��T�Z�Z�!�^�F� H��Q�������T��A�E� G��2�J��8��Q���
�
�a�������T�"rc�f�|j�\}}|j|�|j�}|jt |�t |��t|�}|D]]}|�}|j
||�|j
||�|j|j||�|j|��_|jt |�d�t|�}|jt t|j���t |��|j�D]]}|�}|j
||�|j
||�|j|j||�|j|��_|jt |�d�yrG) r��check_iters�keyrefsr�r�r rrr(rV�rrqr�r
�objects2rgr�s r�test_weak_keyed_itersz%MappingTestCase.test_weak_keyed_iters6sS���1�1�3�
��g�������|�|�~������T��C��L�1���=���B���B��M�M�"�d�#��M�M�"�d�#����R�V�V�T�"�X�.��O�O�B���
����X���*���=������T�$�,�,�.�1�2�C��L�A��,�,�.�B���B��M�M�"�d�#��M�M�"�d�#����R�V�V�T�"�X�.��O�O�B��!�
����X���*rc��|j�\}}|j|�|j�}|jt |�t |��t|�}|D]l}|�}|j|||j�|j|j||jj�|j|��n|jt |�d�t|�}|jt t|j���t |��|j�D]l}|�}|j|||j�|j|j||jj�|j|��n|jt |�d�yrG) r�r�� valuerefsr�r�r r(rV�
itervaluerefsr�s r�test_weak_valued_itersz&MappingTestCase.test_weak_valued_itersQsf���2�2�4�
��g�������~�~�������T��C��L�1���=���B���B����R��b�f�f��.����R�V�V�T�"�&�&�\�%5�%5�6��O�O�B�� �
����X���*���=������T�$�"4�"4�"6�7�8�#�g�,�G��$�$�&�B���B����R��b�f�f��.����R�V�V�T�"�&�&�\�%5�%5�6��O�O�B�� '�
����X���*rc�p�t|j��}|j�D]}|j|��|j|d�t|j ��}|D]}|j|��|j|d�t|j ��}|j �D]}|j|��|j|d�t|j��}|j�D]}|j|��|j|d�y)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 rarVr��keys�values)rrqra�itemr�rTr��vs rr�zMappingTestCase.check_itersjs����T�Z�Z�\�"���J�J�L�D��L�L���!����� A�B��D�I�I�K� ���A��K�K��N������B�C��D�I�I�K� ������A��K�K��N������B�C��d�k�k�m�$������A��M�M�!�������<� >rc�F�t|�}tt||���}t|�|d=t j
�|j
tt|��t|�t|�dz
g�~|jt|�|dz
�y)N���rM) r�r6�getattrrbrTrUrrr r�)rrqr�� iter_namer�rs r�"check_weak_destroy_while_iteratingz2MappingTestCase.check_weak_destroy_while_iterating�s|����I��
�*�'�$� �*�,�
-���R���B�K�
�
�
���
�
�c�$�r�(�m�c�'�l�C��L�1�4D�%E�F������T��A��E�*rc�f�|�5\}}|j||�ddd�|�5\}}|jt|j|�ddd�|j|�|�5\}}|jt|j|�ddd�|j||�|�5\}}|||<ddd�|j||�t
j|�}|�5\}}|j|�ddd�|j||�|�5\}}|j�ddd�|jt|�d�y#1swY��MxYw#1swY��&xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�cxYwrG)
r�r�r�r�popr�r��update�clearr�)rrq�testcontextrTr��ddicts r�-check_weak_destroy_and_mutate_while_iteratingz=MappingTestCase.check_weak_destroy_and_mutate_while_iterating�sS���]�f�q�!����Q��%��
�]�f�q�!����h��(8�(8�!�<������D�!�
�]�f�q�!����h����!�4������D�!�
�]�f�q�!��D��G������a��!�$�� � �$���
�]�f�q�!��K�K��������u�%�
�]�f�q�!��J�J�L������T��A�&�#�]��
�]���]���]���]���]�sF�E)�%E6�3%F�9 F�;F�1F'�)E3�6F�F�F�F$�'F0c��td�}|�5t|�}|jt|j ���|jt|�|dz
�|||<|jt|�|�ddd�|�5|jt|�dz
�|j
�|jt|�|dz
�ddd�|�5|jt|�dz
�|t|j ��=|jt|�|dz
�ddd�|�5|jt|�dz
�|j
�|jt|�|dz
�ddd�|�5|j�|jt|�d�ddd�|jt|�d�y#1swY��xYw#1swY��0xYw#1swY��xYw#1swY��xYw#1swY�WxYw) Ni@�rMr�r�r9r=rr)r%r�r�rbr�r��popitemr�)rrqr�rfr�s r�&check_weak_del_and_len_while_iteratingz6MappingTestCase.check_weak_del_and_len_while_iterating�s���
�6�N��
�]��D� �A��H�H�T�$�)�)�+�&�'����S��Y��A��.��D��G����S��Y��*�
��]����S��Y��A��.��L�L�N����S��Y��A��.� �
�]����S��Y��A��.��T�$�)�)�+�&�'����S��Y��A��.���]����S��Y��A��.��L�L�N����S��Y��A��.���]��J�J�L����S��Y��*��
����T��A�&�1�]���]��
�]���]���]�s?�A2H�A
H�0AH�A
H(�2,H4�H�H�H%�(H1�4H=c����|j�\��|j��d�|j��d�|j��d�|j��d�|j�\��tj��fd��}|j �|�|j�\��|j�|�y)Nr�rar�r�c3�4�K� t�j��}t|��j�j}tj�t|�|f��d}tj�y#d}tj�wxYw�wr�r6rarbr�r(rTrUr%)rr�rqr�s ��rr�zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext�sj�����
��$�*�*�,�'���R���K�K�M�%�%���
�
���Q�i��l�"����
�
������
�
����B�A!A=�&B�=B�B)r�r��
contextlib�contextmanagerr�r��rr�rqr�s @@r�&test_weak_keys_destroy_while_iteratingz6MappingTestCase.test_weak_keys_destroy_while_iterating�s�����1�1�3�
��g��/�/��g�v�F��/�/��g�w�G��/�/��g�x�H��/�/��g�y�I��1�1�3�
��g� � "� "�
�
#�
�
�:�:�4��M��1�1�3�
��g��3�3�D�+�Frc����|j�\��|j��d�|j��d�|j��d�|j��d�|j��d�|j�\��tj��fd��}|j �|�|j�\��|j�|�y)Nr�rar�r�r�c3�4�K� t�j��}t|��j�j}tj�|t|�f��d}tj�y#d}tj�wxYw�wrr�)rrTrqr�s ��rr�zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext�sj�����
��$�*�*�,�'���R���K�K�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�
��g��/�/��g�v�F��/�/��g�w�G��/�/��g�x�H��/�/��g��O��/�/��g�{�K��2�2�4�
��g� � "� "�
�
#�
�
�:�:�4��M��2�2�4�
��g��3�3�D�+�Frc�r�td�}tj|di�}|j||d�y�Nr�il�r%rdr�r��rrfrqs r�#test_make_weak_keyed_dict_from_dictz3MappingTestCase.test_make_weak_keyed_dict_from_dict�s3���1�I���(�(�!�C��1������a��#�&rc��td�}tj|di�}tj|�}|j||d�yr�r��rrfrq�dict2s r�.test_make_weak_keyed_dict_from_weak_keyed_dictz>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictsC���1�I���(�(�!�C��1���)�)�$�/������a��#�&rc��tj�}tttt|j���}|D]}|j||<�||fSr)rdr�r �mapr%r�r�r(�rrqr�rfs rr�z$MappingTestCase.make_weak_keyed_dict sK���(�(�*���s�6�5����#4�5�6���A��e�e�D��G���W�}�rc�r�td�}tjd|i�}|j|d|�yr��r%rdrqr�r�s r�$test_make_weak_valued_dict_from_dictz4MappingTestCase.test_make_weak_valued_dict_from_dicts3���1�I���*�*�C��7�3������c��A�&rc��td�}tjd|i�}tj|�}|j|d|�yr�r�r�s r�0test_make_weak_valued_dict_from_weak_valued_dictz@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictsC���1�I���*�*�C��7�3���+�+�D�1������c��A�&rc���|jttjj�|jttjii�|jttjdd�td�}dD]X}tjdi||i��}|j
t|j��|g�|j
|||��Zy)Nr
r��rrqr1�iterable) r�r�rdrqr)r%r�r r�)rrf�kwr�s r�test_make_weak_valued_dict_miscz/MappingTestCase.test_make_weak_valued_dict_miscs������)�W�%@�%@�%I�%I�J����)�W�%@�%@�"�b�I����)�W�%@�%@�"�b�I��1�I��5�B��+�+�6�r�1�g�6�A����T�!�&�&�(�^�b�T�2����Q�r�U�A�&�6rc��tj�}tttt|j���}|D]}|||j<�||fSr)rdrqr r�r%r�r�r(r�s rr�z%MappingTestCase.make_weak_valued_dict'sK���*�*�,���s�6�5����#4�5�6���A��D����K���W�}�rc��|�}|||<|||<|jt|�d�|j�\}}|jt|�d�||ur|j||�n|j||�|j�\}}|jt|�d�||ur|j||�y|j||�y)Nr�rMr)r�r�r�r}) r�klass�key1�value1�key2�value2�weakdictrTr�s r�
check_popitemzMappingTestCase.check_popitem.s����7��������������X���*����!���1�����X���*���9��M�M�!�V�$��M�M�!�V�$����!���1�����X���*���9��M�M�!�V�$��M�M�!�V�$rc�j�|jtjdt�dt��y)Nr�r�)r�rdrqr
rs r�test_weak_valued_dict_popitemz-MappingTestCase.test_weak_valued_dict_popitem@s%�����7�6�6�!�1�3���� 5rc�j�|jtjt�dt�d�y�Nzvalue 1zvalue 2)r�rdr�r
rs r�test_weak_keyed_dict_popitemz,MappingTestCase.test_weak_keyed_dict_popitemDs%�����7�4�4��3� �1�3� � ;rc���|j||d�|�}|j||�}|j||�|j||�|j|j |�|�|j|||�|j||�}|j||�|j||�|j|j |�|�|j|||�y)Nz9invalid test -- value parameters must be distinct objects)r �
setdefaultr}rr�get)rr��keyr�r�r�rfs r�check_setdefaultz MappingTestCase.check_setdefaultHs��������E� F��7������V�,���
�
�a�� ��
�
�c�8�$��
�
�h�l�l�3�'��0��
�
�h�s�m�V�,�����V�,���
�
�a�� ��
�
�c�8�$��
�
�h�l�l�3�'��0��
�
�h�s�m�V�,rc�h�|jtjdt�t��y)Nr�)r�rdrqr
rs r� test_weak_valued_dict_setdefaultz0MappingTestCase.test_weak_valued_dict_setdefaultYs#�����g�9�9�#�Q�S�!�#� /rc�X�|jtjt�dd�yr�)r�rdr�r
rs r�test_weak_keyed_dict_setdefaultz/MappingTestCase.test_weak_keyed_dict_setdefault]s!�����g�7�7��c�9�i� 9rc� �|�}|j|�|jt|�t|��|j�D]\}|j ||d�|j|�}|j
|||�|j
||j|���^|j�D]P}|j ||d�||}|j
|||�|j
||j|���Ry)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)r�r�r�r�rrr�r})rr�rqr�rTr�s r�check_updatezMappingTestCase.check_updateas���
�7�����������X���D� �2�����A��M�M�!�T�#M�N������A��M�M�!�X�a�[�)��M�M�!�X�\�\�!�_�-� !�
����A��M�M�!�X�'N�O��Q��A��M�M�!�X�a�[�)��M�M�!�X�\�\�!�_�-� rc
���|jtjdt�dt�t�t�i�|j t
tjj�tj�}|j t
|jii�|j t
|jdd�|jt|j��g�td�}dD]i}tj�}|jdi||i��|jt|j��|g�|j|||��ky)NrMr+r
r�r�)r�rdrqr
r�r�r�r�r r�r%)rr�rfr�s r�test_weak_valued_dict_updatez,MappingTestCase.test_weak_valued_dict_updatets�����'�5�5��a�c�3���Q�S�!�#�6� 8�
���)�W�%@�%@�%G�%G�H��'�'�)�����)�Q�X�X�r�2�6����)�Q�X�X�r�2�6�����a�f�f�h���,��1�I��5�B��+�+�-�A��A�H�H���A�w�����T�!�&�&�(�^�b�T�2����Q�r�U�A�&� 6rc��t�}t�}t�}tjd|i�}tj||d��}|j�}||d�}d|fd|fg}||z} |j t| �t|�t|�z�|j
t| �tj�||z}|j || �||z}
|j t|
�t|�|z�|j
t|
�tj�||z}|j ||
�|j�}||z}|j t|�t|�t|�z�|j
t|�tj�||z}|j t|�|t|�z�|j
t|�tj�~|jd| �|jd|
�|jd|�|jd|�y)NrM�rMr�)rMr�r=rr�) r
rdrqr�r�rqr}r�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���*�*�A�q�6�2���*�*�q�Q�<�8���y�y�{���q�\���Q��!�Q�� ���d�{������d��T�$�Z�$�t�*�%<�=��
�
�d�4�j�'�"=�"=�>���������t�$��b�y������d��T�$�Z�"�_�5��
�
�d�4�j�'�"=�"=�>���
������t�$��y�y�{����
������d��T�$�Z�$�u�+�%=�>��
�
�d�4�j�'�"=�"=�>��D�y������d��R�$�t�*�_�5��
�
�d�4�j�'�"=�"=�>�
�����D�!�����D�!�����D�!�����D�!rc ��|jtjt�dt�dt�di�y)NrMr�r�)r�rdr�r
rs r�test_weak_keyed_dict_updatez+MappingTestCase.test_weak_keyed_dict_update�s.�����'�3�3��3��1�3��1�3��2� 4rc�2�tj�}td�}td�}d||<d||<|jt |�d�||=|jt |�d�|jt|j
��|g�y)N�1�2� somethingr�rM)rdr�r%r�r�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��"��.rc�*�t�}t�}t�}tj|d|di�}tj|d|di�}|j�}|d|di}|df|dfg}||z} |j t| �t|�t|�z�|j
t| �tj�||z}|j || �||z}
|j t|
�t|�|z�|j
t|
�tj�||z}|j ||
�|j�}||z}|j t|�t|�t|�z�|j
t|�tj�||z}|j t|�|t|�z�|j
t|�tj�~|jd| j��|jd|
j��|jd|j��|jd|j��y) NrMr�r�r9�5�6��)
r
rdr�r�r�rqr}r�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���(�(�"�a��Q��8���(�(�"�a��Q��8���y�y�{���#�r�3�
���a��2�q�'�"���d�{������d��T�$�Z�$�t�*�%<�=��
�
�d�4�j�'�";�";�<���������t�$��b�y������d��T�$�Z�"�_�5��
�
�d�4�j�'�";�";�<���
������t�$��y�y�{����
������d��T�$�Z�$�u�+�%=�>��
�
�d�4�j�'�";�";�<��D�y������d��R�$�t�*�_�5��
�
�d�4�j�'�";�";�<������D�K�K�M�*�����D�K�K�M�*�����D�K�K�M�*�����D�K�K�M�*rc�6�tj�}td�}td�}||d<||d<|jt |�d�|d=|jt |�d�|jt|j
��d|fg�y)Nr�r�r�zsomething elser�rM)rdrqr%r�r�r rars r�test_weak_valued_delitemz(MappingTestCase.test_weak_valued_delitem�s����'�'�)��
�C�[��
�C�[����+�� ��
������Q���#�
�k�N�����Q���#�����a�g�g�i��,<�b�+A�*B�Crc��tj�}td�}|jt|j
|�|jt|j|�|jt|j
d�|jt|jd�|jt|jdd�y)Nr��
) rdr�r%r�r�rr�r��__setitem__)rr�rfs r�test_weak_keyed_bad_delitemz+MappingTestCase.test_weak_keyed_bad_delitem�s����%�%�'���3�K��
���(�A�M�M�1�5����(�A�M�M�1�5�
���)�Q�]�]�R�8����)�Q�]�]�R�8����)�Q�]�]�R��<rc����tj�}d�G��fd�dt�}td�D�cgc]
}||���c}��D]}|j||<�~t|j
����j�d�d}�D]
}|dz
}||=�t�|jt|�d�|j|d�ycc}w) NFc�&��eZdZd�Zd�Z��fd�Zy)�<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.Cc��||_yrr)rres 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�J�'�'rc�@���r�d=|j|jk(S)Nr�r)rr1�mutate�objss ��rr2zCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__s"�����R���z�z�U�[�[�0�0rN)rrrr)r7r2)rrs��rr
r�s���
�
(�
1rr
r9TrrMr�)rdr�r�r�r�r r��reverserr�r�)rr�r
rerf�countrrs @@r�!test_weak_keyed_cascading_deletesz1MappingTestCase.test_weak_keyed_cascading_deletes�s����
�%�%�'����
1��
1�$�A�h�'�h���!��h�'���A��7�7�A�a�D��
��A�F�F�H�~��
���������A��Q�J�E��!��� ������Q���#������"��1(s�Cc�b�tj�}|jt|�d�y)Nz<WeakValueDictionary at 0x.*>)rdrq�assertRegexre�rrqs r�test_make_weak_valued_dict_reprz/MappingTestCase.test_make_weak_valued_dict_repr%s%���*�*�,������d��%D�Erc�b�tj�}|jt|�d�y)Nz<WeakKeyDictionary at 0x.*>)rdr�rrer s r�test_make_weak_keyed_dict_reprz.MappingTestCase.test_make_weak_keyed_dict_repr)s%���(�(�*������d��%B�Crc���tj�}t�5td�D]/}|j dt��}|j
|d�~�1 ddd�y#1swYyxYw�Ni��r�)rdrqr_r�r�r@r �rr�rers r�$test_threaded_weak_valued_setdefaultz4MappingTestCase.test_threaded_weak_valued_setdefault-sU���'�'�)��
�
��6�]���L�L��X�Z�0��� � ��D�)��#�!�
�
�s�>A'�'A0c���tj�}t�5td�D]3}t �|d<|jdd�}|j
|d��5 ddd�y#1swYyxYwr%)rdrqr_r�r@r�r r&s r�test_threaded_weak_valued_popz-MappingTestCase.test_threaded_weak_valued_pop6sZ���'�'�)��
�
��6�]�� �
��"���E�E�"�b�M��� � ��D�)�#�!�
�
�s�AA+�+A4c���tj�}t�5td�D].}t �}||d<|jt
|�d�d}�0 ddd�y#1swYyxYw)Ni@
r�rM)rdrqr_r�r@r�r�)rr�rerfs r�%test_threaded_weak_valued_consistencyz5MappingTestCase.test_threaded_weak_valued_consistency?s[��
�'�'�)��
�
��6�]���J����"��� � ��Q���+���#�!�
�
�s�=A&�&A/c���g}Gd�d�}Gd�d�}�fd�}d�}|j|tjtjf�|�}g} g}
t d�D];}||�||�}
}| j|�|
j|
�|
||<~~
�=t
j|||f��}|tjurt
j|| f��}nt
j||
f��}|j�|j�|j�|j�|r|d �y)
Nc��eZdZd�Zy)�?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeyc��||_yr��ctr�rr1s rr)zHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__R� ����rNrCr
rr�DummyKeyr.Qrorr4c��eZdZd�Zy)�AMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuec��||_yrr0r2s rr)zJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Vr3rNrCr
rr�
DummyValuer6Urorr8c��� �durtj|�}y|j�}y#t$r}|j|�Yd}~yd}~wwxYwr�)r��deepcopyrZr�)r��excrI�exr:s �r� dict_copyz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copyYsF���
��t�#��
�
�a�(�A�����A���
��
�
�2����
�s�.�.� A�A
�
Ac��d}|rXtjdt|�dz
�}|dz
}|j|�|dzdk(rt j
�|r�Wyy)NrrMi')�random�randintr�r�rTrU)�lst�gc_ctrres r�pop_and_collectzFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectbsP���F���N�N�1�c�#�h��l�3���!�������
��E�>�Q�&��J�J�L�rip)rXr�r)
rrrdr�rqr�r�rZr[r\r])r�type_r:r;r4r8r=rCr�r�r�rerTr��t_copy� t_collects ` r�check_threaded_weak_dict_copyz-MappingTestCase.check_threaded_weak_dict_copyLs&����� � � � � � !�
�
�
�e�g�7�7��9T�9T�U�V��G�������u��A��A�;�
�1�
�q�A��K�K��N��M�M�!���A�a�D���
��!�!��!�S��C���G�-�-�-�!�(�(��t�g�N�I�!�(�(��v�i�P�I������������
�������a�&�L�rc�D�|jtjd�y�NF�rGrdr�rs r� test_threaded_weak_key_dict_copyz0MappingTestCase.test_threaded_weak_key_dict_copy�s��
�*�*�7�+D�+D�e�Lr�cpuc�D�|jtjd�yr�rJrs r�$test_threaded_weak_key_dict_deepcopyz4MappingTestCase.test_threaded_weak_key_dict_deepcopy�s��
�*�*�7�+D�+D�d�Krc�D�|jtjd�yrI�rGrdrqrs r�"test_threaded_weak_value_dict_copyz2MappingTestCase.test_threaded_weak_value_dict_copy�s��
�*�*�7�+F�+F��Nrc�D�|jtjd�yr�rPrs r�&test_threaded_weak_value_dict_deepcopyz6MappingTestCase.test_threaded_weak_value_dict_deepcopy�s��
�*�*�7�+F�+F��Mrc�v�tj�}|j|jj�yr)rdrqr~�_remove�__closure__)rr�s r�test_remove_closurez#MappingTestCase.test_remove_closure�s(���'�'�)�����!�)�)�/�/�0rN):rrrr�rirnrrryr|rr�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�requires_working_threadingr'r)r+rGrKr�requires_resourcerNrQrSr�rWr
rrrXrX�s���E� �(K�M�)�0I�K�9�@#�<+�6+�2>�4+�'�2'�BG�4G�2'�
'��'�
'�
'��%�$5�;�-�"/�9�.�&'�"#"�J4� /�#+�J D�=�,#�\F�D�1��0�0�2��3��1��0�0�2�*�3�*�1��0�0�2�
�3�
�;�z1��0�0�2�M�3�M�
1��0�0�2��W���u�%�L�&�3�L�
1��0�0�2�O�3�O�
1��0�0�2��W���u�%�N�&�3�N�
���1��1rrX)�
mapping_testsc�^�eZdZdZed�ed�ed�d�ZejZd�Z y)�WeakValueDictionaryTestCasez?Check that WeakValueDictionary conforms to the mapping protocolrMr�r�)r�r��key3c�6�|jj�Sr)�!_WeakValueDictionaryTestCase__refr�rs r�
_referencez&WeakValueDictionaryTestCase._reference�����z�z��� � rN)
rrr�__doc__r%r_rdrq� type2testr`r
rrr\r\�s-��I��1�I�f�Q�i��q� �B�E��+�+�I�!rr\c�b�eZdZdZed�ded�ded�diZejZd�Z y )
�WeakKeyDictionaryTestCasez=Check that WeakKeyDictionary conforms to the mapping protocolr�rMr�r�r]r�c�6�|jj�Sr)�_WeakKeyDictionaryTestCase__refr�rs rr`z$WeakKeyDictionaryTestCase._reference�rarN)
rrrrbr%rgrdr�rcr`r
rrrere�s3��G�
�F�^�A�v�f�~�a�����B�E��)�)�I�!rrec�T�eZdZGd�d�Zd�Zd�Zd�Zd�Zd�Ze d��Z
d �Zy
)�FinalizeTestCasec��eZdZy)�FinalizeTestCase.ANrr
rrr)rk�s��rr)c�h�tjjdk7rtj�yy)N�cpython)�sys�implementation�namerrrs r�_collect_if_necessaryz&FinalizeTestCase._collect_if_necessary�s'�����"�"�i�/���� �0rc�����fd�}|j�}g�tj||ddd��}|j|jd�|j|j�||dddif�|j|�d �|j|�d�|j|�d�|j|j�d�|j|j
�d�|j|jd
�|j�d g�g�tj||ddd�}|j|j�||dif�|j|j
�||dif�|j|�d�|j|�d�|j|j�d�|j|j
�d�|j|jd
�|j�g�g�tj||ddd��}~|j�|j|�d�|j|�d�|j|j�d�|j|j
�d�|j|jd
�|j�d g�y)
Nc�B���j||z|z�||z|zSrr�)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)rvrwr���F)rvrwrx)rr�r�)r)rd�finalizer��alive�peek�detachrq)rrur+r rts @r�
test_finalizezFinalizeTestCase.test_finalize�sb��� �
�F�F�H�������Q��R��r�2��������$�'��������A�s�G�c�"�X�#>�?������c�"������d�#������d�#��������4�(��������T�*�������%�(�����s�e�$������Q��R��R�0���������A�s�J��#;�<��������a��j�"�%=�>������d�#������d�#��������4�(��������T�*�������%�(�����b�!������Q��r�R�2�6��
��"�"�$������d�#������d�#��������4�(��������T�*�������%�(�����s�e�$rc ����fd�}|j�}g�tj||dddd��}|j|j �||dddd�f�|�|j�dddd�fg�|jt�5tj||d��ddd�|jt�5tj||d� �ddd�|jttj|�|jttj�y#1swY��xYw#1swY�_xYw)
Nc�,���j||f�yrr�)r��kwargsrts �r�finz-FinalizeTestCase.test_arg_errors.<locals>.fin�s����J�J��f�~�&rrMr�r�r9)�funcrtr�)r�r()rtr�r()r)rdrzr�r|r�r�)rr�r+r rts @r�test_arg_errorsz FinalizeTestCase.test_arg_errors�s��� '�
�F�F�H�������Q��Q���q�9���������A�s�F�Q�q�4I�#J�K� ��������1�(=�>�?�@�
�
�
�y�
)����Q�S�a�0�*�
�
�
�y�
)������!�4�*����)�W�%5�%5�q�9����)�W�%5�%5�6�*�
)��
)�
)�s�D0�D<�0D9�<Ec��|j�}g}tj||jd�}tj||jd�}tj||jd�}tj||jd�}tj||jd�}~~|j |j
�|j |j
�|j |j
�|j |j
��|j|j
�|�|jd�|�|j|j
�|jd�|�|jd�~|j�|j|j
�|jd �|�gd
�}|j||�y)N�f1�f2�f3�f4�f5r)�Br
r�)r)r�r�r
r�r�r�r�)
r)rdrzr�r�r{r}r�rqr�) rr+rtr�r�r�r�r��expecteds r�
test_orderzFinalizeTestCase.test_orderso���F�F�H����
�
�
�a����T�
2��
�
�
�a����T�
2��
�
�
�a����T�
2��
�
�
�a����T�
2��
�
�
�a����T�
2��
��������!�������!�������!����� � ��$�������"�
���
�
�3��
��������"��
�
�3��
���
�
�3��
��"�"�$�
������"��
�
�3��
��?������h�'rc����Gd�dtj�}|j�}g��fd�}|||�}tj|�}tj|�}~~|j |��|j |��~|j�|j
|��|j
|��|j�dg�y)Nc��eZdZy)�4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNrr
rr�MyFinalizerr�)rLrr�c�(���jd�y)N�{r�)rts�rrOz1FinalizeTestCase.test_all_freed.<locals>.callback.s����J�J�s�Orr�)rdrzr)rNr�rqr~r�)rr�r+rOr �wr_callback�wr_frts @r�test_all_freedzFinalizeTestCase.test_all_freed's���� �'�*�*� �
�F�F�H���� ���8�$���k�k�(�+���{�{�1�~���a����[�]�+����T�V�$�
��"�"�$����+�-�(����$�&�!�����s�e�$rc�
���fd�}tj�tdt�}tj�tdt�}tj�|�}tj�tdt�}d|_y)Nc�\��tj�td�}td�ddzy)N�g1�f3 errorrMr)rdrz�print)r��clss �r�errorz,FinalizeTestCase.run_in_child.<locals>.errorBs(����!�!�#�u�d�3�B��*��
�a�Crr�r�r�F)rdrzr��_global_var�atexit)r�r�r�r�r�r�s` r�run_in_childzFinalizeTestCase.run_in_child@sg��� ��
�
�c�5�$��
<��
�
�
�c�5�$��
<��
�
�
�c�5�
)��
�
�
�c�5�$��
<���� rc���d}tjd|�\}}}|jd�j�}|j |gd��|jd|v�y)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_atexitTs[��2��$�5�5�d�D�A���C���j�j��!�,�,�.������J�K����,��3�4rN)rrrr)rqr~r�r�r��classmethodr�r�r
rrriri�s@��
�
�!�
'%�R7�&%(�N%�2�!��!�&5rric��eZdZd�Zy)�ModuleTestCasec���dD]k}tt|�}|dk7r|j|jd�|j|j|�|j|j
|��my)N)r4� ProxyTyper�r2�WeakSetr�rqr�rd)r�rdr�rrr)rrprts r�
test_nameszModuleTestCase.test_names^sb��Z�D��'�4�(�C��y� �� � �����;����S�\�\�4�0����S�-�-�t�4�
ZrN)rrrr�r
rrr�r�]s��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�L�|jtj��|Sr)�addTest�doctest�DocTestSuite)�loader�tests�patterns r�
load_testsr��s�� �M�M�'�&�&�(�)��Lr�__main__)g-C��6?).rTrnr��unittestr�rdr�r�r�rZrRr?�testr�test.supportrrrrr�r�r
rr!r#r%r@�TestCaserEr�r_rar�r+rXrZ�BasicTestMappingProtocolr\rerir�r��__test__r�r�mainr
rr�<module>r�sg�� �
����������
��1�#�)�����
�
�
��
����*��
�x� � ��������*a
��a
�He+�(�e+�PF.��*�*�F.�Rj1�h�j1�Z�!�-�"H�"H�!�!�
� F� F�!�`5�x�(�(�`5�F5�X�&�&�5�T�
�l
�:�&���
�z���H�M�M�O�r
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists