+
    Bi;8                       ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt RsRt ! R	 R
4      t ! R R4      tR tR t ! R R4      t ! R R4      t ! R R]P>                  4      t ]PB                  R+R l4       t" ! R R] 4      t# ! R R] 4      t$ ! R R]P>                  4      t% ! R R] 4      t&^ RIH't'  ! R R ]'PP                  4      t) ! R! R"]'PP                  4      t* ! R# R$]P>                  4      t+ ! R% R&]P>                  4      t,R't-R(]-/t.R) t/]0R*8X  d   ]Pb                  ! 4        R# R# ),    N)support)script_helper	ALWAYS_EQ)
gc_collect)import_helper)threading_helper)is_wasiPy_DEBUGfoobarc                   &   a  ] tR t^t o R tRtV tR# )Cc                    R # N selfs   &(/usr/lib/python3.14/test/test_weakref.pymethodC.method   s        r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c                   *   a  ] tR t^"t o RtR tRtV tR# )CallableNc                    Wn         R # r   barr   xs   &&r   __call__Callable.__call__%   s    r   r"   )r   r   r   r   r#   r&   r   r   r   s   @r   r    r    "   s     
C r   r    c                      R  p V # )c                      R # r   r   r   r   r   fcreate_function.<locals>.f*   s    Tr   r   )r*   s    r   create_functionr,   )   s
    Hr   c                  *    \        4       P                  # r   )r   r   r   r   r   create_bound_methodr.   -   s    3::r   c                   J   a  ] tR t^1t o R tR tR tR tR tR t	R t
RtV tR	# )
Objectc                    Wn         R # r   arg)r   r3   s   &&r   __init__Object.__init__2   s    r   c                (    R V P                   ,          # )z<Object %r>r2   r   s   &r   __repr__Object.__repr__4   s    txx''r   c                l    \        V\        4      '       d   V P                  VP                  8H  # \        # r   
isinstancer0   r3   NotImplementedr   others   &&r   __eq__Object.__eq__6   s(    eV$$88uyy((r   c                l    \        V\        4      '       d   V P                  VP                  8  # \        # r   r:   r=   s   &&r   __lt__Object.__lt__:   s(    eV$$88eii''r   c                ,    \        V P                  4      # r   )hashr3   r   s   &r   __hash__Object.__hash__>   s    DHH~r   c                    ^# )   r   r   s   &r   some_methodObject.some_method@       r   c                    ^# )   r   r   s   &r   other_methodObject.other_methodB   rL   r   r2   N)r   r   r   r   r4   r7   r?   rB   rF   rJ   rO   r   r   r   s   @r   r0   r0   1   s-     ( r   r0   c                   &   a  ] tR t^Ft o R tRtV tR# )RefCyclec                    W n         R # r   cycler   s   &r   r4   RefCycle.__init__G   s    
r   rT   Nr   r   r   r   r4   r   r   r   s   @r   rR   rR   F   s      r   rR   c                   ,   a  ] tR t^Kt o R tR tRtV tR# )TestBasec                    ^ V n         R# r   Ncbcalledr   s   &r   setUpTestBase.setUpM   s	    r   c                8    V ;P                   ^,          un         R#    Nr\   )r   refs   &&r   callbackTestBase.callbackP   s    r   r\   N)r   r   r   r   r^   rd   r   r   r   s   @r   rY   rY   K   s      r   rY   c              #  D  a a"   RoV V3R lp\         P                  ! 4       ;_uu_ 4        \        P                  ! VR7      pVP	                  4         Rx  RoVP                  4         RRR4       R#   RoTP                  4        i ; i  + '       g   i     R# ; i5i)zJ
Ensure GC collections happen in a different thread, at a high frequency.
Fc                  r   < S'       g.   \         P                  ! S 4       \        P                  ! 4        K5  R # r   )timesleepgccollect)periodplease_stops   r   rk   "collect_in_thread.<locals>.collect[   s     JJvJJL r   )targetNT)r   
disable_gc	threadingThreadstartjoin)rl   rk   trm   s   f  @r   collect_in_threadrv   T   sw     
 K
 
				G,			KFFH 
	 KFFH 
		s4   'B (BA5B+
B 5B		BB		B c                   (  a  ] tR t^jt o R t]P                  R 4       tR tR t	]P                  R 4       t
R tR tR tR	 t]P                  R
 4       tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5R1 t6R2 t7]8Pr                  ! ]:;'       d    ];R34      R4 4       t<R5 t=R6 t>R7 t?R8 t@]P                  R9 4       tAR:tBV tCR;# )<ReferencesTestCasec                    V P                  \        4       V P                  \        4       V P                  \        4       \        4       p\        P
                  ! V4      p\        V4       ?\        V4       R # r   )check_basic_refr   r,   r.   weakrefrc   repr)r   owrs   &  r   test_basic_ref!ReferencesTestCase.test_basic_refl   sT    Q_-01 C[[^RRr   c                   \        4       p\        P                  ! V4      pR \        R8X  d   RM\         P                  R,            \         P
                   R2pV P                  \        V4      V4       Rp\        4        V P                  \        V4      R4        ! R R4      pV! 4       p\        P                  ! V4      pR \        R8X  d   RMVP                  R,            VP
                   R	2pV P                  \        V4      V4       R# )
z <weakref at 0x[0-9a-fA-F]+; to '__main__ .' at 0x[0-9a-fA-F]+>Nz!<weakref at 0x[0-9a-fA-F]+; dead>c                   0   a  ] tR t^t o ]R 4       t RtV tR# )2ReferencesTestCase.test_ref_repr.<locals>.WithNamec                    R # )custom_namer   r   s   &r   r   ;ReferencesTestCase.test_ref_repr.<locals>.WithName.__name__   s    $r   r   N)r   r   r   r   propertyr   r   r   s   @r   WithNamer      s     % %r   r   z%' at 0x[0-9a-fA-F]+ +\(custom_name\)>)	r   r{   rc   r   r   r   assertRegexr|   r   )r   objrc   regexr   obj2ref2s   &      r   test_ref_repr ReferencesTestCase.test_ref_reprz   s    ckk#"j0BallS6HI!..IY Z"# 	
 	cE*c=	@	% 	%
 z{{4 "j0Bh6I6IC6OP%%& '34 	 	dU+r   c                     ! R  R\         4      pV! ^R7      p\        P                  ! V4      pV P                  R\	        V4      4       V P                  R\        V4      4       R# )c                   &   a  ] tR t^t o R tRtV tR# )>ReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfigc                    W,          # r   r   r$   s   &&r   __getattr__JReferencesTestCase.test_repr_failure_gh99184.<locals>.MyConfig.__getattr__   s	    wr   r   N)r   r   r   r   r   r   r   r   s   @r   MyConfigr            r   r   )offsetN)dictr{   rc   assertInr|   str)r   r   r   obj_weakrefs   &   r   test_repr_failure_gh99184,ReferencesTestCase.test_repr_failure_gh99184   sN    	t 	 a kk#&j${"34j#k"23r   c                    V P                  \        4       V P                  \        4       V P                  \        4       R # r   )check_basic_callbackr   r,   r.   r   s   &r   test_basic_callback&ReferencesTestCase.test_basic_callback   s-    !!!$!!/2!!"56r   c                $   \         P                  ! R 4      pVP                  pV! 4       p\        P                  ! V4      pV P                  V! 4       V4       ?V P                  V! 4       4       V P                  V4       V P                  V4       R# )	_testcapiN)	r   import_modulecreate_cfunctionr{   rc   assertIsassertIsNonerz   r   )r   r   r   r*   r~   s   &    r   test_cfunction!ReferencesTestCase.test_cfunction   st    !//<	$55[[^bdA"$-.!!"23r   c                F   \        4       p\        P                  ! WP                  4      p\        P                  ! WP                  4      p?\	        4        V P                  V! 4       R 4       V P                  V! 4       R 4       V P                  V P                  ^R4       R# )z$expected reference to be invalidatedz-callback not called the right number of timesN)r   r{   rc   rd   r   r   assertEqualr]   r   r}   ref1r   s   &   r   test_multiple_callbacks*ReferencesTestCase.test_multiple_callbacks   su    C{{1mm,{{1mm,$&"HI$&"HID	Fr   c                    V 3R  lp\        4       p\        P                  ! W!4      V n        \        P                  ! W!4      p?R# )c                 &    VP                  4        R # r   rc   )objectr   s   &&r   rd   DReferencesTestCase.test_multiple_selfref_callbacks.<locals>.callback   s    HHJr   N)r   r{   rc   )r   rd   cr   s   &   r   test_multiple_selfref_callbacks2ReferencesTestCase.test_multiple_selfref_callbacks   s4     #' 	C;;q+{{1'r   c                h    \        4       pV P                  \        \        P                  VR R7       R # )N)rd   )r   assertRaises	TypeErrorr{   rc   )r   r   s   & r   test_constructor_kwargs*ReferencesTestCase.test_constructor_kwargs   s$    C)W[[!dCr   c                   \        4       p^Vn        \        P                  ! WP                  4      p\        P                  ! WP                  4      p?\        4        R pV P                  \        WB4       V P                  \        WC4       \        P                  ! \        4       4      p\        4        V P                  \        \        V4       V P                  V P                  ^4       R# )rb   c                     V P                    R # r   r"   )proxys   &r   check0ReferencesTestCase.test_proxy_ref.<locals>.check   s	    IIr   N)r   r#   r{   r   rd   r   r   ReferenceErrorboolr   r]   )r   r}   r   r   r   ref3s   &     r   test_proxy_ref!ReferencesTestCase.test_proxy_ref   s    C}}Q.}}Q.	 	.%6.%6}}QS!.$5*r   c                N   \        4       p\        P                  ! WP                  4      pR \        R8X  d   RM\         P
                  R,            \         P                   R2pV P                  \        V4      V4       Rp\        4        V P                  \        V4      R4       R# )z"<weakproxy at 0x[0-9a-fA-F]+; to 'r   r   r   r   Nz#<weakproxy at 0x[0-9a-fA-F]+; dead>)
r   r{   r   rd   r   r   r   r   r|   r   )r   r   rc   r   s   &   r   test_proxy_repr"ReferencesTestCase.test_proxy_repr   s    cmmC/"j0BallS6HI!..IY Z"# 	
 	cE*c?	Br   c                    V! 4       p\         P                  ! V4      pV P                  V! 4       R 4       V! 4       pV P                  W$R4       R# )z,weak reference to live object should be livez-<ref>() should return original object if liveN)r{   rc   assertIsNotNoner   )r   factoryr}   rc   o2s   &&   r   rz   "ReferencesTestCase.check_basic_ref   sE    Ikk!nSUC	EUaD	Fr   c                    ^ V n         V! 4       p\        P                  ! W P                  4      p?\	        4        V P                  V P                   ^R4       V P                  V! 4       R4       R# )r   z(callback did not properly set 'cbcalled'z3ref2 should be dead after deleting object referenceN)r]   r{   rc   rd   r   r   r   )r   r   r}   rc   s   &&  r   r   'ReferencesTestCase.check_basic_callback  sZ    Ikk!]]+?	A#%J	Lr   c                0   \        4       p\        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      pV P	                  W$R 4       \        4       p\        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      pV P	                  W$R 4       V P                  \        P                  ! V4      ^R4       ?\        4        V P                  \        P                  ! V4      ^R4       R# )z1reference object w/out callback should be re-usedzwrong weak ref count for objectz4wrong weak ref count for object after deleting proxyN)r   r{   rc   r   r   r   getweakrefcountr   )r   r}   r   r   r   s   &    r   test_ref_reuse!ReferencesTestCase.test_ref_reuse  s    C{{1~ a {{1~dH	J Ca {{1~{{1~dH	J003Q6	8003QK	Mr   c                    \        4       p\        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      pV P	                  W$R 4       R# )z4proxy object w/out callback should have been re-usedN)r   r{   r   rc   r   )r   r}   proxy1rc   proxy2s   &    r   test_proxy_reuse#ReferencesTestCase.test_proxy_reuse$  sD    Cq!kk!nq!fK	Mr   c                N   \        4       pV P                  V\        P                  ! V4      4       \        P
                  ! 4       p\        P                  ! V4      pV P                  VR 4       VP                  ^4       V P                  \        V4      ^4       V P                  VR4       ^^.VR&   V P                  \        V4      ^4       V P                  \        V4      ^4       V P                  ^VR4       ^V^&   V P                  V^,          ^4       V P                  V^,          ^4       \        P
                  ! V4      p\        P                  ! V4      pV P                  W54       \        P
                  ! \        ^
4      4      p\        P                  ! V4      pV P                  VR,          VR,          4       V P                  VR,          VR,          4       V P                  VR,          VR,          4       V P                  VR,          VR,          4       R# )z(proxy for empty UserList should be falsez+proxy for non-empty UserList should be trueNNNz,proxy didn't support __contains__() properly:rN   NN:NrN   N:   rN   NN)r   check_proxyr{   r   collectionsUserListassertFalseappendr   len
assertTruer   range)r   r}   LpL2p2L3p3s   &       r   test_basic_proxy#ReferencesTestCase.test_basic_proxy,  s   CGMM!,-  "MM!FG	Q#HI1v!Q#Q#aJK!1q!1q!!!!$]]2!!%),]]2A1&BB(BB(C"S'*r   c                     ! R  R\         4      pV! 4       pV P                  R\        \        P                  ! V4      4      4       V P                  \        \        P                  ! V4      4      R4       R# )c                   ,   a  ] tR tRt o R tR tRtV tR# )0ReferencesTestCase.test_proxy_unicode.<locals>.CiJ  c                    R # )stringr   r   s   &r   __str__8ReferencesTestCase.test_proxy_unicode.<locals>.C.__str__K      r   c                    R # )   bytesr   r   s   &r   	__bytes__:ReferencesTestCase.test_proxy_unicode.<locals>.C.__bytes__M  r   r   r   N)r   r   r   r   r   r   r   r   r   s   @r   r   r   J  s         r   r   r   r   N)r   r   dirr{   r   r   bytes)r   r   instances   &  r   test_proxy_unicode%ReferencesTestCase.test_proxy_unicodeH  sQ    	  	 
 3k3w}}X'>#?@w}}X67Br   c                     ! R  R4      pV! 4       p\         P                  ! V4      pV P                  \        P                  ! V4      ^
