403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.217.153
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_weakref.cpython-36.pyc
3

x2_��@s~ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZda
dZGdd�d�ZGdd�d�Zd	d
�Zdd�ZGd
d�d�ZGdd�d�ZGdd�dej�Zejd*dd��ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�Zddl	mZGdd �d ej�ZGd!d"�d"ej�Z Gd#d$�d$ej�Z!d%Z"d&e"iZ#d'd(�Z$e%d)k�rze$�dS)+�N)�support)�
script_helperZfoobarc@seZdZdd�ZdS)�CcCsdS)N�)�selfrr�6/opt/alt/python36/lib64/python3.6/test/test_weakref.py�methodszC.methodN)�__name__�
__module__�__qualname__rrrrrrsrc@seZdZdZdd�ZdS)�CallableNcCs
||_dS)N)�bar)r�xrrr�__call__szCallable.__call__)r	r
rr
rrrrrrsrcCsdd�}|S)NcSsdS)Nrrrrr�f"szcreate_function.<locals>.fr)rrrr�create_function!srcCst�jS)N)rrrrrr�create_bound_method%src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ObjectcCs
||_dS)N)�arg)rrrrr�__init__*szObject.__init__cCs
d|jS)Nz<Object %r>)r)rrrr�__repr__,szObject.__repr__cCst|t�r|j|jkStS)N)�
isinstancerr�NotImplemented)r�otherrrr�__eq__.s
z
Object.__eq__cCst|t�r|j|jkStS)N)rrrr)rrrrr�__lt__2s
z
Object.__lt__cCs
t|j�S)N)�hashr)rrrr�__hash__6szObject.__hash__cCsdS)N�r)rrrr�some_method8szObject.some_methodcCsdS)N�r)rrrr�other_method:szObject.other_methodN)
r	r
rrrrrrrr!rrrrr)src@seZdZdd�ZdS)�RefCyclecCs
||_dS)N)�cycle)rrrrr?szRefCycle.__init__N)r	r
rrrrrrr">sr"c@seZdZdd�Zdd�ZdS)�TestBasecCs
d|_dS)Nr)�cbcalled)rrrr�setUpEszTestBase.setUpcCs|jd7_dS)N�)r%)r�refrrr�callbackHszTestBase.callbackN)r	r
rr&r)rrrrr$Csr$�-C��6?c#sbtjd�}d���fdd�}tj��4|j|d�}|j�z
dVWdd�|j�XWdQRXdS)zR
    Ensure GC collections happen in a different thread, at a high frequency.
    �	threadingFcs x�stj��tj�qWdS)N)�timeZsleep�gc�collectr)�period�please_stoprrr.Ts
z"collect_in_thread.<locals>.collect)�targetNT)r�
import_moduleZ
disable_gcZThread�start�join)r/r+r.�tr)r/r0r�collect_in_threadLs


r6c@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#ej$d?d@��Z%dAdB�Z&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_S)`�ReferencesTestCasecCsD|jt�|jt�|jt�t�}tj|�}t|�~t|�dS)N)�check_basic_refrrr�weakrefr(�repr)r�o�wrrrr�test_basic_refes



z!ReferencesTestCase.test_basic_refcCs"|jt�|jt�|jt�dS)N)�check_basic_callbackrrr)rrrr�test_basic_callbackss

z&ReferencesTestCase.test_basic_callbackcCsRddl}|j}|�}tj|�}|j|�|�~|j|��|j|�|j|�dS)Nr)�	_testcapi�create_cfunctionr9r(�assertIs�assertIsNoner8r>)rr@rArr<rrr�test_cfunctionxs

z!ReferencesTestCase.test_cfunctioncCsTt�}tj||j�}tj||j�}~|j|�d�|j|�d�|j|jdd�dS)Nz$expected reference to be invalidated�z-callback not called the right number of times)rr9r(r)rC�assertEqualr%)rr;�ref1�ref2rrr�test_multiple_callbacks�s
z*ReferencesTestCase.test_multiple_callbackscCs2|fdd�}t�}tj||�|_tj||�}~dS)NcSs|j�dS)N)r()�objectrrrrr)�szDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback)rr9r()rr)�crGrrr�test_multiple_selfref_callbacks�s
z2ReferencesTestCase.test_multiple_selfref_callbackscCst�}|jttj|dd�dS)N)r))r�assertRaises�	TypeErrorr9r()rrKrrr�test_constructor_kwargs�sz*ReferencesTestCase.test_constructor_kwargscCsvt�}d|_tj||j�}tj||j�}~dd�}|jt||�|jt||�|jtttjt���|j|j	d�dS)Nr'cSs
|jdS)N)r
)�proxyrrr�check�sz0ReferencesTestCase.test_proxy_ref.<locals>.checkrE)
rr
r9rPr)rM�ReferenceError�boolrFr%)rr;rGrHrQrrr�test_proxy_ref�sz!ReferencesTestCase.test_proxy_refcCs6|�}tj|�}|j|�d�|�}|j||d�dS)Nz,weak reference to live object should be livez-<ref>() should return original object if live)r9r(�assertIsNotNonerB)r�factoryr;r(�o2rrrr8�s
z"ReferencesTestCase.check_basic_refcCs>d|_|�}tj||j�}~|j|jdd�|j|�d�dS)Nrr'z(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)r%r9r(r)rFrC)rrVr;r(rrrr>�s
z'ReferencesTestCase.check_basic_callbackcCs�t�}tj|�}tj|�}tj|�}|j||d�t�}tj|�}tj|�}tj|�}|j||d�|jtj|�dd�~|jtj|�dd�dS)Nz1reference object w/out callback should be re-usedrEzwrong weak ref count for objectr'z4wrong weak ref count for object after deleting proxy)rr9r(rPrBrF�getweakrefcount)rr;rGrPrHrrr�test_ref_reuse�s"





