Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.145.37.153
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_weakref.cpython-310.pyc
o

ab;)�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZddl
mZdadZGdd�d�ZGdd	�d	�Zd
d�Zdd
�ZGdd�d�ZGdd�d�ZGdd�dej�Zejd+dd��ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�Z ddlm!Z!Gd d!�d!e!j"�Z#Gd"d#�d#e!j"�Z$Gd$d%�d%ej�Z%d&Z&d'e&iZ'd(d)�Z(e)d*kr�e(�dSdS),�N)�support)�
script_helper�	ALWAYS_EQ)�
gc_collectZfoobarc@�eZdZdd�ZdS)�CcC�dS�N���selfr
r
�:/usr/local/python-3.10/lib/python3.10/test/test_weakref.py�method�zC.methodN)�__name__�
__module__�__qualname__rr
r
r
r
r�rc@�eZdZdZdd�ZdS)�CallableNcC�
||_dSr	��bar)r�xr
r
r
�__call__ �
zCallable.__call__)rrrrrr
r
r
r
rsrcCsdd�}|S)NcSrr	r
r
r
r
r
�f%�zcreate_function.<locals>.fr
�rr
r
r
�create_function$srcCst�jSr	)rrr
r
r
r
�create_bound_method(�r c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ObjectcCrr	��arg)rr$r
r
r
�__init__-rzObject.__init__cCs
d|jS)Nz<Object %r>r#rr
r
r
�__repr__/rzObject.__repr__cCst|t�r|j|jkStSr	��
isinstancer"r$�NotImplemented�r�otherr
r
r
�__eq__1�
z
Object.__eq__cCst|t�r|j|jkStSr	r'r*r
r
r
�__lt__5r-z
Object.__lt__cC�
t|j�Sr	)�hashr$rr
r
r
�__hash__9rzObject.__hash__cC�dS)N�r
rr
r
r
�some_method;rzObject.some_methodcCr2)N�r
rr
r
r
�other_method=rzObject.other_methodN)
rrrr%r&r,r.r1r4r6r
r
r
r
r",sr"c@r)�RefCyclecCs
||_dSr	)�cyclerr
r
r
r%BrzRefCycle.__init__N�rrrr%r
r
r
r
r7Arr7c@�eZdZdd�Zdd�ZdS)�TestBasecCs
d|_dS�Nr��cbcalledrr
r
r
�setUpHrzTestBase.setUpcCs|jd7_dS�N�r=)r�refr
r
r
�callbackK�zTestBase.callbackN)rrrr?rCr
r
r
r
r;Fsr;�-C��6?c	#s|�d���fdd�}t���&tj|d�}|��zdVWd�|��nd�|��wWd�dS1s7wYdS)zR
    Ensure GC collections happen in a different thread, at a high frequency.
    Fcs"�st���t���rdSdSr	)�time�sleep�gc�collectr
��periodZplease_stopr
r
rIVs
�z"collect_in_thread.<locals>.collect)�targetNT)rZ
disable_gc�	threading�Thread�start�join)rKrI�tr
rJr
�collect_in_threadOs�

�"�rRc@s�eZdZdd�Zdd�Zejdd��Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!d;d<�Z"d=d>�Z#d?d@�Z$dAdB�Z%dCdD�Z&dEdF�Z'dGdH�Z(dIdJ�Z)dKdL�Z*dMdN�Z+dOdP�Z,dQdR�Z-dSdT�Z.dUdV�Z/dWdX�Z0dYdZ�Z1d[d\�Z2d]d^�Z3d_d`�Z4dadb�Z5dcdd�Z6dedf�Z7dgdh�Z8didj�Z9dkS)l�ReferencesTestCasecCsD|�t�|�t�|�t�t�}t�|�}t|�~t|�dSr	)�check_basic_refrrr �weakrefrB�repr)r�o�wrr
r
r
�test_basic_refgs



z!ReferencesTestCase.test_basic_refcCs"|�t�|�t�|�t�dSr	)�check_basic_callbackrrr rr
r
r
�test_basic_callbackus

z&ReferencesTestCase.test_basic_callbackcCsRddl}|j}|�}t�|�}|�|�|�~|�|��|�|�|�|�dSr<)�	_testcapi�create_cfunctionrUrB�assertIs�assertIsNonerTrZ)rr\r]rrXr
r
r
�test_cfunctionzs

z!ReferencesTestCase.test_cfunctioncCsZt�}t�||j�}t�||j�}~t�|�|�d�|�|�d�|�|jdd�dS)Nz$expected reference to be invalidated�z-callback not called the right number of times)rrUrBrCrr_�assertEqualr>�rrW�ref1�ref2r
r
r
�test_multiple_callbacks�s
�z*ReferencesTestCase.test_multiple_callbackscCs2|fdd�}t�}t�||�|_t�||�}~dS)NcSs|��dSr	�rB)�objectrr
r
r
rC��zDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback)rrUrB)rrC�crdr
r
r
�test_multiple_selfref_callbacks�s
z2ReferencesTestCase.test_multiple_selfref_callbackscCst�}|jttj|dd�dS)N)rC)r�assertRaises�	TypeErrorrUrB)rrjr
r
r
�test_constructor_kwargs�sz*ReferencesTestCase.test_constructor_kwargscCs�t�}d|_t�||j�}t�||j�}~t�dd�}|�t||�|�t||�t�t��}t�|�tt|�|�	|j
d�dS)NrAcS�
|jdSr	r)�proxyr
r
r
�check�rz0ReferencesTestCase.test_proxy_ref.<locals>.checkra)rrrUrprCrrl�ReferenceError�boolrbr>)rrWrdrerqZref3r
r
r
�test_proxy_ref�sz!ReferencesTestCase.test_proxy_refcCs6|�}t�|�}|�|�d�|�}|�||d�dS)Nz,weak reference to live object should be livez-<ref>() should return original object if live)rUrB�assertIsNotNoner^)r�factoryrWrB�o2r
r
r
rT�s
��z"ReferencesTestCase.check_basic_refcCsDd|_|�}t�||j�}~t�|�|jdd�|�|�d�dS)NrrAz(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)r>rUrBrCrrbr_)rrvrWrBr
r
r
rZ�s
��z'ReferencesTestCase.check_basic_callbackcCs�t�}t�|�}t�|�}t�|�}|�||d�t�}t�|�}t�|�}t�|�}|�||d�|�t�|�dd�~t�|�t�|�dd�dS)Nz1reference object w/out callback should be re-usedrazwrong weak ref count for objectrAz4wrong weak ref count for object after deleting proxy)rrUrBrpr^rb�getweakrefcountr)rrWrdrprer
r
r
�test_ref_reuse�s,


�


���z!ReferencesTestCase.test_ref_reusecCs6t�}t�|�}t�|�}t�|�}|�||d�dS)Nz4proxy object w/out callback should have been re-used)rrUrprBr^)rrW�proxy1rB�proxy2r
r
r
�test_proxy_reuse�s


