Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_weakref.cpython-39.opt-1.pyc

a

��g;)�@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*k�r�e(�dS),�N)�support)�
script_helper�	ALWAYS_EQ)�
gc_collectZfoobarc@seZdZdd�ZdS)�CcCsdS�N���selfrr�-/usr/local/lib/python3.9/test/test_weakref.py�methodszC.methodN)�__name__�
__module__�__qualname__rrrrrrsrc@seZdZdZdd�ZdS)�CallableNcCs
||_dSr��bar)r
�xrrr�__call__ szCallable.__call__)r
rrrrrrrrrsrcCsdd�}|S)NcSsdSrrrrrr�f%�zcreate_function.<locals>.fr�rrrr�create_function$srcCst�jSr)rrrrrr�create_bound_method(src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ObjectcCs
||_dSr��arg)r
rrrr�__init__-szObject.__init__cCs
d|jS)Nz<Object %r>rr	rrr�__repr__/szObject.__repr__cCst|t�r|j|jkStSr��
isinstancerr�NotImplemented�r
�otherrrr�__eq__1s
z
Object.__eq__cCst|t�r|j|jkStSrrr"rrr�__lt__5s
z
Object.__lt__cCs
t|j�Sr)�hashrr	rrr�__hash__9szObject.__hash__cCsdS)N�rr	rrr�some_method;szObject.some_methodcCsdS)N�rr	rrr�other_method=szObject.other_methodN)
r
rrrrr$r%r'r)r+rrrrr,src@seZdZdd�ZdS)�RefCyclecCs
||_dSr)�cycler	rrrrBszRefCycle.__init__N�r
rrrrrrrr,Asr,c@seZdZdd�Zdd�ZdS)�TestBasecCs
d|_dS�Nr��cbcalledr	rrr�setUpHszTestBase.setUpcCs|jd7_dS�N�r1)r
�refrrr�callbackKszTestBase.callbackN)r
rrr3r7rrrrr/Fsr/�-C��6?c	#sxd���fdd�}t���Jtj|d�}|��zdVWd�|��nd�|��0Wd�n1sj0YdS)zR
    Ensure GC collections happen in a different thread, at a high frequency.
    Fcs�st���t��qdSr)�time�sleep�gc�collectr��periodZplease_stoprrr<Vs
z"collect_in_thread.<locals>.collect)�targetNT)rZ
disable_gc�	threading�Thread�start�join)r>r<�trr=r�collect_in_threadOs

�rEc@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�weakrefr6�repr)r
�o�wrrrr�test_basic_refgs



z!ReferencesTestCase.test_basic_refcCs"|�t�|�t�|�t�dSr)�check_basic_callbackrrrr	rrr�test_basic_callbackus

z&ReferencesTestCase.test_basic_callbackcCsRddl}|j}|�}t�|�}|�|�|�~|�|��|�|�|�|�dSr0)�	_testcapi�create_cfunctionrHr6�assertIs�assertIsNonerGrM)r
rOrPrrKrrr�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)rrHr6r7rrR�assertEqualr2�r
rJ�ref1�ref2rrr�test_multiple_callbacks�s
�z*ReferencesTestCase.test_multiple_callbackscCs2|fdd�}t�}t�||�|_t�||�}~dS)NcSs|��dSr�r6)�objectr
rrrr7�szDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback)rrHr6)r
r7�crWrrr�test_multiple_selfref_callbacks�s
z2ReferencesTestCase.test_multiple_selfref_callbackscCst�}|jttj|dd�dS)N)r7)r�assertRaises�	TypeErrorrHr6)r
r\rrr�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)Nr5cSs
|jdSrr)�proxyrrr�check�sz0ReferencesTestCase.test_proxy_ref.<locals>.checkrT)rrrHrar7rr^�ReferenceError�boolrUr2)r
rJrWrXrbZref3rrr�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)rHr6�assertIsNotNonerQ)r
�factoryrJr6�o2rrrrG�s
��z"ReferencesTestCase.check_basic_refcCsDd|_|�}t�||j�}~t�|�|jdd�|�|�d�dS)Nrr5z(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)r2rHr6r7rrUrR)r
rgrJr6rrrrM�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-usedrTzwrong weak ref count for objectr5z4wrong weak ref count for object after deleting proxy)rrHr6rarQrU�getweakrefcountr)r
rJrWrarXrrr�test_ref_reuse�s,


�


���z!ReferencesTestCase.test_ref_reusecCs6t�}t�|�}t�|�}t�|�}|�||d�dS)Nz4proxy object w/out callback should have been re-used)rrHrar6rQ)r
rJ�proxy1r6�proxy2rrr�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�r5z+proxy for non-empty UserList should be truerT�z,proxy didn't support __contains__() properlyr*�
)
r�check_proxyrHra�collections�UserList�assertFalse�appendrU�len�
assertTrue�assertIn�range)r
rJ�L�pZL2�p2ZL3Zp3rrr�test_basic_proxy�s0