z!ReferencesTestCase.test_ref_reusecCs6t�}tj|�}tj|�}tj|�}|j||d�dS)Nz4proxy object w/out callback should have been re-used)rr9rPr(rB)rr;�proxy1r(�proxy2rrr�test_proxy_reuse�s


z#ReferencesTestCase.test_proxy_reusecCsnt�}|j|tj|��tj�}tj|�}|j|d�|jd�|jt	|�d�|j
|d�ddg|dd�<|jt	|�d�|jt	|�d�|jd|d�d|d<|j|dd�|j|dd�tj|�}tj|�}|j||�tjtd	��}tj|�}|j|dd�|dd��|j|dd�|dd��|j|dd�|dd��|j|dd�|dd��dS)
Nz(proxy for empty UserList should be false�r'z+proxy for non-empty UserList should be truerE�z,proxy didn't support __contains__() properlyr �
)
r�check_proxyr9rP�collections�UserList�assertFalse�appendrF�len�
assertTrue�assertIn�range)rr;�L�pZL2�p2ZL3Zp3rrr�test_basic_proxy�s0




z#ReferencesTestCase.test_basic_proxycCsFGdd�dt�}|�}|jdttj|���|jttj|��d�dS)Nc@seZdZdd�Zdd�ZdS)z0ReferencesTestCase.test_proxy_unicode.<locals>.CcSsdS)N�stringr)rrrr�__str__sz8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__cSsdS)Nsbytesr)rrrr�	__bytes__sz:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__N)r	r
rrnrorrrrrsrrosbytes)rJrg�dirr9rPrF�bytes)rr�instancerrr�test_proxy_unicodesz%ReferencesTestCase.test_proxy_unicodecCs4Gdd�d�}|�}tj|�}|jtj|�d�dS)Nc@seZdZdd�ZdS)z.ReferencesTestCase.test_proxy_index.<locals>.CcSsdS)Nr_r)rrrr�	__index__
sz8ReferencesTestCase.test_proxy_index.<locals>.C.__index__N)r	r
rrtrrrrrsrr_)r9rPrF�operator�index)rrr;rjrrr�test_proxy_indexs
z#ReferencesTestCase.test_proxy_indexcCsFGdd�d�}|�}tj|�}|j|dd�|d}|j|d�dS)Nc@seZdZdd�Zdd�ZdS)z,ReferencesTestCase.test_proxy_div.<locals>.CcSsdS)N�*r)rrrrr�__floordiv__sz9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__cSsdS)N�r)rrrrr�
__ifloordiv__sz:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__N)r	r
rryr{rrrrrsrr rxrz)r9rPrF)rrr;rjrrr�test_proxy_divs
z!ReferencesTestCase.test_proxy_divcCs|jtj�dS)N)�check_shared_without_callbackr9r()rrrr� test_shared_ref_without_callback'sz3ReferencesTestCase.test_shared_ref_without_callbackcCs|jtj�dS)N)r}r9rP)rrrr�"test_shared_proxy_without_callback*sz5ReferencesTestCase.test_shared_proxy_without_callbackcCs�td�}||d�}||d�}|j||d�~~||�}||d�}|j||d�~~||�}||�}|j||d�~~||d�}||�}|j||d�dS)Nr'z%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)rrB)r�makerefr;Zp1rkrrrr}-s 



z0ReferencesTestCase.check_shared_without_callbackcCs�t�}tj|�}|j||�|jt|�tjd�|d�|j|jdd�|dd�|j|jdd�|j	t
|�|j	t
|ddd�dS)	Nzproxy is not of callable typez	twinkies!z1call through proxy not passed through to originalzSplat.)rr'rEr^)rr9rPr`rB�type�CallableProxyTyperFr
rMrN)rr;rGrrr�test_callable_proxy?s



z&ReferencesTestCase.test_callable_proxycCs�d|_|j|jdd�d|_|j|jdd�|`|jt|d�d�d|_|j|jdd�d|_|j|jdd�|`|jt|d�d	�dS)
Nr'z)proxy does not reflect attribute additionrEz-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�rFrc�hasattr)rr;rPrrrr`Ts$



zReferencesTestCase.check_proxycCs6Gdd�d�}|�}tj|�}|d=|j|jd�dS)Nc@seZdZdZdd�ZdS)z3ReferencesTestCase.test_proxy_deletion.<locals>.FooNcSs
||_dS)N)�result)rZaccessorrrr�__delitem__msz?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__)r	r
rr�r�rrrr�Fooksr�r)r9rPrFr�)rr��grrrr�test_proxy_deletionis

z&ReferencesTestCase.test_proxy_deletioncCs4Gdd�dt�}|�}|jttj|��t|��dS)Nc@seZdZdS)z0ReferencesTestCase.test_proxy_bool.<locals>.ListN)r	r
rrrrr�Listvsr�)�listrFrSr9rP)rr�Zlystrrr�test_proxy_booltsz"ReferencesTestCase.test_proxy_boolcCs�t�}tj|�}tj||j�}|jtj|�dd�tj|�}tj||j�}|jtj|�dd�~~~~|jtj|�dd�|jtjd�dd�dS)NrEz*got wrong number of weak reference objectsrrzAweak reference objects not unlinked from referent when discarded.r'z2got wrong number of weak reference objects for int)rr9r(r)rFrXrP)rr;rGrHrZr[rrr�test_getweakrefcountzs

z'ReferencesTestCase.test_getweakrefcountcCs�t�}tj||j�}tj||j�}~|jtj|�|gd�t�}tj||j�}tj||j�}~|jtj|�|gd�~|jtj|�gd�|jtjd�gd�dS)Nzlist of refs does not matchzlist of refs not clearedr'z#list of refs does not match for int)rr9r(r)rF�getweakrefs)rr;rGrHrrr�test_getweakrefs�s"z#ReferencesTestCase.test_getweakrefscCsFGdd�dt�}|d�}tj|�}|j|dd�|jd|d�dS)Nc@seZdZdS)z6ReferencesTestCase.test_newstyle_number_ops.<locals>.FN)r	r
rrrrr�F�sr�g@g�?g@)�floatr9rPrF)rr�rrjrrr�test_newstyle_number_ops�s

z+ReferencesTestCase.test_newstyle_number_opscs�Gdd�dt��i��fdd�����fdd�}y
|�Wn�k
rNYnX|jd�y
|�Wn�k
rxYnX|jd�dS)Nc@seZdZdS)z?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorN)r	r
rrrrr�
BogusError�sr�cs
�|=dS)Nr)�k)�datarr�remove�sz;ReferencesTestCase.test_callbacks_protected.<locals>.removecs dd�}d�tj|��<��dS)NcSsfS)Nrrrrr�<lambda>�szRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>)r9r()r)r�r�r�rr�encapsulate�sz@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulatezexception not properly restored)�	ExceptionZfail)rr�r)r�r�r�r�test_callbacks_protected�s