�z#ReferencesTestCase.test_proxy_reusecCsnt�}|�|t�|��t��}t�|�}|�|d�|�d�|�t	|�d�|�
|d�ddg|dd�<|�t	|�d�|�t	|�d�|�d|d�d|d<|�|dd�|�|dd�t�|�}t�|�}|�||�t�td	��}t�|�}|�|dd�|dd��|�|dd�|dd��|�|dd�|dd��|�|dd�|dd��dS)
Nz(proxy for empty UserList should be false�rAz+proxy for non-empty UserList should be truera�z,proxy didn't support __contains__() properlyr5�
)
r�check_proxyrUrp�collections�UserList�assertFalse�appendrb�len�
assertTrue�assertIn�range)rrW�L�pZL2�p2ZL3Zp3r
r
r
�test_basic_proxy�s0




 z#ReferencesTestCase.test_basic_proxycCsFGdd�dt�}|�}|�dtt�|���|�tt�|��d�dS)Nc@r:)z0ReferencesTestCase.test_proxy_unicode.<locals>.CcSr2)N�stringr
rr
r
r
�__str__rz8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__cSr2)N�bytesr
rr
r
r
�	__bytes__
rz:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__N)rrrr�r�r
r
r
r
r
�rr�r�)rhr��dirrUrprb�bytes)rr�instancer
r
r
�test_proxy_unicodesz%ReferencesTestCase.test_proxy_unicodecCs4Gdd�d�}|�}t�|�}|�t�|�d�dS)Nc@r)z.ReferencesTestCase.test_proxy_index.<locals>.CcSr2)Nrr
rr
r
r
�	__index__rz8ReferencesTestCase.test_proxy_index.<locals>.C.__index__N)rrrr�r
r
r
r
rrrr)rUrprb�operator�index�rrrWr�r
r
r
�test_proxy_indexs
z#ReferencesTestCase.test_proxy_indexcCsFGdd�d�}|�}t�|�}|�|dd�|d}|�|d�dS)Nc@r:)z,ReferencesTestCase.test_proxy_div.<locals>.CcSr2�N�*r
r*r
r
r
�__floordiv__rz9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__cSr2)N�r
r*r
r
r
�
__ifloordiv__rz:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__N)rrrr�r�r
r
r
r
rr�rr5r�r��rUrprbr�r
r
r
�test_proxy_divs
z!ReferencesTestCase.test_proxy_divcCsVGdd�d�}|�}t�|�}|�|dd�|�d|d�|d}|�|d�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z/ReferencesTestCase.test_proxy_matmul.<locals>.CcSr2)N�r
r*r
r
r
�
__matmul__)rz:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__cSr2)N�]���r
r*r
r
r
�__rmatmul__+rz;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__cSr2)N�1r
r*r
r
r
�__imatmul__-rz;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__N)rrrr�r�r�r
r
r
r
r(srr5r�r�r�r�r�r
r
r
�test_proxy_matmul's
z$ReferencesTestCase.test_proxy_matmulcC�|�tj�dSr	)�check_shared_without_callbackrUrBrr
r
r
� test_shared_ref_without_callback>�z3ReferencesTestCase.test_shared_ref_without_callbackcCr�r	)r�rUrprr
r
r
�"test_shared_proxy_without_callbackAr�z5ReferencesTestCase.test_shared_proxy_without_callbackcCs�td�}||d�}||d�}|�||d�~~||�}||d�}|�||d�~~||�}||�}|�||d�~~||d�}||�}|�||d�dS)NrAz%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�makerefrWZp1r�r
r
r
r�Ds 



z0ReferencesTestCase.check_shared_without_callbackcCs�t�}t�|�}|�||�|�t|�tjd�|d�|�|jdd�|dd�|�|jdd�|�	t
|�|�	t
|ddd�dS)	Nzproxy is not of callable typez	twinkies!z1call through proxy not passed through to originalzSplat.)rrArar~)rrUrpr�r^�type�CallableProxyTyperbrrlrm)rrWrdr
r
r
�test_callable_proxyVs 
�
�

�z&ReferencesTestCase.test_callable_proxycCs�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d	�dS)
NrAz)proxy does not reflect attribute additionraz-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�rbr��hasattr)rrWrpr
r
r
r�ks0
�
��
�
��zReferencesTestCase.check_proxycCs6Gdd�d�}|�}t�|�}|d=|�|jd�dS)Nc@r)z3ReferencesTestCase.test_proxy_deletion.<locals>.FooNcSrr	)�result)rZaccessorr
r
r
�__delitem__�rz?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__)rrrr�r�r
r
r
r
�Foo�sr�r)rUrprbr�)rr��grr
r
r
�test_proxy_deletion�s

z&ReferencesTestCase.test_proxy_deletioncCs4Gdd�dt�}|�}|�tt�|��t|��dS)Nc@�eZdZdS)z0ReferencesTestCase.test_proxy_bool.<locals>.ListN�rrrr
r
r
r
�List�sr�)�listrbrsrUrp)rr�Zlystr
r
r
�test_proxy_bool�sz"ReferencesTestCase.test_proxy_boolcs^d�G�fdd�d�}|��t���}|�t��
d|vWd�dS1s(wYdS)Nc�eZdZ�fdd�ZdS)z1ReferencesTestCase.test_proxy_iter.<locals>.MyObjcs�tSr	)r)r��objr
r
�__iter__�sz:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__N�rrrr�r
r�r
r
�MyObj��r�Zblech)rUrprlrm)rr�r�r
r�r
�test_proxy_iter�s

"�z"ReferencesTestCase.test_proxy_itercsJgd���fdd�}|��G�fdd�d�}|�}|�t|�gd��dS)N)r3r5�c3s��EdHdSr	r
r
)�arrr
r
�
iterator_func�s�z9ReferencesTestCase.test_proxy_next.<locals>.iterator_funccr�)z:ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklyc�
t���Sr	�rUrpr��itr
r
r��rzCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__Nr�r
r�r
r
�IteratesWeakly�r�r�)rbr�)rr�r�Zweak_itr
)r�r�r
�test_proxy_next�sz"ReferencesTestCase.test_proxy_nextcs^dd��G�fdd�d�}|�}d}|�t|��
t|�Wd�dS1s(wYdS)NcSr2r<r
r
r
r
r
�<lambda>�rz8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>cr�)z1ReferencesTestCase.test_proxy_bad_next.<locals>.Acr�r	r�r�Znot_an_iteratorr
r
r��rz:ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__Nr�r
r�r
r
�A�r�r�z'Weakref proxy referenced a non-iterator)ZassertRaisesRegexrmr�)rr��a�msgr
r�r
�test_proxy_bad_next�s
"�z&ReferencesTestCase.test_proxy_bad_nextcCs4Gdd�d�}|�}|�d�tt�|���d�dS)Nc@r:)z5ReferencesTestCase.test_proxy_reversed.<locals>.MyObjcSr2)Nr~r
rr
r
r
�__len__�rz=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__cSstd�S)N�cba)�iterrr
r
r
�__reversed__�r!zBReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__N)rrrr�r�r
r
r
r
r��r�r��r�)rbrP�reversedrUrp�rr�r�r
r
r
�test_proxy_reversed�s z&ReferencesTestCase.test_proxy_reversedcCs�Gdd�d�}|�}|�t��tt�|��Wd�n1s!wYGdd�d�}|�}|�t��tt�|��Wd�dS1sHwYdS)Nc@r)�1ReferencesTestCase.test_proxy_hash.<locals>.MyObjcSr2r�r
rr
r
r
r1�rz:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__N�rrrr1r
r
r
r
r��rr�c@seZdZdZdS)r�Nr�r
r
r
r
r��s)rlrmr0rUrpr�r
r
r
�test_proxy_hash�s�"�z"ReferencesTestCase.test_proxy_hashcCs�t�}t�|�}t�||j�}|�t�|�dd�t�|�}t�||j�}|�t�|�dd�~~~~t�|�t�|�dd�|�t�d�dd�dS)Nraz*got wrong number of weak reference objectsr3rzAweak reference objects not unlinked from referent when discarded.rAz2got wrong number of weak reference objects for int)rrUrBrCrbrxrpr)rrWrdrerzr{r
r
r
�test_getweakrefcount�s&
�
���z'ReferencesTestCase.test_getweakrefcountcCs�t�}t�||j�}t�||j�}~t�|�t�|�|gd�t�}t�||j�}t�||j�}~t�|�t�|�|gd�~t�|�t�|�gd�|�t�d�gd�dS)Nzlist of refs does not matchzlist of refs not clearedrAz#list of refs does not match for int)rrUrBrCrrb�getweakrefsrcr
r
r
�test_getweakrefs�s0����z#ReferencesTestCase.test_getweakrefscCsFGdd�dt�}|d�}t�|�}|�|dd�|�d|d�dS)Nc@r�)z6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNr�r
r
r
r
�F�r�g@g�?g@)�floatrUrprb)rr�rr�r
r
r
�test_newstyle_number_ops
s