4       R# )c                   &   a  ] tR tRt o R tRtV tR# ).ReferencesTestCase.test_proxy_index.<locals>.CiT  c                    ^
# )
   r   r   s   &r   	__index__8ReferencesTestCase.test_proxy_index.<locals>.C.__index__U      r   r   N)r   r   r   r   r  r   r   r   s   @r   r   r  T        r   r   N)r{   r   r   operatorindexr   r   r}   r   s   &   r   test_proxy_index#ReferencesTestCase.test_proxy_indexS  s<    	 	 CMM!*B/r   c                     ! R  R4      pV! 4       p\         P                  ! V4      pV P                  V^,          ^*4       V^,          pV P                  V^4       R# )c                   ,   a  ] tR tRt o R tR tRtV tR# ),ReferencesTestCase.test_proxy_div.<locals>.Ci\  c                    ^*# *   r   r=   s   &&r   __floordiv__9ReferencesTestCase.test_proxy_div.<locals>.C.__floordiv__]  r
  r   c                    ^# )   r   r=   s   &&r   __ifloordiv__:ReferencesTestCase.test_proxy_div.<locals>.C.__ifloordiv___  r
  r   r   N)r   r   r   r   r  r  r   r   r   s   @r   r   r  \  s      r   r   Nr{   r   r   r  s   &   r   test_proxy_div!ReferencesTestCase.test_proxy_div[  sP    	 	
 CMM!a$	aBr   c                     ! R  R4      pV! 4       p\         P                  ! V4      pV P                  V^,          R4       V P                  ^V,          R4       V^,          pV P                  VR4       R# )c                   2   a  ] tR tRt o R tR tR tRtV tR# )/ReferencesTestCase.test_proxy_matmul.<locals>.Cih  c                    R # )  r   r=   s   &&r   
__matmul__:ReferencesTestCase.test_proxy_matmul.<locals>.C.__matmul__i  s    r   c                    R# )   ]r   r=   s   &&r   __rmatmul__;ReferencesTestCase.test_proxy_matmul.<locals>.C.__rmatmul__k  s    r   c                    R # )1  r   r=   s   &&r   __imatmul__;ReferencesTestCase.test_proxy_matmul.<locals>.C.__imatmul__m  s    r   r   N)	r   r   r   r   r%  r*  r.  r   r   r   s   @r   r   r"  h  s      r   r   r$  r-  Nr)  r  r  s   &   r   test_proxy_matmul$ReferencesTestCase.test_proxy_matmulg  sd    	 	 CMM!Q%Q%	QC r   c                D    V P                  \        P                  4       R # r   )check_shared_without_callbackr{   rc   r   s   &r    test_shared_ref_without_callback3ReferencesTestCase.test_shared_ref_without_callback~  s    **7;;7r   c                D    V P                  \        P                  4       R # r   )r3  r{   r   r   s   &r   "test_shared_proxy_without_callback5ReferencesTestCase.test_shared_proxy_without_callback  s    **7==9r   c                @   \        ^4      pV! VR4      pV! VR4      pV P                  W4R4       ??V! V4      pV! VR4      pV P                  W4R4       ??V! V4      pV! V4      pV P                  W4R4       ??V! VR4      pV! V4      pV P                  W4R4       R# )rb   Nz%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)r0   r   )r   makerefr}   p1r   s   &&   r   r3  0ReferencesTestCase.check_shared_without_callback  s    1IQQbEFQZQbFGQZQZbEFQQZbFGr   c                   \        4       p\        P                  ! V4      pV P                  W4       V P	                  \        V4      \        P                  R 4       V! R4       V P                  VP                  RR4       V! RR7       V P                  VP                  RR4       V P                  \        V4       V P                  \        V^^^4       R# )zproxy is not of callable typez	twinkies!z1call through proxy not passed through to originalzSplat.)r%   N)r    r{   r   r   r   typeCallableProxyTyper   r#   r   r   )r   r}   r   s   &  r   test_callable_proxy&ReferencesTestCase.test_callable_proxy  s    J}}Q!d4j'";";4	6[H	JxH	J 	)T* 	)T1a3r   c                z   ^Vn         V P                  VP                   ^R4       ^Vn         V P                  VP                   ^R4       V= V P                  VRR4       ^Vn         V P                  VP                   ^R4       ^Vn         V P                  VP                   ^R4       V= V P                  VRR4       R# )	rb   z)proxy does not reflect attribute additionz-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 proxyN)rC  r   assertNotHasAttr)r   r}   r   s   &&&r   r   ReferencesTestCase.check_proxy  s    A@	BAD	FEeU?	A 	K	M	F	HIaJ	Lr   c                     ! R  R4      pV! 4       p\         P                  ! V4      pV^  V P                  VP                  ^ 4       R# )c                   *   a  ] tR tRt o RtR tRtV tR# )3ReferencesTestCase.test_proxy_deletion.<locals>.Fooi  Nc                    Wn         R # r   result)r   accessors   &&r   __delitem__?ReferencesTestCase.test_proxy_deletion.<locals>.Foo.__delitem__  s    &r   rJ  )r   r   r   r   rK  rM  r   r   r   s   @r   FoorH    s     F' 'r   rO  N)r{   r   r   rK  )r   rO  gr*   s   &   r   test_proxy_deletion&ReferencesTestCase.test_proxy_deletion  s>    	' 	' EMM!aD1%r   c                     ! R  R\         4      pV! 4       pV P                  \        \        P                  ! V4      4      \        V4      4       R# )c                       ] tR tRtRtR# )0ReferencesTestCase.test_proxy_bool.<locals>.Listi  r   Nr   r   r   r   r   r   r   r   ListrU    s    $r   rW  N)listr   r   r{   r   )r   rW  lysts   &  r   test_proxy_bool"ReferencesTestCase.test_proxy_bool  s3    4vgmmD12DJ?r   c                   a R o ! V3R lR4      pV! 4       o\         P                  ! S4      pV P                  \        4      ;_uu_ 4        RV9    R R R 4       R #   + '       g   i     R # ; i)Nc                   .   <a  ] tR tRt o V3R ltRtV tR# )1ReferencesTestCase.test_proxy_iter.<locals>.MyObji  c                   < >\         # r   )r<   )r   r   s   &r   __iter__:ReferencesTestCase.test_proxy_iter.<locals>.MyObj.__iter__  s    %%r   r   Nr   r   r   r   r`  r   r   )r   r   s   @r   MyObjr^    s     & &r   rc  blech)r{   r   r   r   )r   rc  r   r   s   &  @r   test_proxy_iter"ReferencesTestCase.test_proxy_iter  sT     	& 	& gMM#y)) qL	 *)))s   AA,	c                   aa . ROoV3R lpV! 4       o ! V3R lR4      pV! 4       pV P                  \        V4      . RO4       R# )rI   c               3   (   <"   S  R j  xL
  R #  L5ir   r   )arrs   r   iterator_func9ReferencesTestCase.test_proxy_next.<locals>.iterator_func  s     NNs   c                   .   <a  ] tR tRt o V3R ltRtV tR# ):ReferencesTestCase.test_proxy_next.<locals>.IteratesWeaklyi  c                0   < \         P                  ! S4      # r   r{   r   )r   its   &r   r`  CReferencesTestCase.test_proxy_next.<locals>.IteratesWeakly.__iter__  s    }}R((r   r   Nrb  )r   rp  s   @r   IteratesWeaklyrm    s     ) )r   rr  N)rI   rN      )r   rX  )r   rj  rr  weak_itri  rp  s   &   @@r   test_proxy_next"ReferencesTestCase.test_proxy_next  s>    	_	) 	) !" 	g	2r   c                   a R  o ! V3R lR4      pV! 4       pRpV P                  \        V4      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)c                      ^ # )r   r   r   r   r   <lambda>8ReferencesTestCase.test_proxy_bad_next.<locals>.<lambda>  s    !r   c                   .   <a  ] tR tRt o V3R ltRtV tR# )1ReferencesTestCase.test_proxy_bad_next.<locals>.Ai  c                0   < \         P                  ! S4      # r   ro  )r   not_an_iterators   &r   r`  :ReferencesTestCase.test_proxy_bad_next.<locals>.A.__iter__  s    }}_55r   r   Nrb  )r   r~  s   @r   Ar|    s     6 6r   r  z'Weakref proxy referenced a non-iteratorN)assertRaisesRegexr   rX  )r   r  amsgr~  s   &   @r   test_proxy_bad_next&ReferencesTestCase.test_proxy_bad_next  sK     $	6 	6 C7##Is33G 4333s   AA 	c           	          ! R  R4      pV! 4       pV P                  RP                  \        \        P                  ! V4      4      4      R4       R# )c                   ,   a  ] tR tRt o R tR tRtV tR# )5ReferencesTestCase.test_proxy_reversed.<locals>.MyObji  c                    ^# )   r   r   s   &r   __len__=ReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__len__      r   c                    \        R 4      # )cba)iterr   s   &r   __reversed__BReferencesTestCase.test_proxy_reversed.<locals>.MyObj.__reversed__  s    E{"r   r   N)r   r   r   r   r  r  r   r   r   s   @r   rc  r    s     # #r   rc  r   r  N)r   rt   reversedr{   r   r   rc  r   s   &  r   test_proxy_reversed&ReferencesTestCase.test_proxy_reversed  s<    	# 	# g'--*<!=>Fr   c                    ! R  R4      pV! 4       pV P                  \        4      ;_uu_ 4        \        \        P                  ! V4      4       RRR4        ! R R4      pV! 4       pV P                  \        4      ;_uu_ 4        \        \        P                  ! V4      4       RRR4       R#   + '       g   i     Lh; i  + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )1ReferencesTestCase.test_proxy_hash.<locals>.MyObji  c                    ^*# r  r   r   s   &r   rF   :ReferencesTestCase.test_proxy_hash.<locals>.MyObj.__hash__  r
  r   r   N)r   r   r   r   rF   r   r   r   s   @r   rc  r    r  r   rc  Nc                       ] tR tRtRtRtR# )r  i  Nr   )r   r   r   r   rF   r   r   r   r   rc  r    s    Hr   )r   r   rE   r{   r   r  s   &  r   test_proxy_hash"ReferencesTestCase.test_proxy_hash  s    	 	 gy))s#$ *	 	 gy))s#$ *) *) *))s    B/ C/B?	C	c                F   \        4       p\        P                  ! V4      p\        P                  ! WP                  4      pV P	                  \        P
                  ! V4      ^R4       \        P                  ! V4      p\        P                  ! WP                  4      pV P	                  \        P
                  ! V4      ^R4       ????\        4        V P	                  \        P
                  ! V4      ^ R4       V P	                  \        P
                  ! ^4      ^ R4       R# )r   z*got wrong number of weak reference objectszAweak reference objects not unlinked from referent when discarded.z2got wrong number of weak reference objects for intN)r   r{   rc   rd   r   r   r   r   )r   r}   r   r   r   r   s   &     r   test_getweakrefcount'ReferencesTestCase.test_getweakrefcount  s    C{{1~{{1mm,003QA	C q!q--0003QA	C $003Q1	2
 	003QI	Kr   c                   \        4       p\        P                  ! WP                  4      p\        P                  ! WP                  4      p?\	        4        V P                  \        P                  ! V4      V.R 4       \        4       p\        P                  ! WP                  4      p\        P                  ! WP                  4      p?\	        4        V P                  \        P                  ! V4      V.R 4       ?\	        4        V P                  \        P                  ! V4      . R4       V P                  \        P                  ! ^4      . R4       R# )zlist of refs does not matchzlist of refs not clearedz#list of refs does not match for intN)r   r{   rc   rd   r   r   getweakrefsr   s   &   r   test_getweakrefs#ReferencesTestCase.test_getweakrefs3  s    C{{1mm,{{1mm,,,Q/$2	4 C{{1mm,{{1mm,,,Q/$2	4 ,,Q//	1 	,,Q/:	<r   c                     ! R  R\         4      pV! R4      p\        P                  ! V4      pV P                  VR,           R4       V P                  RV,           R4       R# )c                       ] tR tRtRtR# )6ReferencesTestCase.test_newstyle_number_ops.<locals>.FiN  r   NrV  r   r   r   Fr  N      r   r  g       @g      ?g      @N)floatr{   r   r   )r   r  r*   r   s   &   r   test_newstyle_number_ops+ReferencesTestCase.test_newstyle_number_opsM  sM    	 	cFMM!S#&q#&r   c                   aaa  ! R  R\         4      o/ oV3R loVVV3R lp V! 4        V P                  R4        V! 4        V P                  R4       R#   S d     L$i ; i  S d     R# i ; i)c                       ] tR tRtRtR# )?ReferencesTestCase.test_callbacks_protected.<locals>.BogusErroriX  r   NrV  r   r   r   