z+ReferencesTestCase.test_callbacks_protectedcsnddl�Gdd�dt�}|�}tj|�fdd��}~~|�}|�|_tj|j�fdd��}|�}||_~~dS)Nrc@seZdZdS)z0ReferencesTestCase.test_sf_bug_840829.<locals>.CN)r	r
rrrrrr�srcs�j�S)N)r.)�ignore)r-rrr��sz7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>cs�j�S)N)r.)r�)r-rrr��s)r-rJr9r(�i�c1)rrrKr<r��c2r)r-r�test_sf_bug_840829�s	z%ReferencesTestCase.test_sf_bug_840829cCsVddl}Gdd�dt�}Gdd�dt�}|�}||_tj||j�|_~~~|j�dS)Nrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_1.<locals>.JN)r	r
rrrrr�J�sr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_1.<locals>.IIcSs
|jdS)N)r�)rr�rrr�	acallback�szAReferencesTestCase.test_callback_in_cycle_1.<locals>.II.acallbackN)r	r
rr�rrrr�II�sr�)r-rJr�r9r(r�r<r.)rr-r�r��Irrr�test_callback_in_cycle_1�sz+ReferencesTestCase.test_callback_in_cycle_1cCsTddl}Gdd�dt�}Gdd�d�}|�}||_tj||j�|_~~~|j�dS)Nrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_2.<locals>.JN)r	r
rrrrrr�&sr�c@seZdZdd�ZdS)z7ReferencesTestCase.test_callback_in_cycle_2.<locals>.IIcSs
|jdS)N)r�)rr�rrrr�*szAReferencesTestCase.test_callback_in_cycle_2.<locals>.II.acallbackN)r	r
rr�rrrrr�)sr�)r-rJr�r9r(r�r<r.)rr-r�r�r�rrr�test_callback_in_cycle_2sz+ReferencesTestCase.test_callback_in_cycle_2cCsPddl}Gdd�d�}|�|�}}||_||_tj||j�|_~~|j�dS)Nrc@seZdZdd�ZdS)z6ReferencesTestCase.test_callback_in_cycle_3.<locals>.CcSs|j|j|jdS)N)�mer�r<)rr�rrr�cb>sz9ReferencesTestCase.test_callback_in_cycle_3.<locals>.C.cbN)r	r
rr�rrrrr=sr)r-r�r�r9r(r�r<r.)rr-rr�r�rrr�test_callback_in_cycle_34sz+ReferencesTestCase.test_callback_in_cycle_3cCsdddl}Gdd�dt�}Gdd�d�}|�|�}}||_||_tj||j�|_~~~~|j�dS)Nrc@seZdZdd�ZdS)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.CcSs|j|j|jdS)N)r�r�r<)rr�rrrr�Wsz9ReferencesTestCase.test_callback_in_cycle_4.<locals>.C.cbN)r	r
rr�rrrrrVsrc@seZdZdS)z6ReferencesTestCase.test_callback_in_cycle_4.<locals>.DN)r	r
rrrrr�D\sr�)	r-rJr�r�r9r(r�r<r.)rr-rr�r�r�rrr�test_callback_in_cycle_4Ls	z+ReferencesTestCase.test_callback_in_cycle_4cs�ddl}g�G�fdd�dt�}|d�|d�}}||_||_tj||j�|_tj||j�|_�fdd�}tj||�}~~~|j�g�|j�|j�dg�|j|�d��dd�=|j�|j�g�dS)	Nrcs eZdZdd�Z�fdd�ZdS)zAReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.CcSs
||_dS)N)Z	attribute)r�valuerrrrwszJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__cs�j|j�dS)N)rdrK)rr�)�alistrrr�zszKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallbackN)r	r
rrr�r)r�rrrvsrr'rEcs�jd�dS)NzC went away)rd)r�)r�rr�C_went_away�szKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_awayzC went away)	r-rJrKr9r(r�r<rFr.)rr-rr�r�r�r<r)r�r�#test_callback_in_cycle_resurrectionhs$
z6ReferencesTestCase.test_callback_in_cycle_resurrectioncs�ddl}g��fdd�}G�fdd�dt�}|�|�}}||_||_|j}tj||�|_tj||j�|_tj||�}|j|�|�~~~~|j�g�|j	�|j�dg�|j|�d��dd�=|j	�|j�g�dS)Nrcs�jd�dS)Nzsafe_callback called)rd)r�)r�rr�
safe_callback�szDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callbackcseZdZ�fdd�ZdS)z8ReferencesTestCase.test_callbacks_on_callback.<locals>.Ccs�jd�dS)Nz	cb called)rd)rr�)r�rrr��sz;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cbN)r	r
rr�r)r�rrr�srzsafe_callback called)
r-rJrr�r9r(r<rBrFr.)rr-r�rrK�dr)Zexternal_wrr)r�r�test_callbacks_on_callback�s(	
z-ReferencesTestCase.test_callbacks_on_callbackcCs|jtj�dS)N)�check_gc_during_creationr9r()rrrr�test_gc_during_ref_creation�sz.ReferencesTestCase.test_gc_during_ref_creationcCs|jtj�dS)N)r�r9rP)rrrr�test_gc_during_proxy_creation�sz0ReferencesTestCase.test_gc_during_proxy_creationcCsxtj�}tjddd�tj�Gdd�d�}dd�}|�}|�}||_||�|_z|�}tj||�Wdtj|�XdS)Nr'c@seZdZdS)z6ReferencesTestCase.check_gc_during_creation.<locals>.AN)r	r
rrrrr�A�sr�cWsdS)Nr)�argsrrrr)�sz=ReferencesTestCase.check_gc_during_creation.<locals>.callback)r-�
get_threshold�
set_thresholdr.�ar<r9r()rr�Z
thresholdsr�r)Z
referencedr�rrrr��s
z+ReferencesTestCase.check_gc_during_creationcCsGdd�dt�}|�}dS)Nc@seZdZdd�ZdS)z>ReferencesTestCase.test_ref_created_during_del.<locals>.TargetcSstj|�adS)N)r9r(�ref_from_del)rrrr�__del__�szFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__N)r	r
rr�rrrr�Target�sr�)rJ)rr��wrrr�test_ref_created_during_del�sz.ReferencesTestCase.test_ref_created_during_delcCs.tjt�}|jt|jddddd�tj�dS)Nr)r9r(r�rMrNrr-r.)r�rrrr�	test_init�s
zReferencesTestCase.test_initcCsXGdd�dt�}g}tjt�tj||j�}d}tj�|j|�d�|j||g�dS)Nc@seZdZdS)z*ReferencesTestCase.test_classes.<locals>.AN)r	r
rrrrrr��sr�)rJr9r(�intrdr-r.rF)rr��lr�rrr�test_classes�s
zReferencesTestCase.test_classesc	Cs(td�}td�}td�}tj|�}tj|�}tj|�}tj|�}|j||k�|j||k�|j||k�|j||k�|j||k�|j||k�~~~tj�x |||fD]}|j|�d�q�W|j||k�|j||k�|j||k�|j||k�|j||k||k�|j||k||k	�dS)Nr'rE)	rr9r(rfrcr-r.rBrF)	rr�y�zr��brKr�r�rrr�
test_equality�s.



