Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_weakref.cpython-38.opt-2.pyc
U

>��g��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZdadZGdd�d�ZGdd�d�Zd	d
�Zdd�ZGd
d�d�ZGdd�d�ZGdd�dej�Zejd*dd��ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�ZddlmZGdd �d ej �Z!Gd!d"�d"ej �Z"Gd#d$�d$ej�Z#d%Z$d&e$iZ%d'd(�Z&e'd)k�r�e&�dS)+�N)�support)�
script_helperZfoobarc@seZdZdd�ZdS)�CcCsdS�N���selfrr�0/opt/cppython/lib/python3.8/test/test_weakref.py�methodszC.methodN)�__name__�
__module__�__qualname__r
rrrr	rsrc@seZdZdZdd�ZdS)�CallableNcCs
||_dSr��bar)r�xrrr	�__call__szCallable.__call__)rrr
rrrrrr	rsrcCs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)rrrrr	�__init__,szObject.__init__cCs
d|jS)Nz<Object %r>rrrrr	�__repr__.szObject.__repr__cCst|t�r|j|jkStSr��
isinstancerr�NotImplemented�r�otherrrr	�__eq__0s
z
Object.__eq__cCst|t�r|j|jkStSrrr rrr	�__lt__4s
z
Object.__lt__cCs
t|j�Sr)�hashrrrrr	�__hash__8szObject.__hash__cCsdS)N�rrrrr	�some_method:szObject.some_methodcCsdS)N�rrrrr	�other_method<szObject.other_methodN)
rrr
rrr"r#r%r'r)rrrr	r+src@seZdZdd�ZdS)�RefCyclecCs
||_dSr)�cyclerrrr	rAszRefCycle.__init__N�rrr
rrrrr	r*@sr*c@seZdZdd�Zdd�ZdS)�TestBasecCs
d|_dS�Nr��cbcalledrrrr	�setUpGszTestBase.setUpcCs|jd7_dS�N�r/)r�refrrr	�callbackJszTestBase.callbackN)rrr
r1r5rrrr	r-Esr-�-C��6?c	#sXd���fdd�}t���4tj|d�}|��z
dVW5d�|��XW5QRXdS)NFcs�st���t��qdSr)�time�sleep�gc�collectr��periodZplease_stoprr	r:Us
z"collect_in_thread.<locals>.collect)�targetT)rZ
disable_gc�	threading�Thread�start�join)r<r:�trr;r	�collect_in_threadNs

rCc@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%ej&dCdD��Z'dEdF�Z(dGdH�Z)dIdJ�Z*dKdL�Z+dMdN�Z,dOdP�Z-dQdR�Z.dSdT�Z/dUdV�Z0dWdX�Z1dYdZ�Z2d[d\�Z3d]d^�Z4d_d`�Z5dadb�Z6dcS)d�ReferencesTestCasecCsD|�t�|�t�|�t�t�}t�|�}t|�~t|�dSr)�check_basic_refrrr�weakrefr4�repr)r�o�wrrrr	�test_basic_reffs



z!ReferencesTestCase.test_basic_refcCs"|�t�|�t�|�t�dSr)�check_basic_callbackrrrrrrr	�test_basic_callbackts

z&ReferencesTestCase.test_basic_callbackcCsRddl}|j}|�}t�|�}|�|�|�~|�|��|�|�|�|�dSr.)�	_testcapi�create_cfunctionrFr4�assertIs�assertIsNonerErK)rrMrNrrIrrr	�test_cfunctionys

