python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_weakref.cpython-311.pyc

eF)ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZddlmZddlmZdadZGddZGd	d
ZdZdZGd
dZGddZGddejZejd*dZGddeZGddeZ GddejZ!GddeZ"ddlm#Z#Gdde#j$Z%Gd d!e#j$Z&Gd"d#ejZ'Gd$d%ejZ(d&Z)d'e)iZ*d(Z+e,d)krej-dSdS)+N)support)
script_helper	ALWAYS_EQ)
gc_collect)threading_helperfoobarceZdZdZdS)CcdSNselfs E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_weakref.pymethodzC.methodsN)__name__
__module____qualname__rr
rrr
r
s#




rr
ceZdZdZdZdS)CallableNc||_dSrbarrxs  r__call__zCallable.__call__"s
r)rrrrrr
rrrrs(
Crrcd}|S)NcdSrr
r
rrfzcreate_function.<locals>.f'rr
)r s rcreate_functionr"&sMMHrc(tjSr)r
rr
rrcreate_bound_methodr$*s33:rc8eZdZdZdZdZdZdZdZdZ	dS)	Objectc||_dSrarg)rr)s  r__init__zObject.__init__/s
rcd|jzS)Nz<Object %r>r(rs r__repr__zObject.__repr__1stx''rcZt|tr|j|jkStSr
isinstancer&r)NotImplementedrothers  r__eq__z
Object.__eq__3s)eV$$	)8uy((rcZt|tr|j|jkStSrr.r1s  r__lt__z
Object.__lt__7s)eV$$	(8ei''rc*t|jSr)hashr)rs r__hash__zObject.__hash__;sDH~~rcdS)Nr
rs rsome_methodzObject.some_method=qrcdS)Nr
rs rother_methodzObject.other_method?r<rN)
rrrr*r,r3r5r8r;r?r
rrr&r&.s}(((rr&ceZdZdZdS)RefCyclec||_dSr)cyclers rr*zRefCycle.__init__Ds



rNrrrr*r
rrrArACs#rrAceZdZdZdZdS)TestBasecd|_dSNrcbcalledrs rsetUpzTestBase.setUpJs



rc&|xjdz
c_dSNrI)rrefs  rcallbackzTestBase.callbackMs





rN)rrrrKrPr
rrrFrFHs2rrF-C6?c#8Kdfd}tj5tj|}|	dVd|n#d|wxYw	ddddS#1swxYwYdS)zR
    Ensure GC collections happen in a different thread, at a high frequency.
    Fcbs+tjtj)dSdSr)timesleepgccollect)periodplease_stopsrrWz"collect_in_thread.<locals>.collectXsD	JvJLLL					r)targetNT)r