z ReferencesTestCase.test_equalitycCs�tjtjtjtjg}td�}td�}tj|�}tj|�}x|D]}|jt	|||�q>W~~t
j�x|D]}|jt	|||�qhWdS)Nr')ru�lt�gt�le�gerr9r(rMrNr-r.)rZopsrr�r�r��oprrr�
test_orderings



z ReferencesTestCase.test_orderingcCsjtd�}td�}tj|�}tj|�}|jt|�td��~~tj�|jt|�td��|jtt|�dS)Nrx)	rr9r(rFrr-r.rMrN)rrr�r�r�rrr�test_hashing,s

zReferencesTestCase.test_hashingcCsRGdd�d�}tj�}|d�}}x td�D]}||�||<}q,W~tj�dS)Nc@seZdZdd�ZdS)z1ReferencesTestCase.test_trashcan_16602.<locals>.Ccs0|sdStj|���fdd�}tj||�|_dS)Ncs
��}dS)Nr)�wparentr;)�wselfrrr�EszFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb)r9r(r�)r�parentr�r)r�rrAs

z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__N)r	r
rrrrrrr@sr�d)r9�WeakKeyDictionaryrhr-r.)rrr��rootrK�nrrr�test_trashcan_16602;s	z&ReferencesTestCase.test_trashcan_16602cCsDtd�}dd�}tj||�}|j|j|�tj|�}|j|j�dS)Nr'cSsdS)Nr)r(rrrr�Rsz<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>)rr9r(rB�__callback__rC)rrr)rGrHrrr�test_callback_attributePs
z*ReferencesTestCase.test_callback_attributecCs<td�}tj||j�}|j|j�~tj�|j|j�dS)Nr')	rr9r(r)rUr�r�
gc_collectrC)rrr(rrr�&test_callback_attribute_after_deletionYsz9ReferencesTestCase.test_callback_attribute_after_deletionc	Cs@td�}dd�}tj||�}|jt��dd�|_WdQRXdS)Nr'cSsdS)Nr)r(rrrr�csz@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>cSsdS)Nr)r(rrrr�fs)rr9r(rM�AttributeErrorr�)rrr)rGrrr�test_set_callback_attributeas
z.ReferencesTestCase.test_set_callback_attributecCs6Gdd�dt�}|d�}tj|dd��}~tj�dS)Nc@seZdZdd�ZdS)z;ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelcSsdS)Nr)rrrrr�jszCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__N)r	r
rr�rrrr�
ObjectWithDelisr�r'cSstj�S)N)rr�)r(rrrr�lsz6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>)rr9r(rr�)rr�rrGrrr�test_callback_gcshs
z$ReferencesTestCase.test_callback_gcsN)5r	r
rr=r?r�cpython_onlyrDrIrLrOrTr8r>rYr\rlrsrwr|r~rr}r�r`r�r�r�r�r�r�r�r�r�r�r�Zrequires_type_collectingr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr7cs^
	
((/&!	r7c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SubclassableWeakrefTestCasecCslGdd�dtj�}td�}||dd�}|j|�|�|j|j�|j|jd�~|j|��|j|j�dS)Ncs*eZdZd�fdd�	Z�fdd�Z�ZS)z=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefNrxcs||_t�j||�dS)N)r��superr)r�obr)r�)�	__class__rrruszFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__csd|_t�j�S)NT)�calledr�r)r)r�rrrxszFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__)Nrx)r	r
rrr�
__classcell__rr)r�r�MyReftsr�r��)r�)	r9r(rrBrfr�rFr�rC)rr�r;Zmrrrr�test_subclass_refsssz.SubclassableWeakrefTestCase.test_subclass_refscCs�Gdd�dtj�}td�}||�}tj|�}|j||�|jtj|�||g�|jtj|�d�||�}|jtj|�d�tj|�}|jt|�d�|j||d�|j	||dd��|j	||dd��dS)Nc@seZdZdS)zXSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefN)r	r
rrrrrr��sr�rxrEr^rr')
r9r(r�assertIsNotrFr�rXrerBrg)rr�r;�r1�r2Zr3�refsrrr�-test_subclass_refs_dont_replace_standard_refs�s

zISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refscCs`Gdd�dtj�}td�}||t�}||t�}|j||�tj|�}|j||�|j||�dS)Nc@seZdZdS)zUSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefN)r	r
rrrrrr��sr�rx)r9r(r�id�strr�r�rg)rr�r;r�r�r�rrr�*test_subclass_refs_dont_conflate_callbacks�s


zFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbackscCshGdd�dtj�}td�}||ddd�}|j|jd�|j|jd�|j|j�d�|jt|d��dS)Nc@s(eZdZd
Zdd�Zdd�Zdd�Zd	S)zHSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef�slot1�slot2cSstjj|||�S)N)r9r(�__new__)r�r�r)r�r�rrrr��szPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__cSs||_||_dS)N)r�r�)rr�r)r�r�rrrr�szQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__cSs|j|jS)N)r�r�)rrrr�meth�szMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methN)r�r�)r	r
r�	__slots__r�rr�rrrrr��sr�rx�abc�defZabcdef�__dict__)	r9r(rrFr�r�r�rcr�)rr�r;r�rrr�test_subclass_refs_with_slots�s	z9SubclassableWeakrefTestCase.test_subclass_refs_with_slotscs�Gdd�dtj�}�fdd�}t�}|||�}||_~~�j�jd�t�}|||�}|||�}||_||_~~~�j�jd�dS)z3Confirm https://bugs.python.org/issue3100 is fixed.c@seZdZdS)zHSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefN)r	r
rrrrrr��sr�cs�jd7_dS)Nr')r%)r�)rrrr)�szKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbackrN)r9r(rr;rFr%r�)rr�r)r;r�r�r)rr�test_subclass_refs_with_cycle�s"


z9SubclassableWeakrefTestCase.test_subclass_refs_with_cycleN)r	r
rr�r�r�r�r�rrrrr�qs
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)N�r)rrrrr�sz3WeakMethodTestCase._subclass.<locals>.C.some_methodN)r	r
rrrrrrr�sr)r)rrrrr�	_subclass�szWeakMethodTestCase._subclasscCsntd�}tj|j�}|j|tj�|j|�t|j��|j|�j|�|j|�j	|jj	�|j
|��d�dS)Nr'r)rr9�
WeakMethodrZassertIsInstance�
ReferenceTyper�rB�__self__�__func__rF)rr;r�rrr�
test_alive�szWeakMethodTestCase.test_alivecCs0td�}tj|j�}~tj�|j|�d�dS)Nr')rr9r�rr-r.rB)rr;r�rrr�test_object_dead�s
z#WeakMethodTestCase.test_object_deadcCs:|j�}|d�}tj|j�}|`tj�|j|�d�dS)Nr')r�r9r�rr-r.rB)rrr;r�rrr�test_method_dead�sz#WeakMethodTestCase.test_method_deadcsh|j�}g��fdd�}|d�}tj|j|�}~tj�|j�|g�tj|_tj�|j�|g�dS)Ncs�j|�dS)N)rd)r)�callsrrr��sz=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbr')r�r9r�rr-r.rFr)rrr�r;r�r)rr�test_callback_when_object_dead�sz1WeakMethodTestCase.test_callback_when_object_deadcsd|j�}g��fdd�}|d�}tj|j|�}|`tj�|j�|g�~tj�|j�|g�dS)Ncs�j|�dS)N)rd)r)rrrr�
sz=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbr')r�r9r�rr-r.rF)rrr�r;r�r)rr�test_callback_when_method_dead	sz1WeakMethodTestCase.test_callback_when_method_deadcCs<td�}dd�}tj|j|�}tj|�}~|j|�d�dS)Nr'cSsdS)Nr)�_rrrr�sz-WeakMethodTestCase.test_no_cycles.<locals>.cb)rr9r�rr(rB)rr;r�r�r<rrr�test_no_cycless
z!WeakMethodTestCase.test_no_cyclescsF�fdd�}�fdd�}td�}td�}tj|j�}tj|j�}tj|j�}tj|j�}|||�|||�|||�|||�|||�|||�td�}	tj|	j�}
tj|	j�}|||
�|||�|||
�|||�~~~	tj�|||||
|f}xF|D]>}
x6|D].}�j|
|k|
|k��j|
|k|
|k	��q
W�qWdS)Ncs �j||k��j||k�dS)N)rfrc)r�r�)rrr�_eq%sz-WeakMethodTestCase.test_equality.<locals>._eqcs �j||k��j||k�dS)N)rfrc)r�r�)rrr�_ne(sz-WeakMethodTestCase.test_equality.<locals>._ner'rE)rr9r�rr!r-r.rF)rrrrr�r�r�rKr�r��err��qr�r)rrr�$s8











z WeakMethodTestCase.test_equalitycCs�td�}td�}tj|j�}tj|j�}tj|j�}|jt|�t|��t|�}~~tj�|jt|�|�|jt|�|�|j	t
t|�dS)Nr')rr9r�rr!rFrr-r.rMrN)rrr�r�r�rKZharrrr�JszWeakMethodTestCase.test_hashingN)r	r
rr�rrrrrrr�r
r�r�rrrrr��s	&r�c@sXeZdZdZdd�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,dTS)U�MappingTestCaser_c	s�d}dd�t|�D�}|�fdd�|D��}|j�}yt|�Wntk
rTYnX~tj�t|�}~tj�t|�}|j|d�|j|d�dS)	N�cSsg|]
}t��qSr)r")�.0r�rrr�
<listcomp>dsz4MappingTestCase.check_len_cycles.<locals>.<listcomp>c3s|]}�|�VqdS)Nr)rr;)�consrr�	<genexpr>esz3MappingTestCase.check_len_cycles.<locals>.<genexpr>rr')rr')	rh�items�next�
StopIterationr-r.rergrF)	r�	dict_typer�Nr�dct�it�n1�n2r)rr�check_len_cyclesbs z MappingTestCase.check_len_cyclescCs|jtjdd��dS)NcSs|dfS)Nr'r)r�rrrr�wsz<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>)rr9r�)rrrr�test_weak_keyed_len_cyclesvsz*MappingTestCase.test_weak_keyed_len_cyclescCs|jtjdd��dS)NcSsd|fS)Nr'r)r�rrrr�zsz=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>)rr9�WeakValueDictionary)rrrr�test_weak_valued_len_cyclesysz+MappingTestCase.test_weak_valued_len_cyclesc
s�|jtjftj���x�tdd�D]�}d}tjd�tj|||�dd�t|�D�}|�fdd�|D��}~|j�}yt|�Wntk
r�YnXt	|�}~t	|�}	|j
|d�|j||�|j
|	d�|j|	|�q"WdS)	Nr'r�rrcSsg|]
}t��qSr)r")rr�rrrr�sz2MappingTestCase.check_len_race.<locals>.<listcomp>c3s|]}�|�VqdS)Nr)rr;)rrrr�sz1MappingTestCase.check_len_race.<locals>.<genexpr>)Z
addCleanupr-r�r�rhr.rrrreZassertGreaterEqualZassertLessEqual)
rrrZthrrrrrrr)rr�check_len_race|s(
zMappingTestCase.check_len_racecCs|jtjdd��dS)NcSs|dfS)Nr'r)r�rrrr��sz:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>)r"r9r�)rrrr�test_weak_keyed_len_race�sz(MappingTestCase.test_weak_keyed_len_racecCs|jtjdd��dS)NcSsd|fS)Nr'r)r�rrrr��sz;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>)r"r9r )rrrr�test_weak_valued_len_race�sz)MappingTestCase.test_weak_valued_len_racecCs�|j�\}}x2|D]*}|jtj|�d�|j|||jd�qWt|j��}t|j�j��}|j	�|j	�|j||d�~~|jt
|�|j�|d=|jt
|�|jdd�~~|jt
|�dd�tj�}|j
t|jd�t�|d<|j
t|jd�dS)Nr'z#wrong object returned by weak dict!z/cloning of weak-valued dictionary did not work!rz/deleting object did not cause dictionary updatez0deleting the values did not clear the dictionaryrE)�make_weak_valued_dictrFr9rXrBrr�r�copy�sortre�COUNTr rM�KeyError�__getitem__r)r�dict�objectsr;�items1�items2rrr�test_weak_values�s.