z+ReferencesTestCase.test_newstyle_number_opscs�Gdd�dt��i��fdd�����fdd�}z|�Wn	�y&Ynw|�d�z|�Wn
�y;YdSw|�d�dS)Nc@r�)z?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNr�r
r
r
r
�
BogusErrorr�r�cs
�|=dSr	r
��k)�datar
r
�removerz;ReferencesTestCase.test_callbacks_protected.<locals>.removecsdd�}d�t�|��<��)NcSr2)Nr
r
r
r
r
r
r�rzRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>)rUrBr�r�r�r�r
r
�encapsulatesz@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulatezexception not properly restored)�	ExceptionZfail)rr�r
r�r
�test_callbacks_protecteds 
�

�z+ReferencesTestCase.test_callbacks_protectedcsnddl�Gdd�dt�}|�}t�|�fdd��}~~|�}|�|_t�|j�fdd��}|�}||_~~dS)Nrc@r�)z0ReferencesTestCase.test_sf_bug_840829.<locals>.CNr�r
r
r
r
r;r�rc����Sr	�rI��ignore�rHr
r
r�?�z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>cr�r	r�r�r�r
r
r�Gr�)rHrhrUrB�i�c1)rrrjrXr��c2r
r�r
�test_sf_bug_840829.s	z%ReferencesTestCase.test_sf_bug_840829cCsVddl}Gdd�dt�}Gdd�dt�}|�}||_t�||j�|_~~~|��dS)Nrc@r�)z6ReferencesTestCase.test_callback_in_cycle_1.<locals>.JNr�r
r
r
r
�JYr�r�c@r)z7ReferencesTestCase.test_callback_in_cycle_1.<locals>.IIcSror	�r��rr�r
r
r
�	acallback]rzAReferencesTestCase.test_callback_in_cycle_1.<locals>.II.acallbackN�rrrr�r
r
r
r
�II\rr��rHrhr�rUrBr�rXrI�rrHr�r��Ir
r
r
�test_callback_in_cycle_1Vsz+ReferencesTestCase.test_callback_in_cycle_1cCsTddl}Gdd�dt�}Gdd�d�}|�}||_t�||j�|_~~~|��dS)Nrc@r�)z6ReferencesTestCase.test_callback_in_cycle_2.<locals>.JNr�r
r
r
r
r��r�r�c@r)z7ReferencesTestCase.test_callback_in_cycle_2.<locals>.IIcSror	r�r�r
r
r
r��rzAReferencesTestCase.test_callback_in_cycle_2.<locals>.II.acallbackNr�r
r
r
r
r��rr�rrr
r
r
�test_callback_in_cycle_2~sz+ReferencesTestCase.test_callback_in_cycle_2cCsPddl}Gdd�d�}|�|�}}||_||_t�||j�|_~~|��dS)Nrc@r)z6ReferencesTestCase.test_callback_in_cycle_3.<locals>.CcS�|j|j|jdSr	��mer�rXr�r
r
r
�cb��
z9ReferencesTestCase.test_callback_in_cycle_3.<locals>.C.cbN�rrrrr
r
r
r
r�rr)rHrr�rUrBrrXrI)rrHrr�r�r
r
r
�test_callback_in_cycle_3�sz+ReferencesTestCase.test_callback_in_cycle_3cCsdddl}Gdd�dt�}Gdd�d�}|�|�}}||_||_t�||j�|_~~~~|��dS)Nrc@r)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.CcSrr	rr�r
r
r
r�r	z9ReferencesTestCase.test_callback_in_cycle_4.<locals>.C.cbNr
r
r
r
r
r�rrc@r�)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.DNr�r
r
r
r
�D�r�r)	rHrhrr�rUrBrrXrI)rrHrrr�r�r
r
r
�test_callback_in_cycle_4�s	z+ReferencesTestCase.test_callback_in_cycle_4cs�ddl}g�G�fdd�dt�}|d�|d�}}||_||_t�||j�|_t�||j�|_�fdd�}t�||�}~~~|��g�|��|��dg�|�|�d��dd�=|��|��g�dS)	Nrcs eZdZdd�Z�fdd�ZdS)zAReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.CcSrr	)Z	attribute)r�valuer
r
r
r%�rzJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__cs��|j�dSr	)r�rjr��Zalistr
r
r��r�zKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallbackN)rrrr%r�r
rr
r
r�srrArac���d�dS)N�C went away�r�r�rr
r
�C_went_away��zKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_awayr)	rHrhrjrUrBr�rXrbrI)rrHrr�r�rrXr
rr
�#test_callback_in_cycle_resurrection�s$
z6ReferencesTestCase.test_callback_in_cycle_resurrectioncs�ddl}g��fdd�}G�fdd�dt�}|�|�}}||_||_|j}t�||�|_t�||j�|_t�||�}|�|�|�~~~~|��g�|�	�|��dg�|�|�d��dd�=|�	�|��g�dS)Nrcr)N�safe_callback calledrr�rr
r
�
safe_callbackrzDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callbackcr�)z8ReferencesTestCase.test_callbacks_on_callback.<locals>.Ccr)Nz	cb calledrr�rr
r
rrz;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cbNr
r
rr
r
rr�rr)
rHrhr+rrUrBrXr^rbrI)rrHrrrj�drCZexternal_wrr
rr
�test_callbacks_on_callback�s(	
z-ReferencesTestCase.test_callbacks_on_callbackcCr�r	)�check_gc_during_creationrUrBrr
r
r
�test_gc_during_ref_creation#r�z.ReferencesTestCase.test_gc_during_ref_creationcCr�r	)rrUrprr
r
r
�test_gc_during_proxy_creation&r�z0ReferencesTestCase.test_gc_during_proxy_creationcCs�t��}t�ddd�t��Gdd�d�}dd�}|�}|�}||_||�|_z|�}t�||�Wtj|�dStj|�w)NrAc@r�)z6ReferencesTestCase.check_gc_during_creation.<locals>.ANr�r
r
r
r
r�-r�r�cWrr	r
)�argsr
r
r
rC0rz=ReferencesTestCase.check_gc_during_creation.<locals>.callback)rH�
get_threshold�
set_thresholdrIr�rXrUrB)rr�Z
thresholdsr�rCZ
referencedr�r
r
r
r)s
z+ReferencesTestCase.check_gc_during_creationcCsGdd�dt�}|�}dS)Nc@r)z>ReferencesTestCase.test_ref_created_during_del.<locals>.TargetcSst�|�adSr	)rUrB�ref_from_delrr
r
r
�__del__HszFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__N�rrrr!r
r
r
r
�TargetGrr#)rh)rr#�wr
r
r
�test_ref_created_during_delBs
z.ReferencesTestCase.test_ref_created_during_delc	Cs.t�t�}|�t|jddddd�t��dSr<)rUrBr�rlrmr%rHrI)r�rr
r
r
�	test_initNs
zReferencesTestCase.test_initcCsXGdd�dt�}g}t�t�t�||j�}d}t��|�|�d�|�||g�dS)Nc@r�)z*ReferencesTestCase.test_classes.<locals>.ANr�r
r
r
r
r�Xr�r�)rhrUrB�intr�rHrIrb)rr��lr�r
r
r
�test_classesVs
zReferencesTestCase.test_classesc	Cs\td�}td�}td�}t�|�}t�|�}t�|�}t�|�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�|tk�|�|tk�~~~t��|||fD]	}|�|�d�qr|�||k�|�||k�|�||k�|�||k�|�	||k||u�|�	||k||u�dS)NrAra)
r"rUrBr�r�rrHrIr^rb)	rr�y�zr��brjrr&r
r
r
�
test_equalitybs6