disable_gc	threadingThreadstartjoin)rXrWtrYs`  @rcollect_in_threadraQs
K

			G,,,					EEEK
FFHHHHK
FFHHHHHs)*BA&B&A>>BBBcfeZdZdZdZdZejdZdZ	dZ
dZdZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6S)7ReferencesTestCasec$|t|t|tt}t	j|}t
|~t
|dSr)check_basic_refr
r"r$weakrefrOrepr)rowrs   rtest_basic_refz!ReferencesTestCase.test_basic_refistQ_---0111
CC
[^^R
RrcGddt}|d}tj|}|dt	||dt|dS)NceZdZdZdS)>ReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfigc||Srr
rs  r__getattr__zJReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfig.__getattr__ysAwrN)rrrror
rrMyConfigrmx#




rrpr>)offset)dictrfrOassertInrgstr)rrpobjobj_weakrefs    rtest_repr_failure_gh99184z,ReferencesTestCase.test_repr_failure_gh99184ws					t			ha   k#&&

j${"3"3444

j#k"2"233333rc|t|t|tdSr)check_basic_callbackr
r"r$rs rtest_basic_callbackz&ReferencesTestCase.test_basic_callbacksE!!!$$$!!/222!!"566666rc$ddl}|j}|}tj|}|||~||||||dSrH)	_testcapicreate_cfunctionrfrOassertIsassertIsNonererz)rr}r~r ris     rtest_cfunctionz!ReferencesTestCase.test_cfunctions$5
[^^

bbddA
""$$-...!!"233333rcXt}tj||j}tj||j}~t	||d||d||jdddS)Nz$expected reference to be invalidatedz-callback not called the right number of times)r
rfrOrPrrassertEqualrJrrhref1ref2s    rtest_multiple_callbacksz*ReferencesTestCase.test_multiple_callbackss
CC{1dm,,{1dm,,
$$&&"HIII$$&&"HIIID	F	F	F	F	Frc|fd}t}tj|||_tj||}~dS)Nc.|dSrrO)objectrs  rrPzDReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callbacksHHJJJJJr)r
rfrO)rrPcrs    rtest_multiple_selfref_callbacksz2ReferencesTestCase.test_multiple_selfref_callbackssO#'				
CC;q(++{1h''
AArcrt}|ttj|ddS)N)rP)r
assertRaises	TypeErrorrfrO)rrs  rtest_constructor_kwargsz*ReferencesTestCase.test_constructor_kwargss0
CC)W[!dCCCCCrct}d|_tj||j}tj||j}~td}|t|||t||tjt}t|tt||	|j
ddS)NrNc|jdSrr)proxys rcheckz0ReferencesTestCase.test_proxy_ref.<locals>.checks
IIIIrr)r
rrfrrPrrReferenceErrorboolrrJ)rrhrrrref3s      rtest_proxy_refz!ReferencesTestCase.test_proxy_refs
CC}Q
..}Q
..
				
.%666.%666}QSS!!.$555*****rc|}tj|}||d|}|||ddS)Nz,weak reference to live object should be livez-<ref>() should return original object if live)rfrOassertIsNotNoner)rfactoryrhrOo2s     rrez"ReferencesTestCase.check_basic_refswGIIk!nnSSUUC	E	E	E
SUU

aD	F	F	F	F	Frcd|_|}tj||j}~t	||jdd||ddS)NrrNz(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object reference)rJrfrOrPrrr)rrrhrOs    rrzz'ReferencesTestCase.check_basic_callbacks
GIIk!T]++
?	A	A	A##%%J	L	L	L	L	LrcLt}tj|}tj|}tj|}|||dt}tj|}tj|}tj|}|||d|tj|dd~t|tj|dddS)Nz1reference object w/out callback should be re-usedrzwrong weak ref count for objectrNz4wrong weak ref count for object after deleting proxy)r
rfrOrrrgetweakrefcountr)rrhrrrs     rtest_ref_reusez!ReferencesTestCase.test_ref_reuses
CC{1~~
a  {1~~

dDH	J	J	J
CC
a  {1~~{1~~

dDH	J	J	J033Q6	8	8	8033QK	M	M	M	M	Mrct}tj|}tj|}tj|}|||ddS)Nz4proxy object w/out callback should have been re-used)r
rfrrOr)rrhproxy1rOproxy2s     rtest_proxy_reusez#ReferencesTestCase.test_proxy_reusesb
CCq!!k!nnq!!

ffK	M	M	M	M	Mrct}||tj|t	j}tj|}||d|d|t|d|
|dddg|dd<|t|d|t|d|d|dd|d<||dd||ddt	j|}tj|}|||t	jtd	}tj|}||dd|dd||dd|dd||dd|dd||dd|dddS)
Nz(proxy for empty UserList should be falserNz+proxy for non-empty UserList should be truerz,proxy didn't support __contains__() properlyr>
)
r
check_proxyrfrcollectionsUserListassertFalseappendrlen
assertTruertrange)rrhLpL2p2L3p3s        rtest_basic_proxyz#ReferencesTestCase.test_basic_proxys4
CCGM!,,--- ""M!FGGG	Q###HIII1v!!!Q###Q###

aJKKK!1q!!!1q!!!

!!
$
$
]2

B

!%))
,
,
]2

AAA111&&&ABBABB(((BQBBQB(((AaC"QqS'*****rcGddt}|}|dttj||t
tj|ddS)NceZdZdZdZdS)0ReferencesTestCase.test_proxy_unicode.<locals>.CcdS)Nstringr
rs r__str__z8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__xrcdS)Nbytesr
rs r	__bytes__z:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__rrN)rrrrrr
rrr
rs2
 
 
 
 
 
 
 
 rr
rr)rrtdirrfrrbytes)rr
instances   rtest_proxy_unicodez%ReferencesTestCase.test_proxy_unicodes	 	 	 	 	 	 	 	 
133

k3w}X'>'>#?#?@@@w}X6677BBBBBrcGdd}|}tj|}|tj|ddS)NceZdZdZdS).ReferencesTestCase.test_proxy_index.<locals>.CcdS)Nrr
rs r	__index__z8ReferencesTestCase.test_proxy_index.<locals>.C.__index__"rrN)rrrrr
rrr
r!#




rr
r)rfrroperatorindexrr
rhrs    rtest_proxy_indexz#ReferencesTestCase.test_proxy_index sl								
ACCM!**B/////rcGdd}|}tj|}||dzd|dz}||ddS)NceZdZdZdZdS),ReferencesTestCase.test_proxy_div.<locals>.CcdSN*r
r1s  r__floordiv__z9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__*rrcdS)Nr
r1s  r
__ifloordiv__z:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv__,rrN)rrrrrr
rrr
r)s2







rr
r>rrrfrrrs    rtest_proxy_divz!ReferencesTestCase.test_proxy_div(s								

ACCM!a$$$	aBrcGdd}|}tj|}||dzd|d|zd|dz}||ddS)Nc eZdZdZdZdZdS)/ReferencesTestCase.test_proxy_matmul.<locals>.CcdS)Nr
r1s  r
__matmul__z:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__6trcdS)N]r
r1s  r__rmatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__8rrcdS)N1r
r1s  r__imatmul__z;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__:ssrN)rrrrrrr
rrr
r5sA










rr
r>rrrrrs    rtest_proxy_matmulz$ReferencesTestCase.test_proxy_matmul4s								
ACCM!Q%%%Q%%%	QC     rcD|tjdSr)check_shared_without_callbackrfrOrs r test_shared_ref_without_callbackz3ReferencesTestCase.test_shared_ref_without_callbackKs**7;77777rcD|tjdSr)rrfrrs r"test_shared_proxy_without_callbackz5ReferencesTestCase.test_shared_proxy_without_callbackNs**7=99999rctd}||d}||d}|||d~~||}||d}|||d~~||}||}|||d~~||d}||}|||ddS)NrNz%both callbacks were None in the C APIz&callbacks were NULL, None in the C APIz%both callbacks were NULL in the C APIz&callbacks were None, NULL in the C API)r&r)rmakerefrhp1rs     rrz0ReferencesTestCase.check_shared_without_callbackQs1II
WQ


WQ



b"EFFF
WQZZ
WQ



b"FGGG
WQZZ
WQZZ

b"EFFF
WQ


WQZZ

b"FGGGGGrct}tj|}||||t|tjd|d||jdd|d||jdd|	t||	t|ddddS)	Nzproxy is not of callable typez	twinkies!z1call through proxy not passed through to originalzSplat.)rrNrr)rrfrrrtypeCallableProxyTyperrrr)rrhrs   rtest_callable_proxyz&ReferencesTestCase.test_callable_proxycsJJ}QD!!!

d4jj'";4	6	6	6[H	J	J	JxH	J	J	J	
)T***	
)T1a33333rcd|_||jddd|_||jdd|`|t|ddd|_||jddd|_||jdd|`|t|dd	dS)
NrNz)proxy does not reflect attribute additionrz-proxy does not reflect attribute modificationfooz(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)rrrhasattr)rrhrs   rrzReferencesTestCase.check_proxyxsA@	B	B	BAD	F	F	F
E..?	A	A	A	K	M	M	M	F	H	H	HIE**J	L	L	L	L	LrcGdd}|}tj|}|d=||jddS)NceZdZdZdZdS)3ReferencesTestCase.test_proxy_deletion.<locals>.FooNc||_dSr)result)raccessors  r__delitem__z?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__s
&r)rrrrrr
rrFoors(F
'
'
'
'
'rrr)rfrrr)rrgr s    rtest_proxy_deletionz&ReferencesTestCase.test_proxy_deletionsk	'	'	'	'	'	'	'	'
CEEM!
aD1%%%%%rcGddt}|}|ttj|t|dS)NceZdZdS)0ReferencesTestCase.test_proxy_bool.<locals>.ListNrrrr
rrListrsrr
)listrrrfr)rr
lysts   rtest_proxy_boolz"ReferencesTestCase.test_proxy_bools[4tvvgmD1122DJJ?????rcdGfdd}|tj}|t5d|vddddS#1swxYwYdS)NceZdZfdZdS)1ReferencesTestCase.test_proxy_iter.<locals>.MyObjctSr)r0)rrvs r__iter__z:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__s%%rNrrrr)rvsrMyObjrs.
&
&
&
&
&
&
&rrblech)rfrrr)rrrrvs   @rtest_proxy_iterz"ReferencesTestCase.test_proxy_iters	&	&	&	&	&	&	&	&	&	&eggM#


y
)
)		
qLL																			sAA!$A!cgdfd}|Gfdd}|}|t|gddS)N)r:r>c3KEd{VdSrr
)arrsr
iterator_funcz9ReferencesTestCase.test_proxy_next.<locals>.iterator_funcsNNNNNNNNNrceZdZfdZdS):ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklyc,tjSrrfr)rits rrzCReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__s}R(((rNr)r srIteratesWeaklyrs.
)
)
)
)
)
)
)rr!)rr)rrr!weak_itrr s    @@rtest_proxy_nextz"ReferencesTestCase.test_proxy_nextsii					
]__	)	)	)	)	)	)	)	)	)	)!.""	
g			22222rcdGfdd}|}d}|t|5t|ddddS#1swxYwYdS)NcdSrHr
r
rr<lambda>z8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>s!rceZdZfdZdS)1ReferencesTestCase.test_proxy_bad_next.<locals>.Ac,tjSrr)rnot_an_iterators rrz:ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__s}_555rNr)r*srAr(s.
6
6
6
6
6
6
6rr+z'Weakref proxy referenced a non-iterator)assertRaisesRegexrr)rr+amsgr*s    @rtest_proxy_bad_nextz&ReferencesTestCase.test_proxy_bad_nexts$)	6	6	6	6	6	6	6	6	6	6
ACC7

#
#Is
3
3		GGG																		sAAAc	Gdd}|}|dttj|ddS)NceZdZdZdZdS)5ReferencesTestCase.test_proxy_reversed.<locals>.MyObjcdS)Nrr
rs r__len__z=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__qrc tdS)Ncba)iterrs r__reversed__zBReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__sE{{"rN)rrrr4r9r
rrrr2s2



#
#
#
#
#rrr7)rr_reversedrfrrrrvs   rtest_proxy_reversedz&ReferencesTestCase.test_proxy_reversedsq	#	#	#	#	#	#	#	#egg'-*<*<!=!=>>FFFFFrcGdd}|}|t5ttj|dddn#1swxYwYGdd}|}|t5ttj|ddddS#1swxYwYdS)NceZdZdZdS)1ReferencesTestCase.test_proxy_hash.<locals>.MyObjcdSrr
rs rr8z:ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__rrNrrrr8r
rrrr@rrrceZdZdZdS)r@NrBr
rrrz1ReferencesTestCase.test_proxy_hash.<locals>.MyObjsHHHr)rrr7rfrr<s   rtest_proxy_hashz"ReferencesTestCase.test_proxy_hashs}								egg


y
)
)	%	%s##$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%								egg


y
)
)	%	%s##$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%s#"A  A$'A$"CCCcFt}tj|}tj||j}|tj|ddtj|}tj||j}|tj|dd~~~~t|tj|dd|tjddddS)Nrz*got wrong number of weak reference objectsr:rzAweak reference objects not unlinked from referent when discarded.rNz2got wrong number of weak reference objects for int)r
rfrOrPrrrr)rrhrrrrs      rtest_getweakrefcountz'ReferencesTestCase.test_getweakrefcounts$
CC{1~~{1dm,,033QA	C	C	Cq!!q$-00033QA	C	C	C
$033Q1	2	2	2
	
033QI	K	K	K	K	Krct}tj||j}tj||j}~t	|tj||gdt}tj||j}tj||j}~t	|tj||gd~t	|tj|gd|tjdgddS)Nzlist of refs does not matchzlist of refs not clearedrNz#list of refs does not match for int)r
rfrOrPrrgetweakrefsrs    rtest_getweakrefsz#ReferencesTestCase.test_getweakrefss@
CC{1dm,,{1dm,,,Q//$2	4	4	4
CC{1dm,,{1dm,,,Q//$2	4	4	4
,Q///	1	1	1	
,Q//:	<	<	<	<	<rcGddt}|d}tj|}||dzd|d|zddS)NceZdZdS)6ReferencesTestCase.test_newstyle_number_ops.<locals>.FNr	r
rrFrLDrrMg@g?g@)floatrfrr)rrMr rs    rtest_newstyle_number_opsz+ReferencesTestCase.test_newstyle_number_opss								
AcFFM!S#&&&q#&&&&&rcGddtifdfd}	||dn#$rYnwxYw	||ddS#$rYdSwxYw)NceZdZdS)?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErrorNr	r
rr
BogusErrorrS%rNrrTc|=dSrr
)kdatas rremovez;ReferencesTestCase.test_callbacks_protected.<locals>.remove(sQrc>d}dtj|<)NcdS)Nr
r
r
rrr&zRReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>+sr)rfrO)r rTrWrXs rencapsulatez@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulate*s&A+/DQ''(rzexception not properly restored)	Exceptionfail)rr[rTrWrXs  @@@rtest_callbacks_protectedz+ReferencesTestCase.test_callbacks_protected"s																						9KMMM
II78888			D		9KMMM
II788888			DD	s#
AA
A
A33A<;A<cddlGddt}|}tj|fd}~~|}||_tj|jfd}|}||_~~dS)NrceZdZdS)0ReferencesTestCase.test_sf_bug_840829.<locals>.CNr	r
rrr
raHrNrr
c"jSrrWignorerVs rr&z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Ls:2:<<rc"jSrrcrds rr&z7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>Tsjbjllr)rVrrfrOic1)rr
rrirhc2rVs      @rtest_sf_bug_840829z%ReferencesTestCase.test_sf_bug_840829;s												
ACC
[7777
8
8


QSSqss
[::::
;
;
QSS
BBrcddl}Gddt}Gddt}|}||_tj||j|_~~~|jdS)NrceZdZdS)4ReferencesTestCase.test_callback_in_cycle.<locals>.JNr	r
rrJrmfrNrrnceZdZdZdS)5ReferencesTestCase.test_callback_in_cycle.<locals>.IIc|jdSr)rnrres  r	acallbackz?ReferencesTestCase.test_callback_in_cycle.<locals>.II.acallbackjs
rN)rrrrsr
rrIIrpis#




rrt)rVrrnrfrOrsrirW)rrVrnrtIs     rtest_callback_in_cyclez)ReferencesTestCase.test_callback_in_cyclecs																			
BDD{1ak**2
q"
rcddl}Gdd}||}}||_||_tj||j|_~~|jdS)NrceZdZdZdS)=ReferencesTestCase.test_callback_reachable_one_way.<locals>.Cc0|j|j|jdSrmerhrirrs  rcbz@ReferencesTestCase.test_callback_reachable_one_way.<locals>.C.cbrNrrrr}r
rrr
ry#




rr
)rVr|rhrfrOr}rirW)rrVr
rhris     rtest_callback_reachable_one_wayz2ReferencesTestCase.test_callback_reachable_one_ways											aaccBB&&
rcddl}Gddt}Gdd}||}}||_||_t	j||j|_~~~~|jdS)NrceZdZdZdS)=ReferencesTestCase.test_callback_different_classes.<locals>.Cc0|j|j|jdSrr{rrs  rr}z@ReferencesTestCase.test_callback_different_classes.<locals>.C.cbr~rNrr
rrr
rrrr
ceZdZdS)=ReferencesTestCase.test_callback_different_classes.<locals>.DNr	r
rrDrrNrr)	rVrr|rhrfrOr}rirW)rrVr
rrhris      rtest_callback_different_classesz2ReferencesTestCase.test_callback_different_classess																			aaccBB&&Aq
rcDddl}gGfddt}|d|d}}||_||_tj||j|_tj||j|_fd}tj||}~~~|g|j|dg||ddd=|j|gdS)Nrc eZdZdZfdZdS)AReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.Cc||_dSr)	attribute)rvalues  rr*zJReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__s
!&rc<|jdSr)rrrrealists  rrszKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallbacksTV$$$$$rN)rrrr*rsrsrr
rs=
'
'
'
%
%
%
%
%
%
%rr
rNrc2ddS)NC went awayrrers rC_went_awayzKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_awaysLL'''''rr)	rVrrrfrOrsrirrW)rrVr
rhrirrirs       @r#test_callback_in_cycle_resurrectionz6ReferencesTestCase.test_callback_in_cycle_resurrectionsX				%	%	%	%	%	%	%	%	%	%1qqttBB--B--	(	(	(	(	(
[K
(
(A###

	
000t$$$!!!H
#####rcddl}gfd}Gfddt}||}}||_||_|j}t	j|||_t	j||j|_t	j||}|||~~~~|g|j	|dg||ddd=|j	|gdS)Nrc2ddS)Nsafe_callback calledrrs r
safe_callbackzDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callbacksLL/00000rceZdZfdZdS)8ReferencesTestCase.test_callbacks_on_callback.<locals>.Cc2ddS)Nz	cb calledrrs  rr}z;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cbs[)))))rNrrsrr
rs.
*
*
*
*
*
*
*rr
r)
rVrr2r}rfrOrirrrW)	rrVrr
rdrPexternal_wrrs	        @rtest_callbacks_on_callbackz-ReferencesTestCase.test_callbacks_on_callbacksw				1	1	1	1	1	*	*	*	*	*	*	*	*	*	*qssAACC14{1h''{8QT**k(M::

kkmmX...
aA###
!7 8999---!!!H
#####rcD|tjdSr)check_gc_during_creationrfrOrs rtest_gc_during_ref_creationz.ReferencesTestCase.test_gc_during_ref_creations%%gk22222rcD|tjdSr)rrfrrs rtest_gc_during_proxy_creationz0ReferencesTestCase.test_gc_during_proxy_creations%%gm44444rcvtj}tjdddtjGdd}d}|}|}||_|||_	|}t
j||tj|dS#tj|wxYw)NrNceZdZdS)6ReferencesTestCase.check_gc_during_creation.<locals>.ANr	r
rrr+rrNrr+cdSrr
)argss rrPz=ReferencesTestCase.check_gc_during_creation.<locals>.callback Dr)rV
get_threshold
set_thresholdrWr-rirfrO)rr
thresholdsr+rP
referencedr-s       rrz+ReferencesTestCase.check_gc_during_creations%''

Aq!!!

											QSS

ACCwz""	*AK
H---
j))))Bj)))s9B((B8c@Gddt}|}dS)NceZdZdZdS)>ReferencesTestCase.test_ref_created_during_del.<locals>.Targetc.tj|adSr)rfrOref_from_delrs r__del__zFReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__8s&{400rNrrrrr
rrTargetr7s#
1
1
1
1
1rr)r)rrws   rtest_ref_created_during_delz.ReferencesTestCase.test_ref_created_during_del2s=
	1	1	1	1	1V	1	1	1

FHHrc	tjt}|t|jdddddt
jdSrH)rfrOr\rrr*rVrW)rrs  r	test_initzReferencesTestCase.test_init>sD
K	"")QZAq!Q???

rc*Gddt}g}tjttj||j}d}tj||d|||gdS)NceZdZdS)*ReferencesTestCase.test_classes.<locals>.ANr	r
rrr+rHrNrr+)rrfrOintrrVrWr)rr+lr-s    rtest_classeszReferencesTestCase.test_classesFs								CK18$$

d###QC     rctd}td}td}tj|}tj|}tj|}tj|}|||k|||k|||k|||k|||k|||k|||k|||k||t
k||t
k~~~t
j|||fD] }||d!|||k|||k|||k|||k|	||k||u|	||k||udS)NrNr)
r&rfrOrrrrVrWrr)	rryzr-brrrs	         r
test_equalityz ReferencesTestCase.test_equalityRs#1II1II1IIKNNKNNKNNKNN	
Qa   a   QQa   a   QY'''i(((
q!

Aq	%	%AMM!!##t$$$$
	
a   Qa   Qaa(((a!,,,,,rctjtjtjtjg}td}td}t
j|}t
j|}|D]}|t||| ~~tj|D]}|t||| dSrM)rltgtleger&rfrOrrrVrW)ropsrrr-rops       r
test_orderingz ReferencesTestCase.test_orderingws{HKhkB1II1IIKNNKNN	3	3BiQ2222
q

	3	3BiQ2222	3	3rctd}td}tj|}tj|}|t	|t	d~~tj|t	|t	d|tt|dSr)	r&rfrOrr7rVrWrr)rrrr-rs     rtest_hashingzReferencesTestCase.test_hashings2JJ2JJKNNKNNa$r((+++
q

	
a$r((+++)T1-----rcGdd}tj}|dx}}tdD]}||x||<}~tjdS)NceZdZdZdS)1ReferencesTestCase.test_trashcan_16602.<locals>.Ccv|sdStj|fd}tj|||_dS)Nc}dSrr
)wparentrhwselfs  rr}zFReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cbsAAAr)rfrOr)rparentr}rs   @rr*z:ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__sOFD))     &{6266rNrDr
rrr
rs#
7
7
7
7
7rr
d)rfWeakKeyDictionaryrrVrW)rr
rrootrns      rtest_trashcan_16602z&ReferencesTestCase.test_trashcan_16602s
	7	7	7	7	7	7	7	7
%''1T77qs		AqttOAaD11

rctd}d}tj||}||j|tj|}||jdS)NrNcdSrr
rs rr&z<ReferencesTestCase.test_callback_attribute.<locals>.<lambda>tr)r&rfrOr__callback__r)rrrPrrs     rtest_callback_attributez*ReferencesTestCase.test_callback_attributesg1II##{1h''

d'222{1~~$+,,,,,rctd}tj||j}||j~t
j||jdSrM)	r&rfrOrPrrrrr)rrrOs   r&test_callback_attribute_after_deletionz9ReferencesTestCase.test_callback_attribute_after_deletionsf1IIk!T]++S-...
#*+++++rctd}d}tj||}|t5d|_ddddS#1swxYwYdS)NrNcdSrr
rs rr&z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>rrcdSrr
rs rr&z@ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>sDr)r&rfrOrAttributeErrorr)rrrPrs    rtest_set_callback_attributez.ReferencesTestCase.test_set_callback_attributes1II##{1h''


~
.
.	1	1 0 0D	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s	AAAcGddt}|d}tj|d}~tjdS)NceZdZdZdS);ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDelcdSrr
rs rrzCReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__r!rNrr
rr
ObjectWithDelrs#####rrrNc(tjSr)rrrs rr&z6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>s'*<*>*>r)r&rfrOrr)rrrrs    rtest_callback_gcsz$ReferencesTestCase.test_callback_gcssh	$	$	$	$	$F	$	$	$M!{1>>??
rN):rrrrjrxr{rcpython_onlyrrrrrrerzrrrrrrrrrrrrrr
rr#r/r=rDrFrIrPr^rjrvrrrrrrrrrrrrrrrrrrr
rrrcrcgsh	4	4	4777

	4	4	4	F	F	F$DDD+++$FFF	L	L	LMMM.MMM+++8	C	C	C000
 
 
 
!
!
!.888:::HHH$444*LLL*	&	&	&@@@(
3
3
3


GGG%%% KKK,<<<4'''9992&&&P&&&P08,$,$,$\$$$$$$L333555***2



!
!
!#-#-#-J
3
3
3
.
.
.*---,,,111rrcc,eZdZdZdZdZdZdZdS)SubclassableWeakrefTestCasecGddtj}td}||d}|||||j||jd~t|	|||jdS)Nc*eZdZdfd	ZfdZxZS)=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefNrcZ||_t||dSr)rsuperr*)robrPr	__class__s    rr*zFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__s*"
  X.....rcRd|_tSNT)calledrr)rrs rrzFSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__s "ww'')))rr)rrrr*r
__classcell__)rs@rMyRefrsV
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*rrrr)
rfrOr&rrrrrrr)rrrhmrs    rtest_subclass_refsz.SubclassableWeakrefTestCase.test_subclass_refss	*	*	*	*	*GK	*	*	*
5MM
U1B




bbddA	"""2&&&
""$$	"""""rcGddtj}td}||}tj|}||||tj|||g|tj|d||}|tj|dtj|}|t|d|||d|	||dd|	||dddS)NceZdZdS)XSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefNr	r
rrrr
rNrrrrrrrN)
rfrOr&assertIsNotrrHrrrrt)rrrhr1r2r3refss       r-test_subclass_refs_dont_replace_standard_refszISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refss_					GK			2JJ
U1XX
[^^R   ,Q//"b:::033Q777
U1XX033Q777"1%%TA&&&

b$q'"""

b$qrr(###

b$qrr(#####rcDGddtj}td}||t}||t}|||tj|}||||||dS)NceZdZdS)USubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefNr	r
rrrrrNrrr)rfrOr&idrurrHrt)rrrhrr
rs      r*test_subclass_refs_dont_conflate_callbackszFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbackss					GK			2JJ
U1b\\
U1c]]R   "1%%

b$

b$rcrGddtj}td}||ddd}||jd||jd||d|t|ddS)Nc$eZdZdZdZdZdZdS)HSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRefslot1slot2cDtj|||Sr)rfrO__new__)rrrPrrs     rrzPSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__s{**4X>>>rc"||_||_dSrr)rrrPrrs     rr*zQSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__s"
"


rc |j|jzSrrrs rmethzMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methszDJ..rN)rrr	__slots__rr*r r
rrrrsF(I
?
?
?
#
#
#
/
/
/
/
/rrrabcdefabcdef__dict__)	rfrOr&rrrr rr)rrrhrs    rtest_subclass_refs_with_slotsz9SubclassableWeakrefTestCase.test_subclass_refs_with_slotss	/	/	/	/	/GK	/	/	/
2JJE!T5%((%(((%(((8,,,J//00000rcbGddtj}fd}t}|||}||_~~jdt}|||}|||}||_||_~~~jddS)z3Confirm https://bugs.python.org/issue3100 is fixed.ceZdZdS)HSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefNr	r
rrrr)rNrrc(xjdz
c_dSrMrI)rrs rrPzKSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbacksMMQMMMMrrN)rfrOr
rhrrJr)rrrPrhrr
s`     rtest_subclass_refs_with_cyclez9SubclassableWeakrefTestCase.test_subclass_refs_with_cycles					GK			
					