z#ReferencesTestCase.test_basic_proxycCsFGdd�dt�}|�}|�dtt�|���|�tt�|��d�dS)Nc@seZdZdd�Zdd�ZdS)z0ReferencesTestCase.test_proxy_unicode.<locals>.CcSsdS)N�stringrr	rrr�__str__sz8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__cSsdS)N�bytesrr	rrr�	__bytes__
sz:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__N)r
rrrr�rrrrr
srr�r�)r[rx�dirrHrarU�bytes)r
r�instancerrr�test_proxy_unicodesz%ReferencesTestCase.test_proxy_unicodecCs4Gdd�d�}|�}t�|�}|�t�|�d�dS)Nc@seZdZdd�ZdS)z.ReferencesTestCase.test_proxy_index.<locals>.CcSsdS)Nrprr	rrr�	__index__sz8ReferencesTestCase.test_proxy_index.<locals>.C.__index__N)r
rrr�rrrrrsrrp)rHrarU�operator�index�r
rrJr{rrr�test_proxy_indexs
z#ReferencesTestCase.test_proxy_indexcCsFGdd�d�}|�}t�|�}|�|dd�|d}|�|d�dS)Nc@seZdZdd�Zdd�ZdS)z,ReferencesTestCase.test_proxy_div.<locals>.CcSsdS�N�*rr"rrr�__floordiv__sz9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__cSsdS)N�rr"rrr�
__ifloordiv__sz:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__N)r
rrr�r�rrrrrsrr*r�r��rHrarUr�rrr�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>.CcSsdS)N�rr"rrr�
__matmul__)sz:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__cSsdS)N�]���rr"rrr�__rmatmul__+sz;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__cSsdS)N�1rr"rrr�__imatmul__-sz;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__N)r
rrr�r�r�rrrrr(srr*r�r�r�r�r�rrr�test_proxy_matmul's
z$ReferencesTestCase.test_proxy_matmulcCs|�tj�dSr)�check_shared_without_callbackrHr6r	rrr� test_shared_ref_without_callback>sz3ReferencesTestCase.test_shared_ref_without_callbackcCs|�tj�dSr)r�rHrar	rrr�"test_shared_proxy_without_callbackAsz5ReferencesTestCase.test_shared_proxy_without_callbackcCs�td�}||d�}||d�}|�||d�~~||�}||d�}|�||d�~~||�}||�}|�||d�~~||d�}||�}|�||d�dS)Nr5z%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)rrQ)r
�makerefrJZp1r|rrrr�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.)rr5rTro)rrHrarqrQ�type�CallableProxyTyperUrr^r_)r
rJrWrrr�test_callable_proxyVs 
�
�

�z&ReferencesTestCase.test_callable_proxycCs�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d	�dS)
Nr5z)proxy does not reflect attribute additionrTz-proxy does not reflect attribute modification�fooz(proxy does not reflect attribute removalz4object does not reflect attribute addition via proxyz8object does not reflect attribute modification via proxyz3object does not reflect attribute removal via proxy)r�rUrt�hasattr)r
rJrarrrrqks0
�
��
�
��zReferencesTestCase.check_proxycCs6Gdd�d�}|�}t�|�}|d=|�|jd�dS)Nc@seZdZdZdd�ZdS)z3ReferencesTestCase.test_proxy_deletion.<locals>.FooNcSs
||_dSr)�result)r
�accessorrrr�__delitem__�sz?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__)r
rrr�r�rrrr�Foo�sr�r)rHrarUr�)r
r��grrrr�test_proxy_deletion�s

z&ReferencesTestCase.test_proxy_deletioncCs4Gdd�dt�}|�}|�tt�|��t|��dS)Nc@seZdZdS)z0ReferencesTestCase.test_proxy_bool.<locals>.ListN�r
rrrrrr�List�rr�)�listrUrdrHra)r
r�Zlystrrr�test_proxy_bool�sz"ReferencesTestCase.test_proxy_boolcs\d�G�fdd�d�}|��t���}|�t��d|vWd�n1sN0YdS)NcseZdZ�fdd�ZdS)z1ReferencesTestCase.test_proxy_iter.<locals>.MyObjcs�tSr)r!r	��objrr�__iter__�sz:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__N�r
rrr�rr�rr�MyObj�sr�Zblech)rHrar^r_)r
r�r{rr�r�test_proxy_iter�s
z"ReferencesTestCase.test_proxy_itercsJgd���fdd�}|��G�fdd�d�}|�}|�t|�gd��dS)N)r(r*�c3s�EdHdSrrr)�arrrr�
iterator_func�sz9ReferencesTestCase.test_proxy_next.<locals>.iterator_funccseZdZ�fdd�ZdS)z:ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklycs
t���Sr�rHrar	��itrrr��szCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__Nr�rr�rr�IteratesWeakly�sr�)rUr�)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�n1sN0YdS)NcSsdSr0rrrrr�<lambda>�rz8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>cseZdZ�fdd�ZdS)z1ReferencesTestCase.test_proxy_bad_next.<locals>.Acs
t���Srr�r	�Znot_an_iteratorrrr��sz:ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__Nr�rr�rr�A�sr�z'Weakref proxy referenced a non-iterator)ZassertRaisesRegexr_r�)r
r��a�msgrr�r�test_proxy_bad_next�sz&ReferencesTestCase.test_proxy_bad_nextcCs4Gdd�d�}|�}|�d�tt�|���d�dS)Nc@seZdZdd�Zdd�ZdS)z5ReferencesTestCase.test_proxy_reversed.<locals>.MyObjcSsdS)Nrorr	rrr�__len__�sz=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__cSstd�S)N�cba)�iterr	rrr�__reversed__�szBReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__N)r
rrr�r�rrrrr��sr��r�)rUrC�reversedrHra�r
r�r�rrr�test_proxy_reversed�sz&ReferencesTestCase.test_proxy_reversedcCs�Gdd�d�}|�}|�t��tt�|��Wd�n1sB0YGdd�d�}|�}|�t��tt�|��Wd�n1s�0YdS)Nc@seZdZdd�ZdS)�1ReferencesTestCase.test_proxy_hash.<locals>.MyObjcSsdSr�rr	rrrr'�sz:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__N�r
rrr'rrrrr��sr�c@seZdZdZdS)r�Nr�rrrrr��s)r^r_r&rHrar�rrr�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)NrTz*got wrong number of weak reference objectsr(rzAweak reference objects not unlinked from referent when discarded.r5z2got wrong number of weak reference objects for int)rrHr6r7rUrirar)r
rJrWrXrkrlrrr�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 clearedr5z#list of refs does not match for int)rrHr6r7rrU�getweakrefsrVrrr�test_getweakrefs�s0����z#ReferencesTestCase.test_getweakrefscCsFGdd�dt�}|d�}t�|�}|�|dd�|�d|d�dS)Nc@seZdZdS)z6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNr�rrrr�Fsr�g@g�?g@)�floatrHrarU)r
r�rr{rrr�test_newstyle_number_ops
s

z+ReferencesTestCase.test_newstyle_number_opscs�Gdd�dt��i��fdd�����fdd�}z
|�Wn�yLYn0|�d�z
|�Wn�ytYn0|�d�dS)Nc@seZdZdS)z?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNr�rrrr�
BogusErrorsr�cs
�|=dSrr��k)�datarr�removesz;ReferencesTestCase.test_callbacks_protected.<locals>.removecs dd�}d�t�|��<��dS)NcSsdS)Nrrrrrrr�rzRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>)rHr6r�r�r�r�rr�encapsulatesz@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulatezexception not properly restored)�	ExceptionZfail)r
r�rr�r�test_callbacks_protecteds