z!ReferencesTestCase.test_cfunctioncCsTt�}t�||j�}t�||j�}~|�|�d�|�|�d�|�|jdd�dS)Nz$expected reference to be invalidated�z-callback not called the right number of times)rrFr4r5rP�assertEqualr0�rrH�ref1�ref2rrr	�test_multiple_callbacks�s
�z*ReferencesTestCase.test_multiple_callbackscCs2|fdd�}t�}t�||�|_t�||�}~dS)NcSs|��dSr�r4)�objectrrrr	r5�szDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback)rrFr4)rr5�crUrrr	�test_multiple_selfref_callbacks�s
z2ReferencesTestCase.test_multiple_selfref_callbackscCst�}|jttj|dd�dS)N)r5)r�assertRaises�	TypeErrorrFr4)rrZrrr	�test_constructor_kwargs�sz*ReferencesTestCase.test_constructor_kwargscCsvt�}d|_t�||j�}t�||j�}~dd�}|�t||�|�t||�|�ttt�t���|�|j	d�dS)Nr3cSs
|jdSrr)�proxyrrr	�check�sz0ReferencesTestCase.test_proxy_ref.<locals>.checkrR)
rrrFr_r5r\�ReferenceError�boolrSr0)rrHrUrVr`rrr	�test_proxy_ref�sz!ReferencesTestCase.test_proxy_refcCs6|�}t�|�}|�|�d�|�}|�||d�dS)Nz,weak reference to live object should be livez-<ref>() should return original object if live)rFr4�assertIsNotNonerO)r�factoryrHr4�o2rrr	rE�s
��z"ReferencesTestCase.check_basic_refcCs>d|_|�}t�||j�}~|�|jdd�|�|�d�dS)Nrr3z(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)r0rFr4r5rSrP)rrerHr4rrr	rK�s
��z'ReferencesTestCase.check_basic_callbackcCs�t�}t�|�}t�|�}t�|�}|�||d�t�}t�|�}t�|�}t�|�}|�||d�|�t�|�dd�~|�t�|�dd�dS)Nz1reference object w/out callback should be re-usedrRzwrong weak ref count for objectr3z4wrong weak ref count for object after deleting proxy)rrFr4r_rOrS�getweakrefcount)rrHrUr_rVrrr	�test_ref_reuse�s*


�


���z!ReferencesTestCase.test_ref_reusecCs6t�}t�|�}t�|�}t�|�}|�||d�dS)Nz4proxy object w/out callback should have been re-used)rrFr_r4rO)rrH�proxy1r4�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�r3z+proxy for non-empty UserList should be truerR�z,proxy didn't support __contains__() properlyr(�
)
r�check_proxyrFr_�collections�UserList�assertFalse�appendrS�len�
assertTrue�assertIn�range)rrH�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�stringrrrrr	�__str__sz8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__cSsdS)N�bytesrrrrr	�	__bytes__sz:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__N)rrr
r}rrrrr	rsrrr~)rYrv�dirrFr_rS�bytes)rr�instancerrr	�test_proxy_unicodesz%ReferencesTestCase.test_proxy_unicodecCs4Gdd�d�}|�}t�|�}|�t�|�d�dS)Nc@seZdZdd�ZdS)z.ReferencesTestCase.test_proxy_index.<locals>.CcSsdS)Nrnrrrrr	�	__index__sz8ReferencesTestCase.test_proxy_index.<locals>.C.__index__N)rrr
r�rrrr	r
srrn)rFr_rS�operator�index�rrrHryrrr	�test_proxy_indexs
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)rrr
r�r�rrrr	rsrr(r�r��rFr_rSr�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)rrr
r�r�r�rrrr	r!srr(r�r�r�r�r�rrr	�test_proxy_matmul s
z$ReferencesTestCase.test_proxy_matmulcCs|�tj�dSr)�check_shared_without_callbackrFr4rrrr	� test_shared_ref_without_callback7sz3ReferencesTestCase.test_shared_ref_without_callbackcCs|�tj�dSr)r�rFr_rrrr	�"test_shared_proxy_without_callback:sz5ReferencesTestCase.test_shared_proxy_without_callbackcCs�td�}||d�}||d�}|�||d�~~||�}||d�}|�||d�~~||�}||�}|�||d�~~||d�}||�}|�||d�dS)Nr3z%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)rrO)r�makerefrHZp1rzrrr	r�=s 



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.)rr3rRrm)rrFr_rorO�type�CallableProxyTyperSrr\r])rrHrUrrr	�test_callable_proxyOs 
�
�

�z&ReferencesTestCase.test_callable_proxycCs�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d�d|_|�|jdd�d|_|�|jdd�|`|�t|d�d	�dS)
Nr3z)proxy does not reflect attribute additionrRz-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�rSrr�hasattr)rrHr_rrr	rods0
�
��
�
��zReferencesTestCase.check_proxycCs6Gdd�d�}|�}t�|�}|d=|�|jd�dS)Nc@seZdZdZdd�ZdS)z3ReferencesTestCase.test_proxy_deletion.<locals>.FooNcSs
||_dSr)�result)rZaccessorrrr	�__delitem__}sz?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__)rrr
r�r�rrrr	�Foo{sr�r)rFr_rSr�)rr��grrrr	�test_proxy_deletionys

z&ReferencesTestCase.test_proxy_deletioncCs4Gdd�dt�}|�}|�tt�|��t|��dS)Nc@seZdZdS)z0ReferencesTestCase.test_proxy_bool.<locals>.ListN�rrr
rrrr	�List�sr�)�listrSrbrFr_)rr�Zlystrrr	�test_proxy_bool�sz"ReferencesTestCase.test_proxy_boolc	sHd�G�fdd�d�}|��t���}|�t��d|kW5QRXdS)NcseZdZ�fdd�ZdS)z1ReferencesTestCase.test_proxy_iter.<locals>.MyObjcs�tSr)rr��objrr	�__iter__�sz:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__N)rrr
r�rr�rr	�MyObj�sr�Zblech)rFr_r\r])rr�ryrr�r	�test_proxy_iter�s
z"ReferencesTestCase.test_proxy_itercCs�t�}t�|�}t�||j�}|�t�|�dd�t�|�}t�||j�}|�t�|�dd�~~~~|�t�|�dd�|�t�d�dd�dS)NrRz*got wrong number of weak reference objectsr&rzAweak reference objects not unlinked from referent when discarded.r3z2got wrong number of weak reference objects for int)rrFr4r5rSrgr_)rrHrUrVrirjrrr	�test_getweakrefcount�s$
�
���z'ReferencesTestCase.test_getweakrefcountcCs�t�}t�||j�}t�||j�}~|�t�|�|gd�t�}t�||j�}t�||j�}~|�t�|�|gd�~|�t�|�gd�|�t�d�gd�dS)Nzlist of refs does not matchzlist of refs not clearedr3z#list of refs does not match for int)rrFr4r5rS�getweakrefsrTrrr	�test_getweakrefs�s*����z#ReferencesTestCase.test_getweakrefscCsFGdd�dt�}|d�}t�|�}|�|dd�|�d|d�dS)Nc@seZdZdS)z6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNr�rrrr	�F�sr�g@g�?g@)�floatrFr_rS)rr�rryrrr	�test_newstyle_number_ops�s