BogusErrorr  X  r  r   r  c                    < SV  R # r   r   )kdatas   &r   remove;ReferencesTestCase.test_callbacks_protected.<locals>.remove[  s
    Qr   c                  B   < R  p RS\         P                  ! V S4      &   Sh)c                      R# )Nr   r   r   r   r   ry  RReferencesTestCase.test_callbacks_protected.<locals>.encapsulate.<locals>.<lambda>^  s    r   N)r{   rc   )r*   r  r  r  s    r   encapsulate@ReferencesTestCase.test_callbacks_protected.<locals>.encapsulate]  s#    A+/DQ'(r   zexception not properly restoredN)	Exceptionfail)r   r  r  r  r  s   & @@@r   test_callbacks_protected+ReferencesTestCase.test_callbacks_protectedU  sw    	 				9M II78	9M II78  		  		s"   A A$ A! A!$A/.A/c                  a ^ RI o ! R R\        4      pV! 4       p\        P                  ! VV3R l4      p??V! 4       pV! 4       Vn        \        P                  ! VP                  V3R l4      pV! 4       pWEn        ??R# )r   Nc                       ] tR tRtRtR# )0ReferencesTestCase.test_sf_bug_840829.<locals>.Ci{  r   NrV  r   r   r   r   r  {  r  r   r   c                 &   < SP                   ! 4       # r   rk   ignorerj   s   &r   ry  7ReferencesTestCase.test_sf_bug_840829.<locals>.<lambda>  s    2::<r   c                 &   < SP                   ! 4       # r   r  r  s   &r   ry  r    s    bjjlr   )rj   r   r{   rc   ic1)r   r   r   r~   r  c2rj   s   &     @r   test_sf_bug_840829%ReferencesTestCase.test_sf_bug_840829n  so     		 	 C[[78 Ss[[:;S r   c                    ^ RI p ! R R\        4      p ! R R\        4      pV! 4       pW$n        \        P                  ! W$P
                  4      Vn        ???VP                  ! 4        R# )r   Nc                       ] tR tRtRtR# )4ReferencesTestCase.test_callback_in_cycle.<locals>.Ji  r   NrV  r   r   r   Jr    r  r   r  c                   &   a  ] tR tRt o R tRtV tR# )5ReferencesTestCase.test_callback_in_cycle.<locals>.IIi  c                    V P                    R # r   )r  r   r  s   &&r   	acallback?ReferencesTestCase.test_callback_in_cycle.<locals>.II.acallback  s	    r   r   N)r   r   r   r   r  r   r   r   s   @r   IIr    s      r   r  )rj   r   r  r{   rc   r  r~   rk   )r   rj   r  r  Is   &    r   test_callback_in_cycle)ReferencesTestCase.test_callback_in_cycle  sQ    	 		 	 D{{1kk*2 q"


r   c                    ^ RI p ! R R4      pV! 4       V! 4       rCWDn        W4n        \        P                  ! W4P
                  4      Vn        ??VP                  ! 4        R# )r   Nc                   &   a  ] tR tRt o R tRtV tR# )=ReferencesTestCase.test_callback_reachable_one_way.<locals>.Ci  c                N    V P                    V P                   V P                   R # r   mer  r~   r  s   &&r   cb@ReferencesTestCase.test_callback_reachable_one_way.<locals>.C.cb      r   r   Nr   r   r   r   r  r   r   r   s   @r   r   r          r   r   )rj   r  r  r{   rc   r  r~   rk   )r   rj   r   r  r  s   &    r   test_callback_reachable_one_way2ReferencesTestCase.test_callback_reachable_one_way  sH    	 	 acBB&


r   c                    ^ RI p ! R R\        4      p ! R R4      pV! 4       V! 4       rTWUn        WEn        \        P
                  ! WEP                  4      Vn        ????VP                  ! 4        R# )r   Nc                   &   a  ] tR tRt o R tRtV tR# )=ReferencesTestCase.test_callback_different_classes.<locals>.Ci  c                N    V P                    V P                   V P                   R # r   r  r  s   &&r   r  @ReferencesTestCase.test_callback_different_classes.<locals>.C.cb  r  r   r   Nr  r   s   @r   r   r    r  r   r   c                       ] tR tRtRtR# )=ReferencesTestCase.test_callback_different_classes.<locals>.Di  r   NrV  r   r   r   Dr    r  r   r  )	rj   r   r  r  r{   rc   r  r~   rk   )r   rj   r   r  r  r  s   &     r   test_callback_different_classes2ReferencesTestCase.test_callback_different_classes  sX    	 		 	 acBB&Aq


r   c                &  a ^ RI p. o ! V3R lR\        4      pV! ^4      V! ^4      rCWCn        W4n        \        P                  ! WCP
                  4      Vn        \        P                  ! W4P
                  4      Vn        V3R lp\        P                  ! W%4      p???V P                  S. 4       VP                  ! 4        V P                  SR.4       V P                  V! 4       R4       SR VP                  ! 4        V P                  S. 4       R# )r   Nc                   4   <a  ] tR tRt o R tV3R ltRtV tR# )AReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.Ci  c                    Wn         R # r   	attribute)r   values   &&r   r4   JReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.__init__   s    !&r   c                >   < SP                  V P                  4       R # r   )r   r   r   r  alists   &&r   r  KReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C.acallback  s    TVV$r   r  N)r   r   r   r   r4   r  r   r   r   r  s   @r   r   r    s     '% %r   r   c                 *   < SP                  R 4       R# )C went awayNr   r  r  s   &r   C_went_awayKReferencesTestCase.test_callback_in_cycle_resurrection.<locals>.C_went_away  s    LL'r   r  r   )	rj   r   r   r{   rc   r  r~   r   rk   )r   rj   r   r  r  r  r~   r  s   &      @r   #test_callback_in_cycle_resurrection6ReferencesTestCase.test_callback_in_cycle_resurrection  s     	% 	% 1qtBB-B-	([[(A#



 	0t$!H


#r   c                V  a ^ RI p. oV3R lp ! V3R lR\        4      pV! 4       V! 4       rTWTn        WEn        VP                  p\        P
                  ! WV4      Vn        \        P
                  ! WeP                  4      Vn        \        P
                  ! Wb4      pV P                  V! 4       V4       ????V P                  S. 4       VP                  ! 4        V P                  SR.4       V P                  V! 4       R4       SR VP                  ! 4        V P                  S. 4       R# )r   Nc                 *   < SP                  R 4       R# )safe_callback calledNr  r  s   &r   safe_callbackDReferencesTestCase.test_callbacks_on_callback.<locals>.safe_callback%  s    LL/0r   c                   .   <a  ] tR tRt o V3R ltRtV tR# )8ReferencesTestCase.test_callbacks_on_callback.<locals>.Ci(  c                *   < SP                  R 4       R# )z	cb calledNr  r  s   &&r   r  ;ReferencesTestCase.test_callbacks_on_callback.<locals>.C.cb)  s    [)r   r   Nr  r  s   @r   r   r  (  s     * *r   r   r
  r   )
rj   r   r>   r  r{   rc   r~   r   r   rk   )	r   rj   r  r   r   drd   external_wrr  s	   &       @r   test_callbacks_on_callback-ReferencesTestCase.test_callbacks_on_callback   s     	1	* 	* sAC144{{1'{{8TT*kk(:kmX. aA#


!7 89-!H


#r   c                D    V P                  \        P                  4       R # r   )check_gc_during_creationr{   rc   r   s   &r   test_gc_during_ref_creation.ReferencesTestCase.test_gc_during_ref_creationF  s    %%gkk2r   c                D    V P                  \        P                  4       R # r   )r  r{   r   r   s   &r   test_gc_during_proxy_creation0ReferencesTestCase.test_gc_during_proxy_creationI  s    %%gmm4r   c                |   \         P                  ! 4       p\         P                  ! ^^^4       \         P                  ! 4         ! R R4      pR pV! 4       pV! 4       pWfn        V! V4      Vn         V! 4       p\        P                  ! WT4       \         P                  ! V!   R#   \         P                  ! T!   i ; i)rb   c                       ] tR tRtRtR# )6ReferencesTestCase.check_gc_during_creation.<locals>.AiP  r   NrV  r   r   r   r  r  P  r  r   r  c                      R # r   r   )argss   *r   rd   =ReferencesTestCase.check_gc_during_creation.<locals>.callbackS      r   N)rj   get_thresholdset_thresholdrk   r  r~   r{   rc   )r   r:  
thresholdsr  rd   
referencedr  s   &&     r   r  +ReferencesTestCase.check_gc_during_creationL  s    %%'

Aq!


	 		 S
Cz"	* AKK
- j)Bj)s   2B% %B;c                2     ! R  R\         4      pV! 4       pR# )c                   &   a  ] tR tRt o R tRtV tR# )>ReferencesTestCase.test_ref_created_during_del.<locals>.Targetij  c                2    \         P                  ! V 4      sR # r   )r{   rc   ref_from_delr   s   &r   __del__FReferencesTestCase.test_ref_created_during_del.<locals>.Target.__del__k  s    &{{40r   r   Nr   r   r   r   r-  r   r   r   s   @r   Targetr*  j  s     1 1r   r0  N)r   )r   r0  ws   &  r   test_ref_created_during_del.ReferencesTestCase.test_ref_created_during_dele  s    
	1V 	1
 Hr   c           	         \         P                  ! \        4      pV P                  \        VP
                  ^ ^ ^ ^ ^ 4       \        P                  ! 4        R# r[   )r{   rc   r  r   r   r4   rj   rk   )r   rs   & r   	test_initReferencesTestCase.test_initq  s9     KK	")QZZAq!Q?


r   c                    ! R  R\         4      p. p\        P                  ! \        4       \        P                  ! WP                  4      pRp\
        P                  ! 4        V P                  V! 4       R4       V P                  W#.4       R# )c                       ] tR tRtRtR# )*ReferencesTestCase.test_classes.<locals>.Ai{  r   NrV  r   r   r   r  r:  {  r  r   r  N)r   r{   rc   intr   rj   rk   r   )r   r  lr  s   &   r   test_classesReferencesTestCase.test_classesy  sa    	 	CKK88$


