+
    Bi\                        ^ 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 ^ RIHtHt ^ RIHt ^ RIHt  ! R R]P(                  4      t ! R	 R
]P(                  4      t ! R R]P(                  4      t ! R R]P(                  4      t ! R R]P2                  4      t ! R R]P(                  4      t ! R R]P(                  4      t]R8X  d   ]P<                  ! 4        R# R#   ]	 d    Rt Li ; i)    N)Mapping)support)import_helperthreading_helper)assert_python_ok)mapping_testsc                      a  ] tR t^t o RtRR ltR tR tR tR t	R t
R tR	 tR
 tR t]P                   R 4       tRtV tR# )	ClearTestz
Tests for frame.clear().
c                    ^^ ,           R#    N )selfxkwargss   &&,&/usr/lib/python3.14/test/test_frame.pyinnerClearTest.inner   s    	!    c                b     V P                   ! R/ VB  X#   \         d   pTp R p?T# R p?ii ; i)Nr   )r   ZeroDivisionError)r   r   eexcs   &,  r   outerClearTest.outer   s9    	JJ   
 ! 	C
	s    .).c                ^    Ve)   VP                   P                  4        VP                  pK,  R# )z"
Clear all frames in a traceback.
N)tb_framecleartb_next)r   tbs   &&r   clear_traceback_frames ClearTest.clear_traceback_frames$   s'     nKKB r   c                `    ! R  R4      pV! 4       p\         P                  ! V4      pV P                  VR7      p?\        P                  ! 4        V P                  RV! 4       4       V P                  VP                  4       \        P                  ! 4        V P                  RV! 4       4       R# )c                       ] tR t^-tRtR# )&ClearTest.test_clear_locals.<locals>.Cr   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   Cr%   -       r   r,   cN)	weakrefrefr   r   
gc_collectassertIsNotr!   __traceback__assertIsr   r,   r/   wrr   s   &    r   test_clear_localsClearTest.test_clear_locals,   s    	 	C[[^jj1jort$##C$5$56dBD!r   c                z  aa  ! R  R4      oRoVV3R lp V! 4        R#   \          d   p\        P                  ! 4        T P                  S! 4       4       TP                  P
                  P                  P                  4        \        P                  ! 4        T P                  S! 4       4        Rp?R# Rp?ii ; i)c                       ] tR t^=tRtR# )<ClearTest.test_clear_locals_after_f_locals_access.<locals>.Cr   Nr&   r   r   r   r,   r<   =   r-   r   r,   Nc                  T   < S! 4       p \         P                  ! V 4      o^^ ,           R# r   )r0   r1   )r/   r,   r7   s    r   r   @ClearTest.test_clear_locals_after_f_locals_access.<locals>.innerA   s     AQBaCCr   )	r   r   r2   assertIsNotNoner4   r   r   r   assertIsNone)r   r   r   r,   r7   s   &  @@r   'test_clear_locals_after_f_locals_access1ClearTest.test_clear_locals_after_f_locals_access;   s    	 	 		$G  	$   &%%..446 bd##	$s     B:BB55B:c                z    ! R  R4      pV! 4       pV P                  VR7      p?VP                  P                  pVP                  4        V P	                  VP
                  R4       V P	                  VP                  R4       V P	                  VP                  R4       V P	                  VP                  R4       R# )c                       ] tR t^QtRtR# )7ClearTest.test_clear_does_not_clear_specials.<locals>.Cr   Nr&   r   r   r   r,   rE   Q   r-   r   r,   r.   N)	r   r4   r   r   r3   f_codef_locals
f_builtins	f_globals)r   r,   r/   r   fs   &    r   "test_clear_does_not_clear_specials,ClearTest.test_clear_does_not_clear_specialsP   s    	 	Cjj1jo&&		4(T*t,d+r   c                ,  a a R oVV 3R lpV! 4       p\        V4       S P                  S4       S P                  \        R4      ;_uu_ 4        VP                  P                  4        RRR4       S P                  S4       R#   + '       g   i     L#; i)Fc               3   L   <"    R x  SP                  4        Ro R #   Ro i ; i5i)NT)r   )endlyr   s   r   g)ClearTest.test_clear_generator.<locals>.g_   s!     

s   $ $!$suspended frameN)nextassertFalseassertRaisesRegexRuntimeErrorgi_framer   )r   rP   genrO   s   f  @r   test_clear_generatorClearTest.test_clear_generator]   so    	 cS	 ##L2DEELL  F FEs   BB	c                    ^^ ,           V P                  \        4      ;_uu_ 4        XP                  4        RRR4       V P                  \        4      ;_uu_ 4        XP                  P                  4        RRR4       R#   \          d!   pTP                  P                  p Rp?LRp?ii ; i  + '       g   i     L; i  + '       g   i     R# ; ir   r   r4   r   assertRaisesrV   r   f_back)r   r   rJ   s   &  r   test_clear_executingClearTest.test_clear_executingo   s    	)aC |,,GGI -|,,HHNN -,	 ! 	)((A	),,,,,s.   	B B1CB.B))B.1C	C	c                  a a R oVV 3R lpV! 4       p\        V4      pS P                  S4       S P                  \        R4      ;_uu_ 4        VP	                  4        RRR4       S P                  S4       R#   + '       g   i     L#; i)Fc               3     <"    ^^ ,           RoR#   \          d   p T P                  P                  pSP                  \        4      ;_uu_ 4        TP                  4        RRR4       M  + '       g   i     M; iSP                  \        4      ;_uu_ 4        TP                  P                  4        RRR4       M  + '       g   i     M; iTx   Rp ? LRp ? ii ; i  Roi ; i5i)r   NTr\   )r   rJ   rO   r   s     r   rP   3ClearTest.test_clear_executing_generator.<locals>.g}   s     
!  % OO,,&&|44GGI 5444&&|44HHNN$ 5444 sf   C)	 C)C3CA*!	C*A:5%CB>5	C>C	CC" CC" "C&&C)rR   N)rS   rT   rU   rV   r   )r   rP   rX   rJ   rO   s   f   @r   test_clear_executing_generator(ClearTest.test_clear_executing_generatorz   sh    	 cI##L2CDDGGI E EDs   A99B		c                   aa V3R  loV3R lp. ROp. oV! R4       V P                  SV4       . oV! R4       V P                  SV4       R# )c                     < \         P                  ! ^4      p SP                  V P                  V P                  P
                  ,
          4       R# r   )sys	_getframeappendf_linenorF   co_firstlineno)rJ   liness    r   record_line7ClearTest.test_lineno_with_tracing.<locals>.record_line   s0    a ALLAHH$;$;;<r   c                 x   < S! 4        V '       d   R \         P                  ! ^ 4      n        S! 4        S! 4        R# )TN)rh   ri   f_trace)tracern   s   &r   test0ClearTest.test_lineno_with_tracing.<locals>.test   s&    M+/a (MMr   FTN)r         assertEqual)r   rs   expected_linesrm   rn   s   &  @@r   test_lineno_with_tracing"ClearTest.test_lineno_with_tracing   sL    	=	 #U/T