z+ReferencesTestCase.test_newstyle_number_opscs�Gdd�dt��i��fdd�����fdd�}z
|�Wn�k
rNYnX|�d�z
|�Wn�k
rxYnX|�d�dS)Nc@seZdZdS)z?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNr�rrrr	�
BogusError�sr�cs
�|=dSrr��k)�datarr	�remove�sz;ReferencesTestCase.test_callbacks_protected.<locals>.removecs dd�}d�t�|��<��dS)NcSsdS)Nrrrrrr	�<lambda>�rzRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>)rFr4r�r�r�r�rr	�encapsulate�sz@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulatezexception not properly restored)�	ExceptionZfail)rr�rr�r	�test_callbacks_protected�s


z+ReferencesTestCase.test_callbacks_protectedcsnddl�Gdd�dt�}|�}t�|�fdd��}~~|�}|�|_t�|j�fdd��}|�}||_~~dS)Nrc@seZdZdS)z0ReferencesTestCase.test_sf_bug_840829.<locals>.CNr�rrrr	r�srcs���Sr�r:��ignore�r9rr	r��rz7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>cs���Srr�r�r�rr	r�r)r9rYrFr4�i�c1)rrrZrIr��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	�Jsr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_1.<locals>.IIcSs
|jdSr�r��rr�rrr	�	acallbackszAReferencesTestCase.test_callback_in_cycle_1.<locals>.II.acallbackN�rrr
r�rrrr	�IIsr��r9rYr�rFr4r�rIr:�rr9r�r��Irrr	�test_callback_in_cycle_1sz+ReferencesTestCase.test_callback_in_cycle_1cCsTddl}Gdd�dt�}Gdd�d�}|�}||_t�||j�|_~~~|��dS)Nrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_2.<locals>.JNr�rrrr	r�Jsr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_2.<locals>.IIcSs
|jdSrr�r�rrr	r�NszAReferencesTestCase.test_callback_in_cycle_2.<locals>.II.acallbackNr�rrrr	r�Msr�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�rIr�rrr	�cbbsz9ReferencesTestCase.test_callback_in_cycle_3.<locals>.C.cbN�rrr
r�rrrr	rasr)r9r�r�rFr4r�rIr:)rr9rr�r�rrr	�test_callback_in_cycle_3Xsz+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�rrr	r�{sz9ReferencesTestCase.test_callback_in_cycle_4.<locals>.C.cbNr�rrrr	rzsrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.DNr�rrrr	�D�sr�)	r9rYr�r�rFr4r�rIr:)rr9rr�r�r�rrr	�test_callback_in_cycle_4ps	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�valuerrr	r�szJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__cs��|j�dSr)rsrZr��Zalistrr	r��szKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallbackN)rrr
rr�rr�rr	r�srr3rRcs��d�dS)N�C went away�rsr�r�rr	�C_went_away�szKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_awayr�)	r9rYrZrFr4r�rIrSr:)rr9rr�r�r�rIrr�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_callback�szDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callbackcseZdZ�fdd�ZdS)z8ReferencesTestCase.test_callbacks_on_callback.<locals>.Ccs��d�dS)Nz	cb calledr�r�r�rr	r��sz;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cbNr�rr�rr	r�srr�)
r9rYr!r�rFr4rIrOrSr:)rr9r�rrZ�dr5Zexternal_wrrr�r	�test_callbacks_on_callback�s(	
z-ReferencesTestCase.test_callbacks_on_callbackcCs|�tj�dSr)�check_gc_during_creationrFr4rrrr	�test_gc_during_ref_creation�sz.ReferencesTestCase.test_gc_during_ref_creationcCs|�tj�dSr)r�rFr_rrrr	�test_gc_during_proxy_creation�sz0ReferencesTestCase.test_gc_during_proxy_creationcCsxt��}t�ddd�t��Gdd�d�}dd�}|�}|�}||_||�|_z|�}t�||�W5tj|�XdS)Nr3c@seZdZdS)z6ReferencesTestCase.check_gc_during_creation.<locals>.ANr�rrrr	�A�sr�cWsdSrr)�argsrrr	r5�sz=ReferencesTestCase.check_gc_during_creation.<locals>.callback)r9�
get_threshold�
set_thresholdr:�arIrFr4)rr�Z
thresholdsr�r5Z
referencedr�rrr	r��s
z+ReferencesTestCase.check_gc_during_creationcCsGdd�dt�}|�}dS)Nc@seZdZdd�ZdS)z>ReferencesTestCase.test_ref_created_during_del.<locals>.TargetcSst�|�adSr)rFr4�ref_from_delrrrr	�__del__szFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__N�rrr
r�rrrr	�Targetsr�)rY)rr��wrrr	�test_ref_created_during_delsz.ReferencesTestCase.test_ref_created_during_delc	Cs.t�t�}|�t|jddddd�t��dSr.)rFr4r�r\r]rr9r:)r�rrrr	�	test_inits
zReferencesTestCase.test_initcCsXGdd�dt�}g}t�t�t�||j�}d}t��|�|�d�|�||g�dS)Nc@seZdZdS)z*ReferencesTestCase.test_classes.<locals>.ANr�rrrr	r�sr�)rYrFr4�intrsr9r:rS)rr��lr�rrr	�test_classess
zReferencesTestCase.test_classesc	Cs$td�}td�}td�}t�|�}t�|�}t�|�}t�|�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�~~~t��|||fD]}|�|�d�q�|�||k�|�||k�|�||k�|�||k�|�||k||k�|�||k||k	�dS)Nr3rR)	rrFr4rurrr9r:rOrS)	rr�y�zr��brZr�r�rrr	�
test_equality s.