d#C r   c                   \        ^4      p\        ^4      p\        ^4      p\        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      pV P                  WE8H  4       V P	                  WE8g  4       V P	                  WF8H  4       V P                  WF8g  4       V P                  WG8H  4       V P	                  WG8g  4       V P	                  WA8H  4       V P                  WA8g  4       V P                  V\
        8H  4       V P	                  V\
        8g  4       ???\        P                  ! 4        WEV3 F  pV P                  V! 4       R4       K  	  V P	                  WE8H  4       V P                  WE8g  4       V P	                  WF8H  4       V P                  WF8g  4       V P                  WG8H  WGJ 4       V P                  WG8g  WGJ4       R# ra   )
r0   r{   rc   r   r   r   rj   rk   r   r   )	r   r%   yzr  br   r  r5  s	   &        r   test_equality ReferencesTestCase.test_equality  s   1I1I1IKKNKKNKKNKKN 	    Y'i(q!


qAMM!#t$  	  (,r   c                   \         P                  \         P                  \         P                  \         P                  .p\        ^4      p\        ^4      p\        P                  ! V4      p\        P                  ! V4      pV F  pV P                  \        WdV4       K  	  ??\        P                  ! 4        V F  pV P                  \        WdV4       K  	  R# ra   )r  ltgtleger0   r{   rc   r   r   rj   rk   )r   opsr%   r@  r  rB  ops   &      r   test_ordering ReferencesTestCase.test_ordering  s    {{HKKhkkB1I1IKKNKKNBi2  q


Bi2 r   c                ~   \        ^*4      p\        ^*4      p\        P                  ! V4      p\        P                  ! V4      pV P                  \	        V4      \	        ^*4      4       ??\
        P                  ! 4        V P                  \	        V4      \	        ^*4      4       V P                  \        \        V4       R# )r  N)	r0   r{   rc   r   rE   rj   rk   r   r   )r   r%   r@  r  rB  s   &    r   test_hashingReferencesTestCase.test_hashing  s    2J2JKKNKKNa$r(+q


 	a$r(+)T1-r   zrequires deep stackc                     ! R  R4      p\         P                  ! 4       pV! R4      ;r4\        ^d4       F  pV! V4      ;W$&   pK  	  ?\        P                  ! 4        R# )c                   &   a  ] tR tRt o R tRtV tR# )1ReferencesTestCase.test_trashcan_16602.<locals>.Ci  c                   a V'       g   R # \         P                  ! V 4      oV3R lp\         P                  ! W4      V n        R # )Nc                    < S! 4       pR # r   r   )wparentr}   wselfs   & r   r  FReferencesTestCase.test_trashcan_16602.<locals>.C.__init__.<locals>.cb  s
    Ar   )r{   rc   rV  )r   parentr  rW  s   && @r   r4   :ReferencesTestCase.test_trashcan_16602.<locals>.C.__init__  s,    D) &{{66r   )rV  NrW   r   s   @r   r   rS    s     7 7r   r   N)r{   WeakKeyDictionaryr   rj   rk   )r   r   r  rootr   ns   &     r   test_trashcan_16602&ReferencesTestCase.test_trashcan_16602  sQ    	7 	7 %%'T7sAtOAD1 