z MappingTestCase.test_weak_valuescCs�|j�\}}x8|D]0}|jtj|�dd|�|j|j||d�qW|j�}|j�j�}|jt|�t|�d�~~|jt	|�|j
�|d=|jt	|�|j
dd�~~|jt	|�dd�td�}d	||<|j||�|j
d
|�dS)Nr'z&wrong number of weak references to %r!z#wrong object returned by weak dict!z.cloning of weak-keyed dictionary did not work!rz/deleting object did not cause dictionary updatez.deleting the keys did not clear the dictionaryrxz$What is the meaning of the universe?�")�make_weak_keyed_dictrFr9rXrBrrr&�setrer(rrg�assertNotIn)rr+r,r;r-r.rrr�test_weak_keys�s,


zMappingTestCase.test_weak_keyscCs|j�\}}|j|�|j�}|jt|�t|��t|�}xF|D]>}|�}|j||�|j||�|j|j||�|j|�q@W|jt|�d�t|�}|jtt|j���t|��xJ|j�D]>}|�}|j||�|j||�|j|j||�|j|�q�W|jt|�d�dS)Nr)	r1�check_iters�keyrefsrFrer�rgrr�)rr+r,r��objects2r<r�rrr�test_weak_keyed_iters�s*

z%MappingTestCase.test_weak_keyed_iterscCs|j�\}}|j|�|j�}|jt|�t|��t|�}xD|D]<}|�}|j|||j�|j|j||jj�|j|�q@W|jt|�d�t|�}|jtt|j���t|��xH|j�D]<}|�}|j|||j�|j|j||jj�|j|�q�W|jt|�d�dS)Nr)	r%r5�	valuerefsrFrer�rr��
itervaluerefs)rr+r,r�r7r<r�rrr�test_weak_valued_iters�s&

z&MappingTestCase.test_weak_valued_iterscCs�t|j��}x|j�D]}|j|�qW|j|d�t|j��}x|D]}|j|�qFW|j|d�t|j��}x|j�D]}|j|�qzW|j|d�t|j��}x|j�D]}|j|�q�W|j|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�rr�rc�keys�values)rr+r�itemr<r�r=�vrrrr5s"
zMappingTestCase.check_iterscCslt|�}tt||���}t|�|d=tj�|jtt|��t|�t|�dg�~|jt|�|d�dS)Nr'���)	re�iter�getattrrr-r.rgr�rF)rr+r,Z	iter_namer�rrrr�"check_weak_destroy_while_iterating!s$z2MappingTestCase.check_weak_destroy_while_iteratingc-Cs|��\}}|j||�WdQRX|��\}}|jt|j|�WdQRX|j||�|��\}}|jt|j|�WdQRX|j||�|��\}}|||<WdQRX|j|||�tj|�}|��\}}|j|�WdQRX|j||�|��\}}|j�WdQRX|jt	|�d�dS)Nr)
r3rMr)r��poprFr&�update�clearre)rr+�testcontextr�r?Zddictrrr�-check_weak_destroy_and_mutate_while_iterating.s$
z=MappingTestCase.check_weak_destroy_and_mutate_while_iteratingc&Csjtd�}|��Lt|�}|jt|j���|jt|�|d�|||<|jt|�|�WdQRX|��6|jt|�|d�|j�|jt|�|d�WdQRX|��<|jt|�|d�|t|j��=|jt|�|d�WdQRX|��6|jt|�|d�|j�|jt|�|d�WdQRX|��|j�|jt|�d�WdQRX|jt|�d�dS)	Ni@�r'rEr^rr r�r)rrerDrr<rF�popitemrF)rr+rGr;r�rrr�&check_weak_del_and_len_while_iteratingGs.z6MappingTestCase.check_weak_del_and_len_while_iteratingcs�|j�\��|j��d�|j��d�|j��d�|j��d�|j�\��tj��fdd��}|j�|�|j�\��|j�|�dS)Nr<rr=r6c
3sLz8t�j��}t|��j�j}tj�t|�|fVWdd}tj�XdS)N)rArrrDrr-r.r)rr?)r+r,rrrGps
zKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext)r1rC�
contextlib�contextmanagerrHrJ)rrGr)r+r,r�&test_weak_keys_destroy_while_iteratinghsz6MappingTestCase.test_weak_keys_destroy_while_iteratingcs�|j�\��|j��d�|j��d�|j��d�|j��d�|j��d�|j�\��tj��fdd��}|j�|�|j�\��|j�|�dS)Nr<rr=r:r9c
3sLz8t�j��}t|��j�j}tj�|t|�fVWdd}tj�XdS)N)rArrrDrr-r.r)rr�)r+r,rrrG�s
zMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontext)r%rCrKrLrHrJ)rrGr)r+r,r�(test_weak_values_destroy_while_iterating�sz8MappingTestCase.test_weak_values_destroy_while_iteratingcCs*td�}tj|di�}|j||d�dS)Nr^il)rr9r�rF)rr;r+rrr�#test_make_weak_keyed_dict_from_dict�sz3MappingTestCase.test_make_weak_keyed_dict_from_dictcCs4td�}tj|di�}tj|�}|j||d�dS)Nr^il)rr9r�rF)rr;r+�dict2rrr�.test_make_weak_keyed_dict_from_weak_keyed_dict�s
z>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictcCs<tj�}tttt|j���}x|D]}|j||<q"W||fS)N)r9r�r��maprrhr(r)rr+r,r;rrrr1�s