/r   c                   \         P                  ! 4       ;_uu_ 4         ! R  R4      pV! 4       p\        P                  ! V4      pV P	                  VR7      p?V P                  RV! 4       4       V P                  VP                  4       V P                  RV! 4       4       RRR4       R#   + '       g   i     R# ; i)c                       ] tR t^tRtR# ))ClearTest.test_clear_refcycles.<locals>.Cr   Nr&   r   r   r   r,   r~      s    r   r,   r.   N)	r   
disable_gcr0   r1   r   r3   r!   r4   r5   r6   s   &    r   test_clear_refcyclesClearTest.test_clear_refcycles   s     !! AQB**q*/CT24(''(9(9:MM$% "!!!s   BB,,B=	r   N)rv   )r'   r(   r)   r*   __doc__r   r   r!   r8   rA   rK   rY   r_   rd   rz   r   cpython_onlyr   r+   __classdictcell____classdict__s   @r   r
   r
      sV     "$*, $	 00( & &r   r
   c                   >   a  ] tR t^t o R tR tR tR tR tRt	V t
R# )FrameAttrsTestc                    R  p V! 4        X#   \          dK   pTP                  p. pT'       d*   TP                  TP                  4       TP                  pK1   Rp?T# Rp?ii ; i)c                  &   a ^o^p V3R lpV! 4       # )rv   c                  0   < S^,           p ^^ ,           ^	pR#    Nr   ztr   s     r   r   8FrameAttrsTest.make_frames.<locals>.outer.<locals>.inner       E!r   r   yr   r   s     @r   r   )FrameAttrsTest.make_frames.<locals>.outer       AA 7Nr   N)r   r4   rj   r   r   )r   r   r   r    framess   &    r   make_framesFrameAttrsTest.make_frames   s`    		 G  ! 	 BFbkk*ZZ  	 s    A#A)AA#c                    V P                  4       w  rpVP                  4        VP                  4        V P                  VP                  / 4       V P                  VP                  / 4       R # N)r   r   rx   rG   r   rJ   r   r   s   &   r   r8    FrameAttrsTest.test_clear_locals   sN    **,%,,r   c                L   V P                  4       w  rpV P                  VP                  / 4       V P                  VP                  / 4       VP                  4        VP                  4        V P	                  VP                  / 4       V P	                  VP                  / 4       R # r   )r   assertNotEqualrG   r   rx   r   s   &   r   test_locals_clear_locals'FrameAttrsTest.test_locals_clear_locals   sv    **,%ENNB/ENNB/,,r   c                    V P                  4       w  p pV P                  \        4      ;_uu_ 4        V=R R R 4       R #   + '       g   i     R # ; ir   )r   r]   AttributeErrorrk   )r   rJ   _s   &  r   test_f_lineno_del_segfault)FrameAttrsTest.test_f_lineno_del_segfault   s;    ""$1a~..
 /...s	   ?A	c                   R  pR pR pR pV P                  V! 4       4       V P                  V! 4       4       V! 4       p \        V4      pV P                  WV4       VP                  4        V! 4       p VP	                  R4       \        R4      h  TP                  4        i ; i  \         d(   pT P                  TP                  T4        Rp?R# Rp?ii ; i)c                     a R  oV3R lp V ! 4       p \        V4      VP                  4        #   TP                  4        i ; i)c                  D    \         P                  ! 4       p V P                  # r   rh   ri   f_generatorframes    r   nested;FrameAttrsTest.test_f_generator.<locals>.t0.<locals>.nested   s    (((r   c               3   "   <"   S ! 4       x  R # 5ir   r   )r   s   r   rX   8FrameAttrsTest.test_f_generator.<locals>.t0.<locals>.gen   s     hs   )rS   close)rX   rP   r   s     @r   t0+FrameAttrsTest.test_f_generator.<locals>.t0   s5    ) AAw		s	   
. A c                  D    \         P                  ! 4       p V P                  # r   r   r   s    r   t1+FrameAttrsTest.test_f_generator.<locals>.t1   s    MMOE$$$r   c               3   T   "   \         P                  ! 4       p V P                  x  R # 5ir   r   r   s    r   t2+FrameAttrsTest.test_f_generator.<locals>.t2   s     MMOE###s   &(c                  L   "   \         P                  ! 4       p V P                  # 5ir   r   r   s    r   t3+FrameAttrsTest.test_f_generator.<locals>.t3   s     MMOE$$$s   "$Nzcoroutine did not exit)r@   rS   r5   r   sendAssertionErrorStopIterationvalue)	r   r   r   r   r   rP   frame_gr/   exs	   &        r   test_f_generatorFrameAttrsTest.test_f_generator   s    		%	$	%
 	"$"$ D	1gGMM!%GGI D	;FF4L !!9:: GGI  	'MM"((A&&	's$   B 5B& B#&C1CCr   N)r'   r(   r)   r*   r   r8   r   r   r   r+   r   r   s   @r   r   r      s#     &--
0; 0;r   r   c                   *   a  ] tR tRt o RtR tRtV tR# )ReprTesti  z
Tests for repr(frame).
c                d   R  pVP                   P                  p V! 4        V P                  R4       Xw  rgp\        P                  ! \        \        4      4      p	V P                  \        V4      RW^,           3,          4       V P                  \        V4      RW^,           3,          4       V P                  \        V4      RW^,           3,          4       R#   \         dJ   pTP                  p. pT'       d*   TP                  TP                  4       TP                  pK1   Rp?LRp?ii ; i)c                  &   a ^o^p V3R lpV! 4       # )rv   c                  0   < S^,           p ^^ ,           ^	pR# r   r   r   s     r   r   0ReprTest.test_repr.<locals>.outer.<locals>.inner  r   r   r   r   s     @r   r   !ReprTest.test_repr.<locals>.outer  r   r   zshould have raisedNz=^<frame at 0x[0-9a-fA-F]+, file %s, line %d, code test_repr>$z9^<frame at 0x[0-9a-fA-F]+, file %s, line %d, code outer>$z9^<frame at 0x[0-9a-fA-F]+, file %s, line %d, code inner>$)__code__rl   failr   r4   rj   r   r   reescaperepr__file__assertRegex)
r   r   offsetr   r    r   f_thisf_outerf_inner	file_reprs
   &         r   	test_reprReprTest.test_repr  s   	 ..		,G II*+#) IId8n-	fY%{34	5 	gU%z23	4 	gU%z23	4# ! 	 BFbkk*ZZ 	 s   C D/&D*<)D**D/r   N)r'   r(   r)   r*   r   r   r+   r   r   s   @r   r   r     s      4  4r   r   c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 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V tR# )TestFrameLocalsi;  c                   a   ! R  R4      pS P                  VP                  ^4       S P                  VP                  ^4       V 3R lpV! 4        R# )c                       ] tR tRt^t^]P                  ! 4       P                  R&   ^]P                  ! 4       P                  R&   RtR# )%TestFrameLocals.test_scope.<locals>.Ai=  r   r   r   N)	r'   r(   r)   r*   r   rh   ri   rG   r+   r   r   r   Ar   =  s3    A,-CMMO$$S),-CMMO$$S)r   r   c                     < ^p ^\         P                  ! 4       P                  R&   ^\         P                  ! 4       P                  R&   SP                  V ^4       SP                  \	        4       R,          ^4       R# )r   r   r   N)rh   ri   rG   rx   locals)r   r   s    r   rJ   %TestFrameLocals.test_scope.<locals>.fE  sZ    A,-CMMO$$S),-CMMO$$S)Q"VXc]A.r   N)rx   r   r   )r   r   rJ   s   f  r   
test_scopeTestFrameLocals.test_scope<  sC    	. 	.
 	a a 	/ 	
r   c                z   a aa ^o^oV VV3R lpV! 4        S P                  S^4       S P                  S^4       R# )r   c                     < SS,           p \         P                  ! 4       P                  pSP                  VR ,          ^4       SP                  VR,          ^4       ^VR &   ^VR&   R# )r   r   Nrh   ri   rG   rx   )r   dr   r   r   s     r   rJ   'TestFrameLocals.test_closure.<locals>.fQ  sW    AA((AQsVQ'QsVQ'AcFAcFr   Nrw   )r   rJ   r   r   s   f @@r   test_closureTestFrameLocals.test_closureM  s9    	 	
AAr   c                   a V3R  l ^oR Uu. uF  p\        4       NK  	  ppV P                  V^ ,          R,          ^ 4       R# u upi )c                     < S # r   r   )ks   r   <lambda>HTestFrameLocals.test_closure_with_inline_comprehension.<locals>.<lambda>^  s    r   r   Nr   )r   rx   )r   r   lsts   &` r   &test_closure_with_inline_comprehension6TestFrameLocals.test_closure_with_inline_comprehension]  s>    !$%Avx%Qa( &s   Ac           	     R   ^p^p\         P                  ! 4       P                  pV P                  \	        V4      ^4       V P                  VR,          V4       V P                  \        VP                  4       4      \        . RO4      4       V P                  \	        VP                  4       4      ^4       V P                  ^VP                  4       4       V P                  \	        VP                  4       4      ^4       V P                  RVP                  4       4       V P                  VP                  R4      ^4       VP                  R^4       V P                  VR,          ^4       V P                  VP                  R4      ^4       V P                  VP                  RR4      R4       V P                  VP                  4       ^4       T P                  \        V Uu. uF  qDNK  	  up4      \        . RO4      4       V P                  RV4       V P                  VP!                  R4      4       V P                  \#        V4      \%        \#        VP                  4       4      4      4       VP'                  R^R^/4       V P                  VR,          ^4       V P                  VR,          ^4       V P)                  \*        4      ;_uu_ 4        VP'                  ^^.4       RRR4       V P                  VP-                  R^4      ^4       V P                  VP-                  R^4      ^4       V P                  VR,          ^4       V P)                  \.        4      ;_uu_ 4        VR,           RRR4       R# u upi   + '       g   i     L; i  + '       g   i     R# ; i)	r   r   r   	non_existNr   new)r   r   r   r   )r   r   )rh   ri   rG   rx   lenr5   setkeysvaluesassertInitems__getitem____setitem__get__len__
assertTrue__contains__reversedlistupdater]   	TypeError
setdefaultKeyError)r   r   r   r   keys   &    r   test_as_dictTestFrameLocals.test_as_dictc  s   MMO$$Q#afa QVVX,C(DEQXXZ!,a$QWWY+h	*s+Q/	c13#sQ'aeeK.5a(Q/QccQ/0#6M2NOc1s+,!d8AFFH+=&>?	#q#q!"3#3#y))HHaV * 	c1-q1eQ/351%x((kN )(# 0 *) )((s   !
M=N)
NN	N&	c                   ^p^p\         P                  ! 4       P                  pV P                  RVR^/,          4       VR^/,          pV P	                  VR,          ^4       VR^/,          pV P	                  VR,          ^4       V P                  \        4      ;_uu_ 4        V^,          pRRR4       V P                  \        4      ;_uu_ 4        V^.,          pRRR4       R#   + '       g   i     LB; i  + '       g   i     R# ; i)r   r   r   N)rh   ri   rG   r   rx   r]   r  )r   r   r   r   r   s   &    r   test_as_numberTestFrameLocals.test_as_number  s    MMO$$c1Qx<(	c1X3#	c1X3#y))FA *y))QCA *) *))))s   $
C(C;(C8	;D	c                    \         P                  ! 4       P                  p^V^&   V P                  V^,          ^4       R# r   r   r   r   s   & r   test_non_string_key#TestFrameLocals.test_non_string_key  s0    MMO$$!1q!r   c                "   a  V 3R  lpV! 4        R# )c                     < R U u. uF"  p \         P                  ! 4       P                  NK$  	  up ^ ,          p^VR&   ^VR&   SP                  X ^4       SP                  X^4       ^ p ^ pR# u up i )r   br/   Nr   r   )r  rG   r/   r   s      r   rJ   1TestFrameLocals.test_write_with_hidden.<locals>.f  si    :=>#Q00#>qAHHSMHSMQ"Q"AA ?s   (A,Nr   r   rJ   s   f r   test_write_with_hidden&TestFrameLocals.test_write_with_hidden  s    	 	
r   c                    \        4       pR P                  . RO4      p\        P                  ! 4       P                  pVR,          VR&   V P                  VR4       R# ).r   oza.b.cN)ar  r/   )objectjoinrh   ri   rG   rx   )r   r  r   rG   s   &   r   test_local_objects"TestFrameLocals.test_local_objects  sE    HHH_%==?++ G$r   c                    ^ p\         P                  ! 4       P                  pVP                  4       pV P	                  V\
        4       V P                  VR,          ^ 4       ^VR&   V P                  V^ 4       R# )r   r   N)rh   ri   rG   copyassertIsInstancedictrx   )r   r   r   d_copys   &   r   	test_copyTestFrameLocals.test_copy  s`    MMO$$fd+a(sAr   c                    R  pV! 4        R# )c                      \         P                  ! 4       P                  p V P                  V 4       V P                  V 4       V P                  V 4       R # r   )rh   ri   rG   r  )rG   s    r   rJ   0TestFrameLocals.test_update_with_self.<locals>.f  s7    }}//HOOH%OOH%OOH%r   Nr   r  s   & r   test_update_with_self%TestFrameLocals.test_update_with_self  s    	&
 	
r   c                    ^p\         P                  ! 4       pV P                  \        VP                  4      \        \        VP                  4      4      4       R# r   )rh   ri   rx   r   rG   r'  )r   r   r   s   &  r   r   TestFrameLocals.test_repr  s9    enn-tD4H/IJr   c                   ^p\         P                  ! 4       P                  pV P                  \        R4      ;_uu_ 4        VR RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        R4      ;_uu_ 4        VR RRR4       V P                  \        4      ;_uu_ 4        VP                  4        RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        4      ;_uu_ 4        VP                  RR4       RRR4       ^VR&   ^VR&   V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       VR V P                  VP                  R4      ^4       V P                  RV4       V P                  RV4       V P                  VP                  R^4      ^4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELi; i  + '       g   i     ELF; i  + '       g   i     EL"; i  + '       g   i     L; i)r   r   Nzlocal variablesr   mn)rh   ri   rG   rU   r
  r]   pop
ValueErrorr   r   rx   assertNotInr   r   r   s   &  r   test_deleteTestFrameLocals.test_delete  s   MMO$$ ##Hk::+ ; x((EE+ ) ##J0ABB# C ~..GGI / z**EE#J + z**EE#t + ##x((EE+ ) cFsQ'a a sA*? ;:: )(( CBB /.. +** +** )(sT    G?)H!H'
H; I7I#9I7?H	H$	'H8	;I	I 	#I4	7J	c                    \         P                  ! 4       P                  p\        P                  ! W\        P
                  ! R 4      4       R# )PN)rh   ri   rG   r   check_sizeofcalcobjsize)r   proxys   & r   test_sizeofTestFrameLocals.test_sizeof  s.    ((T'*=*=c*BCr   c                   ^p\         P                  ! 4       P                  pV P                  \        4      ;_uu_ 4        \
        P
                  ! V4       RRR4       V P                  \        4      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     LN; i  + '       g   i     R# ; ir   )rh   ri   rG   r]   r  r%  deepcopyr8  s   &  r   test_unsupportTestFrameLocals.test_unsupport  su    MMO$$y))IIaL * y))MM! *) *) *))s   B;B/B,	/C 	c                    ^p\         P                  ! 4       P                  pV P                  V\        4       T d*    ^8  d#   R ;e   w  p  V P                  V^4       RpM    RpV P                  VR4       R# )r   Nmappingotherr   )rh   ri   rG   r&  r   rx   )r   r   r   r   kinds   &    r   test_is_mappingTestFrameLocals.test_is_mapping  sf    MMO$$a)  *   y)r   c                T     ! R  R\         4      p ! R R4      pV! R4      V! 4       R3# )c                       ] tR tRtRtR# )6TestFrameLocals._x_stringlikes.<locals>.StringSubclassi  r   Nr&   r   r   r   StringSubclassrO    r-   r   rP  c                   ,   a  ] tR tRt o R tR tRtV tR# )1TestFrameLocals._x_stringlikes.<locals>.ImpostorXi	  c                    \        R 4      # rI  )hashr   s   &r   __hash__:TestFrameLocals._x_stringlikes.<locals>.ImpostorX.__hash__
  s    Cy r   c                    VR 8H  # rI  r   )r   rH  s   &&r   __eq__8TestFrameLocals._x_stringlikes.<locals>.ImpostorX.__eq__  s    |#r   r   N)r'   r(   r)   r*   rV  rY  r+   r   r   s   @r   	ImpostorXrR  	  s     !$ $r   r[  r   )str)r   rP  r[  s   &  r   _x_stringlikesTestFrameLocals._x_stringlikes  s.    	S 		$ 	$ c"IK44r   c           	        R  pV P                  4        F  pV P                  \        V4      P                  R7      ;_uu_ 4        V! V4      w  r4p. ROpRRR^RV/pV P	                  VP                  4       V4       V P	                  WW4       V P	                  W64       V P	                  WG4       RRR4       K  	  R#   + '       g   i     K  ; i)c                     ^p\         P                  ! 4       P                  p^W &   \        VP	                  4       4      \        V4      V3# r   )rh   ri   rG   r  r   r'  objr   r?  s   &  r   rJ   ?TestFrameLocals.test_proxy_key_stringlikes_overwrite.<locals>.f  sA    AMMO,,EEJUZZ\"U r   clsrc  r   r?  Nrb  )r]  subTesttyper'   rx   r   )r   rJ   rc  keys_snapshotproxy_snapshotr?  expected_keysexpected_dicts   &       r   $test_proxy_key_stringlikes_overwrite4TestFrameLocals.test_proxy_key_stringlikes_overwrite  s    	 &&(C$s)"4"45578v4u 5!&S!We D  >  6  ?  ? 65 )555s   A+B==Cc                   a  V 3R  lpS P                  4        FA  pS P                  \        V4      P                  R7      ;_uu_ 4        V! V4       RRR4       KC  	  R#   + '       g   i     KX  ; i)c                 v   < \         P                  ! 4       P                  p^W&   SP                  X^4       ^pR# r   r   )rc  r?  r   r   s   &  r   rJ   ATestFrameLocals.test_proxy_key_stringlikes_ftrst_write.<locals>.f)  s0    MMO,,EEJQ"Ar   re  N)r]  rg  rh  r'   )r   rJ   rc  s   f  r   &test_proxy_key_stringlikes_ftrst_write6TestFrameLocals.test_proxy_key_stringlikes_ftrst_write(  sQ    	 &&(C$s)"4"455# 65 )555s   	AA0c           
     2    ! R  R\         4      p ! R R4      p\        P                  ! 4       P                  pV! R4      V! 4       3 F  pV P	                  \        V4      P                  R7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        W4,           RRR4       V P                  \        4      ;_uu_ 4        ^ W4&   RRR4       RRR4       K  	  R#   + '       g   i     LH; i  + '       g   i     L1; i  + '       g   i     K  ; i)c                       ] tR tRtRtRtR# )BTestFrameLocals.test_proxy_key_unhashables.<locals>.StringSubclassi4  Nr   r'   r(   r)   r*   rV  r+   r   r   r   rP  rv  4      Hr   rP  c                       ] tR tRtRtRtR# )BTestFrameLocals.test_proxy_key_unhashables.<locals>.ObjectSubclassi7  Nr   rw  r   r   r   ObjectSubclassrz  7  rx  r   r{  r   re  N)	r\  rh   ri   rG   rg  rh  r'   r]   r  )r   rP  r{  r?  rc  s   &    r   test_proxy_key_unhashables*TestFrameLocals.test_proxy_key_unhashables3  s    	S 		 	 ((!#&(88C$s)"4"455&&y11J 2&&y11!"EJ 2 65 91111 655s<   8D	C%DC2	DC/*D2D=DDc                   \        \        ^4       Uu. uF"  p\        P                  ! 4       P                  NK$  	  up^ ,          4      pV P                  VP                  R4       R pV! V! 4       4      pV P                  VR^R^/4       V P                  \        4      ;_uu_ 4        V! 4        RRR4       V P                  \        4      ;_uu_ 4        V! ^{4       RRR4       V P                  \        4      ;_uu_ 4        V! \        P                  ! 4       R7       RRR4       R# u upi   + '       g   i     L; i  + '       g   i     Ll; i  + '       g   i     R# ; i)r   FrameLocalsProxyc                  4    ^p ^p\         P                  ! 4       # ra  rh   ri   )r   r   s     r   
make_frame4TestFrameLocals.test_constructor.<locals>.make_frameH  s    AA==?"r   r   r   Nr   )	rh  rangerh   ri   rG   rx   r'   r]   r  )r   r   r  r  r?  s   &    r   test_constructor TestFrameLocals.test_constructorC  s   */(!4*2Q "%!9!9*2!445!7 8)224FG	#
 !.aa 01 y)) *y))S! *y))3==?3 *)#!4 *))))))s)   (D*(D/	EE/D?	E	E&	c                H   a V3R  lpR oV P                  V! 4       ^4       R# )c                  $   < . ROp . ROpS! V 4      # )r   )r   r      )ru   rv      r   )xsysrP   s     r   rJ   0TestFrameLocals.test_overwrite_locals.<locals>.f[  s    BBR5Lr   c                     \         P                  ! 4       pR VP                  P                  R&   R VP                  P                  R&   V ^,          # )Nr  r  )rh   ri   r^   rG   )r  rJ   s   & r   rP   0TestFrameLocals.test_overwrite_locals.<locals>.g`  s>    A&*AHHd#&*AHHd#a5Lr   Nrw   )r   rJ   rP   s   & @r   test_overwrite_locals%TestFrameLocals.test_overwrite_localsX  s!    	
	 	a r   r   N)r'   r(   r)   r*   r   r   r   r  r  r  r  r"  r)  r.  r   r9  r   r   r@  rD  rK  r]  rm  rr  r|  r  r  r+   r   r   s   @r   r   r   ;  s     " )$L"
	%K$+L D D