CC
U1h


***
CC
U1h


U1h


*****rN)rrrrrrr&r+r
rrrrs_###$$$$"	 	 	 111"$+$+$+$+$+rrc^eZdZdZdZdZdZdZdZe	j
dZdZd	Z
d
S)WeakMethodTestCasec,Gddt}|S)z3Return an Object subclass overriding `some_method`.ceZdZdZdS)'WeakMethodTestCase._subclass.<locals>.CcdS)Nrr
rs rr;z3WeakMethodTestCase._subclass.<locals>.C.some_method8r5rN)rrrr;r
rrr
r07s#




rr
)r&)rr
s  r	_subclasszWeakMethodTestCase._subclass5s3								rctd}tj|j}||tj||t
|j||j|||j	|jj	|
|ddS)NrNr:)r&rf
WeakMethodr;assertIsInstance
ReferenceTyperr__self____func__rrrhrs   r
test_alivezWeakMethodTestCase.test_alive<s1IIq}--a!6777aacc4
#6#6777

aacclA&&&

aacclAM$:;;;"""""rctd}tj|j}~t	j||ddSrM)r&rfr4r;rVrWrr9s   rtest_object_deadz#WeakMethodTestCase.test_object_deadEsM1IIq}--




aacc4     rc|}|d}tj|j}|`t	j||ddSrM)r2rfr4r;rVrWr)rr
rhrs    rtest_method_deadz#WeakMethodTestCase.test_method_deadLs`NN
AaDDq}--
M



aacc4     rcT|}gfd}|d}tj|j|}~t	j||gtj|_t	j||gdS)Nc2|dSrrr)callss rr}z=WeakMethodTestCase.test_callback_when_object_dead.<locals>.cbXLLrrN)r2rfr4r;rVrWrr&rr
r}rhrrBs     @rtest_callback_when_object_deadz1WeakMethodTestCase.test_callback_when_object_deadTsNN					
AaDDq}b11


$$$*


$$$$$rc6|}gfd}|d}tj|j|}|`t	j||g~t	j||gdS)Nc2|dSrrrAs rr}z=WeakMethodTestCase.test_callback_when_method_dead.<locals>.cbhrCrrN)r2rfr4r;rVrWrrDs     @rtest_callback_when_method_deadz1WeakMethodTestCase.test_callback_when_method_deaddsNN					
AaDDq}b11
M

$$$


$$$$$rctd}d}tj|j|}tj|}~||ddS)NrNcdSrr
)_s rr}z-WeakMethodTestCase.test_no_cycles.<locals>.cbxrr)r&rfr4r;rOr)rrhr}rris     rtest_no_cyclesz!WeakMethodTestCase.test_no_cyclestsb
1II			q}b11
[^^


bbddD!!!!!rcfd}fd}td}td}tj|j}tj|j}tj|j}tj|j}||||||||||||||||||td}	tj|	j}
tj|	j}|||
||||||
||||||j||t
~~~	t
j|||||
|f}|D]?}
|D]:}|
|k|
|u|
|k|
|u;@dS)Ncl||k||kdSrrrr-rrs  r_eqz-WeakMethodTestCase.test_equality.<locals>._eq7OOAF###Q!V$$$$$rcl||k||kdSrrOrPs  r_nez-WeakMethodTestCase.test_equality.<locals>._nerRrrNr)	r&rfr4r;r?rrVrWr)rrQrTrrr-rrrrer rqrs`              rrz WeakMethodTestCase.test_equalitys	%	%	%	%	%	%	%	%	%	%
1II1IIq}--q}--q~..q~..Aq			Aq			Aq			Aq			Aq			Aq			1IIq}--q~..Aq			Aq			Aq			Aq			Aq}Ay
q!

!Q1a	5	5A
5
5  aa000  a!4444
5	5	5rcNtd}td}tj|j}tj|j}tj|j}|t
|t
|t
|}~~tj|t
|||t
|||	tt|dSrM)r&rfr4r;r?rr7rVrWrr)rrrr-rrhas       rrzWeakMethodTestCase.test_hashings
1II1IIq}--q}--q~..a$q''***
!WW
q

a"%%%a"%%%)T1-----rN)rrrr2r:r<r>rErHrrrLrrr
rrr-r-3s###!!!!!!%%% %%% 
"""'5'5'5R.....rr-ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+e,j-d*Z.e,j-d+Z/e,j-d,Z0d-Z1e,j-d.Z2e,j-e3j4d/d0Z5e,j-d1Z6e,j-e3j4d/d2Z7e3j8d3Z9d4S)5MappingTestCasercd}dt|D}|fd|D}|}	t|n#t$rYnwxYw~t	jt
|}~t	jt
|}||d||ddS)Nc*g|]}tSr
rA.0rgs  r
<listcomp>z4MappingTestCase.check_len_cycles.<locals>.<listcomp>s......rc3.K|]}|VdSrr
r`rhconss  r	<genexpr>z3MappingTestCase.check_len_cycles.<locals>.<genexpr>s+//AQ//////r)rrNr)	ritemsnext
StopIterationrVrWrrtr)	r	dict_typerdNrfdctr n1n2s	  `      rcheck_len_cyclesz MappingTestCase.check_len_cycless..U1XX...i/////////
YY[[	HHHH			D	


XX


XX

b&!!!Qs	A
A&%A&cH|tjddS)Nc
|dfSrMr
rVs rr&z<MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>
Aq6r)rnrfrrs rtest_weak_keyed_len_cyclesz*MappingTestCase.test_weak_keyed_len_cycless%g79I9IJJJJJrcH|tjddS)Nc
d|fSrMr
rqs rr&z=MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>s
aVr)rnrfWeakValueDictionaryrs rtest_weak_valued_len_cyclesz+MappingTestCase.test_weak_valued_len_cycless%g9;K;KLLLLLrc|jtjgtjRt	ddD]}d}tjdtj|||dt	|D}|fd|D}~|}	t|n#t$rYnwxYwt|}~t|}	|
|d||||
|	d||	|dS)NrNrr\rc*g|]}tSr
r^r_s  rraz2MappingTestCase.check_len_race.<locals>.<listcomp>s222AXZZ222rc3.K|]}|VdSrr
rcs  rrez1MappingTestCase.check_len_race.<locals>.<genexpr>s+33DDGG333333r)
addCleanuprVrrrrWrfrgrhrassertGreaterEqualassertLessEqual)
rrirdthrjrfrkr rlrms
  `       rcheck_len_racezMappingTestCase.check_len_racesd(>2+;+=+=>>>>3--	)	)BAJqMMMRR(((22q222E)3333U33333CB
R 



SBSB##B***  Q'''##B***  R(((('	)	)s0C
C
C
cH|tjddS)Nc
|dfSrMr
rqs rr&z:MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>s
!Qr)rrfrrs rtest_weak_keyed_len_racez(MappingTestCase.test_weak_keyed_len_races%G57G7GHHHHHrcH|tjddS)Nc
d|fSrMr
rqs rr&z;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>rrr)rrfrvrs rtest_weak_valued_len_racez)MappingTestCase.test_weak_valued_len_races%G79I9IJJJJJrc|\}}|D]L}|tj|d||||jdMt
|}t
|}|	|	|||d~~|t||j|d=t|t||jdz
d~~t|t|ddtj
}|t|jdt#|d<t|t|jddS)NrN#wrong object returned by weak dict!z/cloning of weak-valued dictionary did not work!r/deleting object did not cause dictionary updatez0deleting the values did not clear the dictionaryr)make_weak_valued_dictrrfrrr)rrfcopysortrCOUNTrrvrKeyError__getitem__r
rrsobjectsrhitems1items2s      rtest_weak_valuesz MappingTestCase.test_weak_valuess2244
g	@	@AW4Q77;;;MM!T!%[>
@
@
@
@djjll##diikk''))**





F	H	H	HFTDJ///AJTDJNF	H	H	HQTAG	I	I	I*,,(D$4a888##Q(D$4a88888rcf|\}}|D]P}|tj|dd|z||j||dQ|}|}|t|t|d~~|t||j
|d=t|t||j
dz
d~~t|t|ddtd}d	||<|
|||d
|dS)NrNz&wrong number of weak references to %r!rz.cloning of weak-keyed dictionary did not work!rrz.deleting the keys did not clear the dictionaryrz$What is the meaning of the universe?")make_weak_keyed_dictrrfrrr)rfrsetrrrr&rtassertNotInrs      rtest_weak_keyszMappingTestCase.test_weak_keyss
1133
g	@	@AW4Q77AAE
G
G
GMM!%a>
@
@
@
@""$$Vc&kkE	G	G	GFTDJ///AJTTZ!^F	H	H	HQTAE	G	G	G2JJ8Q

aT"""""rc4|\}}|||}|t	|t	|t|}|D]n}|}||||||||j||||o|t	|dt|}|t	t|t	||D]n}|}||||||||j||||o|t	|ddSrH)	rcheck_iterskeyrefsrrrrtr)rXrrsrrobjects2rirs       rtest_weak_keyed_itersz%MappingTestCase.test_weak_keyed_iters6s1133
g||~~TCLL111==	 	 BBMM"d###MM"d###RVT"X...OOBX***==T$,,..1122CLLAAA,,..	 	 BBMM"d###MM"d###RVT"X...OOBX*****rc0|\}}|||}|t	|t	|t|}|D]m}|}||||j||j||jj||n|t	|dt|}|t	t|t	||D]m}|}||||j||j||jj||n|t	|ddSrH)	rr	valuerefsrrrr)rX
itervaluerefsrs       rtest_weak_valued_itersz&MappingTestCase.test_weak_valued_itersQs2244
g~~TCLL111==	 	 BBRbf...RVT"&\%5666OOBX***==T$"4"4"6"67788#g,,GGG$$&&	 	 BBRbf...RVT"&\%5666OOBX*****rct|}|D]}||||dt|}|D]}||||dt|}|D]}||||dt|}|D]}||||ddS)Nzitems() did not touch all itemsz!__iter__() did not touch all keysz!iterkeys() did not touch all keysz%itervalues() did not touch all values)rrfrXrkeysvalues)rrsrfitemrrVrvs        rrzMappingTestCase.check_itersjshTZZ\\""JJLL		DLL ABBBDIIKK  		AKKNNNNBCCCDIIKK  		AKKNNNNBCCCdkkmm$$		AMM!<	>	>	>	>	>rct|}tt||}t||d=t	j|tt|t|t|dz
g~|t||dz
dS)NrN)	rr8getattrrgrVrWrtrr)rrsr	iter_namerr s      r"check_weak_destroy_while_iteratingz2MappingTestCase.check_weak_destroy_while_iteratingsII
*'$	**,,
-
-RBK



c$r((mmc'llCLL14D%EFFFTAE*****rc|5\}}|||dddn#1swxYwY|5\}}|t|j|dddn#1swxYwY||||5\}}|t|j|dddn#1swxYwY||||5\}}|||<dddn#1swxYwY||||t
j|}|5\}}||dddn#1swxYwY||||5\}}|dddn#1swxYwY|t|ddSrH)
rrrrpoprrupdateclearr)rrstestcontextrVrddicts      r-check_weak_destroy_and_mutate_while_iteratingz=MappingTestCase.check_weak_destroy_and_mutate_while_iteratingsN[]]	&fq!Q%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&
[]]	=fq!h(8!<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=D!!!
[]]	5fq!h!444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5D!!!
[]]	fq!DG															a!$$$	$
[]]	fq!KK															u%%%
[]]	fq!JJLLL															TA&&&&&sf155%A77A;>A;"%CCC>	DDDE==FF(GGGctd}|5t|}|t||t||dz
|||<|t||dddn#1swxYwY|5|t||dz
||t||dz
dddn#1swxYwY|5|t||dz
|t|=|t||dz
dddn#1swxYwY|5|t||dz
||t||dz
dddn#1swxYwY|5||t|ddddn#1swxYwY|t|ddS)	Ni@rNrrr:r>rr)r&rrrgrrpopitemr)rrsrrhrs     r&check_weak_del_and_len_while_iteratingz6MappingTestCase.check_weak_del_and_len_while_iteratings
6NN
[]]	+	+D		AHHT$))++&&'''SYYA...DGSYY***
	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+[]]	/	/SYYA...LLNNNSYYA...		/	/	/	/	/	/	/	/	/	/	/	/	/	/	/
[]]	/	/SYYA...T$))++&&'SYYA...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/[]]	/	/SYYA...LLNNNSYYA...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/[]]	+	+JJLLLSYY***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	
TA&&&&&s]BB88B<?B<
A!D::D>D>A/G

GGA!III!8J%%J),J)c|\|d|d|d|d|\tjfd}|||\||dS)Nrrfrrc3JK	t}t|j}tjt||fVd}tjdS#d}tjwxYwrr8rfrgrr)rVrWr&)r rrsrs  rrzKMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontexts	
$**,,''RKKMM%
Qiil"""

A/BB")rr
contextlibcontextmanagerrrrrrsrs  @@r&test_weak_keys_destroy_while_iteratingz6MappingTestCase.test_weak_keys_destroy_while_iteratings1133
g//gvFFF//gwGGG//gxHHH//gyIII1133
g		"
	
	
	
	
	
#	"
		
::4MMM1133
g33D+FFFFFrc|\|d|d|d|d|d|\tjfd}|||\||dS)Nrrfrrrc3JK	t}t|j}tj|t|fVd}tjdS#d}tjwxYwrr)r rVrsrs  rrzMMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontexts	
$**,,''RKKMM%
l"""

r)rrrrrrrs  @@r(test_weak_values_destroy_while_iteratingz8MappingTestCase.test_weak_values_destroy_while_iteratings2244
g//gvFFF//gwGGG//gxHHH//gOOO//g{KKK2244
g		"
	
	
	
	
	
#	"
		
::4MMM2244
g33D+FFFFFrctd}tj|di}|||ddSNrilr&rfrrrrhrss   r#test_make_weak_keyed_dict_from_dictz3MappingTestCase.test_make_weak_keyed_dict_from_dictsA1II(!C11a#&&&&&rctd}tj|di}tj|}|||ddSrrrrhrsdict2s    r.test_make_weak_keyed_dict_from_weak_keyed_dictz>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictsQ1II(!C11)$//a#&&&&&rctj}tttt|j}|D]}|j||<
||fSr)rfrrmapr&rrr)rrsrrhs    rrz$MappingTestCase.make_weak_keyed_dict	sW(**s65#4#45566		AeDGGW}rctd}tjd|i}||d|dSrr&rfrvrrs   r$test_make_weak_valued_dict_from_dictz4MappingTestCase.test_make_weak_valued_dict_from_dictsA1II*C733cA&&&&&rctd}tjd|i}tj|}||d|dSrrrs    r0test_make_weak_valued_dict_from_weak_valued_dictz@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dictsQ1II*C733+D11cA&&&&&rc|ttjj|ttjii|ttjddtd}dD]g}tjdi||i}|t||g||||hdS)Nr
rrrsr2iterable)	rrrfrvr*r&rrr)rrhkwrs    rtest_make_weak_valued_dict_miscz/MappingTestCase.test_make_weak_valued_dict_miscs)W%@%IJJJ)W%@"bIII)W%@"bIII1II5	'	'B+66r1g66AT!&&((^^bT222QrUA&&&&	'	'rctj}tttt|j}|D]}|||j<
||fSr)rfrvrrr&rrr)rs    rrz%MappingTestCase.make_weak_valued_dict'sW*,,s65#4#45566		ADKKW}rc"|}|||<|||<|t|d|\}}|t|d||ur|||n||||\}}|t|d||ur|||dS|||dS)NrrNr)rrrr)	rklasskey1value1key2value2weakdictrVrs	         r
check_popitemzMappingTestCase.check_popitem.s577X***!!1X***99MM!V$$$$MM!V$$$!!1X***99MM!V$$$$$MM!V$$$$$rc||tjdtdtdS)Nrr)rrfrvr
rs rtest_weak_valued_dict_popitemz-MappingTestCase.test_weak_valued_dict_popitem@s:76!133	5	5	5	5	5rc||tjtdtddSNzvalue 1zvalue 2)rrfrr
rs rtest_weak_keyed_dict_popitemz,MappingTestCase.test_weak_keyed_dict_popitemDs:7433	133		;	;	;	;	;rcd|||d|}|||}|||||||||||||||||}||||||||||||||dS)Nz9invalid test -- value parameters must be distinct objects)r
setdefaultrrtget)rrkeyrrrrhs       rcheck_setdefaultz MappingTestCase.check_setdefaultHs$E	F	F	F577V,,

a   

c8$$$

hll3''000

hsmV,,,V,,

a   

c8$$$

hll3''000

hsmV,,,,,rcz|tjdttdS)Nr)rrfrvr
rs r test_weak_valued_dict_setdefaultz0MappingTestCase.test_weak_valued_dict_setdefaultYs8g9#QSS!##	/	/	/	/	/rcb|tjtdddSr)rrfrr
rs rtest_weak_keyed_dict_setdefaultz/MappingTestCase.test_weak_keyed_dict_setdefault]s4g7cc9i	9	9	9	9	9rc|}|||t|t||D]s}|||d||}||||||||t|D]f}|||d||}||||||||gdS)Nz(mysterious new key appeared in weak dictz%original key disappeared in weak dict)rrrrrtrr)rrrsrrVrs      rcheck_updatezMappingTestCase.check_updateas3
577XD		222	.	.AMM!T#MNNNAMM!Xa[)))MM!X\\!__----	.	.AMM!X'NOOOQAMM!Xa[)))MM!X\\!__----		.	.rc
.|tjdtdttti|t
tjjtj}|t
|jii|t
|jdd|t|	gtd}dD]v}tj}|jdi||i|t|	|g||||wdS)NrNr-r
rr)rrfrvr
rrrrrrr&)rrrhrs    rtest_weak_valued_dict_updatez,MappingTestCase.test_weak_valued_dict_updatetsX'5acc3QSS!##6	8	8	8	
)W%@%GHHH')))QXr2666)QXr2666affhh,,,1II5	'	'B+--AAHAwT!&&((^^bT222QrUA&&&&		'	'rct}t}t}tjd|i}tj||d}|}||d}d|fd|fg}||z}	|t|	t|t|z|t|	tj||z}|||	||z}
|t|
t||z|t|
tj||z}|||
|}||z}|t|t|t|z|t|tj||z}|t||t|z|t|tj~|d|	|d|
|d||d|dS)NrNrNr)rNrr>rr)	r
rfrvrrrsrrr)
rr-rrwvd1wvd2wvd3d1pairstmp1tmp2tmp3tmp4s
             r test_weak_valued_union_operatorsz0MappingTestCase.test_weak_valued_union_operatorss[
CC
CC
CC*Aq622*qQ<<88yy{{q\\Q!Q d{dT$ZZ$t**%<===

d4jj'"=>>>t$$$bydT$ZZ"_555

d4jj'"=>>>
t$$$yy{{
dT$ZZ$u++%=>>>

d4jj'"=>>>DydR$t**_555

d4jj'"=>>>
D!!!D!!!D!!!D!!!!!rc	|tjtdtdtdidS)NrNrr)rrfrr
rs rtest_weak_keyed_dict_updatez+MappingTestCase.test_weak_keyed_dict_updatesE'3331331332	4	4	4	4	4rcztj}td}td}d||<d||<|t	|d||=|t	|d|t||gdS)N12	somethingrrN)rfrr&rrrrrro1rs    rtest_weak_keyed_delitemz'MappingTestCase.test_weak_keyed_delitems%''
C[[
C[[""Q###
bEQ###affhh".....rc0t}t}t}tj|d|di}tj|d|di}|}|d|di}|df|dfg}||z}	|t|	t|t|z|t|	tj||z}|||	||z}
|t|
t||z|t|
tj||z}|||
|}||z}|t|t|t|z|t|tj||z}|t||t|z|t|tj~|d|		|d|
	|d|	|d|	dS)	NrNrrr:56)
r
rfrrrrsrrrr)
rrro3wkd1wkd2wkd3rrrrrrs
             rtest_weak_keyed_union_operatorsz/MappingTestCase.test_weak_keyed_union_operatorss
SS
SS
SS("aQ88("aQ88yy{{#r3
a2q'"d{dT$ZZ$t**%<===

d4jj'";<<<t$$$bydT$ZZ"_555

d4jj'";<<<
t$$$yy{{
dT$ZZ$u++%=>>>

d4jj'";<<<DydR$t**_555

d4jj'";<<<DKKMM***DKKMM***DKKMM***DKKMM*****rc~tj}td}td}||d<||d<|t	|d|d=|t	|d|t|d|fgdS)Nrrrzsomething elserrN)rfrvr&rrrrfrs    rtest_weak_valued_delitemz(MappingTestCase.test_weak_valued_delitems'))
C[[
C[[+ 
Q###
kNQ###aggii,<b+A*BCCCCCrctj}td}|t|j||t|j||t|jd|t|jd|t|jdddS)Nr
)	rfrr&rrrrr__setitem__)rrrhs   rtest_weak_keyed_bad_delitemz+MappingTestCase.test_weak_keyed_bad_delitems%''3KK	
(AM1555(AM1555	
)Q]R888)Q]R888)Q]R<<<<<rctj}dGfddtfdtdDD]}|j||<
~t|dd}D]
}|dz
}||=t|	t|d|	|d	dS)
NFc(eZdZdZdZfdZdS)<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.Cc||_dSrr)rrgs  rr*zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__s



rc*t|jSr)r7rrs rr8zEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__sDJ'''rc.rd=|j|jkS)Nrr)rr2mutateobjss  rr3zCMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__s#!RzU[00rN)rrrr*r8r3)rr srr
rsQ



(
(
(
1
1
1
1
1
1
1
1rr
c&g|]
}|Sr
r
)r`rgr
s  rrazEMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.<listcomp>s!'''!'''rr:TrrNr)rfrrrrrrreverserrr)rrrhcountr
rr s    @@@r!test_weak_keyed_cascading_deletesz1MappingTestCase.test_weak_keyed_cascading_deletess#