z+ReferencesTestCase.test_callbacks_protectedcsnddl�Gdd�dt�}|�}t�|�fdd��}~~|�}|�|_t�|j�fdd��}|�}||_~~dS)Nrc@seZdZdS)z0ReferencesTestCase.test_sf_bug_840829.<locals>.CNr�rrrrr;srcs���Sr�r<��ignore�r;rrr�?rz7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>cs���Srr�r�r�rrr�Gr)r;r[rHr6�i�c1)r
rr\rKr��c2rr�r�test_sf_bug_840829.s	z%ReferencesTestCase.test_sf_bug_840829cCsVddl}Gdd�dt�}Gdd�dt�}|�}||_t�||j�|_~~~|��dS)Nrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_1.<locals>.JNr�rrrr�JYsr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_1.<locals>.IIcSs
|jdSr�r��r
r�rrr�	acallback]szAReferencesTestCase.test_callback_in_cycle_1.<locals>.II.acallbackN�r
rrr�rrrr�II\sr��r;r[r�rHr6r�rKr<�r
r;r�r��Irrr�test_callback_in_cycle_1Vsz+ReferencesTestCase.test_callback_in_cycle_1cCsTddl}Gdd�dt�}Gdd�d�}|�}||_t�||j�|_~~~|��dS)Nrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_2.<locals>.JNr�rrrrr��sr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_2.<locals>.IIcSs
|jdSrr�r�rrrr��szAReferencesTestCase.test_callback_in_cycle_2.<locals>.II.acallbackNr�rrrrr��sr�r�r�rrr�test_callback_in_cycle_2~sz+ReferencesTestCase.test_callback_in_cycle_2cCsPddl}Gdd�d�}|�|�}}||_||_t�||j�|_~~|��dS)Nrc@seZdZdd�ZdS)z6ReferencesTestCase.test_callback_in_cycle_3.<locals>.CcSs|j|j|jdSr��mer�rKr�rrr�cb�sz9ReferencesTestCase.test_callback_in_cycle_3.<locals>.C.cbN�r
rrr�rrrrr�sr)r;r�r�rHr6r�rKr<)r
r;rr�r�rrr�test_callback_in_cycle_3�sz+ReferencesTestCase.test_callback_in_cycle_3cCsdddl}Gdd�dt�}Gdd�d�}|�|�}}||_||_t�||j�|_~~~~|��dS)Nrc@seZdZdd�ZdS)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.CcSs|j|j|jdSrr�r�rrrr��sz9ReferencesTestCase.test_callback_in_cycle_4.<locals>.C.cbNr�rrrrr�src@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.DNr�rrrr�D�sr�)	r;r[r�r�rHr6r�rKr<)r
r;rr�r�r�rrr�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>.CcSs
||_dSr)Z	attribute)r
�valuerrrr�szJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__cs��|j�dSr)rur\r��Zalistrrr��szKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallbackN)r
rrrr�rr�rrr�srr5rTcs��d�dS)N�C went away�rur�r�rr�C_went_away�szKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_awayr�)	r;r[r\rHr6r�rKrUr<)r
r;rr�r�r�rKrr�r�#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)Nrcs��d�dS)N�safe_callback calledr�r�r�rr�
safe_callbackszDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callbackcseZdZ�fdd�ZdS)z8ReferencesTestCase.test_callbacks_on_callback.<locals>.Ccs��d�dS)Nz	cb calledr�r�r�rrr�sz;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cbNr�rr�rrrsrr�)
r;r[r#r�rHr6rKrQrUr<)r
r;r�rr\�dr7Zexternal_wrrr�r�test_callbacks_on_callback�s(	
z-ReferencesTestCase.test_callbacks_on_callbackcCs|�tj�dSr)�check_gc_during_creationrHr6r	rrr�test_gc_during_ref_creation#sz.ReferencesTestCase.test_gc_during_ref_creationcCs|�tj�dSr)r�rHrar	rrr�test_gc_during_proxy_creation&sz0ReferencesTestCase.test_gc_during_proxy_creationcCs�t��}t�ddd�t��Gdd�d�}dd�}|�}|�}||_||�|_z |�}t�||�Wtj|�ntj|�0dS)Nr5c@seZdZdS)z6ReferencesTestCase.check_gc_during_creation.<locals>.ANr�rrrrr�-sr�cWsdSrr)�argsrrrr70sz=ReferencesTestCase.check_gc_during_creation.<locals>.callback)r;�
get_threshold�
set_thresholdr<r�rKrHr6)r
r�Z
thresholdsr�r7Z
referencedr�rrrr�)s
z+ReferencesTestCase.check_gc_during_creationcCsGdd�dt�}|�}dS)Nc@seZdZdd�ZdS)z>ReferencesTestCase.test_ref_created_during_del.<locals>.TargetcSst�|�adSr)rHr6�ref_from_delr	rrr�__del__HszFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__N�r
rrrrrrr�TargetGsr)r[)r
r�wrrr�test_ref_created_during_delBsz.ReferencesTestCase.test_ref_created_during_delc	Cs.t�t�}|�t|jddddd�t��dSr0)rHr6r�r^r_rr;r<)r
�rrrr�	test_initNs
zReferencesTestCase.test_initcCsXGdd�dt�}g}t�t�t�||j�}d}t��|�|�d�|�||g�dS)Nc@seZdZdS)z*ReferencesTestCase.test_classes.<locals>.ANr�rrrrr�Xsr�)r[rHr6�intrur;r<rU)r
r��lr�rrr�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�q�|�||k�|�||k�|�||k�|�||k�|�	||k||u�|�	||k||u�dS)Nr5rT)
rrHr6rwrtrr;r<rQrU)	r
r�y�zr��br\r�r
rrr�
test_equalitybs6