r   c                    \        ^4      pR p\        P                  ! W4      pV P                  VP                  V4       \        P                  ! V4      pV P                  VP                  4       R# )rb   c                     R # r   r   r   s   &r   ry  <ReferencesTestCase.test_callback_attribute.<locals>.<lambda>      tr   N)r0   r{   rc   r   __callback__r   )r   r%   rd   r   r   s   &    r   test_callback_attribute*ReferencesTestCase.test_callback_attribute  sS    1I#{{1'd''2{{1~$++,r   c                    \        ^4      p\        P                  ! WP                  4      pV P	                  VP
                  4       ?\        P                  ! 4        V P                  VP
                  4       R# ra   )	r0   r{   rc   rd   r   rd  r   r   r   )r   r%   rc   s   &  r   &test_callback_attribute_after_deletion9ReferencesTestCase.test_callback_attribute_after_deletion  sT    1Ikk!]]+S--.#**+r   c                    \        ^4      pR p\        P                  ! W4      pV P                  \        4      ;_uu_ 4        R Vn        RRR4       R#   + '       g   i     R# ; i)rb   c                     R # r   r   r   s   &r   ry  @ReferencesTestCase.test_set_callback_attribute.<locals>.<lambda>  rc  r   c                     R # r   r   r   s   &r   ry  rl    s    Dr   N)r0   r{   rc   r   AttributeErrorrd  )r   r%   rd   r   s   &   r   test_set_callback_attribute.ReferencesTestCase.test_set_callback_attribute  sF    1I#{{1'~.. 0D /...s   	AA&	c                     ! R  R\         4      pV! ^4      p\        P                  ! VR 4      p?\        P                  ! 4        R# )c                   &   a  ] tR tRt o R tRtV tR# );ReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDeli  c                    R # r   r   r   s   &r   r-  CReferencesTestCase.test_callback_gcs.<locals>.ObjectWithDel.__del__  rc  r   r   Nr/  r   s   @r   ObjectWithDelrs    s     ##r   rv  c                 ,    \         P                  ! 4       # r   )r   r   r   s   &r   ry  6ReferencesTestCase.test_callback_gcs.<locals>.<lambda>  s    '*<*<*>r   N)r0   r{   rc   r   r   )r   rv  r%   r   s   &   r   test_callback_gcs$ReferencesTestCase.test_callback_gcs  s8    	$F 	$!{{1>?r   c                    \         P                  ! R 4      P                  4       p\        P                  ! RV4      w  r#VP
                  P                  RR4      pV P                  VR4       R# )a  
        import _testcapi
        import weakref

        class TestObj:
            pass

        def callback(obj):
            pass

        obj = TestObj()
        # The choice of 50 is arbitrary, but must be large enough to ensure
        # the allocation won't be serviced by the free list.
        wrs = [weakref.ref(obj, callback) for _ in range(50)]
        _testcapi.set_nomemory(0)
        del obj
        -casciibackslashreplacez*_Py_Dealloc: Deallocator of type 'TestObj'N)textwrapdedentstripr   run_python_until_enderrdecodeassertNotRegex)r   coderes_stderrs   &    r   test_no_memory_when_clearing/ReferencesTestCase.test_no_memory_when_clearing  s_          UW! 	" 33D$?);<F$PQr   )r]   rc   N)Dr   r   r   r   r   r   cpython_onlyr   r   r   r   r   r   r   r   r   rz   r   r   r   r   r  r  r  r0  r4  r7  r3  r@  r   rQ  rZ  re  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  r6  r=  rC  rL  rO  unittestskipIfr	   r
   r^  re  rh  ro  ry  r  r   r   r   s   @r   rx   rx   j   s     , ,>	47
 	4 	4	F$D+$ B BF	LM.M+8	C0
 !.8:H$4*L*	&@(3G% K,<4'92&P&P08,$\$$L35*2

!#-J3. __W))+@A B*-,1 R Rr   rx   c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	SubclassableWeakrefTestCasei  c                v    ! R  R\         P                  4      p\        R4      pV! V^R7      pV P                  V! 4       V4       V P	                  VP
                  4       V P                  VP                  ^4       ?\        4        V P                  V! 4       4       V P	                  VP
                  4       R# )c                   B   a a ] tR tRt oRV 3R lltV 3R ltRtVtV ;t# )=SubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRefi  c                2   < W0n         \        SV `	  W4       R # r   )r  superr4   )r   obrd   r  	__class__s   &&&&r   r4   FSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__init__  s    "
 .r   c                .   < R V n         \        SV `	  4       # )T)calledr  r&   )r   r  s   &r   r&   FSubclassableWeakrefTestCase.test_subclass_refs.<locals>.MyRef.__call__  s    "w'))r   )r  r  )Nr  )	r   r   r   r   r4   r&   r   r   __classcell__)r  r   s   @@r   MyRefr    s     /* *r   r  rC  r  N)
r{   rc   r0   r   r   r  r   r  r   r   )r   r  r}   mrs   &   r   test_subclass_refs.SubclassableWeakrefTestCase.test_subclass_refs  s    	*GKK 	* 5M1BbdA		"2&"$		"r   c                    ! R  R\         P                  4      p\        ^*4      pV! V4      p\         P                  ! V4      pV P                  W44       V P	                  \         P
                  ! V4      WC.4       V P	                  \         P                  ! V4      ^4       V! V4      pV P	                  \         P                  ! V4      ^4       \         P
                  ! V4      pV P	                  \        V4      ^4       V P                  WF^ ,          4       V P                  W6R,          4       V P                  WVR,          4       R# )c                       ] tR tRtRtR# )XSubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs.<locals>.MyRefi-  r   NrV  r   r   r   r  r  -  r  r   r  :rb   NNN)
r{   rc   r0   assertIsNotr   r  r   r   r   r   )r   r  r}   r1r2r3refss   &      r   -test_subclass_refs_dont_replace_standard_refsISubclassableWeakrefTestCase.test_subclass_refs_dont_replace_standard_refs,  s    	GKK 	2J1X[[^ ,,Q/":003Q71X003Q7""1%TA&bq'"br(#br(#r   c                    ! R  R\         P                  4      p\        ^*4      pV! V\        4      pV! V\        4      pV P                  W44       \         P                  ! V4      pV P                  W54       V P                  WE4       R# )c                       ] tR tRtRtR# )USubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks.<locals>.MyRefi>  r   NrV  r   r   r   r  r  >  r  r   r  N)r{   rc   r0   idr   r  r  r   )r   r  r}   r  r  r  s   &     r   *test_subclass_refs_dont_conflate_callbacksFSubclassableWeakrefTestCase.test_subclass_refs_dont_conflate_callbacks=  sg    	GKK 	2J1b\1c] ""1%bbr   c                8    ! R  R\         P                  4      p\        ^*4      pV! VRRR4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  4       R4       V P                  VR4       R# )c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )HSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRefiI  c                B    \         P                  P                  WV4      # r   )r{   rc   __new__)r>  r  rd   slot1slot2s   &&&&&r   r  PSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__new__K  s    {{**4X>>r   c                    W0n         W@n        R # r   r  r  )r   r  rd   r  r  s   &&&&&r   r4   QSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.__init__M  s    "
"
r   c                <    V P                   V P                  ,           # r   r  r   s   &r   methMSubclassableWeakrefTestCase.test_subclass_refs_with_slots.<locals>.MyRef.methP  s    zzDJJ..r   r  N)
r   r   r   r   	__slots__r  r4   r  r   r   r   s   @r   r  r  I  s     (I?#/ /r   r  Nabcdefabcdef__dict__)r{   rc   r0   r   r  r  r  rD  )r   r  r}   r5  s   &   r   test_subclass_refs_with_slots9SubclassableWeakrefTestCase.test_subclass_refs_with_slotsH  s{    	/GKK 	/ 2J!T5%(%(%(8,a,r   c                <  a   ! R R\         P                  4      pV 3R lp\        4       pV! W24      pW4n        ??S P	                  S P
                  ^ 4       \        4       pV! W24      pV! W24      pWTn        W5n        ???S P	                  S P
                  ^ 4       R# )z3Confirm https://bugs.python.org/issue3100 is fixed.c                       ] tR tRtRtR# )HSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.MyRefi`  r   NrV  r   r   r   r  r  `  r  r   r  c                 :   < S;P                   ^,          un         R# ra   r\   )r1  r   s   &r   rd   KSubclassableWeakrefTestCase.test_subclass_refs_with_cycle.<locals>.callbacke  s    MMQMr   N)r{   rc   r   r}   r   r]   r5  )r   r  rd   r}   r  r  s   f     r   test_subclass_refs_with_cycle9SubclassableWeakrefTestCase.test_subclass_refs_with_cycleY  s    	GKK 	
	 C1* C11*r   r   N)r   r   r   r   r  r  r  r  r  r   r   r   s   @r   r  r    s#     #$$"	 -"$+ $+r   r  c                   t   a  ] tR tRt o R tR tR tR tR tR t	]
P                  R 4       tR	 tR
 tRtV tR# )WeakMethodTestCasei  c                $     ! R R\         4      pV# )z3Return an Object subclass overriding `some_method`.c                   &   a  ] tR tRt o R tRtV tR# )'WeakMethodTestCase._subclass.<locals>.Ci  c                    ^# )rs  r   r   s   &r   rJ   3WeakMethodTestCase._subclass.<locals>.C.some_method  r  r   r   N)r   r   r   r   rJ   r   r   r   s   @r   r   r    s      r   r   )r0   )r   r   s   & r   	_subclassWeakMethodTestCase._subclass  s    	 	 r   c                   \        ^4      p\        P                  ! VP                  4      pV P	                  V\        P
                  4       V P	                  V! 4       \        VP                  4      4       V P                  V! 4       P                  V4       V P                  V! 4       P                  VP                  P                  4       V P                  V! 4       ! 4       ^4       R# ra   )r0   r{   
WeakMethodrJ   assertIsInstanceReferenceTyper>  r   __self____func__r   r   r}   r5  s   &  r   
test_aliveWeakMethodTestCase.test_alive  s    1Iq}}-a!6!67ac4#67acllA&acllAMM$:$:;"r   c                    \        ^4      p\        P                  ! VP                  4      p?\        P
                  ! 4        V P                  V! 4       R4       R# ra   )r0   r{   r  rJ   rj   rk   r   r  s   &  r   test_object_dead#WeakMethodTestCase.test_object_dead  s;    1Iq}}-


ac4 r   c                    V P                  4       pV! ^4      p\        P                  ! VP                  4      pV=\        P
                  ! 4        V P                  V! 4       R4       R# ra   )r  r{   r  rJ   rj   rk   r   )r   r   r}   r5  s   &   r   test_method_dead#WeakMethodTestCase.test_method_dead  sI    NNaDq}}-M


ac4 r   c                V  a V P                  4       p. oV3R  lpV! ^4      p\        P                  ! VP                  V4      p?\        P
                  ! 4        V P                  SV.4       \        P                  Vn        \        P
                  ! 4        V P                  SV.4       R# )c                 *   < SP                  V 4       R # r   r  r3   callss   &r   r  =WeakMethodTestCase.test_callback_when_object_dead.<locals>.cb      LLr   N)r  r{   r  rJ   rj   rk   r   r0   r   r   r  r}   r5  r  s   &    @r   test_callback_when_object_dead1WeakMethodTestCase.test_callback_when_object_dead  s~    NN	aDq}}b1


$**


$r   c                0  a V P                  4       p. oV3R  lpV! ^4      p\        P                  ! VP                  V4      pV=\        P
                  ! 4        V P                  SV.4       ?\        P
                  ! 4        V P                  SV.4       R# )c                 *   < SP                  V 4       R # r   r  r  s   &r   r  =WeakMethodTestCase.test_callback_when_method_dead.<locals>.cb  r  r   N)r  r{   r  rJ   rj   rk   r   r  s   &    @r   test_callback_when_method_dead1WeakMethodTestCase.test_callback_when_method_dead  sv    NN	aDq}}b1M


$


$r   c                    \        ^4      pR p\        P                  ! VP                  V4      p\        P                  ! V4      p?V P                  V! 4       R4       R# )rb   c                     R # r   r   )r  s   &r   r  -WeakMethodTestCase.test_no_cycles.<locals>.cb  r"  r   N)r0   r{   r  rJ   rc   r   )r   r}   r  r5  r~   s   &    r   test_no_cycles!WeakMethodTestCase.test_no_cycles  sH     1I	q}}b1[[^bdD!r   c                r  a  V 3R  lpV 3R lp\        ^4      p\        ^4      p\        P                  ! VP                  4      p\        P                  ! VP                  4      p\        P                  ! VP                  4      p\        P                  ! VP                  4      pV! WV4       V! Wx4       V! WW4       V! WX4       V! Wg4       V! Wh4       \        ^4      p	\        P                  ! V	P                  4      p
\        P                  ! V	P                  4      pV! WZ4       V! W[4       V! Wj4       V! Wk4       V! WSP                  4       V! V\
        4       ???	\        P                  ! 4        WVWxW3pV F6  pV F-  pS P                  W8H  WJ 4       S P                  W8g  WJ4       K/  	  K8  	  R# )c                 T   < SP                  W8H  4       SP                  W8g  4       R # r   r   r   r  rB  r   s   &&r   _eq-WeakMethodTestCase.test_equality.<locals>._eq  !    OOAF#QV$r   c                 T   < SP                  W8g  4       SP                  W8H  4       R # r   r  r  s   &&r   _ne-WeakMethodTestCase.test_equality.<locals>._ne  r  r   N)	r0   r{   r  rJ   rO   r   rj   rk   r   )r   r  r  r%   r@  r  rB  r   r  rA  er*   r  qr5  s   f              r   rC   WeakMethodTestCase.test_equality  sV   	%	% 1I1Iq}}-q}}-q~~.q~~.A	A	A	A	A	A	1Iq}}-q~~.A	A	A	A	A}}Ayq!


Q1A  0  4  r   c                    \        ^4      p\        ^4      p\        P                  ! VP                  4      p\        P                  ! VP                  4      p\        P                  ! VP                  4      pV P                  \        V4      \        V4      4       \        V4      p??\        P                  ! 4        V P                  \        V4      V4       V P                  \        V4      V4       V P                  \        \        V4       R# ra   )r0   r{   r  rJ   rO   r   rE   rj   rk   r   r   )r   r%   r@  r  rB  r   has   &      r   rO  WeakMethodTestCase.test_hashing  s     1I1Iq}}-q}}-q~~.a$q'*!Wq


a"%a"%)T1-r   r   N)r   r   r   r   r  r  r  r  r  r  r   r  r  rC  rO  r   r   r   s   @r   r  r    sM     #!!% %  " "'5R. .r   r  c                     a  ] tR tRt o ^
t]P                  ! RR7      '       d   ]P                  '       d   RtMRtR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R, t/R- t0]1Pd                  ! 4       R. 4       t3]1Pd                  ! 4       R/ 4       t4]1Pd                  ! 4       R0 4       t5]Pl                  R1 4       t7R2 t8]1Pd                  ! 4       ]Pr                  ! R34      R4 4       4       t:]1Pd                  ! 4       ]Pr                  ! R34      R5 4       4       t;]1Pd                  ! 4       ]Pr                  ! R34      R6 4       4       t<]1Pd                  ! 4       ]Pr                  ! R34      R7 4       4       t=]Pl                  R8 4       t>R9t?V t@R:# );MappingTestCasei	  T)threadi  i c                  a ^p\        V4       Uu. uF  p\        4       NK  	  ppV! V3R lV 4       4      pVP                  4       p \        V4       ?\
        P                  ! 4        \        V4      p?\
        P                  ! 4        \        V4      p	V P                  VR4       V P                  V	^ 4       R# u upi   \         d     Lzi ; i)   c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir   r   .0r}   conss   & r   	<genexpr>3MappingTestCase.check_len_cycles.<locals>.<genexpr>  s     /AQ   N)r   rb   )
r   rR   itemsnextStopIterationrj   rk   r   r   r   )
r   	dict_typer  Nr  r  dctrp  n1n2s
   &&f       r   check_len_cycles MappingTestCase.check_len_cycles  s    %*1X.XX.///YY[	H 


X


Xb&!Q! /  		s   B<	C CCc                H    V P                  \        P                  R  4       R# )c                 
    V ^3# rb   r   r  s   &r   ry  <MappingTestCase.test_weak_keyed_len_cycles.<locals>.<lambda>(      Aq6r   N)r  r{   r[  r   s   &r   test_weak_keyed_len_cycles*MappingTestCase.test_weak_keyed_len_cycles'  s    g779IJr   c                H    V P                  \        P                  R  4       R# )c                 
    ^V 3# r!  r   r"  s   &r   ry  =MappingTestCase.test_weak_valued_len_cycles.<locals>.<lambda>+  s    aVr   N)r  r{   WeakValueDictionaryr   s   &r   test_weak_valued_len_cycles+MappingTestCase.test_weak_valued_len_cycles*  s    g99;KLr   c                ~  a V P                   ! \        P                  .\        P                  ! 4       O5!   \	        ^^d4       F  p^p\        P
                  ! ^ 4       \        P                  ! W3V4       \	        V4       Uu. uF  p\        4       NK  	  ppV! V3R lV 4       4      p?VP                  4       p \        V4       \        V4      p	?\        V4      p
V P                  V	^ 4       V P                  W4       V P                  V
^ 4       V P                  W4       K  	  R# u upi   \         d     Lui ; i)rb   c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir   r   r  s   & r   r  1MappingTestCase.check_len_race.<locals>.<genexpr>5  s     3UDGGUr  N)
addCleanuprj   r$  r#  r   rk   rR   r  r  r  r   assertGreaterEqualassertLessEqual)r   r  r  thr  r  r  r  rp  r  r  s   &&f        r   check_len_raceMappingTestCase.check_len_race-  s   ((>2+;+;+=>3-BAJJqMRR().q2AXZE23U33CBR SBSB##B*  '##B*  ('   3 ! s   D);D..D<;D<c                H    V P                  \        P                  R  4       R# )c                 
    V ^3# r!  r   r"  s   &r   ry  :MappingTestCase.test_weak_keyed_len_race.<locals>.<lambda>F  s    !Qr   N)r4  r{   r[  r   s   &r   test_weak_keyed_len_race(MappingTestCase.test_weak_keyed_len_raceE  s    G557GHr   c                H    V P                  \        P                  R  4       R# )c                 
    ^V 3# r!  r   r"  s   &r   ry  ;MappingTestCase.test_weak_valued_len_race.<locals>.<lambda>I  r$  r   N)r4  r{   r*  r   s   &r   test_weak_valued_len_race)MappingTestCase.test_weak_valued_len_raceH  s    G779IJr   c                   V P                  4       w  rV FL  pV P                  \        P                  ! V4      ^4       V P	                  W1VP
                  ,          R4       KN  	  \        VP                  4       4      p\        VP                  4       P                  4       4      pVP                  4        VP                  4        V P                  WER4       ??V P                  \        V4      V P                  4       V^  \        4        V P                  \        V4      V P                  ^,
          R4       ??\        4        V P                  \        V4      ^ R4       \        P                  ! 4       pV P                  \        VP                   ^4       \#        4       V^&   \        4        V P                  \        VP                   ^4       R# )rb   #wrong object returned by weak dict!z/cloning of weak-valued dictionary did not work!/deleting object did not cause dictionary updatez0deleting the values did not clear the dictionaryN)make_weak_valued_dictr   r{   r   r   r3   rX  r  copysortr   COUNTr   r*  r   KeyError__getitem__r   r   r   objectsr}   items1items2s   &     r   test_weak_values MappingTestCase.test_weak_valuesK  sc    224AW44Q7;MM!!%%[>@  djjl#diik'')*F	HFTDJJ/AJTDJJNF	HQTAG	I **,(D$4$4a8#Q(D$4$4a8r   c                   V P                  4       w  rV FT  pV P                  \        P                  ! V4      ^RV,          4       V P	                  VP
                  W,          R4       KV  	  VP                  4       pVP                  4       P                  4       pV P                  \        V4      \        V4      R4       ??V P                  \        V4      V P                  4       V^  \        4        V P                  \        V4      V P                  ^,
          R4       ??\        4        V P                  \        V4      ^ R4       \        ^*4      pRW&   V P                  W14       V P                  ^"V4       R# )rb   z&wrong number of weak references to %r!rA  z.cloning of weak-keyed dictionary did not work!rB  z.deleting the keys did not clear the dictionaryz$What is the meaning of the universe?N)make_weak_keyed_dictr   r{   r   r   r3   r  rD  setr   rF  r   r0   r   assertNotInrI  s   &     r   test_weak_keysMappingTestCase.test_weak_keysk  s8   
 113AW44Q7AAEGMM!%%>@ 
 ""$Vc&kE	GFTDJJ/AJTTZZ!^F	HQTAE	G2J8aT"r   c                r   V P                  4       w  rV P                  V4       VP                  4       pV P                  \	        V4      \	        V4      4       \        V4      pV F_  pV! 4       pV P                  Wa4       V P                  Wa4       V P                  VP                  W,          4       VP                  V4       Ka  	  V P                  \	        V4      ^ 4       \        V4      pV P                  \	        \        VP                  4       4      4      \	        V4      4       VP                  4        F_  pV! 4       pV P                  Wa4       V P                  Wa4       V P                  VP                  W,          4       VP                  V4       Ka  	  V P                  \	        V4      ^ 4       R# r[   )	rP  check_iterskeyrefsr   r   rX  r   r3   r  r   r   rJ  r  objects2r~   r  s   &      r   test_weak_keyed_iters%MappingTestCase.test_weak_keyed_iters  sE   113 ||~TCL1=BBMM"#MM"#RVVTX.OOB  	X* =T$,,.12CLA,,.BBMM"#MM"#RVVTX.OOB ! 	X*r   c                   V P                  4       w  rV P                  V4       VP                  4       pV P                  \	        V4      \	        V4      4       \        V4      pV Fs  pV! 4       pV P                  WaVP                  ,          4       V P                  VP                  WP                  ,          P                  4       VP                  V4       Ku  	  V P                  \	        V4      ^ 4       \        V4      pV P                  \	        \        VP                  4       4      4      \	        V4      4       VP                  4        Fs  pV! 4       pV P                  WaVP                  ,          4       V P                  VP                  WP                  ,          P                  4       VP                  V4       Ku  	  V P                  \	        V4      ^ 4       R# r[   )	rC  rV  	valuerefsr   r   rX  r3   r  itervaluerefsrX  s   &      r   test_weak_valued_iters&MappingTestCase.test_weak_valued_iters  s\   224 ~~TCL1=BBRbff.RVVT&&\%5%56OOB	 
 	X* =T$"4"4"678#g,G$$&BBRbff.RVVT&&\%5%56OOB	 '
 	X*r   c                   \        VP                  4       4      pVP                  4        F  pVP                  V4       K  	  V P                  VR 4       \        VP	                  4       4      pV F  pVP                  V4       K  	  V P                  VR4       \        VP	                  4       4      pVP	                  4        F  pVP                  V4       K  	  V P                  VR4       \        VP                  4       4      pVP                  4        F  pVP                  V4       K  	  V P                  VR4       R# )zitems() did not touch all itemsz!__iter__() did not touch all keysz!iterkeys() did not touch all keysz%itervalues() did not touch all valuesN)rX  r  r  r   keysvalues)r   r   r  itemrb  r  rc  vs   &&      r   rV  MappingTestCase.check_iters  s    TZZ\"JJLDLL ! AB DIIK AKKN BC DIIK AKKN BC dkkm$AMM! <	>r   c                X   \        V4      p\        \        W4      ! 4       4      p\        V4       VR \        P
                  ! 4        V P                  \        \        V4      4      \        V4      \        V4      ^,
          .4       ?V P                  \        V4      V^,
          4       R# )rb   N)	r   r  getattrr  rj   rk   r   rX  r   )r   r   rJ  	iter_namer]  rp  s   &&&&  r   "check_weak_destroy_while_iterating2MappingTestCase.check_weak_destroy_while_iterating  sw    I'$*,-RBK


c$r(mc'lCL14D%EFTAE*r   c                   V! 4       ;_uu_ 4       w  r4V P                  W14       R R R 4       V! 4       ;_uu_ 4       w  r4V P                  \        VP                  V4       R R R 4       V P                  XV4       V! 4       ;_uu_ 4       w  r4V P                  \        VP                  V4       R R R 4       V P                  W14       V! 4       ;_uu_ 4       w  r4WAV&   R R R 4       V P                  W,          X4       \        P                  ! V4      pV! 4       ;_uu_ 4       w  r4VP                  V4       R R R 4       V P                  W4       V! 4       ;_uu_ 4       w  r4VP                  4        R R R 4       V P                  \        V4      ^ 4       R #   + '       g   i     ELy; i  + '       g   i     ELR; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; ir   )
rR  r   rG  rM  popr   rD  updateclearr   )r   r   testcontextr  re  ddicts   &&&   r   -check_weak_destroy_and_mutate_while_iterating=MappingTestCase.check_weak_destroy_and_mutate_while_iterating  sO    ]]fqQ% ]]fqh(8(8!< D!]]fqh!4 !]]fqG !$		$]]fqKK %]]fqJJL TA&# ]]]] ]] ] ] ]sF   F$F($F<G G#G6F%	(F9	<G	G 	#G3	6H	c                P   \        R 4      pV! 4       ;_uu_ 4        \        V4      pVP                  \        VP	                  4       4      4       V P                  \        V4      V^,
          4       W1V&   V P                  \        V4      V4       RRR4       V! 4       ;_uu_ 4        V P                  \        V4      X^,
          4       VP                  4        V P                  \        V4      V^,
          4       RRR4       V! 4       ;_uu_ 4        V P                  \        V4      X^,
          4       V\        VP	                  4       4       V P                  \        V4      V^,
          4       RRR4       V! 4       ;_uu_ 4        V P                  \        V4      X^,
          4       VP                  4        V P                  \        V4      V^,
          4       RRR4       V! 4       ;_uu_ 4        VP                  4        V P                  \        V4      ^ 4       RRR4       V P                  \        V4      ^ 4       R#   + '       g   i     EL; i  + '       g   i     ELg; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L|; i)i@ N)r0   r   rn  r  rb  r   popitemrp  )r   r   rq  r}   r]  s   &&&  r   &check_weak_del_and_len_while_iterating6MappingTestCase.check_weak_del_and_len_while_iterating  s    6N]]D	AHHT$))+&'SYA.GSY*  ]]SYA.LLNSYA.	 
 ]]SYA.T$))+&'SYA.  ]]SYA.LLNSYA.  ]]JJLSY*  	TA&1 ]] ]]
 ]] ] ]s?   A5I'AIAI.	AJ5,JI	I+	.I?	J	J%	c                  aa V P                  4       w  ooV P                  SSR 4       V P                  SSR4       V P                  SSR4       V P                  SSR4       V P                  4       w  oo\        P                  VV3R l4       pV P	                  SV4       V P                  4       w  ooV P                  SV4       R# )rb  r  rc  rW  c               3   <  <"    \        SP                  4       4      p \        V 4       SP                  4       P                  p\
        P                  ! 4        \        V4      V3x  R p \
        P                  ! 4        R #   R p \
        P                  ! 4        i ; i5ir   r  r  r  rn  r3   rj   rk   r0   )rp  re  r   rJ  s     r   rq  KMappingTestCase.test_weak_keys_destroy_while_iterating.<locals>.testcontext&  si     	$**,'RKKM%%

Qil"

 

   BA"B  'B BBN)rP  rk  
contextlibcontextmanagerrs  rw  r   rq  r   rJ  s   & @@r   &test_weak_keys_destroy_while_iterating6MappingTestCase.test_weak_keys_destroy_while_iterating  s    113g//gvF//gwG//gxH//gyI113g		"	"
	 
#
	 	::4M 113g33D+Fr   c                  aa V P                  4       w  ooV P                  SSR 4       V P                  SSR4       V P                  SSR4       V P                  SSR4       V P                  SSR4       V P                  4       w  oo\        P                  VV3R l4       pV P	                  SV4       V P                  4       w  ooV P                  SV4       R# )rb  r  rc  r^  r]  c               3   <  <"    \        SP                  4       4      p \        V 4       SP                  4       P                  p\
        P                  ! 4        V\        V4      3x  R p \
        P                  ! 4        R #   R p \
        P                  ! 4        i ; i5ir   r{  )rp  r  r   rJ  s     r   rq  MMappingTestCase.test_weak_values_destroy_while_iterating.<locals>.testcontextA  si     	$**,'RKKM%%

l"

 

r}  N)rC  rk  r~  r  rs  rw  r  s   & @@r   (test_weak_values_destroy_while_iterating8MappingTestCase.test_weak_values_destroy_while_iterating8  s    224g//gvF//gwG//gxH//gO//g{K224g		"	"
	 
#
	 	::4M224g33D+Fr   c                |    \        ^4      p\        P                  ! VR/4      pV P                  W!,          R4       R# r  il  Nr0   r{   r[  r   r   r}   r   s   &  r   #test_make_weak_keyed_dict_from_dict3MappingTestCase.test_make_weak_keyed_dict_from_dictQ  s1    1I((!C1#&r   c                    \        ^4      p\        P                  ! VR/4      p\        P                  ! V4      pV P                  W!,          R4       R# r  r  r   r}   r   dict2s   &   r   .test_make_weak_keyed_dict_from_weak_keyed_dict>MappingTestCase.test_make_weak_keyed_dict_from_weak_keyed_dictV  sA    1I((!C1))$/#&r   c                    \         P                  ! 4       p\        \        \        \        V P                  4      4      4      pV F  pVP                  W&   K  	  W3# r   )r{   r[  rX  mapr0   r   rF  r3   r   r   rJ  r}   s   &   r   rP  $MappingTestCase.make_weak_keyed_dict\  sG    ((*s65#456AeeDG }r   c                ~    \        ^4      p\        P                  ! RV/4      pV P                  VR,          V4       R# r  r0   r{   r*  r   r  s   &  r   $test_make_weak_valued_dict_from_dict4MappingTestCase.test_make_weak_valued_dict_from_dictc  s3    1I**C73cA&r   c                    \        ^4      p\        P                  ! RV/4      p\        P                  ! V4      pV P                  VR,          V4       R# r  r  r  s   &   r   0test_make_weak_valued_dict_from_weak_valued_dict@MappingTestCase.test_make_weak_valued_dict_from_weak_valued_dicth  sC    1I**C73++D1cA&r   c                   V P                  \        \        P                  P                  4       V P                  \        \        P                  / / 4       V P                  \        \        P                  RR4       \        ^4      pR F\  p\        P                  ! R/ W!/B pV P                  \        VP                  4       4      V.4       V P                  W2,          V4       K^  	  R# )r  Nr   r   r   r>   iterable)	r   r   r{   r*  r4   r0   r   rX  rb  )r   r}   kwr  s   &   r   test_make_weak_valued_dict_misc/MappingTestCase.test_make_weak_valued_dict_miscn  s    )W%@%@%I%IJ)W%@%@"bI)W%@%@"bI1I5B++6rg6AT!&&(^bT2QUA& 6r   c                    \         P                  ! 4       p\        \        \        \        V P                  4      4      4      pV F  pW1VP                  &   K  	  W3# r   )r{   r*  rX  r  r0   r   rF  r3   r  s   &   r   rC  %MappingTestCase.make_weak_valued_dictz  sG    **,s65#456AK }r   c                   V! 4       pW6V&   WVV&   V P                  \        V4      ^4       VP                  4       w  rxV P                  \        V4      ^4       WrJ d   V P                  W4       MV P                  W4       VP                  4       w  rxV P                  \        V4      ^ 4       WrJ d   V P                  W4       R# V P                  W4       R# r   N)r   r   rv  r   )	r   klasskey1value1key2value2weakdictr  re  s	   &&&&&&   r   check_popitemMappingTestCase.check_popitem  s    7X*!X*9MM!$MM!$!X*9MM!$MM!$r   c                l    V P                  \        P                  R \        4       R\        4       4       R# )r  r  N)r  r{   r*  r   r   s   &r   test_weak_valued_dict_popitem-MappingTestCase.test_weak_valued_dict_popitem  s%    766!13	5r   c                l    V P                  \        P                  \        4       R \        4       R4       R# zvalue 1zvalue 2N)r  r{   r[  r   r   s   &r   test_weak_keyed_dict_popitem,MappingTestCase.test_weak_keyed_dict_popitem  s%    7443	13		;r   c                   V P                  W4R 4       V! 4       pVP                  W#4      pV P                  Wc4       V P                  W%4       V P                  VP	                  V4      V4       V P                  WR,          V4       VP                  W$4      pV P                  Wc4       V P                  W%4       V P                  VP	                  V4      V4       V P                  WR,          V4       R# )z9invalid test -- value parameters must be distinct objectsN)r  
setdefaultr   r   get)r   r  keyr  r  r  r}   s   &&&&&  r   check_setdefault MappingTestCase.check_setdefault  s    E	F 7,a c$hll3'0hmV,,a c$hll3'0hmV,r   c                j    V P                  \        P                  R \        4       \        4       4       R# )r  N)r  r{   r*  r   r   s   &r    test_weak_valued_dict_setdefault0MappingTestCase.test_weak_valued_dict_setdefault  s#    g99#QS!#	/r   c                Z    V P                  \        P                  \        4       R R4       R# r  )r  r{   r[  r   r   s   &r   test_weak_keyed_dict_setdefault/MappingTestCase.test_weak_keyed_dict_setdefault  s!    g77c9i	9r   c                4   V! 4       pVP                  V4       V P                  \        V4      \        V4      4       VP                  4        F^  pV P	                  WBR 4       VP                  V4      pV P                  WSV,          4       V P                  WSP                  V4      4       K`  	  VP                  4        FU  pV P	                  WCR4       W$,          pV P                  WSV,          4       V P                  WSP                  V4      4       KW  	  R# )z(mysterious new key appeared in weak dictz%original key disappeared in weak dictN)ro  r   r   rb  r   r  r   )r   r  r   r  r  re  s   &&&   r   check_updateMappingTestCase.check_update  s    
 7XD	2AMM!#MNAMM!a[)MM!\\!_-	 !
 AMM!'NOAMM!a[)MM!\\!_-	 r   c           
        V P                  \        P                  ^\        4       R\        4       \        4       \        4       /4       V P	                  \
        \        P                  P                  4       \        P                  ! 4       pV P	                  \
        VP                  / / 4       V P	                  \
        VP                  RR4       V P                  \        VP                  4       4      . 4       \        ^4      pR Fm  p\        P                  ! 4       pVP                  ! R/ W2/B  V P                  \        VP                  4       4      V.4       V P                  W,          V4       Ko  	  R# )rb   r  Nr   r  )r  r{   r*  r   r   r   ro  r   rX  rb  r0   )r   r  r}   r  s   &   r   test_weak_valued_dict_update,MappingTestCase.test_weak_valued_dict_update  s   '55ac3QS!#6	8 	)W%@%@%G%GH''))QXXr26)QXXr26affh,1I5B++-AHHwT!&&(^bT2QUA&	 6r   c                   \        4       p\        4       p\        4       p\        P                  ! ^V/4      p\        P                  ! ^V^V/4      pVP                  4       p^V^V/p^V3^V3.pWE,          p	V P	                  \        V	4      \        V4      \        V4      ,          4       V P                  \        V	4      \        P                  4       WE,          pV P	                  WI4       WW,          p
V P	                  \        V
4      \        V4      V,          4       V P                  \        V
4      \        P                  4       WW,          pV P	                  WZ4       VP                  4       pW,          pV P	                  \        V4      \        V4      \        V4      ,          4       V P                  \        V4      \        P                  4       Wv,          pV P	                  \        V4      V\        V4      ,          4       V P                  \        V4      \        P                  4       ?V P                  ^V	4       V P                  ^V
4       V P                  ^V4       V P                  ^V4       R# ra   )	r   r{   r*  rD  r   r   r   r>  rR  )r   r  rB  r   wvd1wvd2wvd3d1pairstmp1tmp2tmp3tmp4s   &            r    test_weak_valued_union_operators0MappingTestCase.test_weak_valued_union_operators  s   CCC**Aq62**Aq!Q<8yy{Aq\Q!Q {dT$Z$t*%<=d4j'"="=>$ydT$Z"_5d4j'"="=>
$yy{dT$Z$u+%=>d4j'"="=>ydR$t*_5d4j'"="=>D!D!D!D!r   c           	         V P                  \        P                  \        4       ^\        4       ^\        4       ^/4       R# ra   )r  r{   r[  r   r   s   &r   test_weak_keyed_dict_update+MappingTestCase.test_weak_keyed_dict_update  s.    '33313132	4r   c                0   \         P                  ! 4       p\        R 4      p\        R4      pRW&   RW&   V P                  \	        V4      ^4       W V P                  \	        V4      ^4       V P                  \        VP                  4       4      V.4       R# )12	somethingN)r{   r[  r0   r   r   rX  rb  r   r  o1r   s   &   r   test_weak_keyed_delitem'MappingTestCase.test_weak_keyed_delitem  sy    %%'C[C[Q#EQ#affh".r   c                p   \        4       p\        4       p\        4       p\        P                  ! V^V^/4      p\        P                  ! V^V^/4      pVP                  4       pVRVR/pV^3V^3.pWE,          p	V P	                  \        V	4      \        V4      \        V4      ,          4       V P                  \        V	4      \        P                  4       WE,          pV P	                  WI4       WW,          p
V P	                  \        V
4      \        V4      V,          4       V P                  \        V
4      \        P                  4       WW,          pV P	                  WZ4       VP                  4       pW,          pV P	                  \        V4      \        V4      \        V4      ,          4       V P                  \        V4      \        P                  4       Wv,          pV P	                  \        V4      V\        V4      ,          4       V P                  \        V4      \        P                  4       ?V P                  ^V	P                  4       4       V P                  ^V
P                  4       4       V P                  ^VP                  4       4       V P                  ^VP                  4       4       R# )rb   56N)
r   r{   r[  rD  r   r   r   r>  rR  rc  )r   r  r   o3wkd1wkd2wkd3r  r  r  r  r  r  s   &            r   test_weak_keyed_union_operators/MappingTestCase.test_weak_keyed_union_operators  s   SSS(("aQ8(("aQ8yy{#r3a2q'"{dT$Z$t*%<=d4j'";";<$ydT$Z"_5d4j'";";<
$yy{dT$Z$u+%=>d4j'";";<ydR$t*_5d4j'";";<DKKM*DKKM*DKKM*DKKM*r   c                6   \         P                  ! 4       p\        R 4      p\        R4      pW!R&   W1R&   V P                  \	        V4      ^4       VR V P                  \	        V4      ^4       V P                  \        VP                  4       4      RV3.4       R# )r  r  r  zsomething elseN)r{   r*  r0   r   r   rX  r  r  s   &   r   test_weak_valued_delitem(MappingTestCase.test_weak_valued_delitem1  s    '')C[C[+ 
Q#kNQ#aggi,<b+A*BCr   c                   \         P                  ! 4       p\        R 4      pV P                  \        VP
                  V4       V P                  \        VP                  V4       V P                  \        VP
                  ^4       V P                  \        VP                  ^4       V P                  \        VP                  ^^4       R# )r  N)	r{   r[  r0   r   rG  rM  rH  r   __setitem__)r   r  r}   s   &  r   test_weak_keyed_bad_delitem+MappingTestCase.test_weak_keyed_bad_delitem<  s    %%'3K 	(AMM15(AMM15 	)Q]]R8)Q]]R8)Q]]R<r   c                  aa \         P                  ! 4       pR o ! VV3R lR\        4      p\        ^4       Uu. uF
  q2! V4      NK  	  upoS F  pVP                  W&   K  	  ?\        VP                  4       4      oSP                  4        Ro^ pS F  pV^,          pW K  	  \        4        V P                  \        V4      ^ 4       V P                  V^4       R# u upi )Fc                   <   <a  ] tR tRt o R tR tVV3R ltRtV tR# )<MappingTestCase.test_weak_keyed_cascading_deletes.<locals>.CiR  c                    Wn         R # r   r  )r   r  s   &&r   r4   EMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__init__S  s    
r   c                ,    \        V P                  4      # r   )rE   r  r   s   &r   rF   EMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__hash__U  s    DJJ''r   c                L   < S'       d   SR V P                   VP                   8H  # )rb   rh  r  )r   r>   mutateobjss   &&r   r?   CMappingTestCase.test_weak_keyed_cascading_deletes.<locals>.C.__eq__W  s"     RzzU[[00r   r  N)	r   r   r   r   r4   rF   r?   r   r   )r   r  r  s   @r   r   r  R  s     (1 1r   r   TN)r{   r[  r   r   r  rX  rb  reverser   r   r   )r   r  r   r  r}   countr  r  s   &     @@r   !test_weak_keyed_cascading_deletes1MappingTestCase.test_weak_keyed_cascading_deletesJ  s    
 %%'
	1 
	1 
	1 $Ah'h!h'A77AD AFFH~ 	 AQJE  	Q#"1 (s   Cc                f    \         P                  ! 4       pV P                  \        V4      R 4       R# )z<WeakValueDictionary at 0x.*>N)r{   r*  r   r|   r   r   s   & r   test_make_weak_valued_dict_repr/MappingTestCase.test_make_weak_valued_dict_reprx  s%    **,d%DEr   c                f    \         P                  ! 4       pV P                  \        V4      R 4       R# )z<WeakKeyDictionary at 0x.*>N)r{   r[  r   r|   r   s   & r   test_make_weak_keyed_dict_repr.MappingTestCase.test_make_weak_keyed_dict_repr|  s%    ((*d%BCr   c                    \         P                  ! 4       p\        4       ;_uu_ 4        \        V P                  4       F0  pVP                  ^
\        4       4      pV P                  VR4       ?K2  	  RRR4       R#   + '       g   i     R# ; ir  N)r{   r*  rv   r   NUM_THREADED_ITERATIONSr  rR   r  r   r  r  r%   s   &   r   $test_threaded_weak_valued_setdefault4MappingTestCase.test_threaded_weak_valued_setdefault  sb    '')  4778LLXZ0  D) 9 !   s   A
A<<B	c                (   \         P                  ! 4       p\        4       ;_uu_ 4        \        V P                  4       F4  p\        4       V^
&   VP                  ^
^
4      pV P                  VR4       K6  	  RRR4       R#   + '       g   i     R# ; ir  )r{   r*  rv   r   r  rR   rn  r  r	  s   &   r   test_threaded_weak_valued_pop-MappingTestCase.test_threaded_weak_valued_pop  sg    '')  4778 
"EE"bM  D) 9 !   s   AB  B	c                *   \         P                  ! 4       p\        4       ;_uu_ 4        \        ^V P                  ,          4       F.  p\        4       pW1^
&   V P                  \        V4      ^4       RpK0  	  RRR4       R#   + '       g   i     R# ; ir  )r{   r*  rv   r   r  rR   r   r   )r   r  r  r}   s   &   r   %test_threaded_weak_valued_consistency5MappingTestCase.test_threaded_weak_valued_consistency  sk     '')  1t;;;<J"  Q+ = !   s   ABB	c                `   \         P                  ! 4       p\        P                  ! 4       ;_uu_ 4        \	        4       V^
&   VP
                  ^
,          p\	        4       pW1^
&   \        P                  ! 4        V P                  \        V4      ^4       RRR4       R#   + '       g   i     R# ; ir  )
r{   r*  r   rp   rR   r  rj   rk   r   r   )r   r  r~   r}   s   &   r   test_weak_valued_consistency,MappingTestCase.test_weak_valued_consistency  su     '')!!JAbE B
AbEJJLSVQ' "!!!s   ABB-	c                  a . p ! R  R4      p ! R R4      pV3R lpR pV P                  V\        P                  \        P                  34       V! 4       p. p	. p
\	        R4       F:  pV! V4      V! V4      rV	P                  V4       V
P                  V4       WV&   ??K<  	  \        P                  ! WhV3R7      pV\        P                  J d   \        P                  ! Wy3R7      pM\        P                  ! Wz3R7      pVP                  4        VP                  4        VP                  4        VP                  4        V'       d
   V^ ,          hR# )	c                   &   a  ] tR tRt o R tRtV tR# )?MappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKeyi  c                    Wn         R # r   ctrr   r  s   &&r   r4   HMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyKey.__init__      r   r  NrW   r   s   @r   DummyKeyr    r   r   r  c                   &   a  ] tR tRt o R tRtV tR# )AMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValuei  c                    Wn         R # r   r  r  s   &&r   r4   JMappingTestCase.check_threaded_weak_dict_copy.<locals>.DummyValue.__init__  r  r   r  NrW   r   s   @r   
DummyValuer     r   r   r#  c                    <  SR J d   \         P                  ! V 4      pR# V P                  4       pR#   \         d   pTP                  T4        Rp?R# Rp?ii ; iTN)rD  deepcopyr  r   )r  excr  exr&  s   &&  r   	dict_copy@MappingTestCase.check_threaded_weak_dict_copy.<locals>.dict_copy  sF    t#a(AA 

2s   3 3 3 AAAc                     ^ pV '       di   \         P                  ! ^ \        V 4      ^,
          4      pV^,          pV P                  V4       VR,          ^ 8X  g   KY  \        P
                  ! 4        Kp  R# )r   i'  N)randomrandintr   rn  rj   rk   )lstgc_ctrr  s   &  r   pop_and_collectFMappingTestCase.check_threaded_weak_dict_copy.<locals>.pop_and_collect  sP    FNN1c#hl3!
E>Q&JJL r   ip )ro   r   N)
r   r{   r[  r*  r   r   rq   rr   rs   rt   )r   type_r&  r'  r  r#  r)  r0  r  rb  rc  r  r  re  t_copy	t_collects   &&f             r   check_threaded_weak_dict_copy-MappingTestCase.check_threaded_weak_dict_copy  s    	 		 			! 	eg779T9TUVGuAA;
1qKKNMM!aD  !!SCG---!((gNI!((iPI a&L r   cpuc                F    V P                  \        P                  R 4       R# FNr5  r{   r[  r   s   &r    test_threaded_weak_key_dict_copy0MappingTestCase.test_threaded_weak_key_dict_copy  s    
 	**7+D+DeLr   c                F    V P                  \        P                  R 4       R# r%  r:  r   s   &r   $test_threaded_weak_key_dict_deepcopy4MappingTestCase.test_threaded_weak_key_dict_deepcopy  s    
 	**7+D+DdKr   c                F    V P                  \        P                  R 4       R# r9  r5  r{   r*  r   s   &r   "test_threaded_weak_value_dict_copy2MappingTestCase.test_threaded_weak_value_dict_copy  s    
 	**7+F+FNr   c                F    V P                  \        P                  R 4       R# r%  rA  r   s   &r   &test_threaded_weak_value_dict_deepcopy6MappingTestCase.test_threaded_weak_value_dict_deepcopy  s    
 	**7+F+FMr   c                z    \         P                  ! 4       pV P                  VP                  P                  4       R # r   )r{   r*  r   _remove__closure__)r   r  s   & r   test_remove_closure#MappingTestCase.test_remove_closure  s(    '')!))//0r   r   N)Ar   r   r   r   rF  r   check_sanitizerPy_GIL_DISABLEDr  r  r%  r+  r4  r9  r>  rM  rS  rZ  r_  rV  rk  rs  rw  r  r  r  r  rP  r  r  r  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   requires_working_threadingr
  r  r  r  r  r5  requires_resourcer;  r>  rB  rE  rJ  r   r   r   s   @r   r
  r
  	  sa    Ed++0G0G0G"&"( (KM)0IK9@#<+6+2>4+'2'BG4G2'
''
'
'%$5;-"/9.&'"#"J4	/#+J	D=,#\FD 002 3 002* 3* 002
 3
 ( ($;z 002u%M & 3M
 002u%L & 3L
 002u%O & 3O
 002u%N & 3N
 1 1r   r
  )mapping_testsc                   v   a  ] tR tRt o RtR]! ^4      R]! ^4      R]! ^4      /t]P                  t	R t
RtV tR# )	WeakValueDictionaryTestCasei  z?Check that WeakValueDictionary conforms to the mapping protocolr  r  key3c                6    V P                   P                  4       # r   )!_WeakValueDictionaryTestCase__refrD  r   s   &r   
_reference&WeakValueDictionaryTestCase._reference      zz  r   r   N)r   r   r   r   __doc__r0   rU  r{   r*  	type2testrV  r   r   r   s   @r   rR  rR    s;     IF1IvfQiq	BE++I! !r   rR  c                   v   a  ] tR tRt o Rt]! R4      ^]! R4      ^]! R4      ^/t]P                  t	R t
RtV tR# )	WeakKeyDictionaryTestCasei  z=Check that WeakKeyDictionary conforms to the mapping protocolr  r  rS  c                6    V P                   P                  4       # r   )_WeakKeyDictionaryTestCase__refrD  r   s   &r   rV  $WeakKeyDictionaryTestCase._reference  rX  r   r   N)r   r   r   r   rY  r0   r^  r{   r[  rZ  rV  r   r   r   s   @r   r\  r\    s;     GF^Avf~aBE))I! !r   r\  c                   h   a  ] tR tRt o  ! R R4      tR tR tR tR tR t	]
R	 4       tR
 tRtV tR# )FinalizeTestCasei"  c                       ] tR tRtRtR# )FinalizeTestCase.Ai$  r   NrV  r   r   r   r  rc  $  s    r   r  c                r    \         P                  P                  R 8w  d   \        P                  ! 4        R# R# )cpythonN)sysimplementationnamer   r   r   s   &r   _collect_if_necessary&FinalizeTestCase._collect_if_necessary'  s'    ""i/  0r   c                  a V3R  lpV P                  4       p. o\        P                  ! W!^C^+^YR7      pV P                  VP                  R4       V P                  VP                  4       W!RR^Y/34       V P                  V! 4       ^4       V P                  V! 4       R4       V P                  V! 4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  R4       V P                  S^.4       . o\        P                  ! W!^C^+^Y4      pV P                  VP                  4       W!R/ 34       V P                  VP                  4       W!R/ 34       V P                  V! 4       R4       V P                  V! 4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  R4       V P                  S. 4       . o\        P                  ! W!^C^+^YR7      p?V P                  4        V P                  V! 4       R4       V P                  V! 4       R4       V P                  VP                  4       R4       V P                  VP                  4       R4       V P                  VP                  R4       V P                  S^.4       R# )	c                 ^   < SP                  W,           V,           4       W,           V,           # r   r  )r%   r@  rA  r  s   &&&r   add+FinalizeTestCase.test_finalize.<locals>.add-  s!    JJquqy!519r   )rA  TrA  NF)r%   r@  rA  )C   +   )ro  rp  Y   )r  r{   finalizer   alivepeekdetachri  )r   rm  r  r*   r  s   &   @r   test_finalizeFinalizeTestCase.test_finalize,  sV   	 FFHQRr2$'AGc"X#>?c"d#d#4(T*%(se$QRR0AJ#;<aj"%=>d#d#4(T*%(b!QrR26""$d#d#4(T*%(se$r   c           
       a V3R  lpV P                  4       p. o\        P                  ! W!^^^^R7      pV P                  VP	                  4       W!RR^R^/34       V! 4        V P                  SRR^R^/3.4       V P                  \        4      ;_uu_ 4        \        P                  ! W!^R7       RRR4       V P                  \        4      ;_uu_ 4        \        P                  ! W!^R7       RRR4       V P                  \        \        P                  V4       V P                  \        \        P                  4       R#   + '       g   i     L; i  + '       g   i     Ln; i)c                  ,   < SP                  W34       R # r   r  )r   kwargsr  s   *,r   fin-FinalizeTestCase.test_arg_errors.<locals>.finV  s    JJ~&r   )funcr   r}  r   )r}  r3   N)r   r}  r3   )rb   r   )r  r{   rr  r   rt  r   r   )r   r{  r  r*   r  s   &   @r   test_arg_errors FinalizeTestCase.test_arg_errorsU  s   	' FFHQQq9AFVQq4I#JK	E1(=>?@y))Qa0 *y))!4 *)W%5%5q9)W%5%56 *)))s   EEE	E&	c                   V P                  4       p. p\        P                  ! WP                  R 4      p\        P                  ! WP                  R4      p\        P                  ! WP                  R4      p\        P                  ! WP                  R4      p\        P                  ! WP                  R4      p??V P	                  VP
                  4       V P	                  VP
                  4       V P	                  VP
                  4       V P	                  VP                  4       4       V P                  VP
                  4       V! 4        VP                  R4       V! 4        V P                  VP
                  4       VP                  R4       V! 4        VP                  R4       ?V P                  4        V P                  VP
                  4       VP                  R4       V! 4        . R