z$MappingTestCase.make_weak_keyed_dictcCs*td�}tjd|i�}|j|d|�dS)Nr^il)rr9r rF)rr;r+rrr�$test_make_weak_valued_dict_from_dict�sz4MappingTestCase.test_make_weak_valued_dict_from_dictcCs4td�}tjd|i�}tj|�}|j|d|�dS)Nr^il)rr9r rF)rr;r+rPrrr�0test_make_weak_valued_dict_from_weak_valued_dict�s
z@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictcCs�|jttjj�|jttjii�|jttjff�td�}xBdD]:}tjf||i�}|jt|j��|g�|j|||�qBWdS)Nr^rr+r�iterable)rr+rrU)	rMrNr9r rrrFr�r<)rr;�kwr�rrr�test_make_weak_valued_dict_misc�s
z/MappingTestCase.test_make_weak_valued_dict_misccCs<tj�}tttt|j���}x|D]}|||j<q"W||fS)N)r9r r�rRrrhr(r)rr+r,r;rrrr%�s

z%MappingTestCase.make_weak_valued_dictc	Cs�|�}|||<|||<|jt|�d�|j�\}}|jt|�d�||krX|j||�n|j||�|j�\}}|jt|�d�||kr�|j||�n|j||�dS)NrEr'r)rFrerIrB)	r�klass�key1�value1�key2�value2�weakdictr�r?rrr�
check_popitem�szMappingTestCase.check_popitemcCs|jtjdt�dt��dS)NrYr[)r^r9r r)rrrr�test_weak_valued_dict_popitem�sz-MappingTestCase.test_weak_valued_dict_popitemcCs|jtjt�dt�d�dS)Nzvalue 1zvalue 2)r^r9r�r)rrrr�test_weak_keyed_dict_popitem�sz,MappingTestCase.test_weak_keyed_dict_popitemcCs�|j||d�|�}|j||�}|j||�|j||�|j|j|�|�|j|||�|j||�}|j||�|j||�|j|j|�|�|j|||�dS)Nz9invalid test -- value parameters must be distinct objects)r��
setdefaultrBrg�get)rrX�keyrZr\r]r;rrr�check_setdefault�sz MappingTestCase.check_setdefaultcCs|jtjdt�t��dS)Nrc)rdr9r r)rrrr� test_weak_valued_dict_setdefault�sz0MappingTestCase.test_weak_valued_dict_setdefaultcCs|jtjt�dd�dS)Nzvalue 1zvalue 2)rdr9r�r)rrrr�test_weak_keyed_dict_setdefault�sz/MappingTestCase.test_weak_keyed_dict_setdefaultcCs�|�}|j|�|jt|�t|��xJ|j�D]>}|j||d�|j|�}|j|||�|j||j|��q.WxH|j�D]<}|j||d�||}|j|||�|j||j|��qzWdS)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)rErFrer<rgrbrB)rrXr+r]r�r?rrr�check_update�s

zMappingTestCase.check_updatecCs�|jtjdt�dt�t�t�i�|jttjj�tj�}|jt|jii�|jt|jff�|jt|j	��g�t
d�}xJdD]B}tj�}|jf||i�|jt|j	��|g�|j|||�q�WdS)	Nr'r�r^rr+rrU)rr+rrU)rgr9r rrMrNrErFr�r<r)rr�r;rVrrr�test_weak_valued_dict_updates
z,MappingTestCase.test_weak_valued_dict_updatecCs$|jtjt�dt�dt�di�dS)Nr'rEr^)rgr9r�r)rrrr�test_weak_keyed_dict_update"sz+MappingTestCase.test_weak_keyed_dict_updatecCshtj�}td�}td�}d||<d||<|jt|�d�||=|jt|�d�|jt|j��|g�dS)N�1�2�	somethingrEr')r9r�rrFrer�r<)rr��o1rWrrr�test_weak_keyed_delitem&sz'MappingTestCase.test_weak_keyed_delitemcCsltj�}td�}td�}||d<||d<|jt|�d�|d=|jt|�d�|jt|j��d|fg�dS)Nrjrkrlzsomething elserEr')r9r rrFrer�r)rr�rmrWrrr�test_weak_valued_delitem1sz(MappingTestCase.test_weak_valued_delitemcCsftj�}td�}|jt|j|�|jt|j|�|jt|jd�|jt|jd�|jt|jdd�dS)Nrj�
)	r9r�rrMr)r�r*rN�__setitem__)rr�r;rrr�test_weak_keyed_bad_delitem<sz+MappingTestCase.test_weak_keyed_bad_delitemcs�tj�}d�G��fdd�dt���fdd�td�D��x�D]}|j||<q>W~t|j����j�d�d}x�D]}|d	7}||=qtW|jt	|�d�|j|d
�dS)NFcs*eZdZdd�Zdd�Z��fdd�ZdS)z<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.CcSs
||_dS)N)r�)rr�rrrrSszEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__cSs
t|j�S)N)rr�)rrrrrUszEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__cs�r
�d=|j|jkS)Nr'r@)r�)rr)�mutate�objsrrrWszCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__N)r	r
rrrrr)rsrtrrrRsrcsg|]}�|��qSrr)rr�)rrrr^szEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>rTrr'rE)
r9r�rJrhr�r�r<�reverserFre)rr�r;�countr)rrsrtr�!test_weak_keyed_cascading_deletesJs 
	