%''
	1
	1
	1
	1
	1
	1
	1
	1
	1
	1
	1('''eAhh'''		A7AaDD
AFFHH~~	
		AQJE!Q###"""""rcrtj}|t|ddS)Nz<WeakValueDictionary at 0x.*>)rfrvassertRegexrgrrss  rtest_make_weak_valued_dict_reprz/MappingTestCase.test_make_weak_valued_dict_repr%s3*,,d%DEEEEErcrtj}|t|ddS)Nz<WeakKeyDictionary at 0x.*>)rfrr&rgr's  rtest_make_weak_keyed_dict_reprz.MappingTestCase.test_make_weak_keyed_dict_repr)s3(**d%BCCCCCrctj}t5tdD];}|dt}||d~<	ddddS#1swxYwYdSNir)rfrvrarrrArrrrgrs    r$test_threaded_weak_valued_setdefaultz4MappingTestCase.test_threaded_weak_valued_setdefault-s'))

 
 		6]]

LLXZZ00  D)))A
																		sAA<<BBctj}t5tdD]?}t	|d<|dd}||d@	ddddS#1swxYwYdSr,)rfrvrarrArrr-s    rtest_threaded_weak_valued_popz-MappingTestCase.test_threaded_weak_valued_pop6s'))

 
 	*	*6]]