z ReferencesTestCase.test_equalitycCs|tjtjtjtjg}td�}td�}t�|�}t�|�}|D]}|�t	|||�q<~~t
��|D]}|�t	|||�qbdSr2)r��lt�gt�le�gerrFr4r\r]r9r:)rZopsrr�r�r��oprrr	�
test_orderingAs

z ReferencesTestCase.test_orderingcCsjtd�}td�}t�|�}t�|�}|�t|�td��~~t��|�t|�td��|�tt|�dSr�)	rrFr4rSr$r9r:r\r])rrr�r�r�rrr	�test_hashingPs

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)�wparentrH�Zwselfrr	r�iszFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb)rFr4r)r�parentr�rrr	res

z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__Nr,rrrr	rdsr�d)rF�WeakKeyDictionaryrwr9r:)rrr��rootrZ�nrrr	�test_trashcan_16602_s	z&ReferencesTestCase.test_trashcan_16602cCsDtd�}dd�}t�||�}|�|j|�t�|�}|�|j�dS)Nr3cSsdSrrrXrrr	r�vrz<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>)rrFr4rO�__callback__rP)rrr5rUrVrrr	�test_callback_attributets
z*ReferencesTestCase.test_callback_attributecCs<td�}t�||j�}|�|j�~t��|�|j�dSr2)	rrFr4r5rdrr�
gc_collectrP)rrr4rrr	�&test_callback_attribute_after_deletion}sz9ReferencesTestCase.test_callback_attribute_after_deletionc	Cs@td�}dd�}t�||�}|�t��dd�|_W5QRXdS)Nr3cSsdSrrrXrrr	r��rz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>cSsdSrrrXrrr	r��r)rrFr4r\�AttributeErrorr)rrr5rUrrr	�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>.ObjectWithDelcSsdSrrrrrr	r��rzCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__Nr�rrrr	�
ObjectWithDel�srr3cSst��Sr)rr
rXrrr	r��rz6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>)rrFr4rr
)rrrrUrrr	�test_callback_gcs�s
z$ReferencesTestCase.test_callback_gcsN)7rrr
rJrLr�cpython_onlyrQrWr[r^rcrErKrhrkr{r�r�r�r�r�r�r�r�ror�r�r�r�r�r�r�r�r�r�r�r�Zrequires_type_collectingr�r�r�r�r�r�r�r�r�r�r�rr	rr
rrrrr	rDdsf

	
((
.&!	rDc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SubclassableWeakrefTestCasecCslGdd�dtj�}td�}||dd�}|�|�|�|�|j�|�|jd�~|�|��|�|j�dS)Ncs*eZdZd�fdd�	Z�fdd�Z�ZS)z=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefNr�cs||_t��||�dSr)r��superr)r�obr5r���	__class__rr	r�szFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__csd|_t���S�NT)�calledrrrrrr	r�szFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__)Nr�)rrr
rr�
__classcell__rrrr	�MyRef�srr���r�)	rFr4rrOrurrSr�rP)rrrH�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�rrrr	r�srr�rRrmrr3)
rFr4r�assertIsNotrSr�rgrtrOrv)rrrH�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�rrrr	r�srr�)rFr4r�id�strrr�rv)rrrHrr r!rrr	�*test_subclass_refs_dont_conflate_callbacks�s


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)rFr4�__new__)r�rr5r'r(rrr	r)�szPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__cSs||_||_dSrr&)rrr5r'r(rrr	r�szQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__cSs|j|jSrr&rrrr	�meth�szMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methN)rrr
�	__slots__r)rr*rrrr	r�srr��abc�defZabcdef�__dict__)	rFr4rrSr'r(r*rrr�)rrrHr�rrr	�test_subclass_refs_with_slots�s	z9SubclassableWeakrefTestCase.test_subclass_refs_with_slotscs�Gdd�dtj�}�fdd�}t�}|||�}||_~~���jd�t�}|||�}|||�}||_||_~~~���jd�dS)Nc@seZdZdS)zHSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNr�rrrr	r�srcs�jd7_dSr2r/)r�rrr	r5�szKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbackr)rFr4rrHrSr0r�)rrr5rHrr rrr	�test_subclass_refs_with_cycle�s"