*5@,	# 4*! !r   r   c                     a  ] tR tRt o RtR t]t]P                  ! RR4      R 4       t	]P                  ! RR4      R 4       t
]P                  ! RR	4      R
 4       t]P                  ! RR4      R 4       t]P                  ! RR4      R 4       t]P                  ! RR4      R 4       tR t]P                  ! RR4      R 4       tR t]P                  ! RR4      R 4       tRtV tR# )FrameLocalsProxyMappingTestsii  zCTest that FrameLocalsProxy behaves like a Mapping (with exceptions)c                     R  pV! 4       # )c                  @    \         P                  ! 4       P                  # r   )rh   ri   rG   r   r   r   _f+FrameLocalsProxyMappingTests._f.<locals>._fm  s    ==?+++r   r   )argsr   r  s   *, r   r  FrameLocalsProxyMappingTests._fl  s    	,tr   Tz:Locals proxies for different frames never compare as equalc                    R # r   r   rU  s   &r   r  -FrameLocalsProxyMappingTests.test_constructorr      r   z&Unlike a mapping: del proxy[key] failsc                    R # r   r   rU  s   &r   
test_write'FrameLocalsProxyMappingTests.test_writev  r  r   z"Unlike a mapping: no proxy.popitemc                    R # r   r   rU  s   &r   test_popitem)FrameLocalsProxyMappingTests.test_popitemz  r  r   zUnlike a mapping: no proxy.popc                    R # r   r   rU  s   &r   test_pop%FrameLocalsProxyMappingTests.test_pop~  r  r   z Unlike a mapping: no proxy.clearc                    R # r   r   rU  s   &r   
test_clear'FrameLocalsProxyMappingTests.test_clear  r  r   z#Unlike a mapping: no proxy.fromkeysc                    R # r   r   rU  s   &r   test_fromkeys*FrameLocalsProxyMappingTests.test_fromkeys  r  r   c                J   \         P                  P                  V 4       V P                  R ^R^/4      pV P	                  VR ,          ^4       V P	                  VR,          ^4       ^VR&   ^VR &   V P	                  VR,          ^4       V P	                  VR ,          ^4       R# )r  r  r/   N)r   BasicTestMappingProtocoltest_getitem_full_mappingrx   r  s   & r   r  )FrameLocalsProxyMappingTests.test_getitem  s    ..;;DAQQ/03#3###3#3#r   z!Unlike a mapping: no proxy.updatec                    R # r   r   rU  s   &r   test_update(FrameLocalsProxyMappingTests.test_update  r  r   c           	     j   V P                  ^^^^^^/4      pV P                  VP                  4       ^^^^^^/4       V P                  4       pV P                  VP                  4       V4       V P	                  \
        VP                  R4       V P                  VP                  4       \        4       R# r   )r  rx   r%  _empty_mappingr]   r  r&  r'  r  s   & r   r)  &FrameLocalsProxyMappingTests.test_copy  s    !Qq!A/Aa1a?3!1%)QVVT2affh-r   c                    R # r   r   rU  s   &r   test_eq$FrameLocalsProxyMappingTests.test_eq  r  r   r   N)r'   r(   r)   r*   r   r  	type2testunittestskipIfr  r  r  r  r  r  r  r  r)  r  r+   r   r   s   @r   r  r  i  s"    M I__TWX Y __TCD E __T?@ A __T;< = __T=> ? __T@A B$ __T>? @. __TWX Yr   r  c                   &   a  ] tR tRt o R tRtV tR# )TestFrameCApii  c                   ^p\         P                  ! R4      pVP                  P                  pVP                  Vn        V! 4       pV P                  \        V4      \        4       V P                  VR,          ^4       ^VR&   V P                  V^4       VP                  P                  pVP                  Vn        V! 4       pV P                  \        V4      \        4       V P                  V\        4       4       VP                  P                  pVP                  Vn        V! 4       pV P                  V\        4       VP                  P                  p	VP                  .V	n        VP                  V	n        \"        P$                  ! 4       p