*
* 

"EE"bMM  D))))
*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*sABBBctj}t5tdD]:}t	}||d<|t
|dd};	ddddS#1swxYwYdS)Ni@
rrN)rfrvrarrArr)rrrgrhs    r%test_threaded_weak_valued_consistencyz5MappingTestCase.test_threaded_weak_valued_consistency?s
'))

 
 		6]]

JJ"  Q+++
																		sAA;;A?A?cg}Gdd}Gdd}fd}d}||tjtjf|}g}	g}
t	dD]I}||||}
}|	||
|
|
||<~~
Jt
j|||f}|tjurt
j||	f}nt
j||
f}|||	|	|r|d	dS)
NceZdZdZdS)?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeyc||_dSrctrrr8s  rr*zHMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__R
rNrDr
rrDummyKeyr5Qrqrr;ceZdZdZdS)AMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuec||_dSrr7r9s  rr*zJMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__Vr:rNrDr
rr
DummyValuer=Urqrr?c	durtj|}dS|}dS#t$r }||Yd}~dSd}~wwxYwr)rdeepcopyr\r)rexcrKexrAs    r	dict_copyz@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copyYsq
t##
a((AAAAAA




2
s33
AAAcd}|r_tjdt|dz
}|dz
}|||dzdkrt	j|]dSdS)NrrNi')randomrandintrrrVrW)lstgc_ctrrgs   rpop_and_collectzFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collectbszF
!N1c#hhl33!