z ReferencesTestCase.test_equalitycCs|tjtjtjtjg}td�}td�}t�|�}t�|�}|D]}|�t	|||�q<~~t
��|D]}|�t	|||�qbdSr4)r��lt�gt�le�gerrHr6r^r_r;r<)r
�opsrrr�r�oprrr�
test_ordering�s

z ReferencesTestCase.test_orderingcCsjtd�}td�}t�|�}t�|�}|�t|�td��~~t��|�t|�td��|�tt|�dSr�)	rrHr6rUr&r;r<r^r_)r
rrr�rrrr�test_hashing�s

zReferencesTestCase.test_hashingcCsNGdd�d�}t��}|d�}}td�D]}||�||<}q*~t��dS)Nc@seZdZdd�ZdS)z1ReferencesTestCase.test_trashcan_16602.<locals>.Ccs0|sdSt�|���fdd�}t�||�|_dS)Ncs
��}dSrr)�wparentrJ�Zwselfrrr��szFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb)rHr6r)r
�parentr�rrrr�s

z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__Nr.rrrrr�sr�d)rH�WeakKeyDictionaryryr;r<)r
rr��rootr\�nrrr�test_trashcan_16602�s	z&ReferencesTestCase.test_trashcan_16602cCsDtd�}dd�}t�||�}|�|j|�t�|�}|�|j�dS)Nr5cSsdSrrrZrrrr��rz<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>)rrHr6rQ�__callback__rR)r
rr7rWrXrrr�test_callback_attribute�s
z*ReferencesTestCase.test_callback_attributecCs<td�}t�||j�}|�|j�~t��|�|j�dSr4)	rrHr6r7rfr#rrrR)r
rr6rrr�&test_callback_attribute_after_deletion�sz9ReferencesTestCase.test_callback_attribute_after_deletioncCsTtd�}dd�}t�||�}|�t��dd�|_Wd�n1sF0YdS)Nr5cSsdSrrrZrrrr��rz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>cSsdSrrrZrrrr��r)rrHr6r^�AttributeErrorr#)r
rr7rWrrr�test_set_callback_attribute�s
z.ReferencesTestCase.test_set_callback_attributecCs6Gdd�dt�}|d�}t�|dd��}~t��dS)Nc@seZdZdd�ZdS)z;ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelcSsdSrrr	rrrr�rzCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__Nrrrrr�
ObjectWithDel�sr(r5cSst��Sr)rrrZrrrr��rz6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>)rrHr6rr)r
r(rrWrrr�test_callback_gcs�s
z$ReferencesTestCase.test_callback_gcsN):r
rrrLrNr�cpython_onlyrSrYr]r`rerGrMrjrmr}r�r�r�r�r�r�r�r�rqr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r	rrrrrr"r$r%r'r)rrrrrFesl
	
((.&%	rFc@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
�obr7r���	__class__rrr�szFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__csd|_t���S�NT)�calledr,rr	r.rrr�szFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__)Nr�)r
rrrr�
__classcell__rrr.r�MyRef�sr3r���r�)
rHr6rrQrwr1rUr�rrR)r
r3rJ�mrrrr�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@seZdZdS)zXSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefNr�rrrrr3�sr3r�rTrorr5)
rHr6r�assertIsNotrUr�rirvrQrx)r
r3rJ�r1�r2Zr3�refsrrr�-test_subclass_refs_dont_replace_standard_refs�s

zISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refscCs`Gdd�dtj�}td�}||t�}||t�}|�||�t�|�}|�||�|�||�dS)Nc@seZdZdS)zUSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefNr�rrrrr3sr3r�)rHr6r�id�strr8r�rx)r
r3rJr9r:r;rrr�*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)rHr6�__new__)r�r-r7rArBrrrrCszPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__cSs||_||_dSrr@)r
r-r7rArBrrrrszQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__cSs|j|jSrr@r	rrr�methszMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methN)r
rr�	__slots__rCrrDrrrrr3sr3r��abc�defZabcdef�__dict__)	rHr6rrUrArBrDrtr�)r
r3rJr
rrr�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@seZdZdS)zHSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNr�rrrrr3#sr3cs�jd7_dSr4r1)rr	rrr7(szKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbackrN)rHr6rrJrUr2r
)r
r3r7rJr9r:rr	r�test_subclass_refs_with_cycles"