z1MappingTestCase.test_weak_keyed_cascading_deletescCstj�}|jt|�d�dS)Nz<WeakValueDictionary at 0x.*>)r9r �assertRegexr:)rr+rrr�test_make_weak_valued_dict_reprwsz/MappingTestCase.test_make_weak_valued_dict_reprcCstj�}|jt|�d�dS)Nz<WeakKeyDictionary at 0x.*>)r9r�rxr:)rr+rrr�test_make_weak_keyed_dict_repr{sz.MappingTestCase.test_make_weak_keyed_dict_reprcCsLtj�}t��4x,td�D] }|jdt��}|j|d�~qWWdQRXdS)Ni��r_)r9r r6rhrar"r�)rr�r�rrrr�$test_threaded_weak_valued_setdefaultsz4MappingTestCase.test_threaded_weak_valued_setdefaultcCsRtj�}t��:x2td�D]&}t�|d<|jdd�}|j|d�qWWdQRXdS)Ni��r_)r9r r6rhr"rDr�)rr�r�rrrr�test_threaded_weak_valued_pop�s
z-MappingTestCase.test_threaded_weak_valued_popcCsRtj�}t��:x2td�D]&}t�}||d<|jt|�d�d}qWWdQRXdS)Ni@
r_r')r9r r6rhr"rFre)rr�r�r;rrr�%test_threaded_weak_valued_consistency�sz5MappingTestCase.test_threaded_weak_valued_consistencyN)-r	r
rr(rrr!r"r#r$r/r4r8r;r5rCrHrJrMrNrOrQr1rSrTrWr%r^r_r`rdrerfrgrhrirnrorrrwryrzr{r|r}rrrrr^sT
!-r)�
mapping_testsc@s6eZdZdZed�ed�ed�d�ZejZdd�Z	dS)	�WeakValueDictionaryTestCasez?Check that WeakValueDictionary conforms to the mapping protocolr'rEr^)rYr[�key3cCs
|jj�S)N)�!_WeakValueDictionaryTestCase__refr&)rrrr�
_reference�sz&WeakValueDictionaryTestCase._referenceN)
r	r
r�__doc__rr�r9r �	type2testr�rrrrr�src@s:eZdZdZed�ded�ded�diZejZdd	�Z	d
S)�WeakKeyDictionaryTestCasez=Check that WeakKeyDictionary conforms to the mapping protocolrYr'r[rEr�r^cCs
|jj�S)N)�_WeakKeyDictionaryTestCase__refr&)rrrrr��sz$WeakKeyDictionaryTestCase._referenceN)
r	r
rr�rr�r9r�r�r�rrrrr��sr�c@sNeZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zedd��Z	d
d�Z
dS)�FinalizeTestCasec@seZdZdS)zFinalizeTestCase.AN)r	r
rrrrrr��sr�cCstjjdkrtj�dS)NZcpython)�sys�implementation�namerr�)rrrr�_collect_if_necessary�sz&FinalizeTestCase._collect_if_necessarycs��fdd�}|j�}g�tj||dddd�}|j|jd�|j|j�||dddif�|j|�d	�|j|�d�|j|�d�|j|j�d�|j|j�d�|j|jd
�|j�d	g�g�tj||ddd�}|j|j�||d
if�|j|j�||dif�|j|�d�|j|�d�|j|j�d�|j|j�d�|j|jd
�|j�g�g�tj||dddd�}~|j�|j|�d�|j|�d�|j|j�d�|j|j�d�|j|jd
�|j�d	g�dS)Ncs�j|||�|||S)N)rd)rr�r�)�resrr�add�sz+FinalizeTestCase.test_finalize.<locals>.add�C�+�Y)r�Tr���F)rr�r�)r�r�)r�r�r�)r�r�r�)r�r9�finalizerF�alive�peek�detachr�)rr�r�rr)r�r�
test_finalize�sBzFinalizeTestCase.test_finalizec	Cs$|j�}g}tj||jd�}tj||jd�}tj||jd�}tj||jd�}tj||jd�}~~|j|j�|j|j�|j|j�|j|j��|j|j�|�|jd�|�|j|j�|jd�|�|jd�~|j�|j|j�|jd	�|�dddddddd	g}|j	||�dS)
N�f1�f2�f3�f4�f5r��Brr�)
r�r9r�rdrfr�r�rcr�rF)	rr�r�r�r�r�r�r�Zexpectedrrr�
test_order�s6



zFinalizeTestCase.test_ordercs�Gdd�dtj�}|j�}g��fdd�}|||�}tj|�}tj|�}~~|j|��|j|��~|j�|j|��|j|��|j�dg�dS)Nc@seZdZdS)z4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerN)r	r
rrrrr�MyFinalizer	sr�cs�jd�dS)N�{)rdr)r�rrr)sz1FinalizeTestCase.test_all_freed.<locals>.callbackr�)r9r�r�r(rUr�rCrF)rr�r�r)rZwr_callbackZwr_fr)r�r�test_all_freeds


zFinalizeTestCase.test_all_freedcs|�fdd�}tj�tdt�}tj�tdt�}tj�|�}tj�tdt�}|jdksVt�d|_|jdksjt�|jdksxt�dS)Ncs"tj�td�}td�dddS)N�g1zf3 errorr'r)r9r��print)r�)�clsrr�error"sz,FinalizeTestCase.run_in_child.<locals>.errorr�r�r�TF)r9r�r��_global_var�atexit�AssertionError)r�r�r�r�r�r�r)r�r�run_in_child szFinalizeTestCase.run_in_childcCsJd
}tjd|�\}}}|jd�j�}|j|ddddg�|jd	|k�dS)Nz/from test.test_weakref import FinalizeTestCase;zFinalizeTestCase.run_in_child()z-c�asciiz	f4 foobarzf3 errorr�z	f1 foobarsZeroDivisionErrorzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child())rZassert_python_ok�decode�
splitlinesrFrf)r�progZrc�out�errrrr�test_atexit4szFinalizeTestCase.test_atexitN)r	r
rr�r�r�r�r��classmethodr�r�rrrrr��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

�
libreftestcCs*tjttttttt�tj	t
jt�dS)N)
rZrun_unittestr7r�rrr�r�r�Zrun_doctestr��modulesr	rrrr�	test_main�sr��__main__)r*)&r-r�Zunittestrar9rurKr&r,ZtestrZtest.supportrr�r�rrrrrr"ZTestCaser$rLr6r7r�r�rr~ZBasicTestMappingProtocolrr�r�r�Z__test__r�r	rrrr�<module>s\	gBb


Youez - 2016 - github.com/yon3zu
LinuXploit