z ReferencesTestCase.test_equalitycCs|tjtjtjtjg}td�}td�}t�|�}t�|�}|D]
}|�t	|||�q~~t
��|D]
}|�t	|||�q1dSr@)r��lt�gt�le�ger"rUrBrlrmrHrI)r�opsrr+r�r-�opr
r
r
�
test_ordering�s

�z ReferencesTestCase.test_orderingcCsjtd�}td�}t�|�}t�|�}|�t|�td��~~t��|�t|�td��|�tt|�dSr�)	r"rUrBrbr0rHrIrlrm)rrr+r�r-r
r
r
�test_hashing�s

zReferencesTestCase.test_hashingcCsNGdd�d�}t��}|d�}}td�D]
}||�||<}q~t��dS)Nc@r)z1ReferencesTestCase.test_trashcan_16602.<locals>.Ccs0|sdSt�|���fdd�}t�||�|_dS)Ncs
��}dSr	r
)�wparentrW�Zwselfr
r
r�rzFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb)rUrBr7)r�parentrr
r8r
r%�s

z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__Nr9r
r
r
r
r�rr�d)rU�WeakKeyDictionaryr�rHrI)rrr�rootrj�nr
r
r
�test_trashcan_16602�s	z&ReferencesTestCase.test_trashcan_16602cCsDtd�}dd�}t�||�}|�|j|�t�|�}|�|j�dS)NrAcSrr	r
rgr
r
r
r��rz<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>)r"rUrBr^�__callback__r_)rrrCrdrer
r
r
�test_callback_attribute�s
z*ReferencesTestCase.test_callback_attributecCs<td�}t�||j�}|�|j�~t��|�|j�dSr@)	r"rUrBrCrur?rrr_)rrrBr
r
r
�&test_callback_attribute_after_deletion�sz9ReferencesTestCase.test_callback_attribute_after_deletioncCsVtd�}dd�}t�||�}|�t��dd�|_Wd�dS1s$wYdS)NrAcSrr	r
rgr
r
r
r��rz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>cSrr	r
rgr
r
r
r��r)r"rUrBrl�AttributeErrorr?)rrrCrdr
r
r
�test_set_callback_attribute�s"�z.ReferencesTestCase.test_set_callback_attributecCs6Gdd�dt�}|d�}t�|dd��}~t��dS)Nc@r)z;ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelcSrr	r
rr
r
r
r!�rzCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__Nr"r
r
r
r
�
ObjectWithDel�rrDrAcSst��Sr	)rrrgr
r
r
r��r�z6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>)r"rUrBrr)rrDrrdr
r
r
�test_callback_gcs�s
z$ReferencesTestCase.test_callback_gcsN):rrrrYr[r�cpython_onlyr`rfrkrnrtrTrZryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrrrr%r'r*r.r5r6r>r@rArCrEr
r
r
r
rSesn
	
((.&%	rSc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SubclassableWeakrefTestCasecCsrGdd�dtj�}td�}||dd�}|�|�|�|�|j�|�|jd�~t�|�	|��|�|j�dS)Ncs*eZdZd�fdd�	Z�fdd�Z�ZS)z=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefNr�cs||_t��||�dSr	)r�superr%)r�obrCr��	__class__r
r
r%�szFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__csd|_t���S�NT)�calledrHrrrJr
r
r��
zFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__r�)rrrr%r�
__classcell__r
r
rJr
�MyRef�srPr���r)
rUrBr"r^r�rMrbrrr_)rrPrW�mrr
r
r
�test_subclass_refs�sz.SubclassableWeakrefTestCase.test_subclass_refscCs�Gdd�dtj�}td�}||�}t�|�}|�||�|�t�|�||g�|�t�|�d�||�}|�t�|�d�t�|�}|�t|�d�|�||d�|�	||dd��|�	||dd��dS)Nc@r�)zXSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefNr�r
r
r
r
rP�r�rPr�rar~rrA)
rUrBr"�assertIsNotrbr�rxr�r^r�)rrPrW�r1�r2Zr3�refsr
r
r
�-test_subclass_refs_dont_replace_standard_refs�s

zISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refscCs`Gdd�dtj�}td�}||t�}||t�}|�||�t�|�}|�||�|�||�dS)Nc@r�)zUSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefNr�r
r
r
r
rPr�rPr�)rUrBr"�id�strrUr�r�)rrPrWrVrWrXr
r
r
�*test_subclass_refs_dont_conflate_callbackss


zFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbackscCshGdd�dtj�}td�}||ddd�}|�|jd�|�|jd�|�|��d�|�t|d��dS)Nc@s(eZdZdZdd�Zdd�Zdd�ZdS)	zHSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef��slot1�slot2cSstj�|||�Sr	)rUrB�__new__)r�rIrCr^r_r
r
r
r`r�zPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__cSs||_||_dSr	r])rrIrCr^r_r
r
r
r%rNzQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__cSs|j|jSr	r]rr
r
r
�methrizMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methN)rrr�	__slots__r`r%rar
r
r
r
rPs
rPr��abc�defZabcdef�__dict__)	rUrBr"rbr^r_rar�r�)rrPrWr&r
r
r
�test_subclass_refs_with_slotss	z9SubclassableWeakrefTestCase.test_subclass_refs_with_slotscs�Gdd�dtj�}�fdd�}t�}|||�}||_~~���jd�t�}|||�}|||�}||_||_~~~���jd�dS)z3Confirm https://bugs.python.org/issue3100 is fixed.c@r�)zHSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNr�r
r
r
r
rP#r�rPcs�jd7_dSr@r=)r$rr
r
rC(rDzKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbackrN)rUrBrrWrbr>r&)rrPrCrWrVrWr
rr
�test_subclass_refs_with_cycles"


z9SubclassableWeakrefTestCase.test_subclass_refs_with_cycleN)rrrrTrYr\rfrgr
r
r
r
rG�srGc@sZeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
d
d��Zdd�Zdd�Z
dS)�WeakMethodTestCasecCsGdd�dt�}|S)z3Return an Object subclass overriding `some_method`.c@r)z'WeakMethodTestCase._subclass.<locals>.CcSr2)Nr�r
rr
r
r
r4Hrz3WeakMethodTestCase._subclass.<locals>.C.some_methodN)rrrr4r
r
r
r
rGrr)r")rrr
r
r
�	_subclassEszWeakMethodTestCase._subclasscCsntd�}t�|j�}|�|tj�|�|�t|j��|�|�j|�|�|�j	|jj	�|�
|��d�dS)NrAr3)r"rU�
WeakMethodr4ZassertIsInstance�
ReferenceTyper�r^�__self__�__func__rb�rrWr&r
r
r
�
test_aliveLszWeakMethodTestCase.test_alivecCs0td�}t�|j�}~t��|�|�d�dSr@)r"rUrjr4rHrIr^rnr
r
r
�test_object_deadUs
z#WeakMethodTestCase.test_object_deadcCs:|��}|d�}t�|j�}|`t��|�|�d�dSr@)rirUrjr4rHrIr^)rrrWr&r
r
r
�test_method_dead\sz#WeakMethodTestCase.test_method_deadcsh|��}g��fdd�}|d�}t�|j|�}~t��|��|g�tj|_t��|��|g�dS)Nc���|�dSr	rr#�Zcallsr
r
rhrz=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbrA)rirUrjr4rHrIrbr"�rrrrWr&r
rsr
�test_callback_when_object_deaddsz1WeakMethodTestCase.test_callback_when_object_deadcsd|��}g��fdd�}|d�}t�|j|�}|`t��|��|g�~t��|��|g�dS)Ncrrr	rr#rsr
r
rxrz=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbrA)rirUrjr4rHrIrbrtr
rsr
�test_callback_when_method_deadtsz1WeakMethodTestCase.test_callback_when_method_deadcCs<td�}dd�}t�|j|�}t�|�}~|�|�d�dS)NrAcSrr	r
)�_r
r
r
r�rz-WeakMethodTestCase.test_no_cycles.<locals>.cb)r"rUrjr4rBr^)rrWrr&rXr
r
r
�test_no_cycles�s
z!WeakMethodTestCase.test_no_cyclescsP�fdd�}�fdd�}td�}td�}t�|j�}t�|j�}t�|j�}t�|j�}|||�|||�|||�|||�|||�|||�td�}	t�|	j�}
t�|	j�}|||
�|||�|||
�|||�|||j�||t�~~~	t��|||||
|f}|D]}
|D]}��|
|k|
|u���|
|k|
|u�q�q�dS)Ncs ��||k���||k�dSr	�r�r��r�r-rr
r
�_eq��z-WeakMethodTestCase.test_equality.<locals>._eqcs ��||k���||k�dSr	ryrzrr
r
�_ne�r|z-WeakMethodTestCase.test_equality.<locals>._nerAra)	r"rUrjr4r6rrHrIrb)rr{r}rr+r�r-rjrr,�errX�qr&r
rr
r.�s@










��z WeakMethodTestCase.test_equalitycCs�td�}td�}t�|j�}t�|j�}t�|j�}|�t|�t|��t|�}~~t��|�t|�|�|�t|�|�|�	t
t|�dSr@)r"rUrjr4r6rbr0rHrIrlrm)rrr+r�r-rjZhar
r
r
r6�szWeakMethodTestCase.test_hashingN)rrrrirorprqrurvrrFrxr.r6r
r
r
r
rhCs	

)rhc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`da�Z3e4j5dbdc��Z6ddS)e�MappingTestCaserc	s�d}dd�t|�D�}|�fdd�|D��}|��}zt|�Wn	ty)Ynw~t��t|�}~t��t|�}|�|d�|�|d�dS)N�cS�g|]}t��qSr
�r7��.0r�r
r
r
�
<listcomp>��z4MappingTestCase.check_len_cycles.<locals>.<listcomp>c3��|]}�|�VqdSr	r
�r�rW��consr
r
�	<genexpr>���z3MappingTestCase.check_len_cycles.<locals>.<genexpr>)rrAr)	r��items�next�
StopIterationrHrIr�r�rb)	r�	dict_typer��Nr��dctr��n1�n2r
r�r
�check_len_cycles�s"�z MappingTestCase.check_len_cyclescC�|�tjdd��dS)NcS�|dfSr@r
r�r
r
r
r��r�z<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>)r�rUr;rr
r
r
�test_weak_keyed_len_cycles��z*MappingTestCase.test_weak_keyed_len_cyclescCr�)NcS�d|fSr@r
r�r
r
r
r��r�z=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>)r�rU�WeakValueDictionaryrr
r
r
�test_weak_valued_len_cycles�r�z+MappingTestCase.test_weak_valued_len_cyclesc
	s�|jtjgt���R�tdd�D]Z}d}t�d�t�|||�dd�t|�D�}|�fdd�|D��}~|��}zt|�Wn	tyIYnwt	|�}~t	|�}	|�
|d�|�||�|�
|	d�|�|	|�qdS)	NrAr:r�rcSr�r
r�r�r
r
r
r��r�z2MappingTestCase.check_len_race.<locals>.<listcomp>c3r�r	r
r�r�r
r
r��r�z1MappingTestCase.check_len_race.<locals>.<genexpr>)Z
addCleanuprHrrr�rIr�r�r�r�ZassertGreaterEqualZassertLessEqual)
rr�r��thr�r�r�r�r�r�r
r�r
�check_len_race�s,
��zMappingTestCase.check_len_racecCr�)NcSr�r@r
r�r
r
r
r�r�z:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>)r�rUr;rr
r
r
�test_weak_keyed_len_racer�z(MappingTestCase.test_weak_keyed_len_racecCr�)NcSr�r@r
r�r
r
r
r�r�z;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>)r�rUr�rr
r
r
�test_weak_valued_len_racer�z)MappingTestCase.test_weak_valued_len_racecCs|��\}}|D]}|�t�|�d�|�|||jd�qt|���}t|�����}|�	�|�	�|�||d�~~|�t
|�|j�|d=t�|�t
|�|jdd�~~t�|�t
|�dd�t�
�}|�t|jd�t�|d<t�|�t|jd�dS)NrA�#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 dictionaryra)�make_weak_valued_dictrbrUrxr^r$r�r��copy�sortr��COUNTrr�rl�KeyError�__getitem__r�r�dict�objectsrWZitems1Zitems2r
r
r
�test_weak_valuess<����
z MappingTestCase.test_weak_valuescCs�|��\}}|D]}|�t�|�dd|�|�|j||d�q|��}|����}|�t|�t|�d�~~|�t	|�|j
�|d=t�|�t	|�|j
dd�~~t�|�t	|�dd�td�}d	||<|�
||�|�d
|�dS)NrAz&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_dictrbrUrxr^r$r�r��setr�r�rr"r��assertNotInr�r
r
r
�test_weak_keys(s:�����zMappingTestCase.test_weak_keyscCs|��\}}|�|�|��}|�t|�t|��t|�}|D]}|�}|�||�|�||�|�|j||�|�|�q|�t|�d�t|�}|�tt|����t|��|��D]}|�}|�||�|�||�|�|j||�|�|�q]|�t|�d�dSr<)	r��check_iters�keyrefsrbr�r�r�r$r��rr�r�rXZobjects2rXrIr
r
r
�test_weak_keyed_itersFs*
z%MappingTestCase.test_weak_keyed_iterscCs
|��\}}|�|�|��}|�t|�t|��t|�}|D]}|�}|�|||j�|�|j||jj�|�|�q|�t|�d�t|�}|�tt|����t|��|��D]}|�}|�|||j�|�|j||jj�|�|�q\|�t|�d�dSr<)	r�r��	valuerefsrbr�r�r$r��
itervaluerefsr�r
r
r
�test_weak_valued_itersas&
z&MappingTestCase.test_weak_valued_iterscCs�t|���}|��D]}|�|�q
|�|d�t|���}|D]}|�|�q |�|d�t|���}|��D]}|�|�q8|�|d�t|���}|��D]}|�|�qP|�|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�r�r�r��keys�values)rr�r��itemr�r�r��vr
r
r
r�zs$�zMappingTestCase.check_iterscCslt|�}tt||���}t|�|d=t��|�tt|��t|�t|�dg�~|�t|�|d�dS)N���rA)	r�r��getattrr�rHrIr�r�rb)rr�r�Z	iter_namer=r�r
r
r
�"check_weak_destroy_while_iterating�s$z2MappingTestCase.check_weak_destroy_while_iteratingcCs�|��\}}|�||�Wd�n1swY|��\}}|�t|j|�Wd�n1s3wY|�||�|��\}}|�t|j|�Wd�n1sVwY|�||�|��\}}|||<Wd�n1suwY|�|||�t�|�}|��\}}|�|�Wd�n1s�wY|�||�|��\}}|��Wd�n1s�wY|�t	|�d�dSr<)
r�rlr�r��poprbr��update�clearr�)rr��testcontextr�r�Zddictr
r
r
�-check_weak_destroy_and_mutate_while_iterating�s0���
�
�
�z=MappingTestCase.check_weak_destroy_and_mutate_while_iteratingcCs�td�}|��+t|�}|�t|����|�t|�|d�|||<|�t|�|�Wd�n1s5wY|�� |�t|�|d�|��|�t|�|d�Wd�n1s`wY|��#|�t|�|d�|t|���=|�t|�|d�Wd�n1s�wY|�� |�t|�|d�|��|�t|�|d�Wd�n1s�wY|��|��|�t|�d�Wd�n1s�wY|�t|�d�dS)	Ni@�rArar~r3r5r�r)r"r�r�r�r�rb�popitemr�)rr�r�rWr=r
r
r
�&check_weak_del_and_len_while_iterating�s8�����z6MappingTestCase.check_weak_del_and_len_while_iteratingcs�|��\��|���d�|���d�|���d�|���d�|��\��tj��fdd��}|��|�|��\��|��|�dS)Nr�r�r�r�c3sX�z#t����}t|����j}t��t|�|fVWd}t��dSd}t��wr	�r�r�r�r�r$rHrIr")r�r��r�r�r
r
r����
�
zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext)r�r��
contextlib�contextmanagerr�r��rr�r
r�r
�&test_weak_keys_destroy_while_iterating�sz6MappingTestCase.test_weak_keys_destroy_while_iteratingcs�|��\��|���d�|���d�|���d�|���d�|���d�|��\��tj��fdd��}|��|�|��\��|��|�dS)Nr�r�r�r�r�c3sX�z#t����}t|����j}t��|t|�fVWd}t��dSd}t��wr	r�)r�r�r�r
r
r��r�zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext)r�r�r�r�r�r�r�r
r�r
�(test_weak_values_destroy_while_iterating�sz8MappingTestCase.test_weak_values_destroy_while_iteratingcCs*td�}t�|di�}|�||d�dS�Nr~il�r"rUr;rb�rrWr�r
r
r
�#test_make_weak_keyed_dict_from_dict�z3MappingTestCase.test_make_weak_keyed_dict_from_dictcCs4td�}t�|di�}t�|�}|�||d�dSr�r��rrWr�Zdict2r
r
r
�.test_make_weak_keyed_dict_from_weak_keyed_dict�
z>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictcCs8t��}tttt|j���}|D]}|j||<q||fSr	)rUr;r��mapr"r�r�r$�rr�r�rWr
r
r
r��
z$MappingTestCase.make_weak_keyed_dictcCs*td�}t�d|i�}|�|d|�dSr��r"rUr�rbr�r
r
r
�$test_make_weak_valued_dict_from_dict r�z4MappingTestCase.test_make_weak_valued_dict_from_dictcCs4td�}t�d|i�}t�|�}|�|d|�dSr�r�r�r
r
r
�0test_make_weak_valued_dict_from_weak_valued_dict%r�z@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictcCs�|�ttjj�|�ttjii�|�ttjdd�td�}dD]}tjdi||i��}|�t|���|g�|�|||�q dS)Nr
r~�rr�r+�iterable)	rlrmrUr�r%r"rbr�r�)rrW�kwrr
r
r
�test_make_weak_valued_dict_misc+s�z/MappingTestCase.test_make_weak_valued_dict_misccCs8t��}tttt|j���}|D]}|||j<q||fSr	)rUr�r�r�r"r�r�r$r�r
r
r
r�7r�z%MappingTestCase.make_weak_valued_dictc	Cs�|�}|||<|||<|�t|�d�|��\}}|�t|�d�||ur,|�||�n|�||�|��\}}|�t|�d�||urL|�||�dS|�||�dS)NrarAr)rbr�r�r^)	r�klass�key1�value1�key2�value2�weakdictr�r�r
r
r
�
check_popitem>szMappingTestCase.check_popitemcCs|�tjdt�dt��dS)Nr�r�)r�rUr�rrr
r
r
�test_weak_valued_dict_popitemP��z-MappingTestCase.test_weak_valued_dict_popitemcCs|�tjt�dt�d�dS�Nzvalue 1zvalue 2)r�rUr;rrr
r
r
�test_weak_keyed_dict_popitemTr�z,MappingTestCase.test_weak_keyed_dict_popitemcCs�|�||d�|�}|�||�}|�||�|�||�|�|�|�|�|�|||�|�||�}|�||�|�||�|�|�|�|�|�|||�dS)Nz9invalid test -- value parameters must be distinct objects)rU�
setdefaultr^r��get)rr��keyr�r�r�rWr
r
r
�check_setdefaultXs�z MappingTestCase.check_setdefaultcCs|�tjdt�t��dS)Nr�)r�rUr�rrr
r
r
� test_weak_valued_dict_setdefaultis
�z0MappingTestCase.test_weak_valued_dict_setdefaultcCs|�tjt�dd�dSr�)r�rUr;rrr
r
r
�test_weak_keyed_dict_setdefaultms�z/MappingTestCase.test_weak_keyed_dict_setdefaultcCs�|�}|�|�|�t|�t|��|��D]}|�||d�|�|�}|�|||�|�||�|��q|��D]}|�||d�||}|�|||�|�||�|��q:dS)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)r�rbr�r�r�r�r^)rr�r�r�r�r�r
r
r
�check_updateqs

�zMappingTestCase.check_updatec	Cs�|�tjdt�dt�t�t�i�|�ttjj�t��}|�t|jii�|�t|jdd�|�t|�	��g�t
d�}dD]#}t��}|jdi||i��|�t|�	��|g�|�|||�q?dS)NrAr�r
r~r�)r�rUr�rrlrmr�rbr�r�r")rrrWr�r
r
r
�test_weak_valued_dict_update�s��z,MappingTestCase.test_weak_valued_dict_updatec
Cs�t�}t�}t�}t�d|i�}t�||d��}|��}||d�}d|fd|fg}||B}	|�t|	�t|�t|�B�|�t|	�tj�||O}|�||	�||B}
|�t|
�t|�|B�|�t|
�tj�||O}|�||
�|��}||O}|�t|�t|�t|�B�|�t|�tj�||B}|�t|�|t|�B�|�t|�tj�~|�d|	�|�d|
�|�d|�|�d|�dS)NrA�rAra)rAr~r5r�ra)	rrUr�r�rbr�r^r�r�)
rr�r-rjZwvd1Zwvd2Zwvd3�d1�pairs�tmp1�tmp2�tmp3�tmp4r
r
r
� test_weak_valued_union_operators�s<
z0MappingTestCase.test_weak_valued_union_operatorsc	Cs$|�tjt�dt�dt�di�dS)NrArar~)r�rUr;rrr
r
r
�test_weak_keyed_dict_update�s�z+MappingTestCase.test_weak_keyed_dict_updatecCsht��}td�}td�}d||<d||<|�t|�d�||=|�t|�d�|�t|���|g�dS)N�1�2�	somethingrarA)rUr;r"rbr�r�r��rr�o1rwr
r
r
�test_weak_keyed_delitem�sz'MappingTestCase.test_weak_keyed_delitemc
Cs�t�}t�}t�}t�|d|di�}t�|d|di�}|��}|d|di}|df|dfg}||B}	|�t|	�t|�t|�B�|�t|	�tj�||O}|�||	�||B}
|�t|
�t|�|B�|�t|
�tj�||O}|�||
�|��}||O}|�t|�t|�t|�B�|�t|�tj�||B}|�t|�|t|�B�|�t|�tj�~|�d|	�	��|�d|
�	��|�d|�	��|�d|�	��dS)	NrArar~r3�5�6��)
rrUr;r�rbr�r^r�r�r�)
rrrwZo3Zwkd1Zwkd2Zwkd3r�r�r�r�r�r�r
r
r
�test_weak_keyed_union_operators�s<z/MappingTestCase.test_weak_keyed_union_operatorscCslt��}td�}td�}||d<||d<|�t|�d�|d=|�t|�d�|�t|���d|fg�dS)Nr�r�rzsomething elserarA)rUr�r"rbr�r�r�rr
r
r
�test_weak_valued_delitem�sz(MappingTestCase.test_weak_valued_delitemcCsft��}td�}|�t|j|�|�t|j|�|�t|jd�|�t|jd�|�t|jdd�dS)Nr��
)	rUr;r"rlr�r�r�rm�__setitem__)rrrWr
r
r
�test_weak_keyed_bad_delitem�sz+MappingTestCase.test_weak_keyed_bad_delitemcs�t��}d�G��fdd�dt���fdd�td�D���D]}|j||<q~t|�������d�d}�D]	}|d	7}||=q7t�|�	t
|�d�|�	|d
�dS)NFcs*eZdZdd�Zdd�Z��fdd�ZdS)z<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.CcSrr	rR)rr�r
r
r
r%rzEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__cSr/r	)r0rrr
r
r
r1rzEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__cs�r�d=|j|jkS)Nr�rRr*��mutate�objsr
r
r,szCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__N)rrrr%r1r,r
r
r
r
rsrcsg|]}�|��qSr
r
r�)rr
r
r�szEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>r3TrrAra)rUr;rhr�rr�r��reverserrbr�)rrrW�countr
)rrrr
�!test_weak_keyed_cascading_deletess"	z1MappingTestCase.test_weak_keyed_cascading_deletescC�t��}|�t|�d�dS)Nz<WeakValueDictionary at 0x.*>)rUr��assertRegexrV�rr�r
r
r
�test_make_weak_valued_dict_repr5�z/MappingTestCase.test_make_weak_valued_dict_reprcCr)Nz<WeakKeyDictionary at 0x.*>)rUr;rrVrr
r
r
�test_make_weak_keyed_dict_repr9rz.MappingTestCase.test_make_weak_keyed_dict_reprcCs^t��}t��td�D]}|�dt��}|�|d�~qWd�dS1s(wYdS�Ni��r)rUr�rRr�r�r7rU�rrr�rr
r
r
�$test_threaded_weak_valued_setdefault=s�"�z4MappingTestCase.test_threaded_weak_valued_setdefaultcCsdt��}t��!td�D]}t�|d<|�dd�}|�|d�qWd�dS1s+wYdSr)rUr�rRr�r7r�rUrr
r
r
�test_threaded_weak_valued_popEs
�"�z-MappingTestCase.test_threaded_weak_valued_popcCsdt��}t��!td�D]}t�}||d<|�t|�d�d}qWd�dS1s+wYdS)Ni@
rrA)rUr�rRr�r7rbr�)rrr�rWr
r
r
�%test_threaded_weak_valued_consistencyMs�"�z5MappingTestCase.test_threaded_weak_valued_consistencycsg}Gdd�d�}Gdd�d�}�fdd�}dd�}|�|tjtjf�|�}g}	g}
td	�D]}||�||�}}
|	�|�|
�|
�|
||<~~
q/tj|||fd
�}|tjurbtj||	fd
�}ntj||
fd
�}|��|��|�	�|�	�|r�|d�dS)Nc@r)z?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeycSrr	��ctr�rrr
r
r
r%_rzHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__Nr9r
r
r
r
�DummyKey^rr!c@r)zAMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuecSrr	rr r
r
r
r%crzJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Nr9r
r
r
r
�
DummyValuebrr"c
sXz�dur
t�|�}WdS|��}WdSty+}z|�|�WYd}~dSd}~wwrL)r��deepcopyr�r�)r�excrw�ex�r#r
r
�	dict_copyfs��z@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copycSsNd}|r%t�dt|�d�}|d7}|�|�|ddkr!t��|sdSdS)NrrAi')�random�randintr�r�rHrI)ZlstZgc_ctrr�r
r
r
�pop_and_collectos
�zFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectip)rLrr)
r�rUr;r�r�r�rMrNrOrP)rZtype_r#r$r!r"r'r*rr�r�r�r�r�Zt_copyZ	t_collectr
r&r
�check_threaded_weak_dict_copyYs6		


�z-MappingTestCase.check_threaded_weak_dict_copycC�|�tjd�dS�NF�r+rUr;rr
r
r
� test_threaded_weak_key_dict_copy��z0MappingTestCase.test_threaded_weak_key_dict_copycCr,rLr.rr
r
r
�$test_threaded_weak_key_dict_deepcopy�r0z4MappingTestCase.test_threaded_weak_key_dict_deepcopycCr,r-�r+rUr�rr
r
r
�"test_threaded_weak_value_dict_copy�r0z2MappingTestCase.test_threaded_weak_value_dict_copycCr,rLr2rr
r
r
�&test_threaded_weak_value_dict_deepcopy�r0z6MappingTestCase.test_threaded_weak_value_dict_deepcopycCst��}|�|jj�dSr	)rUr�r_�_remove�__closure__)rrr
r
r
�test_remove_closure�sz#MappingTestCase.test_remove_closureN)7rrrr�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�r�r�r�r�r�r�rrr	rrrrrrrr+r/r1r3r4rrFr7r
r
r
r
r��sh 
!%%.=r�)�
mapping_testsc@s6eZdZdZed�ed�ed�d�ZejZdd�Z	dS)	�WeakValueDictionaryTestCasez?Check that WeakValueDictionary conforms to the mapping protocolrArar~)r�r��key3cC�
|j��Sr	)�!_WeakValueDictionaryTestCase__refr�rr
r
r
�
_reference�rz&WeakValueDictionaryTestCase._referenceN)
rrr�__doc__r"r<rUr��	type2testr=r
r
r
r
r9�s
r9c@s:eZdZdZed�ded�ded�diZejZdd	�Z	d
S)�WeakKeyDictionaryTestCasez=Check that WeakKeyDictionary conforms to the mapping protocolr�rAr�rar:r~cCr;r	)�_WeakKeyDictionaryTestCase__refr�rr
r
r
r=�rz$WeakKeyDictionaryTestCase._referenceN)
rrrr>r"rArUr;r?r=r
r
r
r
r@�s
r@c@sVeZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�FinalizeTestCasec@r�)zFinalizeTestCase.ANr�r
r
r
r
r��r�r�cCstjjdkrt��dSdS)NZcpython)�sys�implementation�namerrrr
r
r
�_collect_if_necessary�s�z&FinalizeTestCase._collect_if_necessarycs��fdd�}|��}g�tj||dddd�}|�|jd�|�|��||dd	dif�|�|�d
�|�|�d�|�|�d�|�|��d�|�|��d�|�|jd�|��d
g�g�t�||ddd�}|�|��||dif�|�|��||dif�|�|�d�|�|�d�|�|��d�|�|��d�|�|jd�|��g�g�tj||dddd
�}~|��|�|�d�|�|�d�|�|��d�|�|��d�|�|jd�|��d
g�dS)Ncs��|||�|||Sr	r�rr+r,��resr
r
�add�sz+FinalizeTestCase.test_finalize.<locals>.add�C�+�Y)r,T)rKrLr,��F)rKrLrMrG)r�rU�finalizerb�alive�peek�detachrF)rrJr�rr
rHr
�
test_finalize�sBzFinalizeTestCase.test_finalizec	s�fdd�}|��}g�tj||ddddd�}|�|��||dddd�f�|�|��dddd�fg�|�t��tj||dd	�Wd�n1sMwY|�t��tj||dd
�Wd�n1sjwY|�ttj|�|�ttj�dS)Ncs��||f�dSr	r)r�kwargsrHr
r
�fin�rDz-FinalizeTestCase.test_arg_errors.<locals>.finrArar~r3)�funcr�r�)rVr$)r�rVr$)r�rUrOrbrQrlrm)rrUr�rr
rHr
�test_arg_errors�s��z FinalizeTestCase.test_arg_errorsc	Cs|��}g}t�||jd�}t�||jd�}t�||jd�}t�||jd�}t�||jd�}~~|�|j�|�|j�|�|j�|�|���|�|j�|�|�d�|�|�|j�|�d�|�|�d�~|��|�|j�|�d	�|�gd
�}|�	||�dS)N�f1�f2�f3�f4�f5r��Brr)r�rZr]rr[rYrXr)
r�rUrOr�r�rPrRr�rFrb)	rr�rIrXrYrZr[r\Zexpectedr
r
r
�
test_orders6



zFinalizeTestCase.test_ordercs�Gdd�dtj�}|��}g��fdd�}|||�}t�|�}t�|�}~~|�|��|�|��~|��|�|��|�|��|��dg�dS)Nc@r�)z4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNr�r
r
r
r
�MyFinalizer0r�r_cr)N�{rr
rHr
r
rC5rz1FinalizeTestCase.test_all_freed.<locals>.callbackr`)rUrOr�rBrurFr_rb)rr_r�rCrZwr_callbackZwr_fr
rHr
�test_all_freed.s