OpV P                  W(4       R	# )f1f2f3f4f5r  Br   r  N)r  r  r  r   r  r  r  r  )
r  r{   rr  r   r   rs  ru  r   ri  r   )	r   r  r  r  r  r  r  r  expecteds	   &        r   
test_orderFinalizeTestCase.test_orderh  sc   FFHaT2aT2aT2aT2aT2 !!!		$"


3
"

3


3""$ 	"

3
?'r   c                  a  ! R  R\         P                  4      pV P                  4       p. oV3R lpV! W#4      p\         P                  ! V4      p\         P                  ! V4      p??V P	                  V! 4       4       V P	                  V! 4       4       ?V P                  4        V P                  V! 4       4       V P                  V! 4       4       V P                  S^{.4       R# )c                       ] tR tRtRtR# )4FinalizeTestCase.test_all_freed.<locals>.MyFinalizeri  r   NrV  r   r   r   MyFinalizerr    r  r   r  c                  *   < S P                  ^{4       R# ){   Nr  )r  s   r   rd   1FinalizeTestCase.test_all_freed.<locals>.callback  s    JJsOr   N)r{   rr  r  rc   r   ri  r   r   )r   r  r  rd   r*   wr_callbackwr_fr  s   &      @r   test_all_freedFinalizeTestCase.test_all_freed  s    	'** 	 FFH	$kk(+{{1~a[]+TV$""$+-($&!se$r   c                  a  V 3R  lp\         P                  ! S \        R\        4      p\         P                  ! S \        R\        4      p\         P                  ! S V4      p\         P                  ! S \        R\        4      pRVn        R# )c                  h   < \         P                  ! S\        R 4      p \        R4       ^^ ,           R# )g1f3 errorN)r{   rr  print)r  clss    r   error,FinalizeTestCase.run_in_child.<locals>.error  s*     !!#ud3B*aCCr   r  r  r  FN)r{   rr  r  _global_varatexit)r  r  r  r  r  r  s   f     r   run_in_childFinalizeTestCase.run_in_child  sg    	 c5$<c5$<c5)c5$< 	r   c                    Rp\         P                  ! RV4      w  r#pVP                  R4      P                  4       pV P	                  V. RO4       V P                  RV9   4       R# )z/from test.test_weakref import FinalizeTestCase;r|  r}  s   ZeroDivisionErrorNzNfrom test.test_weakref import FinalizeTestCase;FinalizeTestCase.run_in_child())z	f4 foobarr  r  z	f1 foobar)r   assert_python_okr  
splitlinesr   r   )r   progrcoutr  s   &    r   test_atexitFinalizeTestCase.test_atexit  sY    2$55dDAjj!,,.JK,34r   r   N)r   r   r   r   r  ri  rv  r~  r  r  classmethodr  r  r   r   r   s   @r   ra  ra  "  sH      !
'%R7&%(N%2 ! !&5 5r   ra  c                   &   a  ] tR tRt o R tRtV tR# )ModuleTestCasei  c                    R Fn  p\        \        V4      pVR8w  d   V P                  VP                  R4       V P                  VP                  V4       V P                  VP
                  V4       Kp  	  R# )r  WeakSetr{   N)r  	ProxyTyper?  r  r  r[  r*  )ri  r{   r   r   r   r   )r   rh  r   s   &  r   
test_namesModuleTestCase.test_names  sb    ZD'4(Cy   ;S\\40S--t4Zr   r   N)r   r   r   r   r  r   r   r   s   @r   r  r    s     5 5r   r  a   Doctest for examples in the library reference: weakref.rst

>>> from test.support import gc_collect
>>> import weakref
>>> class Dict(dict):
...     pass
...
>>> obj = Dict(red=1, green=2, blue=3)   # this object is weak referencable
>>> r = weakref.ref(obj)
>>> print(r() is obj)
True

>>> import weakref
>>> class Object:
...     pass
...
>>> o = Object()
>>> r = weakref.ref(o)
>>> o2 = r()
>>> o is o2
True
>>> del o, o2
>>> gc_collect()  # For PyPy or other GCs.
>>> print(r())
None

>>> import weakref
>>> class ExtendedRef(weakref.ref):
...     def __init__(self, ob, callback=None, **annotations):
...         super().__init__(ob, callback)
...         self.__counter = 0
...         for k, v in annotations.items():
...             setattr(self, k, v)
...     def __call__(self):
...         '''Return a pair containing the referent and the number of
...         times the reference has been called.
...         '''
...         ob = super().__call__()
...         if ob is not None:
...             self.__counter += 1
...             ob = (ob, self.__counter)
...         return ob
...
>>> class A:   # not in docs from here, just testing the ExtendedRef
...     pass
...
>>> a = A()
>>> r = ExtendedRef(a, foo=1, bar="baz")
>>> r.foo
1
>>> r.bar
'baz'
>>> r()[1]
1
>>> r()[1]
2
>>> r()[0] is a
True


>>> import weakref
>>> _id2obj_dict = weakref.WeakValueDictionary()
>>> def remember(obj):
...     oid = id(obj)
...     _id2obj_dict[oid] = obj
...     return oid
...
>>> def id2obj(oid):
...     return _id2obj_dict[oid]
...
>>> a = A()             # from here, just testing
>>> a_id = remember(a)
>>> id2obj(a_id) is a
True
>>> del a
>>> gc_collect()  # For PyPy or other GCs.
>>> try:
...     id2obj(a_id)
... except KeyError:
...     print('OK')
... else:
...     print('WeakValueDictionary error')
OK


libreftestc                 N    VP                  \        P                  ! 4       4       V# r   )addTestdoctestDocTestSuite)loadertestspatterns   &&&r   
load_testsr  (	  s    	MM'&&()Lr   r   )g{Gzt?)2rj   rf  r  r  r   r{   r  r~  rD  rq   rh   r,  r  testr   test.supportr   r   r   r   r   r	   r
   r,  r  r   r    r,   r.   r0   rR   TestCaserY   r  rv   rx   r  r  r
  rP  BasicTestMappingProtocolrR  r\  ra  r  r  __test__r  r   mainr   r   r   <module>r     sp   	 
             1 # & ) *   
  * 
x     *kR kR\e+( e+PF.** F.RE1h E1P !-"H"H !! F F !`5x(( `5F5X&& 5T
l :&
 zMMO r   