V	! V
4      pV P                  VR,          ^4       ^VR&   V P                  V^4       R# )r   ctypesr   N)r   import_module	pythonapiPyEval_GetFrameLocals	py_objectrestyper  rh  r'  rx   PyEval_GetFrameGlobalsr5   globalsPyEval_GetFrameBuiltins__builtins__PyFrame_GetLocalsargtypesrh   ri   )r   r   r  r  frame_localsr  frame_globalsr  frame_builtinsr  r   rG   s   &           r   
test_basicTestFrameCApi.test_basic  sz   ,,X6 & 0 0 F F(.(8(8%,.\*D1c*A.SA!'!1!1!H!H)/)9)9&.0]+T2mWY/"("2"2"J"J*0*:*:'026",,>>&,&6&6%7"$*$4$4!$U+q)Ar   r   N)r'   r(   r)   r*   r  r+   r   r   s   @r   r  r    s      r   r  c                   x   a  ] tR tRt o R t]P                  ]P                  ! 4       R 4       4       t	R t
RtV tR# )TestIncompleteFrameAreInvisiblei  c                \    \         P                  ! R \        : R24      p\        RV4       R# )z
            import gc

            gc.set_threshold(1,1,1)
            class GCHello:
                def __del__(self):
                    print("Destroyed from gc")

            def gen():
                yield

            fd = open(zy)
            l = [fd, GCHello()]
            l.append(l)
            del fd
            del l
            gen()
        z-cN)textwrapdedentr   r   )r   codes   & r   test_issue95818/TestIncompleteFrameAreInvisible.test_issue95818  s2     $  l #	  $ 	t$r   c                T  aa  ! V3R  lR4      o ! V3R lR\         P                  4      pRoV! 4       pVP                  4        VP                  4        V P	                  S4       Se?   V P                  SP                  VP                  P                  4       SP                  oKB  R# )c                   .   <a  ] tR tRt o V3R ltRtV tR# )TTestIncompleteFrameAreInvisible.test_sneaky_frame_object_teardown.<locals>.SneakyDeli  c                2   < \         P                  ! 4       oR# )z