z9SubclassableWeakrefTestCase.test_subclass_refs_with_cycleN)rrr
rr"r%r/r0rrrr	r�s
rc@sZeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
d
d��Zdd�Zdd�Z
dS)�WeakMethodTestCasecCsGdd�dt�}|S)Nc@seZdZdd�ZdS)z'WeakMethodTestCase._subclass.<locals>.CcSsdS)N�rrrrr	r'sz3WeakMethodTestCase._subclass.<locals>.C.some_methodN)rrr
r'rrrr	rsr)r)rrrrr	�	_subclass�szWeakMethodTestCase._subclasscCsntd�}t�|j�}|�|tj�|�|�t|j��|�|�j|�|�|�j	|jj	�|�
|��d�dS)Nr3r&)rrF�
WeakMethodr'ZassertIsInstance�
ReferenceTyper�rO�__self__�__func__rS�rrHr�rrr	�
test_aliveszWeakMethodTestCase.test_alivecCs0td�}t�|j�}~t��|�|�d�dSr2)rrFr4r'r9r:rOr8rrr	�test_object_deads
z#WeakMethodTestCase.test_object_deadcCs:|��}|d�}t�|j�}|`t��|�|�d�dSr2)r3rFr4r'r9r:rO)rrrHr�rrr	�test_method_deadsz#WeakMethodTestCase.test_method_deadcsh|��}g��fdd�}|d�}t�|j|�}~t��|��|g�tj|_t��|��|g�dS)Ncs��|�dSrr�r�Zcallsrr	r�!sz=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbr3)r3rFr4r'r9r:rSr�rrr�rHr�rr<r	�test_callback_when_object_deadsz1WeakMethodTestCase.test_callback_when_object_deadcsd|��}g��fdd�}|d�}t�|j|�}|`t��|��|g�~t��|��|g�dS)Ncs��|�dSrr�rr<rr	r�1sz=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbr3)r3rFr4r'r9r:rSr=rr<r	�test_callback_when_method_dead-sz1WeakMethodTestCase.test_callback_when_method_deadcCs<td�}dd�}t�|j|�}t�|�}~|�|�d�dS)Nr3cSsdSrr)�_rrr	r�Asz-WeakMethodTestCase.test_no_cycles.<locals>.cb)rrFr4r'r4rO)rrHr�r�rIrrr	�test_no_cycles=s
z!WeakMethodTestCase.test_no_cyclescs<�fdd�}�fdd�}td�}td�}t�|j�}t�|j�}t�|j�}t�|j�}|||�|||�|||�|||�|||�|||�td�}	t�|	j�}
t�|	j�}|||
�|||�|||
�|||�~~~	t��|||||
|f}|D]8}
|D].}��|
|k|
|k���|
|k|
|k	��qq�dS)Ncs ��||k���||k�dSr�rurr�r�r�rrr	�_eqIsz-WeakMethodTestCase.test_equality.<locals>._eqcs ��||k���||k�dSrrBrCrrr	�_neLsz-WeakMethodTestCase.test_equality.<locals>._ner3rR)rrFr4r'r)r9r:rS)rrDrErr�r�r�rZr�r��err!�qr�rrr	r�Hs8









z WeakMethodTestCase.test_equalitycCs�td�}td�}t�|j�}t�|j�}t�|j�}|�t|�t|��t|�}~~t��|�t|�|�|�t|�|�|�	t
t|�dSr2)rrFr4r'r)rSr$r9r:r\r])rrr�r�r�rZZharrr	r�nszWeakMethodTestCase.test_hashingN)rrr
r3r9r:r;r>r?rrrAr�r�rrrr	r1�s	