zFinalizeTestCase.test_all_freedcs|�fdd�}t��tdt�}t��tdt�}t��|�}t��tdt�}|jdks+J�d|_|jdks5J�|jdks<J�dS)Ncs"t��td�}td�dddS)N�g1�f3 errorrAr)rUrO�print)rb��clsr
r
�errorIsz,FinalizeTestCase.run_in_child.<locals>.errorrXrYr[TF)rUrOrd�_global_var�atexit)rfrgrXrYrZr[r
rer
�run_in_childGszFinalizeTestCase.run_in_childcCsFd}t�d|�\}}}|�d���}|�|gd��|�d|v�dS)NzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child()z-c�ascii)z	f4 foobarrcrbz	f1 foobarsZeroDivisionError)rZassert_python_ok�decode�
splitlinesrbr�)r�prog�rc�out�errr
r
r
�test_atexit[s
zFinalizeTestCase.test_atexitN)rrrr�rFrSrWr^ra�classmethodrjrrr
r
r
r
rB�s)'
rBa 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	Cs*t�ttttttt�t�	t
jt�dSr	)
rZrun_unittestrSrhr�r9r@rGrBZrun_doctestrC�modulesrr
r
r
r
�	test_main�s�	rv�__main__)rE)*rHrCZunittestr�rUr�r�r�rMrFr(�testrZtest.supportrrrr rhrrrr r"r7ZTestCaser;r�rRrSrGrhr�r8ZBasicTestMappingProtocolr9r@rBrtZ__test__rvrr
r
r
r
�<module>sh	|h
i$V
�
© 2025 GrazzMean