Stash a reference to the entire stack for walking later.

It may look crazy, but you'd be surprised how common this is
when using a test runner (like pytest). The typical recipe is:
ResourceWarning + -Werror + a custom sys.unraisablehook.
Nr  )r   sneaky_frame_objects   &r   __del__\TestIncompleteFrameAreInvisible.test_sneaky_frame_object_teardown.<locals>.SneakyDel.__del__  s     '*mmo#r   r   N)r'   r(   r)   r*   r  r+   r   )r   r  s   @r   	SneakyDelr    s     	6 	6r   r  c                   2   <a  ] tR tRt o RtV3R ltRtV tR# )WTestIncompleteFrameAreInvisible.test_sneaky_frame_object_teardown.<locals>.SneakyThreadi  z
A separate thread isn't needed to make this code crash, but it does
make crashes more consistent, since it means sneaky_frame_object is
backed by freed memory after the thread completes!
c                   < S! 4       pR# )z.Run SneakyDel.__del__ as this frame is popped.Nr   )r   r1   r  s   & r   run[TestIncompleteFrameAreInvisible.test_sneaky_frame_object_teardown.<locals>.SneakyThread.run  s
    kr   r   N)r'   r(   r)   r*   r   r  r+   r   )r   r  s   @r   SneakyThreadr    s     " "r   r  N)
	threadingThreadstartr!  r?   r3   rF   r  r   r^   )r   r  r   r  r  s   &  @@r   !test_sneaky_frame_object_teardownATestIncompleteFrameAreInvisible.test_sneaky_frame_object_teardown  s    
	6 
	6		"9++ 		" #N			 	01!-#**L,<,<,E,E #6"<"<	 .r   c                F  a  ! R  R4      oV3R lp\         P                  ! 4       ;_uu_ 4       p\        P                  ! V4      pV P	                  VP
                  P                  \        4       RRR4       V P                  X! 4       4       R#   + '       g   i     L(; i)c                       ] tR tRtRtRtR# )ZTestIncompleteFrameAreInvisible.test_entry_frames_are_invisible_during_teardown.<locals>.Ci  zA weakref'able class.r   N)r'   r(   r)   r*   r   r+   r   r   r   r,   r    s    'r   r,   c                 H   < S! 4       p \         P                  ! V \        4      # )z>Try to find globals and locals as this frame is being cleared.)r0   r1   exec)r1   r,   s    r   rJ   ZTestIncompleteFrameAreInvisible.test_entry_frames_are_invisible_during_teardown.<locals>.f  s    #C
 ;;sD))r   N)	r   catch_unraisable_exceptionoperatorcallr5   
unraisableexc_typer  r@   )r   rJ   catcherweakr,   s   &   @r   /test_entry_frames_are_invisible_during_teardownOTestIncompleteFrameAreInvisible.test_entry_frames_are_invisible_during_teardown
  sm    	( 	(	* //11W==#DMM',,55yA	 2
 	$&! 21s   ABB 	r   N)r'   r(   r)   r*   r  r   r   r   requires_working_threadingr  r  r+   r   r   s   @r   r  r    s@     %, 002%= 3 %=N" "r   r  __main__)r%  r  r   rh   r  r  r  r0   	_testcapiImportErrorcollections.abcr   rs   r   test.supportr   r   test.support.script_helperr   r   TestCaser
   r   r   r   TestHashMappingProtocolr  r  r  r'   mainr   r   r   <module>r     s      	 
     $  8 7 ]&!! ]&@\;X&& \;~%4x   %4Nk!h'' k!\	<=#H#H <~H%% BS"h&7&7 S"l zMMO i  Is   C5 5	D D