&r1c@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]�Z1e2j3d^d_��Z4d`S)a�MappingTestCasernc	s�d}dd�t|�D�}|�fdd�|D��}|��}zt|�Wntk
rTYnX~t��t|�}~t��t|�}|�|d�|�|d�dS)N�cSsg|]
}t��qSr�r*��.0r�rrr	�
<listcomp>�sz4MappingTestCase.check_len_cycles.<locals>.<listcomp>c3s|]}�|�VqdSrr�rLrH��consrr	�	<genexpr>�sz3MappingTestCase.check_len_cycles.<locals>.<genexpr>)rr3r)	rw�items�next�
StopIterationr9r:rtrvrS)	r�	dict_typerP�NrR�dct�it�n1�n2rrOr	�check_len_cycles�s z MappingTestCase.check_len_cyclescCs|�tjdd��dS)NcSs|dfSr2rr�rrr	r��rz<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>)r[rFrrrrr	�test_weak_keyed_len_cycles�sz*MappingTestCase.test_weak_keyed_len_cyclescCs|�tjdd��dS)NcSsd|fSr2rr�rrr	r��rz=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>)r[rF�WeakValueDictionaryrrrr	�test_weak_valued_len_cycles�sz+MappingTestCase.test_weak_valued_len_cyclesc
	s�|jtjft����tdd�D]�}d}t�d�t�|||�dd�t|�D�}|�fdd�|D��}~|��}zt|�Wntk
r�YnXt	|�}~t	|�}	|�
|d�|�||�|�
|	d�|�|	|�q dS)	Nr3rrIrcSsg|]
}t��qSrrJrKrrr	rM�sz2MappingTestCase.check_len_race.<locals>.<listcomp>c3s|]}�|�VqdSrrrNrOrr	rQ�sz1MappingTestCase.check_len_race.<locals>.<genexpr>)Z
addCleanupr9r�r�rwr:rRrSrTrtZassertGreaterEqualZassertLessEqual)
rrUrP�thrVrRrWrXrYrZrrOr	�check_len_race�s(
zMappingTestCase.check_len_racecCs|�tjdd��dS)NcSs|dfSr2rr�rrr	r��rz:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>)r`rFrrrrr	�test_weak_keyed_len_race�sz(MappingTestCase.test_weak_keyed_len_racecCs|�tjdd��dS)NcSsd|fSr2rr�rrr	r��rz;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>)r`rFr]rrrr	�test_weak_valued_len_race�sz)MappingTestCase.test_weak_valued_len_racecCs�|��\}}|D]*}|�t�|�d�|�|||jd�qt|���}t|�����}|�	�|�	�|�||d�~~|�t
|�|j�|d=|�t
|�|jdd�~~|�t
|�dd�t��}|�
t|jd�t�|d<|�
t|jd�dS)Nr3�#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 dictionaryrR)�make_weak_valued_dictrSrFrgrOrr�rR�copy�sortrt�COUNTr]r\�KeyError�__getitem__r�r�dict�objectsrHZitems1Zitems2rrr	�test_weak_values�s6����
z MappingTestCase.test_weak_valuescCs�|��\}}|D]0}|�t�|�dd|�|�|j||d�q|��}|����}|�t|�t|�d�~~|�t	|�|j
�|d=|�t	|�|j
dd�~~|�t	|�dd�td�}d	||<|�||�|�
d
|�dS)Nr3z&wrong number of weak references to %r!rcz.cloning of weak-keyed dictionary did not work!rrdz.deleting the keys did not clear the dictionaryr�z$What is the meaning of the universe?�")�make_weak_keyed_dictrSrFrgrOrrRrf�setrtrhrrv�assertNotInrkrrr	�test_weak_keys�s6�����zMappingTestCase.test_weak_keyscCs|��\}}|�|�|��}|�t|�t|��t|�}|D]>}|�}|�||�|�||�|�|j||�|�|�q>|�t|�d�t|�}|�tt|����t|��|��D]>}|�}|�||�|�||�|�|j||�|�|�q�|�t|�d�dSr.)	rp�check_iters�keyrefsrSrtr�rvrr��rrlrmr!Zobjects2rIrrrr	�test_weak_keyed_iters�s*
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.)	rert�	valuerefsrSrtr�rr��
itervaluerefsrvrrr	�test_weak_valued_iterss&
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�rRr�rr�keys�values)rrlrR�itemr{r�r|�vrrr	rt+s$�zMappingTestCase.check_iterscCslt|�}tt||���}t|�|d=t��|�tt|��t|�t|�dg�~|�t|�|d�dS)N���r3)	rt�iter�getattrrSr9r:rvr�rS)rrlrmZ	iter_namerrXrrr	�"check_weak_destroy_while_iteratingEs$z2MappingTestCase.check_weak_destroy_while_iteratingc	Cs|��\}}|�||�W5QRX|��\}}|�t|j|�W5QRX|�||�|��\}}|�t|j|�W5QRX|�||�|��\}}|||<W5QRX|�|||�t�|�}|��\}}|�|�W5QRX|�||�|��\}}|��W5QRX|�t	|�d�dSr.)
rrr\rir��poprSrf�update�clearrt)rrl�testcontextr�r~Zddictrrr	�-check_weak_destroy_and_mutate_while_iteratingRs$
z=MappingTestCase.check_weak_destroy_and_mutate_while_iteratingc	Csjtd�}|��Lt|�}|�t|����|�t|�|d�|||<|�t|�|�W5QRX|��6|�t|�|d�|��|�t|�|d�W5QRX|��<|�t|�|d�|t|���=|�t|�|d�W5QRX|��6|�t|�|d�|��|�t|�|d�W5QRX|��|��|�t|�d�W5QRX|�t|�d�dS)	Ni@�r3rRrmr&r(r2r)rrtr�rSr{rS�popitemr�)rrlr�rHrrrr	�&check_weak_del_and_len_while_iteratingks.z6MappingTestCase.check_weak_del_and_len_while_iteratingcs�|��\��|���d�|���d�|���d�|���d�|��\��tj��fdd��}|��|�|��\��|��|�dS)Nr{rRr|ruc3sLz8t����}t|����j}t��t|�|fVW5d}t��XdSr�r9r:r�rRrSr�rr)rXr~�rlrmrr	r��s
zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext)rpr��
contextlib�contextmanagerr�r��rr�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{rRr|ryrxc3sLz8t����}t|����j}t��|t|�fVW5d}t��XdSrr�)rXr�r�rr	r��s
zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext)rer�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�Nrmil�rrFrrS�rrHrlrrr	�#test_make_weak_keyed_dict_from_dict�sz3MappingTestCase.test_make_weak_keyed_dict_from_dictcCs4td�}t�|di�}t�|�}|�||d�dSr�r��rrHrlZdict2rrr	�.test_make_weak_keyed_dict_from_weak_keyed_dict�s
z>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictcCs8t��}tttt|j���}|D]}|j||<q ||fSr)rFrr��maprrwrhr�rrlrmrHrrr	rp�s
z$MappingTestCase.make_weak_keyed_dictcCs*td�}t�d|i�}|�|d|�dSr��rrFr]rSr�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]:}tjf||i�}|�t|���|g�|�|||�q@dS)Nrrm�rrlr!�iterable)	r\r]rFr]rrrSr�r{)rrH�kwr�rrr	�test_make_weak_valued_dict_misc�sz/MappingTestCase.test_make_weak_valued_dict_misccCs8t��}tttt|j���}|D]}|||j<q ||fSr)rFr]r�r�rrwrhrr�rrr	re�s
z%MappingTestCase.make_weak_valued_dictc	Cs�|�}|||<|||<|�t|�d�|��\}}|�t|�d�||krX|�||�n|�||�|��\}}|�t|�d�||kr�|�||�n|�||�dS)NrRr3r)rSrtr�rO)	r�klass�key1�value1�key2�value2�weakdictr�r~rrr	�
check_popitem�szMappingTestCase.check_popitemcCs|�tjdt�dt��dS)Nr�r�)r�rFr]rrrrr	�test_weak_valued_dict_popitems�z-MappingTestCase.test_weak_valued_dict_popitemcCs|�tjt�dt�d�dS�Nzvalue 1zvalue 2)r�rFrrrrrr	�test_weak_keyed_dict_popitems�z,MappingTestCase.test_weak_keyed_dict_popitemcCs�|�||d�|�}|�||�}|�||�|�||�|�|�|�|�|�|||�|�||�}|�||�|�||�|�|�|�|�|�|||�dS)Nz9invalid test -- value parameters must be distinct objects)r�
setdefaultrOrv�get)rr��keyr�r�r�rHrrr	�check_setdefault	s�z MappingTestCase.check_setdefaultcCs|�tjdt�t��dS)Nr�)r�rFr]rrrrr	� test_weak_valued_dict_setdefaults
�z0MappingTestCase.test_weak_valued_dict_setdefaultcCs|�tjt�dd�dSr�)r�rFrrrrrr	�test_weak_keyed_dict_setdefaults
�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�rSrtr{rvr�rO)rr�rlr�r�r~rrr	�check_update"s

zMappingTestCase.check_updatec	Cs�|�tjdt�dt�t�t�i�|�ttjj�t��}|�t|jii�|�t|jdd�|�t|�	��g�t
d�}dD]B}t��}|jf||i�|�t|�	��|g�|�|||�q~dS)Nr3r�rrmr�)r�rFr]rr\r]r�rSr�r{r)rr�rHr�rrr	�test_weak_valued_dict_update5s�z,MappingTestCase.test_weak_valued_dict_updatec	Cs$|�tjt�dt�dt�di�dS)Nr3rRrm)r�rFrrrrrr	�test_weak_keyed_dict_updateFs�z+MappingTestCase.test_weak_keyed_dict_updatecCsht��}td�}td�}d||<d||<|�t|�d�||=|�t|�d�|�t|���|g�dS)N�1�2�	somethingrRr3)rFrrrSrtr�r{�rr�Zo1rfrrr	�test_weak_keyed_delitemJsz'MappingTestCase.test_weak_keyed_delitemcCslt��}td�}td�}||d<||d<|�t|�d�|d=|�t|�d�|�t|���d|fg�dS)Nr�r�r�zsomething elserRr3)rFr]rrSrtr�rRr�rrr	�test_weak_valued_delitemUsz(MappingTestCase.test_weak_valued_delitemcCsft��}td�}|�t|j|�|�t|j|�|�t|jd�|�t|jd�|�t|jdd�dS)Nr��
)	rFrrr\rir�rjr]�__setitem__)rr�rHrrr	�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}||=qn|�t	|�d�|�|d
�dS)NFcs*eZdZdd�Zdd�Z��fdd�ZdS)z<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.CcSs
||_dSrr)rr�rrr	rwszEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__cSs
t|j�Sr)r$r�rrrr	r%yszEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__cs�r
�d=|j|jkS)Nrrr ��mutate�objsrr	r"{szCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__N)rrr
rr%r"rr�rr	rvsrcsg|]}�|��qSrrrK)rrr	rM�szEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>r&Trr3rR)
rFrrYrwr�r�r{�reverserSrt)rr�rH�countr)rr�r�r	�!test_weak_keyed_cascading_deletesns 	z1MappingTestCase.test_weak_keyed_cascading_deletescCst��}|�t|�d�dS)Nz<WeakValueDictionary at 0x.*>)rFr]�assertRegexrG�rrlrrr	�test_make_weak_valued_dict_repr�sz/MappingTestCase.test_make_weak_valued_dict_reprcCst��}|�t|�d�dS)Nz<WeakKeyDictionary at 0x.*>)rFrr�rGr�rrr	�test_make_weak_keyed_dict_repr�sz.MappingTestCase.test_make_weak_keyed_dict_reprc	CsHt��}t��0td�D] }|�dt��}|�|d�~qW5QRXdS�Ni��rn)rFr]rCrwr�r*r�rr�r�rrrr	�$test_threaded_weak_valued_setdefault�sz4MappingTestCase.test_threaded_weak_valued_setdefaultc	CsNt��}t��6td�D]&}t�|d<|�dd�}|�|d�qW5QRXdSr�)rFr]rCrwr*r�rr�rrr	�test_threaded_weak_valued_pop�s
z-MappingTestCase.test_threaded_weak_valued_popc	CsNt��}t��6td�D]&}t�}||d<|�t|�d�d}qW5QRXdS)Ni@
rnr3)rFr]rCrwr*rSrt)rr�r�rHrrr	�%test_threaded_weak_valued_consistency�sz5MappingTestCase.test_threaded_weak_valued_consistencycsg}Gdd�d�}Gdd�d�}�fdd�}dd�}|�|tjtjf�|�}g}	g}
td	�D]6}||�||�}}
|	�|�|
�|
�|
||<~~
q^tj|||fd
�}|tjkr�tj||	fd
�}ntj||
fd
�}|��|��|�	�|�	�|�r|d�dS)Nc@seZdZdd�ZdS)z?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeycSs
||_dSr��ctr�rr�rrr	r�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�rrr	r�szJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Nr,rrrr	�
DummyValue�sr�c
sRz �dkrt�|�}n|��}Wn,tk
rL}z|�|�W5d}~XYnXdSr)rf�deepcopyr�rs)r��excr@�ex�r�rr	�	dict_copy�sz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copycSsHd}|rDt�dt|�d�}|d7}|�|�|ddkrt��qdS)Nrr3i')�random�randintrtr�r9r:)ZlstZgc_ctrr�rrr	�pop_and_collect�s
zFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectip)r=r�r)
rvrFrr]rwrsr>r?r@rA)rZtype_r�r�r�r�r�r�r�r{r|r�r�r~Zt_copyZ	t_collectrr�r	�check_threaded_weak_dict_copy�s4		


z-MappingTestCase.check_threaded_weak_dict_copycCs|�tjd�dS�NF�r�rFrrrrr	� test_threaded_weak_key_dict_copy�sz0MappingTestCase.test_threaded_weak_key_dict_copycCs|�tjd�dSrr�rrrr	�$test_threaded_weak_key_dict_deepcopysz4MappingTestCase.test_threaded_weak_key_dict_deepcopycCs|�tjd�dSr��r�rFr]rrrr	�"test_threaded_weak_value_dict_copysz2MappingTestCase.test_threaded_weak_value_dict_copycCs|�tjd�dSrr�rrrr	�&test_threaded_weak_value_dict_deepcopysz6MappingTestCase.test_threaded_weak_value_dict_deepcopycCst��}|�|jj�dSr)rFr]rP�_remove�__closure__)rr�rrr	�test_remove_closuresz#MappingTestCase.test_remove_closureN)5rrr
rhr[r\r^r`rarbrnrsrwrzrtr�r�r�r�r�r�r�rpr�r�r�rer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�rrrr	rH�sb
!-=rH)�
mapping_testsc@s2eZdZed�ed�ed�d�ZejZdd�ZdS)�WeakValueDictionaryTestCaser3rRrm)r�r��key3cCs
|j��Sr)�!_WeakValueDictionaryTestCase__refrfrrrr	�
_referencesz&WeakValueDictionaryTestCase._referenceN)	rrr
rr�rFr]�	type2testr�rrrr	r�sr�c@s6eZdZed�ded�ded�diZejZdd�Zd	S)
�WeakKeyDictionaryTestCaser�r3r�rRr�rmcCs
|j��Sr)�_WeakKeyDictionaryTestCase__refrfrrrr	r�#sz$WeakKeyDictionaryTestCase._referenceN)	rrr
rr�rFrr�r�rrrr	r�sr�c@sVeZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�FinalizeTestCasec@seZdZdS)zFinalizeTestCase.ANr�rrrr	r�)sr�cCstjjdkrt��dS)NZcpython)�sys�implementation�namerr
rrrr	�_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��rr�r���resrr	�add2sz+FinalizeTestCase.test_finalize.<locals>.add�C�+�Y)r�T)r�r�r���F)r�r�r�r�)r�rF�finalizerS�alive�peek�detachr�)rr�r�rrr�r	�
test_finalize1sBzFinalizeTestCase.test_finalizec	sP�fdd�}|��}g�tj||ddddd�}|�|��||dddd�f�|�|��dddd�fg�g�|�t��tj||dd	�}W5QRX|�|��||d
ddif�|�|��d
ddifg�g�|�t��tj||dd�}W5QRX|�|��||d
ddif�|�|��d
ddifg�|�ttj|�|�ttj�dS)
Ncs��||f�dSrr�)r��kwargsr�rr	�fin[sz-FinalizeTestCase.test_arg_errors.<locals>.finr3rRrmr&)�funcr�)r3rR)r�rrr)r�r�r)	r�rFr�rSr�ZassertWarns�DeprecationWarningr\r])rr�r�rrr�r	�test_arg_errorsZs*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	�|�dddddddd	g}|�	||�dS)
N�f1�f2�f3�f4�f5r��Brr�)
r�rFr�rsrur�r�rrr�rS)	rr�r�rrrrrZexpectedrrr	�
test_orderws6