E>Q&&JLLL
!
!
!
!
!rip)rZrr)
rtrfrrvrrr\r]r^r_)rtype_rArBr;r?rDrJrrrrgrVrt_copy	t_collects  `             rcheck_threaded_weak_dict_copyz-MappingTestCase.check_threaded_weak_dict_copyLs																						!	!	!	


eg79TUVVVEGGu		A8A;;

1

qAKKNNNMM!AaD!!SCCCG---!(tgNNNII!(viPPPI


	a&L		rcF|tjddSNFrNrfrrs r test_threaded_weak_key_dict_copyz0MappingTestCase.test_threaded_weak_key_dict_copys#	
**7+DeLLLLLrcpucF|tjddSrrQrs r$test_threaded_weak_key_dict_deepcopyz4MappingTestCase.test_threaded_weak_key_dict_deepcopys#
	
**7+DdKKKKKrcF|tjddSrPrNrfrvrs r"test_threaded_weak_value_dict_copyz2MappingTestCase.test_threaded_weak_value_dict_copys#	
**7+FNNNNNrcF|tjddSrrWrs r&test_threaded_weak_value_dict_deepcopyz6MappingTestCase.test_threaded_weak_value_dict_deepcopys#
	
**7+FMMMMMrcjtj}||jjdSr)rfrvr_remove__closure__)rrs  rtest_remove_closurez#MappingTestCase.test_remove_closures/'))!)/00000rN):rrrrrnrsrwrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr$r(r*rrequires_working_threadingr.r0r2rNrRrrequires_resourcerUrXrZrr^r
rrrZrZsE   (KKKMMM)))0IIIKKK999@###<+++6+++2>>>4+++'''2'''BGGG4GGG2'''
''''''
'''
'
'
'%%%$555;;;---"///999...&'''"#"#"#"J444	/	/	/#+#+#+J	D	D	D===,#,#,#\FFFDDD1022321022**32*1022

32
;;;z1022MM32M
1022Wu%%LL&%32L
1022OO32O
1022Wu%%NN&%32N

11111rrZ)
mapping_testscheZdZdZedededdZejZdZ	dS)WeakValueDictionaryTestCasez?Check that WeakValueDictionary conforms to the mapping protocolrNrr)rrkey3c4|jSr)!_WeakValueDictionaryTestCase__refrrs r
_referencez&WeakValueDictionaryTestCase._referencez   rN)
rrr__doc__r&rfrfrv	type2testrgr
rrrcrcsXIIF1IIffQiiq		BBE+I!!!!!rrccleZdZdZeddeddeddiZejZdZ	d	S)
WeakKeyDictionaryTestCasez=Check that WeakKeyDictionary conforms to the mapping protocolrrNrrrdrc4|jSr)_WeakKeyDictionaryTestCase__refrrs rrgz$WeakKeyDictionaryTestCase._referencerhrN)
rrrrir&rnrfrrjrgr
rrrlrls[GG
VF^^Avvf~~aBE)I!!!!!rrlcbeZdZGddZdZdZdZdZdZe	dZ
d	Zd
S)FinalizeTestCaseceZdZdS)FinalizeTestCase.ANr	r
rrr+rrsrr+cZtjjdkrtjdSdS)Ncpython)sysimplementationnamerrrs r_collect_if_necessaryz&FinalizeTestCase._collect_if_necessarys0"i//     0/rcfd}|}gtj||ddd}||jd||||dddif||d	||d||d||d||d||jd
|d	ggtj||ddd}||||dif||||dif||d||d||d||d||jd
|ggtj||ddd}~|||d||d||d||d||jd
|d	gdS)
NcJ||z|z||z|zSrr)rrrress   raddz+FinalizeTestCase.test_finalize.<locals>.adds+JJq1uqy!!!q519rC+Y)rT)r}r~rF)r}r~r)rrr)r+rffinalizeralivepeekdetachrx)rr|r-r r{s    @r
test_finalizezFinalizeTestCase.test_finalizes:					
FFHHQRr222$'''AsGc"X#>???c"""d###d###4(((T***%(((se$$$QRR00AsJ#;<<<aj"%=>>>d###d###4(((T***%(((b!!!QrR2666
""$$$d###d###4(((T***%(((se$$$$$rc	fd}|}gtj||dddd}||||ddddf||ddddfg|t5tj||ddddn#1swxYwY|t5tj||d	dddn#1swxYwY|ttj||ttjdS)
Nc6||fdSrr)rkwargsr{s  rfinz-FinalizeTestCase.test_arg_errors.<locals>.finsJJf~&&&&&rrNrrr:)funcrvr)rr))rvrr))r+rfrrrrr)rrr-r r{s    @rtest_arg_errorsz FinalizeTestCase.test_arg_errorss	'	'	'	'	'
FFHHQQq999AsFQq4I4I#JKKK	1(=(=>?@@@


y
)
)	1	1QSa0000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1


y
)
)	5	5!4444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5)W%5q999)W%566666s$&C

CC/DDDc |}g}tj||jd}tj||jd}tj||jd}tj||jd}tj||jd}~~||j||j||j||||j||d|||j|d||d~|||j|d	|gd
}|	||dS)Nf1f2f3f4f5r+Br
r)r+rrr
rrrr)
r+rfrrrrrrrxr)	rr-r{rrrrrexpecteds	         r
test_orderzFinalizeTestCase.test_ordersFFHH

aT
2
2

aT
2
2

aT
2
2

aT
2
2

aT
2
2
!!!!!!!!!		$$$"""


3
"""

3


3
""$$$	
"""

3
???h'''''rcGddtj}|}gfd}|||}tj|}tj|}~~||||~||||||dgdS)NceZdZdS)4FinalizeTestCase.test_all_freed.<locals>.MyFinalizerNr	r
rrMyFinalizerr)rNrrc2ddS)N{r)r{srrPz1FinalizeTestCase.test_all_freed.<locals>.callback.sJJsOOOOOrr)rfrr+rOrrxrr)rrr-rPr wr_callbackwr_fr{s       @rtest_all_freedzFinalizeTestCase.test_all_freed's*					'*			
FFHH					K8$$k(++{1~~a[[]]+++TTVV$$$
""$$$++--((($$&&!!!se$$$$$rc^fd}tjtdt}tjtdt}tj|}tjtdt}|jdksJd|_|jdksJ|jdksJdS)Ncftjtd}tdddzdS)Ng1f3 errorrNr)rfrprint)rclss rerrorz,FinalizeTestCase.run_in_child.<locals>.errorBs4!#ud33B*
aCCCCrrrrTF)rfrr_global_varatexit)rrrrrrs`     rrun_in_childzFinalizeTestCase.run_in_child@s					
c5$
<
<