z9SubclassableWeakrefTestCase.test_subclass_refs_with_cycleN)r
rrr7r<r?rIrJrrrrr+�s
r+c@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@seZdZdd�ZdS)z'WeakMethodTestCase._subclass.<locals>.CcSsdS)Nr�rr	rrrr)Hsz3WeakMethodTestCase._subclass.<locals>.C.some_methodN)r
rrr)rrrrrGsr)r)r
rrrr�	_subclassEszWeakMethodTestCase._subclasscCsntd�}t�|j�}|�|tj�|�|�t|j��|�|�j|�|�|�j	|jj	�|�
|��d�dS)Nr5r()rrH�
WeakMethodr)ZassertIsInstance�
ReferenceTyper�rQ�__self__�__func__rU�r
rJr
rrr�
test_aliveLszWeakMethodTestCase.test_alivecCs0td�}t�|j�}~t��|�|�d�dSr4)rrHrMr)r;r<rQrQrrr�test_object_deadUs
z#WeakMethodTestCase.test_object_deadcCs:|��}|d�}t�|j�}|`t��|�|�d�dSr4)rLrHrMr)r;r<rQ)r
rrJr
rrr�test_method_dead\sz#WeakMethodTestCase.test_method_deadcsh|��}g��fdd�}|d�}t�|j|�}~t��|��|g�tj|_t��|��|g�dS)Ncs��|�dSrr�r�Zcallsrrr�hsz=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbr5)rLrHrMr)r;r<rUr�r
rr�rJr
rrUr�test_callback_when_object_deaddsz1WeakMethodTestCase.test_callback_when_object_deadcsd|��}g��fdd�}|d�}t�|j|�}|`t��|��|g�~t��|��|g�dS)Ncs��|�dSrr�rrUrrr�xsz=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbr5)rLrHrMr)r;r<rUrVrrUr�test_callback_when_method_deadtsz1WeakMethodTestCase.test_callback_when_method_deadcCs<td�}dd�}t�|j|�}t�|�}~|�|�d�dS)Nr5cSsdSrr)�_rrrr��sz-WeakMethodTestCase.test_no_cycles.<locals>.cb)rrHrMr)r6rQ)r
rJr�r
rKrrr�test_no_cycles�s
z!WeakMethodTestCase.test_no_cyclescsT�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�qdS)Ncs ��||k���||k�dSr�rwrt�r�rr	rr�_eq�sz-WeakMethodTestCase.test_equality.<locals>._eqcs ��||k���||k�dSrr[r\r	rr�_ne�sz-WeakMethodTestCase.test_equality.<locals>._ner5rT)	rrHrMr)r+rr;r<rU)r
r]r^rrr�rr\r�r�err;�qr
rr	rr�s<










z WeakMethodTestCase.test_equalitycCs�td�}td�}t�|j�}t�|j�}t�|j�}|�t|�t|��t|�}~~t��|�t|�|�|�t|�|�|�	t
t|�dSr4)rrHrMr)r+rUr&r;r<r^r_)r
rrr�rr\Zharrrr�szWeakMethodTestCase.test_hashingN)r
rrrLrRrSrTrWrXrr*rZrrrrrrrKCs	

)rKc@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�MappingTestCaserpc	s�d}dd�t|�D�}|�fdd�|D��}|��}zt|�WntyRYn0~t��t|�}~t��t|�}|�|d�|�|d�dS)N�cSsg|]
}t��qSr�r,��.0r�rrr�
<listcomp>�rz4MappingTestCase.check_len_cycles.<locals>.<listcomp>c3s|]}�|�VqdSrr�rerJ��consrr�	<genexpr>�rz3MappingTestCase.check_len_cycles.<locals>.<genexpr>)rr5r)	ry�items�next�
StopIterationr;r<rvrxrU)	r
�	dict_typeri�Nrk�dctr��n1�n2rrhr�check_len_cycles�s z MappingTestCase.check_len_cyclescCs|�tjdd��dS)NcSs|dfSr4rr�rrrr��rz<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>)rsrHrr	rrr�test_weak_keyed_len_cycles�sz*MappingTestCase.test_weak_keyed_len_cyclescCs|�tjdd��dS)NcSsd|fSr4rr�rrrr��rz=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>)rsrH�WeakValueDictionaryr	rrr�test_weak_valued_len_cycles�sz+MappingTestCase.test_weak_valued_len_cyclesc
	s�|jtjgt���R�tdd�D]�}d}t�d�t�|||�dd�t|�D�}|�fdd�|D��}~|��}zt|�Wnty�Yn0t	|�}~t	|�}	|�
|d�|�||�|�
|	d�|�|	|�q"dS)	Nr5rrbrcSsg|]
}t��qSrrcrdrrrrf�rz2MappingTestCase.check_len_race.<locals>.<listcomp>c3s|]}�|�VqdSrrrgrhrrrj�rz1MappingTestCase.check_len_race.<locals>.<genexpr>)Z
addCleanupr;rrryr<rkrlrmrvZassertGreaterEqualZassertLessEqual)
r
rnri�throrkrpr�rqrrrrhr�check_len_race�s(
zMappingTestCase.check_len_racecCs|�tjdd��dS)NcSs|dfSr4rr�rrrr�rz:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>)rxrHrr	rrr�test_weak_keyed_len_racesz(MappingTestCase.test_weak_keyed_len_racecCs|�tjdd��dS)NcSsd|fSr4rr�rrrr�rz;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>)rxrHrur	rrr�test_weak_valued_len_racesz)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)Nr5�#wrong object returned by weak dict!z/cloning of weak-valued dictionary did not work!r�/deleting object did not cause dictionary updatez0deleting the values did not clear the dictionaryrT)�make_weak_valued_dictrUrHrirQrr�rk�copy�sortrv�COUNTrrur^�KeyError�__getitem__r�r
�dict�objectsrJZitems1Zitems2rrr�test_weak_valuess<����
z MappingTestCase.test_weak_valuescCs�|��\}}|D]0}|�t�|�dd|�|�|j||d�q|��}|����}|�t|�t|�d�~~|�t	|�|j
�|d=t�|�t	|�|j
dd�~~t�|�t	|�dd�td�}d	||<|�
||�|�d
|�dS)Nr5z&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_dictrUrHrirQrrkr~�setrvr�rrrx�assertNotInr�rrr�test_weak_keys(s:�����zMappingTestCase.test_weak_keyscCs|��\}}|�|�|��}|�t|�t|��t|�}|D]>}|�}|�||�|�||�|�|j||�|�|�q>|�t|�d�t|�}|�tt|����t|��|��D]>}|�}|�||�|�||�|�|j||�|�|�q�|�t|�d�dSr0)	r��check_iters�keyrefsrUrvr�rxrr��r
r�r�r;Zobjects2rKr-rrr�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�dSr0)	r}r��	valuerefsrUrvr�rr��
itervaluerefsr�rrr�test_weak_valued_itersas&
z&MappingTestCase.test_weak_valued_iterscCs�t|���}|��D]}|�|�q|�|d�t|���}|D]}|�|�q@|�|d�t|���}|��D]}|�|�qp|�|d�t|���}|��D]}|�|�q�|�|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�rkr�rt�keys�values)r
r�rk�itemr�r�r��vrrrr�zs$�zMappingTestCase.check_iterscCslt|�}tt||���}t|�|d=t��|�tt|��t|�t|�dg�~|�t|�|d�dS)N���r5)	rvr��getattrrlr;r<rxr�rU)r
r�r�Z	iter_namer!r�rrr�"check_weak_destroy_while_iterating�s$z2MappingTestCase.check_weak_destroy_while_iteratingcCs�|�� \}}|�||�Wd�n1s,0Y|��$\}}|�t|j|�Wd�n1sf0Y|�||�|��$\}}|�t|j|�Wd�n1s�0Y|�||�|��\}}|||<Wd�n1s�0Y|�|||�t�|�}|��\}}|�|�Wd�n1�s:0Y|�||�|��\}}|��Wd�n1�sz0Y|�t	|�d�dSr0)
r�r^r�r��poprUr~�update�clearrv)r
r��testcontextr�r�Zddictrrr�-check_weak_destroy_and_mutate_while_iterating�s$*..&
*(z=MappingTestCase.check_weak_destroy_and_mutate_while_iteratingcCs�td�}|��Vt|�}|�t|����|�t|�|d�|||<|�t|�|�Wd�n1sj0Y|��@|�t|�|d�|��|�t|�|d�Wd�n1s�0Y|��F|�t|�|d�|t|���=|�t|�|d�Wd�n1�s0Y|��@|�t|�|d�|��|�t|�|d�Wd�n1�sv0Y|��(|��|�t|�d�Wd�n1�s�0Y|�t|�d�dS)	Ni@�r5rTror(r*r�r)rrvr�rlr�rU�popitemr�)r
r�r�rJr!rrr�&check_weak_del_and_len_while_iterating�s..2440z6MappingTestCase.check_weak_del_and_len_while_iteratingcs�|��\��|���d�|���d�|���d�|���d�|��\��tj��fdd��}|��|�|��\��|��|�dS)Nr�rkr�r�c3sXzDt����}t|����j}t��t|�|fVWd}t��nd}t��0dSr�r�rkrlr�rr;r<r)r�r��r�r�rrr��s

�zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext)r�r��
contextlib�contextmanagerr�r��r
r�rr�r�&test_weak_keys_destroy_while_iterating�sz6MappingTestCase.test_weak_keys_destroy_while_iteratingcs�|��\��|���d�|���d�|���d�|���d�|���d�|��\��tj��fdd��}|��|�|��\��|��|�dS)Nr�rkr�r�r�c3sXzDt����}t|����j}t��|t|�fVWd}t��nd}t��0dSrr�)r�r�r�rrr��s

�zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext)r}r�r�r�r�r�r�rr�r�(test_weak_values_destroy_while_iterating�sz8MappingTestCase.test_weak_values_destroy_while_iteratingcCs*td�}t�|di�}|�||d�dS�Nroil�rrHrrU�r
rJr�rrr�#test_make_weak_keyed_dict_from_dictsz3MappingTestCase.test_make_weak_keyed_dict_from_dictcCs4td�}t�|di�}t�|�}|�||d�dSr�r��r
rJr�Zdict2rrr�.test_make_weak_keyed_dict_from_weak_keyed_dicts
z>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictcCs8t��}tttt|j���}|D]}|j||<q ||fSr)rHrr��maprryr�r�r
r�r�rJrrrr�s
z$MappingTestCase.make_weak_keyed_dictcCs*td�}t�d|i�}|�|d|�dSr��rrHrurUr�rrr�$test_make_weak_valued_dict_from_dict sz4MappingTestCase.test_make_weak_valued_dict_from_dictcCs4td�}t�d|i�}t�|�}|�|d|�dSr�r�r�rrr�0test_make_weak_valued_dict_from_weak_valued_dict%s
z@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictcCs�|�ttjj�|�ttjii�|�ttjdd�td�}dD]>}tjfi||i��}|�t|���|g�|�|||�q@dS)Nrro�r
r�r#�iterable)	r^r_rHrurrrUr�r�)r
rJ�kwr�rrr�test_make_weak_valued_dict_misc+sz/MappingTestCase.test_make_weak_valued_dict_misccCs8t��}tttt|j���}|D]}|||j<q ||fSr)rHrur�r�rryr�rr�rrrr}7s
z%MappingTestCase.make_weak_valued_dictc	Cs�|�}|||<|||<|�t|�d�|��\}}|�t|�d�||urX|�||�n|�||�|��\}}|�t|�d�||ur�|�||�n|�||�dS)NrTr5r)rUrvr�rQ)	r
�klass�key1�value1�key2�value2�weakdictr�r�rrr�
check_popitem>szMappingTestCase.check_popitemcCs|�tjdt�dt��dS)Nr�r�)r�rHrurr	rrr�test_weak_valued_dict_popitemPs�z-MappingTestCase.test_weak_valued_dict_popitemcCs|�tjt�dt�d�dS�Nzvalue 1zvalue 2)r�rHrrr	rrr�test_weak_keyed_dict_popitemTs�z,MappingTestCase.test_weak_keyed_dict_popitemcCs�|�||d�|�}|�||�}|�||�|�||�|�|�|�|�|�|||�|�||�}|�||�|�||�|�|�|�|�|�|||�dS)Nz9invalid test -- value parameters must be distinct objects)r8�
setdefaultrQrx�get)r
r��keyr�r�r�rJrrr�check_setdefaultXs�z MappingTestCase.check_setdefaultcCs|�tjdt�t��dS)Nr�)r�rHrurr	rrr� test_weak_valued_dict_setdefaultis
�z0MappingTestCase.test_weak_valued_dict_setdefaultcCs|�tjt�dd�dSr�)r�rHrrr	rrr�test_weak_keyed_dict_setdefaultms�z/MappingTestCase.test_weak_keyed_dict_setdefaultcCs�|�}|�|�|�t|�t|��|��D]>}|�||d�|�|�}|�|||�|�||�|��q,|��D]<}|�||d�||}|�|||�|�||�|��qtdS)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)r�rUrvr�rxr�rQ)r
r�r�r�r�r�rrr�check_updateqs

zMappingTestCase.check_updatec	Cs�|�tjdt�dt�t�t�i�|�ttjj�t��}|�t|jii�|�t|jdd�|�t|�	��g�t
d�}dD]F}t��}|jfi||i��|�t|�	��|g�|�|||�q~dS)Nr5r�rror�)r�rHrurr^r_r�rUr�r�r)r
r�rJr�rrr�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)Nr5�r5rT)r5ror*r�rT)	rrHrur~rUr�rQr�r�)
r
r�rr\Zwvd1Zwvd2Zwvd3�d1�pairs�tmp1�tmp2�tmp3�tmp4rrr� test_weak_valued_union_operators�s<
z0MappingTestCase.test_weak_valued_union_operatorsc	Cs$|�tjt�dt�dt�di�dS)Nr5rTro)r�rHrrr	rrr�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�	somethingrTr5)rHrrrUrvr�r��r
r��o1rhrrr�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)	Nr5rTror(�5�6��)
rrHrr~rUr�rQr�r�r�)
r
r�rhZo3Zwkd1Zwkd2Zwkd3r�r�r�r�r�r�rrr�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�r�zsomething elserTr5)rHrurrUrvr�rkr�rrr�test_weak_valued_delitem�sz(MappingTestCase.test_weak_valued_delitemcCsft��}td�}|�t|j|�|�t|j|�|�t|jd�|�t|jd�|�t|jdd�dS)Nr��
)	rHrrr^r�r�r�r_�__setitem__)r
r�rJrrr�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}||=qnt�|�	t
|�d�|�	|d
�dS)NFcs*eZdZdd�Zdd�Z��fdd�ZdS)z<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.CcSs
||_dSrr5)r
r�rrrrszEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__cSs
t|j�Sr)r&r�r	rrrr'szEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__cs�r
�d=|j|jkS)Nr�r5r"��mutate�objsrrr$szCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__N)r
rrrr'r$rr�rrrsrcsg|]}�|��qSrrrd)rrrrfrzEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>r(Trr5rT)rHrr[ryr�r�r��reverserrUrv)r
r�rJ�countr)rr�r�r�!test_weak_keyed_cascading_deletess"	z1MappingTestCase.test_weak_keyed_cascading_deletescCst��}|�t|�d�dS)Nz<WeakValueDictionary at 0x.*>)rHru�assertRegexrI�r
r�rrr�test_make_weak_valued_dict_repr5sz/MappingTestCase.test_make_weak_valued_dict_reprcCst��}|�t|�d�dS)Nz<WeakKeyDictionary at 0x.*>)rHrr�rIr�rrr�test_make_weak_keyed_dict_repr9sz.MappingTestCase.test_make_weak_keyed_dict_reprcCs\t��}t��:td�D] }|�dt��}|�|d�~qWd�n1sN0YdS�Ni��rp)rHrurEryr�r,r8�r
r�r�rrrr�$test_threaded_weak_valued_setdefault=sz4MappingTestCase.test_threaded_weak_valued_setdefaultcCsbt��}t��@td�D]&}t�|d<|�dd�}|�|d�qWd�n1sT0YdSr�)rHrurEryr,r�r8r�rrr�test_threaded_weak_valued_popEs
z-MappingTestCase.test_threaded_weak_valued_popcCsbt��}t��@td�D]&}t�}||d<|�t|�d�d}qWd�n1sT0YdS)Ni@
rpr5)rHrurEryr,rUrv)r
r�r�rJrrr�%test_threaded_weak_valued_consistencyMsz5MappingTestCase.test_threaded_weak_valued_consistencycsg}Gdd�d�}Gdd�d�}�fdd�}dd�}|�|tjtjf�|�}g}	g}
td	�D]6}||�||�}}
|	�|�|
�|
�|
||<~~
q^tj|||fd
�}|tjur�tj||	fd
�}ntj||
fd
�}|��|��|�	�|�	�|�r|d�dS)Nc@seZdZdd�ZdS)z?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeycSs
||_dSr��ctr�r
r�rrrr_szHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__Nr.rrrr�DummyKey^sr�c@seZdZdd�ZdS)zAMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuecSs
||_dSrr�r�rrrrcszJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Nr.rrrr�
DummyValuebsr�c
sTz �durt�|�}n|��}Wn.tyN}z|�|�WYd}~n
d}~00dSr0)r~�deepcopyr�ru)r��excrY�ex�r�rr�	dict_copyfsz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copycSsHd}|rDt�dt|�d�}|d7}|�|�|ddkrt��qdS)Nrr5i')�random�randintrvr�r;r<)ZlstZgc_ctrr�rrr�pop_and_collectos
zFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectip)r?rr)
rxrHrruryrur@rArBrC)r
�type_r�r�r�r�r�r�r�r�r�r�r�r�Zt_copyZ	t_collectrr�r�check_threaded_weak_dict_copyYs4		


z-MappingTestCase.check_threaded_weak_dict_copycCs|�tjd�dS�NF�r�rHrr	rrr� test_threaded_weak_key_dict_copy�sz0MappingTestCase.test_threaded_weak_key_dict_copycCs|�tjd�dSr0rr	rrr�$test_threaded_weak_key_dict_deepcopy�sz4MappingTestCase.test_threaded_weak_key_dict_deepcopycCs|�tjd�dSr��r�rHrur	rrr�"test_threaded_weak_value_dict_copy�sz2MappingTestCase.test_threaded_weak_value_dict_copycCs|�tjd�dSr0rr	rrr�&test_threaded_weak_value_dict_deepcopy�sz6MappingTestCase.test_threaded_weak_value_dict_deepcopycCst��}|�|jj�dSr)rHrurR�_remove�__closure__)r
r�rrr�test_remove_closure�sz#MappingTestCase.test_remove_closureN)7r
rrr�rsrtrvrxryrzr�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�r�r�r�r�rrrrrr*rrrrrra�sf 
!%%.=ra)�
mapping_testsc@s6eZdZdZed�ed�ed�d�ZejZdd�Z	dS)	�WeakValueDictionaryTestCasez?Check that WeakValueDictionary conforms to the mapping protocolr5rTro)r�r��key3cCs
|j��Sr)�!_WeakValueDictionaryTestCase__refr~r	rrr�
_reference�sz&WeakValueDictionaryTestCase._referenceN)
r
rr�__doc__rrrHru�	type2testr
rrrrr
�sr
c@s:eZdZdZed�ded�ded�diZejZdd	�Z	d
S)�WeakKeyDictionaryTestCasez=Check that WeakKeyDictionary conforms to the mapping protocolr�r5r�rTrrocCs
|j��Sr)�_WeakKeyDictionaryTestCase__refr~r	rrrr
�sz$WeakKeyDictionaryTestCase._referenceN)
r
rrrrrrHrrr
rrrrr�src@sVeZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�FinalizeTestCasec@seZdZdS)zFinalizeTestCase.ANr�rrrrr��sr�cCstjjdkrt��dS)NZcpython)�sys�implementation�namerrr	rrr�_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��|||�|||Srr��rrr��resrr�add�sz+FinalizeTestCase.test_finalize.<locals>.add�C�+�Y)rT)rrr��F)rrrr)r�rH�finalizerU�alive�peek�detachr)r
rr�rrrr�
test_finalize�sBzFinalizeTestCase.test_finalizec	s�fdd�}|��}g�tj||ddddd�}|�|��||dddd�f�|�|��dddd�fg�|�t�� tj||dd	�Wd�n1s�0Y|�t�� tj||dd
�Wd�n1s�0Y|�ttj|�|�ttj�dS)Ncs��||f�dSrr�)r�kwargsrrr�fin�sz-FinalizeTestCase.test_arg_errors.<locals>.finr5rTror()�funcr�r�)r&r)r�r&r)r�rHrrUr!r^r_)r
r%r�rrrr�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�r*r-rr+r)r(r�)
r�rHrrurwr r"rtrrU)	r
r�rr(r)r*r+r,Zexpectedrrr�
test_orders6



zFinalizeTestCase.test_ordercs�Gdd�dtj�}|��}g��fdd�}|||�}t�|�}t�|�}~~|�|��|�|��~|��|�|��|�|��|��dg�dS)Nc@seZdZdS)z4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNr�rrrr�MyFinalizer0sr/cs��d�dS)N�{r�rrrrr75sz1FinalizeTestCase.test_all_freed.<locals>.callbackr0)rHrr�r6rfrrRrU)r
r/r�r7rZwr_callbackZwr_frrr�test_all_freed.s


zFinalizeTestCase.test_all_freedcsR�fdd�}t��tdt�}t��tdt�}t��|�}t��tdt�}d|_dS)Ncs"t��td�}td�dddS)N�g1�f3 errorr5r)rHr�print)r2��clsrr�errorIsz,FinalizeTestCase.run_in_child.<locals>.errorr(r)r+F)rHrr4�_global_var�atexit)r6r7r(r)r*r+rr5r�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 foobarr3r2z	f1 foobarsZeroDivisionError)rZassert_python_ok�decode�
splitlinesrUrw)r
�prog�rc�out�errrrr�test_atexit[s
zFinalizeTestCase.test_atexitN)r
rrr�rr#r'r.r1�classmethodr:rBrrrrr�s)'
ra 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_unittestrFrKrar
rr+rZrun_doctestr�modulesr
rrrr�	test_main�s�	rF�__main__)r8)*r;rZunittestrrrHr�r�r~r@r9r��testrZtest.supportrrrrr8rrrrrr,ZTestCaser/r�rErFr+rKrar	ZBasicTestMappingProtocolr
rrrDZ__test__rFr
rrrr�<module>sd	|h
i$V


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