zFinalizeTestCase.test_ordercs�Gdd�dtj�}|��}g��fdd�}|||�}t�|�}t�|�}~~|�|��|�|��~|��|�|��|�|��|��dg�dS)Nc@seZdZdS)z4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNr�rrrr	�MyFinalizer�sr	cs��d�dS)N�{r�rr�rr	r5�sz1FinalizeTestCase.test_all_freed.<locals>.callbackr
)rFr�r�r4rdr�rPrS)rr	r�r5rZwr_callbackZwr_frr�r	�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 errorr3r)rFr��print)r��clsrr	�error�sz,FinalizeTestCase.run_in_child.<locals>.errorrrrF)rFr�r�_global_var�atexit)rrrrrrrrr	�run_in_child�szFinalizeTestCase.run_in_childcCsJd}t�d|�\}}}|�d���}|�|ddddg�|�d|k�dS)	NzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child()z-c�asciiz	f4 foobarr
rz	f1 foobarsZeroDivisionError)rZassert_python_ok�decode�
splitlinesrSru)r�prog�rc�out�errrrr	�test_atexit�s
zFinalizeTestCase.test_atexitN)rrr
r�r�r�rrr�classmethodrrrrrr	r�'s)'
r�a� Doctest for examples in the library reference: weakref.rst

>>> 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
>>> 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
>>> try:
...     id2obj(a_id)
... except KeyError:
...     print('OK')
... else:
...     print('WeakValueDictionary error')
OK

�
libreftestc	Cs*t�ttttttt�t�	t
jt�dSr)
rZrun_unittestrDr1rHr�r�rr�Zrun_doctestr��modulesrrrrr	�	test_main)s�	r �__main__)r6)(r9r�ZunittestrprFr�r�rfr>r7r��testrZtest.supportrr�rrrrrrr*ZTestCaser-r�rCrDrr1rHr�ZBasicTestMappingProtocolr�r�r�rZ__test__r rrrrr	�<module>sb	7g.S


F1le Man4ger