c5$
<
<

c5
)
)

c5$
<
<yD    	yD    yD      rcd}tjd|\}}}|d}||gd|d|vdS)NzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child()z-cascii)z	f4 foobarrrz	f1 foobarsZeroDivisionError)rassert_python_okdecode
splitlinesrr)rprogrcouterrs     rtest_atexitzFinalizeTestCase.test_atexitTsy2$5dDAACjj!!,,..JJJKKK,344444rN)rrrr+rxrrrrclassmethodrrr
rrrprps







!!!
'%'%'%R777&%(%(%(N%%%2!![!&55555rrpceZdZdZdS)ModuleTestCasecdD]n}tt|}|dkr||jd||j|||j|odS)N)r6	ProxyTyperr4WeakSetrrvrrf)rrfrrrr)rrwrvs   r
test_nameszModuleTestCase.test_names^sZ	5	5D'4((Cy    ;;;S\4000S-t4444
	5	5rN)rrrrr
rrrr]s#55555rra 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


libreftestcR|tj|Sr)addTestdoctestDocTestSuite)loadertestspatterns   r
load_testsrs"	MM'&(()))Lr__main__)rQ).rVrurunittestrrfrrrr\rTrFtestrtest.supportrrrrrrr
rr"r$r&rATestCaserFrrarcrr-rZraBasicTestMappingProtocolrcrlrprr__test__rrmainr
rr<module>rs				







11111111######))))))










*
x *a
a
a
a
a
a
a
a
He+e+e+e+e+(e+e+e+PF.F.F.F.F.*F.F.F.Rj1j1j1j1j1hj1j1j1Z!!!!!-"H!!!!!!!!
 F!!!`5`5`5`5`5x(`5`5`5F55555X&555T
l
:&
zHMOOOOOr