
    0hhZ                    X   S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKrS SK	J
r
Jr  S SKrS SKrS SKrS SKrS SKrS SKr S SKr\R(                  " SS9   " S S5      r " S	 S
5      rS rS rS r/ SQ\l        S r/ SQ\l        S r/ SQ\l        S r/ SQ\l        S r/ SQ\l        S r/ SQ\l        S r / SQ\ l        S r!S r"/ SQ\"l        S r#S r$/ SQ\$l        S  r%S! r&S"/\&l        S# r'S$ r(/ S%Q\(l        S& r)/ S'Q\)l        S( r*/ S)Q\*l        S* r+/ S+Q\+l        S, r,S- r-/ S.QS/S0/S1-  -   S/S2/-   \-l        S3 r. " S4 S55      r/ " S6 S7\R`                  5      r1/ S8Qr2 " S9 S:\15      r3\Rh                   " S; S<\15      5       r5 " S= S>\R`                  5      r6 " S? S@5      r7SA r8SB r9 " SC SD\R`                  5      r: " SE SF\R`                  5      r; " SG SH\R`                  5      r< " SI SJ\15      r= " SK SL\15      r>\?SM:X  a  \R                  " 5         gg! \ a    Sr GNf = f)N    )supportNwraps)import_helperrequires_subprocessT)modulec                   *    \ rS rSrSrS rS rS rSrg)tracecontext   z/Context manager that traces its enter and exit.c                     Xl         X l        g Noutputvalueselfr   r   s      ?/opt/python-3.13.8/usr/lib/python3.13/test/test_sys_settrace.py__init__tracecontext.__init__       
    c                 N    U R                   R                  U R                  5        g r   r   appendr   r   s    r   	__enter__tracecontext.__enter__   s    4::&r   c                 P    U R                   R                  U R                  * 5        g r   r   r   exc_infos     r   __exit__tracecontext.__exit__!   s    DJJ;'r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r   r!   __static_attributes__ r   r   r
   r
      s    9'(r   r
   c                   *    \ rS rSrSrS rS rS rSrg)asynctracecontext$   z>Asynchronous context manager that traces its aenter and aexit.c                     Xl         X l        g r   r   r   s      r   r   asynctracecontext.__init__&   r   r   c                 V   #    U R                   R                  U R                  5        g 7fr   r   r   s    r   
__aenter__asynctracecontext.__aenter__*   s     4::&s   ')c                 X   #    U R                   R                  U R                  * 5        g 7fr   r   r   s     r   	__aexit__asynctracecontext.__aexit__-   s     DJJ;'s   (*r   N)	r#   r$   r%   r&   r'   r   r0   r3   r(   r)   r   r   r+   r+   $   s    H'(r   r+   c                (   #    U  H  nU7v   M
     g7f)z0Convert an iterable to an asynchronous iterator.Nr)   )iterablexs     r   	asynciterr8   0   s      s   c                 0   ^  [        T 5      U 4S j5       nU$ )Nc                    >^#    / mU4S jn T" U 0 UDSU0D6I S h  vN T(       a'  TR                  5       " 5       I S h  vN   T(       a  M&  $ $  N2 N! T(       a(  TR                  5       " 5       I S h  vN    T(       a  M'  f f = f7f)Nc                 T   > [        U 5      nTR                  UR                  5        U$ r   )r8   r   aclose)r6   itcleanupss     r   wrapped_asynciter;clean_asynciter.<locals>.wrapper.<locals>.wrapped_asynciter9   s"    8$BOOBII&Ir   r8   pop)argskwargsr?   r>   tests      @r   wrapper clean_asynciter.<locals>.wrapper6   sq     		'tKvK9JKKlln&&& ( L ' lln&&& (sU   	BA AA B ABBA B B4A75BBBr   )rE   rF   s   ` r   clean_asynciterrH   5   s     
4[
' 
' Nr   c                      gN   r)   r)   r   r   basicrL   E   s    r   )r   callrK   linerK   returnc                      Sn A  Sn g rJ   r)   r7   s    r   arigo_example0rU   T   s    	A	
	Ar   )rM   rO      rP      rP      rP   r[   rR   c                      Sn A  Sn g rJ   r)   rT   s    r   arigo_example1r^   b   s    	A		Ar   c                      Sn A  Sn g rJ   r)   rT   s    r   arigo_example2r`   p   s    	A	 r   )rM   rO   rV   rX      rP      rP   rd   rR   c                      Sn A Sn g rJ   r)   rT   s    r   one_instr_linerg      s    	A		Ar   rM   rO   rV   rX   rY   rR   c                  F    Sn [        S5       H  nU(       a  Sn M  Sn M     g NrK   rW   range)r7   as     r   no_pop_topsro      s"    	A1XAA	 r   )
rM   rO   rV   rX      rP   rV   rX   ra   rV   rW   rR   c                  8    Sn U (       d  [           U (       d  M  Sng rJ   )bla)yr7   s     r   no_pop_blocksrv      s    	A a	Ar   rM   rO   rV   ra   rb   rR   c                      Sn g rJ   r)   rT   s    r   calledrz      s    	Ar   c                      [        5         g r   )rz   r)   r   r   rN   rN      s    
Hr   rM   rO   rN   rP   r   rR   rQ   c                      [         er   	Exceptionr)   r   r   raisesr      s    
Or   c                  :     [        5         g ! [         a     g f = fr   )r   r   r)   r   r   
test_raiser      s     s   
 
)rM   rO   rV   r}   r   r   	exceptionr   rW   r   rX   ra   rx   c                 x    [         R                  " U 5        U [         R                  " 5       R                  l        g r   )syssettrace	_getframef_backf_trace	tracefuncs    r   _settrace_and_returnr      s"    LL%.CMMO"r   c                     [        U 5        g r   )r   r   s    r   settrace_and_returnr      s
    #r   rQ   c                     [         R                  " U 5        U [         R                  " 5       R                  l        [
        er   )r   r   r   r   r   RuntimeErrorr   s    r   _settrace_and_raiser      s(    LL%.CMMO"
r   c                 <     [        U 5        g ! [         a     g f = fr   )r   r   r   s    r   settrace_and_raiser      s!    I& s    
)r   rX   ra   rx   c                  "    Sn SnX:X  a  U S-   ng g )Nr[   rK   r)   )rn   bs     r   ireturn_exampler      s    	A	AvaCr   rM   rO   rV   rX   ra   rx   c                  V    [        SS5      n  Sn X   o!S-  nM
  ! [         a     g f = f)Nr   rY   rK   rm   
IndexError)itemsir   s      r   tightloop_exampler      s>    !QKEAQ$!  s    
(()rM   rO   rV   rX   ra   rZ   ra   rZ   ra   rZ   ra   rZ   )r[   r   rp   rc   re   c                  L    [        SS5      n  SnX   nM  ! [         a     g f = f)NrK   rb   r   r   )r   r   s     r   tighterloop_exampler     s2    !QKEXa s    
##)rM   rO   rV   rX   ra   ra   ra   ra   )rb   r   rZ   rp   rq   rR   c               #   "   #     Sv    g ! f = f7fNTr)   r)   r   r   generator_functionr   -  s     
	s   
 c                  R    [        [        5       5      n [        S5       H  n U nM     g )N
   )anyr   rm   )r7   ru   s     r   generator_exampler   3  s%     !A 2Y r   )
rM   rV   rN   rP   rP   r   rR   )r   rN   r   r   rP   r   rR   rZ   rp   r   r\   c                     S nU R                   R                  5        H$  u  p#nX R                  s=::  a  U:  d  M  O  M"  UnM&     XR                  :H  $ r   )f_codeco_linesf_lastif_lineno)frame	last_linestartendrP   s        r   lineno_matches_lastir   I  sI    I!LL113DMM'C''I 4 &&r   c                   0    \ rS rSrSS jrS rS rS rSrg)	TraceriP  Nc                 *    Xl         X l        / U l        g r   )trace_line_eventstrace_opcode_eventsevents)r   r   r   s      r   r   Tracer.__init__Q  s    !2#6 r   c                 ~    U R                   b  U R                   Ul        U R                  b  U R                  Ul        g g r   )r   f_trace_linesr   f_trace_opcodes)r   r   s     r   _reconfigure_frameTracer._reconfigure_frameV  s;    !!-"&"8"8E##/$($<$<E! 0r   c                     U R                  U5        U R                  R                  UR                  U45        U R                  $ r   r   r   r   r   tracer   r   eventargs       r   r   Tracer.trace\  s5    &ENNE23zzr   c                     U R                  U5        S S 5         U R                  R                  UR                  U45        U R                  $ )Nc              3   $   #    U  H  ov   M     g 7fr   r)   ).0os     r   	<genexpr>)Tracer.traceWithGenexp.<locals>.<genexpr>d  s     CqCs   rK   r   r   s       r   traceWithGenexpTracer.traceWithGenexpb  s=    &CENNE23zzr   )r   r   r   )NN)	r#   r$   r%   r&   r   r   r   r   r(   r)   r   r   r   r   P  s    
=r   r   c                      \ rS rSrS rS r\S 5       rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rFSD rGSE rHSF rI\JR                  SG 5       rLSH rMSI rN\JR                  SJ 5       rOSK rPSLrQgM)NTraceTestCaseii  c                     [         R                  " 5       U l        [         R                  " 5         U R	                  [
        R                  [
        R                  " 5       5        g r   )gc	isenabledusing_gcdisable
addCleanupr   r   gettracer   s    r   setUpTraceTestCase.setUpm  s0    


clln5r   c                 R    U R                   (       a  [        R                  " 5         g g r   )r   r   enabler   s    r   tearDownTraceTestCase.tearDownr  s    ==IIK r   c                      [        5       $ )z@Helper to allow test subclasses to configure tracers differentlyr   r)   r   r   make_tracerTraceTestCase.make_tracerv  s     xr   c                 F   U VVs/ s H  u  pEUb  XA-
  OS U4PM     nnnX#:w  am  U R                  SSR                  [        R                  " U Vs/ s H  n[	        U5      PM     snU Vs/ s H  n[	        U5      PM     sn5      5      -   5        g g s  snnf s  snf s  snf )Nz"events did not match expectation:

)failjoindifflibndiffstr)r   line_offsetr   expected_eventsler7   s          r   compare_eventsTraceTestCase.compare_events{  s    PVWPVfqam1?qAPVW$II5		'--(IAQ(I9?(@AQ(@B CCD % X )J(@s   BB+Bc                     U R                  5       n[        R                  " UR                  5        U" 5         [        R                  " S 5        U R	                  UR
                  R                  UR                  U5        g r   )r   r   r   r   r   __code__co_firstlinenor   )r   funcr   tracers       r   run_and_compareTraceTestCase.run_and_compare  sT    !!#V\\"TDMM88"MM6	3r   c                 :    U R                  XR                  5        g r   )r  r   r   r  s     r   run_testTraceTestCase.run_test  s    T;;/r   c                     U R                  5       nU" UR                  5        [        R                  " S 5        U R	                  UR
                  R                  UR                  UR                  5        g r   )r   r   r   r   r   r  r  r   )r   r  r  s      r   	run_test2TraceTestCase.run_test2  sO    !!#V\\TDMM88"MM4;;	8r   c                 0    [         R                  " S 5        g r   r   r   r   s    r   test_set_and_retrieve_none(TraceTestCase.test_set_and_retrieve_none  s    Tr   c                     S n[         R                  " U5         [         R                  " S 5        g ! [         R                  " S 5        f = f)Nc                      g r   r)   rC   s    r   fn4TraceTestCase.test_set_and_retrieve_func.<locals>.fn      r   r  )r   r  s     r   test_set_and_retrieve_func(TraceTestCase.test_set_and_retrieve_func  s5    	 	R	 LLCLLs   A
c                 .    U R                  [        5        g r   )r	  rL   r   s    r   test_01_basicTraceTestCase.test_01_basic  s    er   c                 .    U R                  [        5        g r   )r	  rU   r   s    r   test_02_arigo0TraceTestCase.test_02_arigo0      n%r   c                 .    U R                  [        5        g r   )r	  r^   r   s    r   test_02_arigo1TraceTestCase.test_02_arigo1  r   r   c                 .    U R                  [        5        g r   )r	  r`   r   s    r   test_02_arigo2TraceTestCase.test_02_arigo2  r   r   c                 .    U R                  [        5        g r   )r	  rg   r   s    r   test_03_one_instrTraceTestCase.test_03_one_instr  r   r   c                 .    U R                  [        5        g r   )r	  rv   r   s    r   test_04_no_pop_blocks#TraceTestCase.test_04_no_pop_blocks  s    m$r   c                 .    U R                  [        5        g r   )r	  ro   r   s    r   test_05_no_pop_tops!TraceTestCase.test_05_no_pop_tops  s    k"r   c                 .    U R                  [        5        g r   )r	  rN   r   s    r   test_06_callTraceTestCase.test_06_call  s    dr   c                 .    U R                  [        5        g r   )r	  r   r   s    r   test_07_raiseTraceTestCase.test_07_raise  s    j!r   c                 .    U R                  [        5        g r   )r  r   r   s    r   test_08_settrace_and_return)TraceTestCase.test_08_settrace_and_return  s    *+r   c                 .    U R                  [        5        g r   )r  r   r   s    r   test_09_settrace_and_raise(TraceTestCase.test_09_settrace_and_raise  s    )*r   c                 .    U R                  [        5        g r   )r	  r   r   s    r   test_10_ireturnTraceTestCase.test_10_ireturn  s    o&r   c                 .    U R                  [        5        g r   )r	  r   r   s    r   test_11_tightloopTraceTestCase.test_11_tightloop  s    '(r   c                 .    U R                  [        5        g r   )r	  r   r   s    r   test_12_tighterloop!TraceTestCase.test_12_tighterloop  s    )*r   c                 T   U R                  [        5        U R                  5       n[        R                  " UR
                  5        [        5         [        R                  " S 5        U R                  [        R                  R                  UR                  [        R                  5        g r   )
r	  r   r   r   r   r   r   r  r  r   )r   r  s     r   test_13_genexpTraceTestCase.test_13_genexp  sq    '(
 !!#V++,T-66EE"MM+<+C+C	Er   c                 2    S nU R                  U/ SQ5        g )Nc                      Sn g)NFr   r)   rT   s    r   onliners2TraceTestCase.test_14_onliner_if.<locals>.onliners  s
    Qr   )rM   rO   rX   ri   r  )r   rJ  s     r   test_14_onliner_if TraceTestCase.test_14_onliner_if  s    	 		r   c                 `    S nU R                  U/ SQ5        S nU R                  U/ SQ5        g )Nc                  (    [        S5       H  n M     g NrW   rl   rT   s    r   for_example0TraceTestCase.test_15_loops.<locals>.for_example  s    1X r   )rM   rO   rV   rO   rV   rO   rQ   c                  0    Sn U S:  a  U S-  n U S:  a  M  g g )NrW   r   rK   r)   rT   s    r   while_example2TraceTestCase.test_15_loops.<locals>.while_example  s     Aa%Q a%r   )rM   rV   rX   ra   rX   ra   rX   ri   rL  )r   rR  rU  s      r   test_15_loopsTraceTestCase.test_15_loops  s<    	 			
 			r   c                 N    0 n[        SU5        U R                  US   / SQ5        g )Na  def f():
































































































































































































































































    passf)rM   )  rP   )r[  rR   execr  )r   	namespaces     r   test_16_blank_lines!TraceTestCase.test_16_blank_lines  s,    	3Y?cN	r   c                 2    S nU R                  USS/5        g )Nc                  <    S [         R                  " 5       l        Sn g rQ  )r   r   r   )linenos    r   r  0TraceTestCase.test_17_none_f_trace.<locals>.func  s    &*CMMO#Fr   rM   rO   rL  r  s     r   test_17_none_f_trace"TraceTestCase.test_17_none_f_trace  s$    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  X      [         e! [          a  n e S n A ff = f! [          a     g f = fr   r   )r   r7   ru   s      r   r  4TraceTestCase.test_18_except_with_name.<locals>.func  s7    $#O  $$  s   	 
 
)))
rM   rO   rV   rX   rY   r   ra   rZ      rP   	   rP   )rn  rR   rL  r  s     r   test_18_except_with_name&TraceTestCase.test_18_except_with_name  s    		 	T	
	r   c                 2    S nU R                  U/ SQ5        g )Nc                  D      [         e! Sn f = f! [          a    Sn g f = f)N	Something   r   )ru   r   s     r   r  7TraceTestCase.test_19_except_with_finally.<locals>.func$  s+    $#O#A s   	  )	rM   rO   rV   rX   rj  rZ   rp   rc   re   rL  r  s     r   test_19_except_with_finally)TraceTestCase.test_19_except_with_finally#  s    	 	T		r   c                   ^^  " S S5      mU4S jmU4S jnU R                  5       n/ SQn U" UR                  5        U R                  TR                  R
                  UR                  U5        g ! [         a     N>f = f)Nc                   &    \ rS rSrS rS rS rSrg)BTraceTestCase.test_20_async_for_loop.<locals>.AsyncIteratorWrapperi9  c                 $    [        U5      U l        g r   )iter_it)r   objs     r   r   KTraceTestCase.test_20_async_for_loop.<locals>.AsyncIteratorWrapper.__init__:  s    9r   c                     U $ r   r)   r   s    r   	__aiter__LTraceTestCase.test_20_async_for_loop.<locals>.AsyncIteratorWrapper.__aiter__=      r   c                 ^   #     [        U R                  5      $ ! [         a    [        ef = f7fr   )nextr}  StopIterationStopAsyncIterationr   s    r   	__anext__LTraceTestCase.test_20_async_for_loop.<locals>.AsyncIteratorWrapper.__anext__@  s,     ->)$ -,,-s   - -*-)r}  N)r#   r$   r%   r&   r   r  r  r(   r)   r   r   AsyncIteratorWrapperrz  9  s    %-r   r  c                  B   >#    T" S5        S h  vN n U nM   N
 Sng 7f)Nabc*   r)   )letterr7   ru   r  s      r   
doit_async8TraceTestCase.test_20_async_for_loop.<locals>.doit_asyncF  s'      4U ; f ;As   	c                    > T" 5       n [         R                  " U 5        UR                  S 5        [         R                  " S 5        g ! [         R                  " S 5        f = fr   )r   r   send)r  r7   r  s     r   run1TraceTestCase.test_20_async_for_loop.<locals>.runK  s?    A#V$tT"T"s   'A A )(rM   rO   )irN   )rP   )r  rR   irN   rP   r  rR   r   r   r   r   rK   r   rV   rO   r   r   r   r   r  rV   rO   r   r   r   r   r  rV   rO   r   r   r   r   r~   rP   r   r   r   r  rX   ri   )r   r   r   r   r  r  r   )r   r  r  r   r  r  s       @@r   test_20_async_for_loop$TraceTestCase.test_20_async_for_loop8  s{    	- 	-	
	# !!#(R	 	J//>>"MM6	3  		s   A2 2
A?>A?c                   ^ S mU4S jnU R                  5       nU" 5       n [        R                  " UR                  5        UR	                  S 5        [        R                  " S 5        / SQnU R                  UR                  R                  UR                  U5        g ! [
         a     NXf = f! [        R                  " S 5        f = f)Nc                :   #    [        U 5       H  nU7v   M
     g 7fr   rl   )nr   s     r   arangeGTraceTestCase.test_async_for_backwards_jump_has_no_line.<locals>.arange  s     1X s   c                  J   >#    T" S5        S h  vN n U S:  d  M    g  N
 g 7f)NrY   d   r)   )r   r  s    r   rZ  BTraceTestCase.test_async_for_backwards_jump_has_no_line.<locals>.f  s%     !!9 as79s    	#!!##!#)rM   rO   r}   r   r   r   r  rV   rO   r   rN   r   r   r   r  rV   rO   r  r   r   r   r  rV   rO   r  r   r   r  rQ   )
r   r   r   r   r  r   r   r  r  r   )r   rZ  r  coror   r  s        @r   )test_async_for_backwards_jump_has_no_line7TraceTestCase.test_async_for_backwards_jump_has_no_line  s    		
 !!#s	LL&IIdO LL
< 	AJJ55"MM6	3G  		 LLs#   1B   
B-*B0 ,B--B0 0Cc                 2    S nU R                  U/ SQ5        g )Nc                       g r   r)   r)   r   r   r  1TraceTestCase.test_21_repeated_pass.<locals>.func  s    r   rM   rO   rV   rr   rL  r  s     r   test_21_repeated_pass#TraceTestCase.test_21_repeated_pass  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  &     S H  n M     g!    g= f)Nr)   rK   rW   r)   r   s    r   r  3TraceTestCase.test_loop_in_try_except.<locals>.func  s    ATs   	 rh   rL  r  s     r   test_loop_in_try_except%TraceTestCase.test_loop_in_try_except  s    	 	T	r   c                 :   ^ U4S jmU R                  T/ SQ5        g )Nc                  J   >      T R                   S:X  a   g !    N= f! f = fNFred)r#   r  s   r   r  8TraceTestCase.test_try_except_no_exception.<locals>.func  s:      ==F* s       "	rM   rO   rV   rp   rc   r   rP      rP      rP   r  rR   rL  r  s    @r   test_try_except_no_exception*TraceTestCase.test_try_except_no_exception      	  	T		r   c                 2    S nU R                  U/ SQ5        g )Nc                  L        [         e!    O= f O! f = f!    O= fg ! f = fr   r   r)   r   r   r  6TraceTestCase.test_try_exception_in_else.<locals>.func  s>     #O	A
 Bs$     !  ! #)rM   rO   rV   rX   rc   rk  )rl  r   r  r     rP   r  r  rL  r  s     r   test_try_exception_in_else(TraceTestCase.test_try_exception_in_else  s    	  	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  \    [        S5       H  n [        S5       H  nX-   nM	     M     WS:H  $ )NrW   rK   rl   )r   jrn   s      r   r  -TraceTestCase.test_nested_loops.<locals>.func  s0    1XqAA "  6Mr   )rM   rO   rV   rX   rV   rX   rV   rO   rV   rX   rV   rX   rV   rO   ra   rx   rL  r  s     r   test_nested_loopsTraceTestCase.test_nested_loops  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  f    SS/n U (       a#  U R                  5       nU(       a   U$ U (       a  M#  SnU$ )NrK   r   c   rA   )seqr  s     r   r  )TraceTestCase.test_if_break.<locals>.func-  s9    a&CGGI H #
 Hr   )rM   rO   rV   rX   ra   rV   rX   ra   rZ   rk  rl  rR   rL  r  s     r   test_if_breakTraceTestCase.test_if_break+  s    	 	T
	r   c                 :    S nU R                  U/ SQS/-   5        g )Nc                  x    Su  pp# [        S5       H  n Sn US:  a   Sn  g Sn SnM     g ! Snf = f!   Sn g = f)N)rK   rK   rK   r  rY   r[   r   r   rl  r  rl   )rn   cdr   s       r   r  6TraceTestCase.test_break_through_finally.<locals>.funcF  sY    $JA!
qAq5!   " s    3 ,3 ,3 03 9)rM   rO   rV   rX   ra   rZ   rp   rk  r  rX   ra   rZ   rp   rc   r  r   rR   rL  r  s     r   test_break_through_finally(TraceTestCase.test_break_through_finallyD  s/    	1 	T AO?OQ	Rr   c                 :    S nU R                  U/ SQS/-   5        g )Nc                  z    Su  pp#n [        S5       H  n Sn US:  a   SnM  SnSnM     g ! Snf = f!   Sn g = f)N)rK   rK   rK   rK   r  rW   r[   r   r   rl  r  rl   )rn   r   r  r  r   s        r   r  9TraceTestCase.test_continue_through_finally.<locals>.funci  s[    *MA!
qAq5$   " s    4 -4 -4 14 :)rM   rO   rV   rX   ra   rZ   rp   rk  r  rX   ra   rZ   rp   rc   r  rX   ri   rL  r  s     r   test_continue_through_finally+TraceTestCase.test_continue_through_finallyg  s.    	1 	T  AN!P	Qr   c                 2    S nU R                  U/ SQ5        g )Nc                        g! f = frQ  r)   r)   r   r   r  7TraceTestCase.test_return_through_finally.<locals>.func  s    s   rw   rL  r  s     r   test_return_through_finally)TraceTestCase.test_return_through_finally  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  >     SS-    g! [          a     gf = f!    g= f)NrW   r   rq   )r   r)   r   r   r  ;TraceTestCase.test_try_except_with_wrong_type.<locals>.func  s0    !    s    
  )rM   rO   rV   r   rX   rp   r   rL  r  s     r   test_try_except_with_wrong_type-TraceTestCase.test_try_except_with_wrong_type  s    	 	T	r   c                 >   ^ SmU4S jnU R                  U/ SQ5        g )NTc                  F   >   [         e! T(       a  Sn f f = f!   Sn  U $ = fNrK   rY   r   )result	conditions    r   r  9TraceTestCase.test_finally_with_conditional.<locals>.func  s1    ##O !" !Ms   
   )rM   rO   rV   rX   rj  rZ   rp   rk  rm  r  r  rL  )r   r  r  s     @r   test_finally_with_conditional+TraceTestCase.test_finally_with_conditional  s&     	
	 	T
	r   c                 2    S nU R                  U/ SQ5        g )Nc                  P    Sn S/nU(       a  UR                  5         U (       a   M!  g rJ   rA   TRUEr7   s     r   r  3TraceTestCase.test_break_to_continue1.<locals>.func  s(    DA	 r   )
rM   rO   rV   rX   ra   rZ   rp   rc   rX   ri   rL  r  s     r   test_break_to_continue1%TraceTestCase.test_break_to_continue1  s    	 	T	
	r   c                 2    S nU R                  U/ SQ5        g )Nc                  d    Sn S/nU(       a$  UR                  5         U (       a  OM!  U(       a  M#  g g rJ   rA   r  s     r   r  3TraceTestCase.test_break_to_continue2.<locals>.func  s*    DA !r   )	rM   rO   rV   rX   ra   rZ   rp   rX   ri   rL  r  s     r   test_break_to_continue2%TraceTestCase.test_break_to_continue2  s    	 	T		r   c                 2    S nU R                  U/ SQ5        g )Nc                  *    Sn U (       a
  U (       a   g g g rJ   r)   )r  s    r   r  /TraceTestCase.test_break_to_break.<locals>.func  s    D r   )rM   rO   rV   rX   ra   rZ   r\   rL  r  s     r   test_break_to_break!TraceTestCase.test_break_to_break  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  2    S=pU S:X  a  US:X  a  Sng Sng Sng )NrK   rb   rq   rl  r)   )rn   r   r7   ru   zs        r   r  +TraceTestCase.test_nested_ifs.<locals>.func  s&    IAAv6AAr   r   rL  r  s     r   test_nested_ifsTraceTestCase.test_nested_ifs
  s    	 	T	r   c                 N   ^^^ UUU4S jnS=mmSmU R                  U/ SQ5        g )Nc                  ~   > T (       a  T(       a  T(       a  [         (       a  gg g g[        (       a  [        (       a  gg g )NFT)DEF)ABCs   r   r  4TraceTestCase.test_nested_ifs_with_and.<locals>.func   s6    1#(   !qq r   TFrh   rL  )r   r  r  r  r  s     @@@r   test_nested_ifs_with_and&TraceTestCase.test_nested_ifs_with_and  s-    		 AT	r   c                 2    S nU R                  U/ SQ5        g )Nc                  \    Sn  SS-    Sng ! [          a    U S:X  a
  [        5       e Sng f = f)NhellorY   r   raiserd   )ZeroDivisionError
ValueError)r7   rZ  s     r   r  .TraceTestCase.test_nested_try_if.<locals>.func7  sD    A'! A % '<$,&  A's    ++	rM   rO   rV   rX   rj  ra   rZ   rc   re   rL  r  s     r   test_nested_try_if TraceTestCase.test_nested_try_if5      	 	T		r   c                 N   ^  " S S5      mU4S jnU R                  U/ SQ5        g )Nc                        \ rS rSrS rS rSrg).TraceTestCase.test_if_false_in_with.<locals>.CiM  c                     U $ r   r)   r   s    r   r   8TraceTestCase.test_if_false_in_with.<locals>.C.__enter__N  r  r   c                      g r   r)   r  s    r   r!   7TraceTestCase.test_if_false_in_with.<locals>.C.__exit__P      r   r)   Nr#   r$   r%   r&   r   r!   r(   r)   r   r   r  r)  M      r   r  c                  J   > T " 5           S S S 5        g ! , (       d  f       g = fr   r)   r  s   r   r  1TraceTestCase.test_if_false_in_with.<locals>.funcS  s        
")rM   rO   r   rN   r   r   rV   rO   r}   r   r   rQ   rL  )r   r  r  s     @r   test_if_false_in_with#TraceTestCase.test_if_false_in_withK  s)    	 		
 	T
	r   c                 2    S nU R                  U/ SQ5        g )Nc                  2     g ! [          a	    [           g f = fr   )r   Xr)   r   r   r  7TraceTestCase.test_if_false_in_try_except.<locals>.funcg  s     s   r  rL  r  s     r   test_if_false_in_try_except)TraceTestCase.test_if_false_in_try_excepte  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                       " S S5      n g )Nc                   .    \ rS rSrSS:  a  SrSrgSrSrg)DTraceTestCase.test_implicit_return_in_class.<locals>.func.<locals>.Aiw  rY   rn  rK   rW   r)   N)r#   r$   r%   r&   rn   r(   r)   r   r   r  rA  w  s    q5AAr   r  r)   )r  s    r   r  9TraceTestCase.test_implicit_return_in_class.<locals>.funcv  s     r   rM   rO   rK   rN   rO   rV   rX   ri   rQ   rL  r  s     r   test_implicit_return_in_class+TraceTestCase.test_implicit_return_in_classt  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  V      g ! [          a
  n  S n A g S n A ff = f! [          a     g f = fr   r   exs    r   r  +TraceTestCase.test_try_in_try.<locals>.func  s3       s   
  
((rh   rL  r  s     r   test_try_in_tryTraceTestCase.test_try_in_try  s    	 	T	r   c                 `    S nU R                  U/ SQ5        S nU R                  U/ SQ5        g )Nc                  `      [         e! [         a
  n  S n A g S n A ff = f! [          a     g f = fr   )	TypeErrorr!  rI  s    r   r  :TraceTestCase.test_try_in_try_with_exception.<locals>.func  s5    #O!     	 
    
--	rM   rO   rV   rX   rj  ra   rp   rc   re   c                  `      [         e! [          a
  n  S n A g S n A ff = f! [         a     g f = fr   r!  rP  rI  s    r   r  rQ    s6    $$!  rR  )rM   rO   rV   rX   rj  ra   rZ   r\   rL  r  s     r   test_try_in_try_with_exception,TraceTestCase.test_try_in_try_with_exception  s:    	 	T			 	T	r   c                 6    SS jnU R                  U/ SQ5        g )Nc                 4    U(       a  U (       a	  U(       a  g g g g r   r)   )rn   pr  s      r   r  /TraceTestCase.test_if_in_if_in_if.<locals>.func  s    	  r   r  )r   rK   rK   rL  r  s     r   test_if_in_if_in_if!TraceTestCase.test_if_in_if_in_if  s    	 	T	r   c                    ^  " S S5      mU4S jnU4S jnU R                  U/ SQ5        U R                  U/ SQ5        g )Nc                        \ rS rSrS rS rSrg)-TraceTestCase.test_early_exit_with.<locals>.Ci  c                     U $ r   r)   r   s    r   r   7TraceTestCase.test_early_exit_with.<locals>.C.__enter__  r  r   c                      g r   r)   r  s    r   r!   6TraceTestCase.test_early_exit_with.<locals>.C.__exit__  r.  r   r)   Nr/  r)   r   r   r  r`    r0  r   r  c                  ^   > S H  n T" 5           S S S 5          g    g ! , (       d  f       M(  = f)NrK   rW   r)   )r   r  s    r   
func_break6TraceTestCase.test_early_exit_with.<locals>.func_break  s,    S S   Ss   
,	c                  J   > T " 5           S S S 5        g ! , (       d  f       g = fr   r)   r2  s   r   func_return7TraceTestCase.test_early_exit_with.<locals>.func_return  s     r4  )rM   rO   rV   r5  r   r   rX   rV   r}   r   r   ra   rx   )rM   rO   )r  rN   )rP   )rl  rR   rV   rO   r  r  r  rQ   rL  )r   rg  rj  r  s      @r   test_early_exit_with"TraceTestCase.test_early_exit_with  sE    	 			 	Z	 	[
	r   c                 @   ^ S mU4S jnU R                  U/ SQ5        g )Nc                 L    U (       a   SU S-
  -    U $ U $ ! [          a     U $ f = frJ   r   rT   s    r   foo;TraceTestCase.test_flow_converges_on_same_line.<locals>.foo  s9    q1uI H1H ) Hs    
##c                  :   > [        S5       H  n T" U 5        M     g rQ  rl   )r   rr  s    r   r  <TraceTestCase.test_flow_converges_on_same_line.<locals>.func
  s    1XA r   )rM   rO   rV   r  rN   irP   r   r   rO   rV   rv  rw  )r   rP   r   )r   r   r   r  r   r   rO   rQ   rL  )r   r  rr  s     @r    test_flow_converges_on_same_line.TraceTestCase.test_flow_converges_on_same_line   s$    		 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  R    Sn  SU -    g! [          a  nU (       a  e  S nAgS nAff = f)Nr   rK   donerq  )r7   errors     r   r  CTraceTestCase.test_no_tracing_of_named_except_cleanup.<locals>.func&  s8    A!  %  s   
 
&!&r#  rL  r  s     r   'test_no_tracing_of_named_except_cleanup5TraceTestCase.test_no_tracing_of_named_except_cleanup$  s    	 	T			r   c                 N   ^  " S S5      mU4S jnU R                  U/ SQ5        g )Nc                        \ rS rSrS rS rSrg)DTraceTestCase.test_tracing_exception_raised_in_with.<locals>.NullCtxi<  c                     U $ r   r)   r   s    r   r   NTraceTestCase.test_tracing_exception_raised_in_with.<locals>.NullCtx.__enter__=  r  r   c                     g r   r)   )r   excinfos     r   r!   MTraceTestCase.test_tracing_exception_raised_in_with.<locals>.NullCtx.__exit__?  r.  r   r)   Nr/  r)   r   r   NullCtxr  <  r0  r   r  c                  t   >  T " 5          SS-    S S S 5        g ! , (       d  f       g = f! [          a     g f = fNrK   r   rq  )r  s   r   r  ATraceTestCase.test_tracing_exception_raised_in_with.<locals>.funcB  s/    YaC YY$ s    * * 
'* * 
77)rM   rO   rV   r5  r   r   rX   rj  rV   r}   r   r   ra   rZ   r\   rL  )r   r  r  s     @r   %test_tracing_exception_raised_in_with3TraceTestCase.test_tracing_exception_raised_in_with:  s)    	 		 	T	r   c                 :   ^ U4S jmU R                  T/ SQ5        g )Nc                     >      T R                  S:X  a   g ! / =[          =b    POP  PO  P8=c     Ns f = f! f = fr  )r   r#   r  s   r   r  =TraceTestCase.test_try_except_star_no_exception.<locals>.func\  sH      ==F*I  s   ; 8; =r  rL  r  s    @r   !test_try_except_star_no_exception/TraceTestCase.test_try_except_star_no_exceptionZ  r  r   c                 2    S nU R                  U/ SQ5        g )Nc                  d       g ! / =[          =b  n S n A PO	S n A P  PO  P8=c     N#s f = f! f = fr   r   r   s    r   r  CTraceTestCase.test_try_except_star_named_no_exception.<locals>.funcy  s0     I 
 s   -  *- /)rM   rO   rV   rp   rk  r  rL  r  s     r   'test_try_except_star_named_no_exception5TraceTestCase.test_try_except_star_named_no_exceptionw  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  j     [        S5      e! / =[          =b    POP  PO  P8=c     Os f = fg ! f = frQ  r!  r)   r   r   r  ATraceTestCase.test_try_except_star_exception_caught.<locals>.func  s2     m#J 
 s    ,0 2rM   rO   rV   r   rX   ra   rk  r  rL  r  s     r   %test_try_except_star_exception_caught3TraceTestCase.test_try_except_star_exception_caught      	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  v     [        S5      e! / =[          =b  n S n A PO	S n A P  PO  P8=c     Os f = fg ! f = frQ  r  r  s    r   r  GTraceTestCase.test_try_except_star_named_exception_caught.<locals>.func  s2     m#J 
 s     26 8r  rL  r  s     r   +test_try_except_star_named_exception_caught9TraceTestCase.test_try_except_star_named_exception_caught  r  r   c                 2    S nU R                  U/ SQ5        g )Nc                        [        S5      e! / =[         =b    POP  PO  P8=c     g s f = f! [          a     g f = fNrY   rU  r)   r   r   r  ETraceTestCase.test_try_except_star_exception_not_caught.<locals>.func  s?    $Q-'	  s    -0 0 
==rS  rL  r  s     r   )test_try_except_star_exception_not_caught7TraceTestCase.test_try_except_star_exception_not_caught  r&  r   c                 2    S nU R                  U/ SQ5        g )Nc                        [        S5      e! / =[         =b  n S n A PO	S n A P  PO  P8=c     g s f = f! [          a     g f = fr  rU  r  s    r   r  KTraceTestCase.test_try_except_star_named_exception_not_caught.<locals>.func  s?    $Q-'	  s     36 6 
AArS  rL  r  s     r   /test_try_except_star_named_exception_not_caught=TraceTestCase.test_try_except_star_named_exception_not_caught  r&  r   c                 2    S nU R                  U/ SQ5        g )Nc                       [        S[        S5      [        S5      /5      e! / =[         =b  n S n A OS n A P  O  [         =b    OP  O  [         =b    e P  PO  P8=c     gs f = f! / =[         =bI     [        S5      e! / =[         =b    OP  O  [         =b  n S n A PO	S n A P  PO  P8=c     POs f = fP  PO  P8=c     gs f = f)Negr[   zbad typer  r   )ExceptionGroupr!  rP  OSErrorr  s    r   r  7TraceTestCase.test_try_except_star_nested.<locals>.func  s    	(#A	*(=>@ @	  "  J #B-' !  sK    # 1A%A	A% A( "A( (C	6B/B60B9	1C	3B9	9C	)rM   rO   rV   rX   ra   rZ   rX   rj  rp   rc   rk  r  r  r  )   rP   r  )r  r   )   rP   )   rP   )   rP   )   rP   )r  rR   rL  r  s     r   test_try_except_star_nested)TraceTestCase.test_try_except_star_nested  s    	* 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                       S   g )Nc                     grQ  r)   rT   s    r   <lambda>ATraceTestCase.test_notrace_lambda.<locals>.func.<locals>.<lambda>  s    ar   r)   r)   r   r   r  /TraceTestCase.test_notrace_lambda.<locals>.func  s    r   rh   rL  r  s     r   test_notrace_lambda!TraceTestCase.test_notrace_lambda  s    	
 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                       " S S5      n g )Nc                       \ rS rSrSrS rSrg)PTraceTestCase.test_class_creation_with_docstrings.<locals>.func.<locals>.Class_1i$  zthe docstring. 2c                     SU l         g)zAnother docstring. 4r[   Nrn   r   s    r   r   YTraceTestCase.test_class_creation_with_docstrings.<locals>.func.<locals>.Class_1.__init__&  s	    DFr   r  N)r#   r$   r%   r&   r'   r   r(   r)   r   r   Class_1r  $  s
    'r   r  r)   )r  s    r   r  ?TraceTestCase.test_class_creation_with_docstrings.<locals>.func#  s     r   rC  rL  r  s     r   #test_class_creation_with_docstrings1TraceTestCase.test_class_creation_with_docstrings!  s    	 	T	r   c                 2    S nU R                  U/ SQ5        g )Nc                  ^    S n U " S5      U " [        S/5      5       " S S5      5       5       ng )Nc                     S nU$ )Nc                     U $ r   r)   )r  s    r   _dec_TraceTestCase.test_class_creation_with_decorator.<locals>.func.<locals>.decorator.<locals>._dec7  s    Hr   r)   )r   r  s     r   	decoratorQTraceTestCase.test_class_creation_with_decorator.<locals>.func.<locals>.decorator6  s    r   rq   rl  c                       \ rS rSrSrg)PTraceTestCase.test_class_creation_with_decorator.<locals>.func.<locals>.MyObjecti;  r)   N)r#   r$   r%   r&   r(   r)   r   r   MyObjectr  ;  s    
 r   r  )len)r  r  s     r   r  >TraceTestCase.test_class_creation_with_decorator.<locals>.func5  s:    
 q\QC  r   )rM   rO   rp   rD  rV   ra   rx   rc   rk  rc   rD  rV   ra   rx   r  )rq   rN   rp   r  )r  rR   rc   rW   rN   rX   ri   rp   r  rX   ri   r  r  rL  r  s     r   "test_class_creation_with_decorator0TraceTestCase.test_class_creation_with_decorator4  s    	 	T $
 	r   c                 r  ^	 [         R                  " S5      nS m	U	4S jn/ SQn/ nUR                  U5        U" 5         [        R                  " S 5        UR
                  R                  nU VVVs/ s H  u  pgnXu-
  [        U   4PM     nnnnU R                  XC5        U R                  X#5        g s  snnnf )N	_testcapic               3      #    Sv   g 7frJ   r)   r)   r   r   genFTraceTestCase.test_no_line_event_after_creating_generator.<locals>.geni  s
     Gs   c                  "   > T" 5        H  n M     g r   r)   )_r  s    r   r  GTraceTestCase.test_no_line_event_after_creating_generator.<locals>.funcl  s       r   )rM   rV   r}   r   r   rO   ra   rV   )r   rN   r   rr   )
r   import_modulesettrace_to_recordr   r   r  r  EVENT_NAMESassertEqualr  )
r   r  r  EXPECTED_EVENTSr   
start_linewhatrP   r   r  s
            @r   +test_no_line_event_after_creating_generator9TraceTestCase.test_no_line_event_after_creating_generatorb  s    
 "//<			
  $$V,dfcll46H]]11
 &,
%+!S _k$/0%+ 	 
 	1T3
s   1B2c                    ^  " S S5      mU4S jn/ SQnU R                  X5        [        S5       H
  nU" 5         M     U R                  X5        g )Nc                       \ rS rSrS rSrg)GTraceTestCase.test_correct_tracing_quickened_call_class_init.<locals>.Ci  c                     U   g r   r)   r   s    r   r   PTraceTestCase.test_correct_tracing_quickened_call_class_init.<locals>.C.__init__  s    r   r)   N)r#   r$   r%   r&   r   r(   r)   r   r   r  r    s    r   r  c                     > T " 5         g r   r)   r2  s   r   r  JTraceTestCase.test_correct_tracing_quickened_call_class_init.<locals>.func  s    Cr   r|   r  )r  rm   )r   r  r  r  r  s       @r   .test_correct_tracing_quickened_call_class_init<TraceTestCase.test_correct_tracing_quickened_call_class_init  sJ    	 		 	T3sAF T3r   c                 L  ^ SmU4S jn U[         R                  " 5       l        [         R                  " U5        [	        / 5        U R                  S5        [         R                  " S 5        g ! [         a  nSnUR                  nU(       a>  UR                  R                  R                  S:X  a  US-  nUR                  nU(       a  M>  US:X  a  U R                  S5         S nANUS:  a  U R                  S5         S nANS nAff = f! [         R                  " S 5        f = f)	NFc                 .   > T(       d  Sm[         e[        $ r   )r   r}  )r   r   r   raiseds      r   
error_once5TraceTestCase.test_settrace_error.<locals>.error_once  s    Lr   No exception raisedr   test_settrace_errorrK   Traceback is missing frame"Traceback has frame more than once)r   r   r   r   r  r   r   __traceback__tb_framer   co_nametb_next)r   r  rJ  counttbr  s        @r   r  !TraceTestCase.test_settrace_error  s    		&0CMMO#LL$G II+,LL  
	@E!!B;;%%--1FFQJEZZ " z		677		>?
	@ LLsB   ;A. D .
D8ADD"D 'D>D DD D#c                 (   [         R                  " S5      n UR                  / 5        [        / 5        U R	                  S5        [        R                  " S 5        g ! [
         a  nSnUR                  nU(       a>  UR                  R                  R                  S:X  a  US-  nUR                  nU(       a  M>  US:X  a  U R	                  S5         S nANUS:  a  U R	                  S5         S nANS nAff = f! [        R                  " S 5        f = f)Nr  r  r   test_testcapi_settrace_errorrK   r  r  )r   r  settrace_to_errorr  r   r   r  r  r   r  r  r   r   )r   r  rJ  r	  r
  s        r   r  *TraceTestCase.test_testcapi_settrace_error  s     "//<		''+G II+,LL  
	@E!!B;;%%--1OOQJEZZ " z		677		>?
	@ LLsA   A C9 
C6&AC19C1C9 C1,C9 1C66C9 9Dc                 d    0 n[        SSS-  < S3U5        US   n/ SQnU R                  X#5        g )Nzdef f():              # line 0
            x = 0                     # line 1
            y = 1                     # line 2
            r   i   zn                        # lines 3 through (1 << 16)
            x += 1                    #
            returnrZ  )rM   rO   rV   )i  rP   )  rP   )r  rR   r\  )r   r  rZ  r  s       r   test_very_large_function&TraceTestCase.test_very_large_function  sE    
 ),
 ./	0 cF
 	Q0r   )r   N)Rr#   r$   r%   r&   r   r   staticmethodr   r   r  r	  r  r  r  r  r  r"  r%  r(  r+  r.  r1  r4  r7  r:  r=  r@  rC  rF  rM  rW  r_  re  ro  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r$  r6  r<  rE  rL  rV  r\  rm  rx  r  r  r  r  r  r  r  r  r  r  r  r  r   cpython_onlyr  r  r  r  r  r(   r)   r   r   r   r   i  s   6
  D308&&&&&%#",+')+E
>0*J3X23h	":@42!RF"QH&:..$(.,4&"'R",\"H,@:(,,,,-^&,\ )4 )4V4.:  01r   r   )rN   r   rP   rR   c                   <   ^  \ rS rSrSrU 4S jr\S 5       rSrU =r	$ )SkipLineEventsTraceTestCasei  z8Repeat the trace tests, but with per-line events skippedc                 h   > U Vs/ s H  oDS   S:w  d  M  UPM     nn[         TU ]  XU5        g s  snf )NrK   rP   )superr   )r   r   r   r   r   skip_line_events	__class__s         r   r   *SkipLineEventsTraceTestCase.compare_events  s6    '6I!A$&.AI{4DE Js   //c                      [        SS9$ )NF)r   r   r)   r   r   r   'SkipLineEventsTraceTestCase.make_tracer  s    ..r   r)   )
r#   r$   r%   r&   r'   r   r  r   r(   __classcell__r  s   @r   r  r    s     BF / /r   r  c                   V   ^  \ rS rSrSrU 4S jr\S 5       r\" 5       S 5       r	Sr
U =r$ )TraceOpcodesTestCasei  z;Repeat the trace tests, but with per-opcodes events enabledc                    > U Vs/ s H  oDS   S:w  d  M  UPM     nn[        U5      S:  a#  U R                  [        U5      [        U5      SS9  [        TU ]  XU5        g s  snf )NrK   opcodez)No 'opcode' events received by the tracer)msg)r  
assertLessr  r   )r   r   r   r   r   skip_opcode_eventsr  s         r   r   #TraceOpcodesTestCase.compare_events
  sd    )/DAQ483CaDv;?OOC 23S[ K  M{P	 Es
   A!A!c                      [        SS9$ )NT)r   r   r)   r   r   r    TraceOpcodesTestCase.make_tracer  s    $//r   c                 &   [         R                  " S5      n[        R                  " SSS9nUR	                  UR                  S5      5        UR                  5          [        R                  " [        R                  UR                  /[        R                  [        R                  S9nUR                  5         UR                  R                  5       n[         R"                  " UR                  5        UR                  R                  5         UR$                  R                  5         U R'                  SU5        g! [         R"                  " UR                  5        WR                  R                  5         UR$                  R                  5         f = f)	zMake sure setting f_trace_opcodes after starting trace works even
if it's the first time f_trace_opcodes is being set. GH-103615a  
            import sys

            def opcode_trace_func(frame, event, arg):
                if event == "opcode":
                    print("opcode trace triggered")
                return opcode_trace_func

            sys.settrace(opcode_trace_func)
            sys._getframe().f_trace = opcode_trace_func
            sys._getframe().f_trace_opcodes = True
            a = 1
        Fz.py)deletesuffixzutf-8)stdoutstderrs   opcode trace triggeredN)textwrapdedenttempfileNamedTemporaryFilewriteencodeclose
subprocessPopenr   
executablenamePIPEwaitr.  readosremover/  assertIn)r   codetmprZ  outs        r   !test_trace_opcodes_after_settrace6TraceOpcodesTestCase.test_trace_opcodes_after_settrace  s    
      ))uE		$++g&'			  #..#((!;JOO\f\k\klAFFH((--/CIIchhHHNNHHNN/5 IIchhHHNNHHNNs   A6D: :AFr)   )r#   r$   r%   r&   r'   r   r  r   r   rD  r(   r  r   s   @r   r"  r"    s7    EQ 0 0 6 6r   r"  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)RaisingTraceFuncTestCasei8  c                 j    U R                  [        R                  [        R                  " 5       5        g r   r   r   r   r   r   s    r   r   RaisingTraceFuncTestCase.setUp9  s    clln5r   c                 D    X R                   :X  a  [        eU R                  $ )zPA trace function that raises an exception in response to a
specific trace event.)raiseOnEventr!  r   r   s       r   r   RaisingTraceFuncTestCase.trace<  s      %%%::r   c                 4    U R                   S:X  a  SnSU-  ngg)zwThe function to trace; raises an exception if that's the case
we're testing, so that the 'exception' trace event fires.r   r   rK   NrL  )r   r7   ru   s      r   rZ  RaisingTraceFuncTestCase.fD  s#     +A!Ar   c                 J   Xl          [        [        R                  " 5       S-   5       HE  n[        R                  " U R
                  5         U R                  5         U R                  S5        MG     g! [         a     MW  f = f! [         a    U R                  S5         gf = f)zLTests that an exception raised in response to the given event is
handled OK.rK   zexception not raised!zrecursion counter not resetN)
rL  rm   r   getrecursionlimitr   r   rZ  r   r!  r   )r   r   r   s      r   run_test_for_event+RaisingTraceFuncTestCase.run_test_for_eventM  s     "
	53002Q67TZZ(7FFH II56 8 "   	5II34	5s6   AB A3B 3
B=B  BB B"!B"c                 &    U R                  S5        g )NrN   rS  r   s    r   	test_call"RaisingTraceFuncTestCase.test_call^      'r   c                 &    U R                  S5        g )NrP   rV  r   s    r   	test_line"RaisingTraceFuncTestCase.test_line`  rY  r   c                 &    U R                  S5        g )NrR   rV  r   s    r   test_return$RaisingTraceFuncTestCase.test_returnb  s    )r   c                 &    U R                  S5        g Nr   rV  r   s    r   test_exception'RaisingTraceFuncTestCase.test_exceptiond  s    ,r   c                    ^^ S mUU4S jm[         R                  " T5         T" 5         U R                  S5        g ! [         a    SS KnUR
                  " 5          g f = f)Nc                  >    [        S5       H  n [        U 5        M     g )Nr[   )rm   printr  s    r   rZ  4RaisingTraceFuncTestCase.test_trash_stack.<locals>.fh  s    1Xa r   c                 x   > US:X  a2  U R                   TR                  R                  S-   :X  a  [        S5      eT$ )NrP   rW   zi am crashing)r   r  r  r   )r   whyextrarZ  gs      r   rk  4RaisingTraceFuncTestCase.test_trash_stack.<locals>.gl  s5    v!**";";a"??"?33Hr   zexception not propagatedr   )r   r   r   r   r   collect)r   r   rZ  rk  s     @@r   test_trash_stack)RaisingTraceFuncTestCase.test_trash_stackg  sP    		 	Q	2C II01  	JJL	s   = AAc                   ^ ^ S nUU 4S jm[         R                  " 5       n [         R                  " T5         U" 5         [         R                  " U5        g ! [         a     N#f = f! [         R                  " U5        f = f)Nc                       Sn U R                     g )Nr   )no_such_attrrT   s    r   rZ  <RaisingTraceFuncTestCase.test_exception_arguments.<locals>.f~  s    ANNr   c                 J   > US:X  a  Uu  p4nTR                  U[        5        T$ ra  )assertIsInstancer   )r   r   r   typer   r   rk  r   s         r   rk  <RaisingTraceFuncTestCase.test_exception_arguments.<locals>.g  s*    $),&%%i;Hr   )r   r   r   AttributeError)r   rZ  existingrk  s   `  @r   test_exception_arguments1RaisingTraceFuncTestCase.test_exception_arguments}  se    		 <<>	#LLO
 LL"	 "  LL"s(   A( A 
A%"A( $A%%A( (B c                   ^^ [        S5      mUU4S jmS nU R                  [         5       n[        R                  " T5        U" 5         S S S 5        U R	                  WR
                  T5        g ! , (       d  f       N+= f)NzBOOM!c                 &   > US:X  a  TeSU l         T$ )NrP   T)r   )r   r   r   r   r   s      r   r   RRaisingTraceFuncTestCase.test_line_event_raises_before_opcode_event.<locals>.trace  s    $(E!Lr   c                      g r   r)   r)   r   r   rZ  NRaisingTraceFuncTestCase.test_line_event_raises_before_opcode_event.<locals>.f  r  r   )r!  assertRaisesr   r   assertIsr   )r   rZ  caughtr   r   s      @@r   *test_line_event_raises_before_opcode_eventCRaisingTraceFuncTestCase.test_line_event_raises_before_opcode_event  s\    w'		
	z*fLLC + 	f&&	2 +*s   A00
A>rO  N)r#   r$   r%   r&   r   r   rZ  rS  rW  r[  r^  rb  rn  rz  r  r(   r)   r   r   rG  rG  8  s9    65"((*-2,#,3r   rG  c                   ,    \ rS rSrSr  SS jrS rSrg)
JumpTraceri  z>Defines a trace function that jumps from one place to another.c                     UR                   U l        X l        X0l        X@l        U(       a  S OU R                  R
                  U l        SU l        g )NF)r  rA  jumpFromjumpTor   r  	firstLiner|  )r   functionr  r  r   	decorateds         r   r   JumpTracer.__init__  s:    %%	 
!*		0H0H	r   c                 n   U R                   (       a  g U R                  c4  UR                  U R                  :X  a  US:X  a  UR                  S-
  U l        X R
                  :X  a  U R                  b  UR                  U R                  U R                  -   :X  as  UnUbE  UR                  U R                  :w  a+  UR                  nUb  UR                  U R                  :w  a  M+  Ub&   U R                  U R                  -   Ul        SU l         U R                  $ ! [         a    U R                  Ul         N0f = f)NrP   rK   T)r|  r  r   rA  r   r   r  r   r  rP  r   )r   r   r   r   rZ  s        r   r   JumpTracer.trace  s    99 NN"u||tyy'@"^^a/DNZZDNN$>$..4=="@@A-AHH		$9HH -AHH		$9}1%)^^dkk%AEN !	zz ! 1%)[[EN1s   %D D43D4)rA  r|  r   r  r  r  N)rP   F)r#   r$   r%   r&   r'   r   r   r(   r)   r   r   r  r    s    H9? r   r  c                      U R                  S5        g ! [         a'  nU R                  S[        U5      ;   5         S nAg S nAff = f)NrW   integer)r   r!  r   r   r   s     r   no_jump_to_non_integersr    s;    +a +i3q6)**+s    
AA  Ac                       [         R                  " 5       R                  n U R                  U l        [	        S5      e! [
         a  nS[        U5      ;  a  e  S nAg S nAff = f)Nz'Trace-function-less jump failed to failr   )r   r   r   r   AssertionErrorr!  r   )previous_framer   s     r   no_jump_without_trace_functionr    s]    
H//"0"9"9 FGG   #a&  !s   0= 
A!AA!c                      \ rS rSrSrS rS r  SS jr  SS jrSS jr	SS	 jr
\	" S
SS/5      S 5       r\	" SS
/ SQ5      S 5       r\	" S
SS/\\4S9S 5       r\	" SS/ SQ5      S 5       r\	" SSS/5      S 5       r\	" SS/ SQ5      S 5       r\	" SSSS/\\4S9S 5       r\	" SS
/ SQ5      S 5       r\
" SSSS/5      \S 5       5       r\
" SS/ SQ5      \S 5       5       r\	" S
SS/5      S  5       r\	" SS/ S!Q5      S" 5       r\	" SS#SS#/5      S$ 5       r\	" SS%SS%/\S&45      S' 5       r\	" SS(SS(/\S&45      S) 5       r\	" SS(SS/\S*45      S+ 5       r\	" SSS
/\S,45      S- 5       r\	" SSSS/5      S. 5       r \	" SS/ S/Q5      S0 5       r!\	" SSS
S/5      S1 5       r"\
" SSS
S/5      S2 5       r#\	" SS
/ S3Q5      S4 5       r$\
" SS
/ S3Q5      S5 5       r%\	" SSS/5      S6 5       r&\	" SS
/ S7Q5      S8 5       r'\	" SSS/5      S9 5       r(\	" SS
/ S:Q5      S; 5       r)\	" SS%/ S<Q5      S= 5       r*\	" SS%/ S<Q5      S> 5       r+\	" SS/ S?Q5      S@ 5       r,\	" SS
/ SAQ\\4S9SB 5       r-\	" SS/ SCQ5      SD 5       r.\
" SS/ SCQ5      SE 5       r/\	" SS/ SFQ5      SG 5       r0\
" SS/ SFQ5      SH 5       r1\	" SS/ SIQ5      SJ 5       r2\
" SS/ SIQ5      SK 5       r3\	" SS/ SLQ5      SM 5       r4\
" SS/ SLQ5      SN 5       r5\	" SOS(/ SPQ5      SQ 5       r6\	" SS/ SRQ\\4S9SS 5       r7\
" SS/ SRQ\\4S9ST 5       r8\	" SS/ SUQ5      SV 5       r9\	" SSO/ SWQ5      SX 5       r:\	" S
S%S%SO/\\4S9SY 5       r;\
" S
S%S%SO/\\4S9SZ 5       r<\	" SSS
/\S,45      S[ 5       r=\	" SS\S
/\S]45      S^ 5       r>\	" SSS/\S_45      S` 5       r?\	" SSS/\S_45      Sa 5       r@\	" SSS/\S_45      Sb 5       rA\	" SSS/\S_45      Sc 5       rB\	" S
S/ \Sd45      Se 5       rC\
" S
S/ \Sd45      Sf 5       rD\	" SSSS/\Sd45      Sg 5       rE\
" SSSS/\Sh45      Si 5       rF\	" S
S/ \Sj45      Sk 5       rG\
" S
S/ \Sj45      Sl 5       rH\	" SS/ SmQ\Sj45      Sn 5       rI\
" SS/ SmQ\Sj45      So 5       rJ\	" S
SSS/5      Sp 5       rK\	" SS/ SqQ5      Sr 5       rL\	" S
SS/5      Ss 5       rM\	" SS/ StQ5      Su 5       rN\	" SS%/ S<Q\\4S9Sv 5       rO\	" S
SS/5      Sw 5       rP\	" SS/ SxQ5      Sy 5       rQ\	" SS
/ SzQ5      S{ 5       rR\	" S
S/ \S|45      S} 5       rS\	" S
S/ \S|45      S~ 5       rT\	" SS/ SQ\S|45      S 5       rU\	" SSS/\S|45      S 5       rV\	" S%S
/ SQ5      S 5       rW\	" S%S
/ SQ5      S 5       rX\	" SS/ SQ5      S 5       rY\
" SS/ SQ5      S 5       rZ\	" SS%SS/\S,45      S 5       r[\	" S%SS
S/\Sd45      S 5       r\\
" S%SS
S/\Sd45      S 5       r]S r^S r_S r`S ra\	" SSS
/S\S4S9S 5       rb\	" SS
S
/S\S4S9S 5       rc\	" SS
S
/S\S4S9S 5       rd\	" SSSS/SS9S 5       re\	" SSS
S/\\4S9S 5       rf\	" SS
/ \\4S9S 5       rg\	" SOS/ SQ\\4S9S 5       rh\
" SSS
S/\\4S9S 5       ri\
" SS
/ \\4S9S 5       rj\
" SOS/ SQ\\4S9S 5       rk\	" SS%/ \Sj4S9S 5       rl\	" SSO/ \Sj4S9S 5       rm\	" SS%/ \Sj4S9S 5       rn\	" SSS
S/\\4S9S 5       ro\	" SS/ SQ\\4S9S 5       rp\qR                  " S5      S 5       rs\	" SSS
S/\\4S9S 5       rtSrug)JumpTestCasei  z&assigning None to [0-9]+ unbound localc                     U R                  [        R                  [        R                  " 5       5        [        R                  " S 5        g r   rI  r   s    r   r   JumpTestCase.setUp  &    clln5Tr   c                 n    X!:w  a0  U R                  S[        U5      -   S-   S-   [        U5      -   5        g g )NzOutputs don't match:
Expected: r   z
Received: )r   repr)r   expectedreceiveds      r   compare_jump_output JumpTestCase.compare_jump_output  sF    II $&*8n57;<#$&*8n5 6  r   Nc	                 |   Un	[        U	S5      (       a  U	R                  n	[        U	S5      (       a  M  [        XX6U5      n
[        R                  " U
R
                  5        / n[        R                  " 5        nUb  UR                  U R                  " U6 5        Ub  UR                  U R                  " U6 5        O:UR                  [        R                  " 5       5        [        R                  " S5        U" U5        S S S 5        [        R                  " S 5        U R                  XK5        g ! , (       d  f       N6= f)N__wrapped__r}  )hasattrr  r  r   r   r   
contextlib	ExitStackenter_contextassertRaisesRegexassertWarnsRegexwarningscatch_warningssimplefilterr  r   r  r  r  r  r}  r   r  warningwrappedr  r   stacks                r   r	  JumpTestCase.run_test  s    g}--))G g}-- GviHV\\"!!#u ##D$:$:E$BC"##D$9$97$CD##H$;$;$=>%%g.L $ 	T  2 $#s   7BD--
D;c	                 Z   Un	[        U	S5      (       a  U	R                  n	[        U	S5      (       a  M  [        XX6U5      n
[        R                  " U
R
                  5        / n[        R                  " 5        nUb  UR                  U R                  " U6 5        Ub  UR                  U R                  " U6 5        [        R                  " U" U5      5        S S S 5        [        R                  " S 5        [        R                  " S 5        U R                  XK5        g ! , (       d  f       NL= f)Nr  )r  r  r  r   r   r   r  r  r  r  r  asyncior  set_event_loop_policyr  r  s                r   run_async_testJumpTestCase.run_async_test  s    g}--))G g}-- GviHV\\"!!#u ##D$:$:E$BC"##D$9$97$CDKKV% $ 	T%%d+  2 $#s   7AD
D*c                 (   ^ ^^^^^ UUUU UU4S jnU$ )zaDecorator that creates a test that makes a jump
from one place to another in the following code.
c                 >   >^  [        T 5      UUUU UUU4S j5       nU$ )Nc                 2   > U R                  TTTTTTSTS9  g NT)r}  r   r  r  )r	  r   r}  r   r  r  r  r  r  s    r   rE   7JumpTestCase.jump_test.<locals>.decorator.<locals>.test!  s'    dHfh$)$PW  Yr   r   r  rE   r}  r   r  r  r  r  s   ` r   r  )JumpTestCase.jump_test.<locals>.decorator   (    4[Y Y Y Kr   r)   r  r  r  r}  r   r  r  s   `````` r   	jump_testJumpTestCase.jump_test      	 	 r   c                 (   ^ ^^^^^ UUUU UU4S jnU$ )znDecorator that creates a test that makes a jump
from one place to another in the following asynchronous code.
c                 >   >^  [        T 5      UUUU UUU4S j5       nU$ )Nc                 2   > U R                  TTTTTTSTS9  g r  )r  r  s    r   rE   =JumpTestCase.async_jump_test.<locals>.decorator.<locals>.test-  s)    ##D(FH$)$PW $ Yr   r   r  s   ` r   r  /JumpTestCase.async_jump_test.<locals>.decorator,  r  r   r)   r  s   `````` r   async_jump_testJumpTestCase.async_jump_test(  r  r   rK   rY   c                 j    U R                  S5        U R                  S5        U R                  S5        g NrK   rW   rY   r   r   s    r   test_jump_simple_forwards&JumpTestCase.test_jump_simple_forwards6  &    aaar   rW   )rK   rK   rW   c                 H    U R                  S5        U R                  S5        g rk   r  r  s    r   test_jump_simple_backwards'JumpTestCase.test_jump_simple_backwards<      aar   rb   r[   r  c                 T    S nUc  U R                  S5        g U R                  S5        g NrY   r[   r  r   r7   s     r   test_jump_is_none_forwards'JumpTestCase.test_jump_is_none_forwardsA  s$    9MM!MM!r   rq   )rY   r[   rq   c                 v    S nUc  U R                  S5        OU R                  S5        U R                  S5        g NrY   r[   rq   r  r  s     r   test_jump_is_none_backwards(JumpTestCase.test_jump_is_none_backwardsI  s0    9MM!MM!ar   c                 T    S nUb  U R                  S5        g U R                  S5        g r  r  r  s     r   test_jump_is_not_none_forwards+JumpTestCase.test_jump_is_not_none_forwardsR  s$    =MM!MM!r   )r[   r[   rq   c                 v    S nUb  U R                  S5        OU R                  S5        U R                  S5        g r  r  r  s     r   test_jump_is_not_none_backwards,JumpTestCase.test_jump_is_not_none_backwardsZ  s0    =MM!MM!ar   c                     S H.  nU R                  S5        S H  nU R                  S5        M     M0     U R                  S5        g )Nrf  rW   rY   rb   r[   r  r   r   r  s      r   test_jump_out_of_block_forwards,JumpTestCase.test_jump_out_of_block_forwardsc  s<    AMM!a    	ar   )rK   rY   r[   rK   rY   r[   rq   rd   c                     U R                  S5        S H?  nU R                  S5        S H  nU R                  S5        M     U R                  S5        MA     U R                  S5        g )NrK   r   rY   )rW   r[   rq   rd   r  r  s      r    test_jump_out_of_block_backwards-JumpTestCase.test_jump_out_of_block_backwardsk  sT    aAMM!a  MM!	 
 	ar   c                    #    S H8  nU" SS/5        S h  vN nU R                  S5        U R                  S5        M-     g  N+
 U R                  S5        MS  7f)Nr   rK   rW   rY   rb   r[   r  r   r8   r   s      r   )test_jump_out_of_async_for_block_forwards6JumpTestCase.test_jump_out_of_async_for_block_forwardsu  sR      A$aV, !aa a  !, MM!s%   AAAA(AAA)rW   rb   rW   rb   r[   rq   c                    #    S HH  nU R                  S5        U" S/5        S h  vN nU R                  S5        U R                  S5        M-     g  N+
 U R                  S5        Mc  7f)Nr   rW   rK   rb   r[   rq   r  r  s      r   *test_jump_out_of_async_for_block_backwards7JumpTestCase.test_jump_out_of_async_for_block_backwards~  sZ      AMM!$aS> !aa a 	 !> MM!s%    A(AAA(A(AA(c                 H    U R                  S5        U R                  S5        g r  r  r  s    r   test_jump_to_codeless_line'JumpTestCase.test_jump_to_codeless_line  s    aar   )rK   rW   rY   c                 j    U R                  S5        U R                  S5        U R                  S5        g r  r  r  s    r   test_jump_to_same_line#JumpTestCase.test_jump_to_same_line  r  r   rn  c                     U R                  S5        U R                  S5         U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        f = f! U R                  S5         U R                  S5        U R                  S5        O! U R                  S5        f = fU R                  S5        f = f)NrW   rb   rq   rl  rn  r  r  s    r   test_jump_in_nested_finally(JumpTestCase.test_jump_in_nested_finally  s    	MM!MM!!a a MM! a 	 MM!!a a a MM!s.   A/ A A,/CB%C%B88Crd    c                      U R                  S5        SS-     U R                  S5        U R                  S5        g ! U R                  S5        U R                  S5        f = f)NrW   rK   r   rq   rd   r  r  s    r   test_jump_in_nested_finally_2*JumpTestCase.test_jump_in_nested_finally_2  sQ    	MM!aCMM!MM! MM!MM!s	   < $A r  c                     U R                  S5        SS-     U R                  S5         U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        f = f! U R                  S5         U R                  S5        U R                  S5        O! U R                  S5        f = fU R                  S5        f = f)NrW   rK   r   rq   rl  r   r  r  r  s    r   test_jump_in_nested_finally_3*JumpTestCase.test_jump_in_nested_finally_3  s    
	MM!aCMM!"a b!MM" b!	 MM!"a b!b!MM"s.   A5 A A25CB+C+B>>Cz"comes after the current code blockc                      U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        U R                  S5           g = fNrW   rb   r[   r  r  s    r   5test_no_jump_over_return_try_finally_in_finally_blockBJumpTestCase.test_no_jump_over_return_try_finally_in_finally_block  sM    
	MM!MM!MM! MM!MM!	   6 $Aafterc                 L    U R                  S5         U R                  S5        M  r  r  r  s    r    test_no_jump_infinite_while_loop-JumpTestCase.test_no_jump_infinite_while_loop  s"    aMM! r   c                 t    SnU R                  S5        US::  a  U R                  S5        US-  nUS::  a  M  g g )NrK   rW   rb   r  r   r   s     r   #test_jump_forwards_into_while_block0JumpTestCase.test_jump_forwards_into_while_block  s8    a1fMM!FA 1fr   )rY   rY   rY   r[   c                 r    SnUS::  a  U R                  S5        US-  nUS::  a  M  U R                  S5        g )NrK   rW   rY   r[   r  r  s     r   $test_jump_backwards_into_while_block1JumpTestCase.test_jump_backwards_into_while_block  s:    1fMM!FA 1f 	ar   c                     [        U S5         U R                  S5        S S S 5        U R                  S5        g ! , (       d  f       N = fr  r
   r   r  s    r   $test_jump_forwards_out_of_with_block1JumpTestCase.test_jump_forwards_out_of_with_block  2    &!$MM! %a %$	   9
Ac                    #    [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   U R                  S5        g  N7 N! , IS h  vN  (       d  f       N-= f7fr  r+   r   r  s    r   *test_jump_forwards_out_of_async_with_block7JumpTestCase.test_jump_forwards_out_of_async_with_block  @     $VQ//MM! 0/a 0///A   A)AA)AA)AA)A)A&AA&"A))rK   rW   rK   rW   rY   r   c                     U R                  S5        [        U S5         U R                  S5        S S S 5        g ! , (       d  f       g = fr  r   r
   r  s    r   %test_jump_backwards_out_of_with_block2JumpTestCase.test_jump_backwards_out_of_with_block  0    a&!$MM! %$$	   9
Ac                    #    U R                  S5        [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   g  N& N! , IS h  vN  (       d  f       g = f7fr  r   r+   r  s    r   +test_jump_backwards_out_of_async_with_block8JumpTestCase.test_jump_backwards_out_of_async_with_block  >     a$VQ//MM! 0/////C   "A)AA)AA)AA)A)A&AA&"A)c                      U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        f = fr  r  r  s    r   +test_jump_forwards_out_of_try_finally_block8JumpTestCase.test_jump_forwards_out_of_try_finally_block  ;    	MM!MM!a MM!	   6 A	)rK   rK   rY   r[   c                     U R                  S5         U R                  S5        U R                  S5        g ! U R                  S5        f = fNrK   rY   r[   r  r  s    r   ,test_jump_backwards_out_of_try_finally_block9JumpTestCase.test_jump_backwards_out_of_try_finally_block	  8    a	MM!MM!FMM!	   6 A	c                 x     U R                  S5        U R                  S5        g !   U R                  S5        e = fNrW   rb   rq   r  r  s    r   *test_jump_forwards_out_of_try_except_block7JumpTestCase.test_jump_forwards_out_of_try_except_block		  7    	MM! 	a	MM!   % 9)rK   rK   rY   c                 x    U R                  S5         U R                  S5        g !   U R                  S5        e = fr5  r  r  s    r   +test_jump_backwards_out_of_try_except_block8JumpTestCase.test_jump_backwards_out_of_try_except_block	  5    a	MM!	MM!   % 9)rb   rd   rl  c                      SS-    U R                  S5        g ! [          a%    U R                  S5        U R                  S5         N@[         a    U R                  S5         N\f = fNrK   r   rb   r[   rd   rl  r   r   FloatingPointErrorr  s    r   test_jump_between_except_blocks,JumpTestCase.test_jump_between_except_blocks	  sY    	aC 	a ! 	MM!MM!! 	MM!	s    ,A$A$#A$c                      SS-    U R                  S5        U R                  S5        g ! [          a%    U R                  S5        U R                  S5         NQf = f! U R                  S5        f = frF  )r   r   r  s    r    test_jump_from_except_to_finally-JumpTestCase.test_jump_from_except_to_finally&	  s`    	aC
 MM!a ! 	MM!MM!	 MM!s!   * ,AA AA A/)rb   rq   rd   c                      SS-    U R                  S5        g !   U R                  S5        U R                  S5        U R                  S5         NI= f)NrK   r   rb   r[   rq   rd   r  r  s    r   test_jump_within_except_block*JumpTestCase.test_jump_within_except_block1	  sG    	aC
 	a		MM!MM!MM!s	    5A)rK   r[   rK   r[   c                     U R                  S5         SS-    Sng ! [         a  nU R                  S5         S nASng S nAff = f)NrK   r   r[   r  r   r   )r   r   r7   s      r   test_jump_over_try_except&JumpTestCase.test_jump_over_try_except;	  sG    a	E  ! 	MM!	s    
A=A)rK   rb   r[   r   c                    U R                  S5        [        U S5         U R                  S5        S S S 5        [        U S5         U R                  S5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = fNrK   rW   rY   rb   r[   r$  r  s    r   test_jump_across_with"JumpTestCase.test_jump_across_withD	  W    a&!$MM! %&!$MM! %$ %$$$   AA0
A-0
A>c                 ~  #    U R                  S5        [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   g  N\ N=! , IS h  vN  (       d  f       NR= f ND N%! , IS h  vN  (       d  f       g = f7frV  r*  r  s    r   test_jump_across_async_with(JumpTestCase.test_jump_across_async_withL	  q     a$VQ//MM! 0/$VQ//MM! 0// 0///////   "B=BB=BB=BB=BB=B#0B=;B!<B=B=BBBB=!B=#B:)B,*B:6B=)rK   rY   r[   rq   c                     U R                  S5        S H:  n[        U S5         U R                  S5        S S S 5        U R                  S5        M<     U R                  S5        g ! , (       d  f       N5= fNrK   r   rY   rb   r[   rq   r$  r  s     r   ,test_jump_out_of_with_block_within_for_block9JumpTestCase.test_jump_out_of_with_block_within_for_blockT	  sV    aAfa(a  )MM!  	a )(s   A$$
A2	c                 ,  #    U R                  S5        S HJ  n[        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   U R                  S5        ML     U R                  S5        g  NL N-! , IS h  vN  (       d  f       NB= f7fra  r*  r  s     r   2test_jump_out_of_async_with_block_within_for_block?JumpTestCase.test_jump_out_of_async_with_block_within_for_block]	  sd     aA(33a  43MM!  	a 4333sC   'BA6BA:B
A8,B8B:B	 BB	B)rK   rW   rY   r[   r   rq   c                 $   U R                  S5        [        U S5         [        U S5         U R                  S5        S S S 5        U R                  S5        S S S 5        U R                  S5        g ! , (       d  f       N9= f! , (       d  f       N1= fNrK   rW   rY   rb   r[   rq   r$  r  s    r   -test_jump_out_of_with_block_within_with_block:JumpTestCase.test_jump_out_of_with_block_within_with_blockf	  sd    a&!$fa(a  )MM! % 	a )( %$s!   BA0B0
A>	:B
Bc                 f  #    U R                  S5        [        U S5         [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   U R                  S5        S S S 5        U R                  S5        g  NP N1! , IS h  vN  (       d  f       NF= f! , (       d  f       N>= f7frh  )r   r
   r+   r  s    r   3test_jump_out_of_async_with_block_within_with_block@JumpTestCase.test_jump_out_of_async_with_block_within_with_blocko	  sr     a&!$(33a  43MM! % 	a 4333 %$sa   B1B BB BB BB (B1B B B	BB	B  
B.*B1)rW   rb   rq   rd   c                 v    U R                  S5        [        U S5         U R                  S5        S S S 5        U R                  S5        U R                  S5        g ! , (       d  f       N1= f! [        U S5         U R                  S5        S S S 5        O! , (       d  f       O= fU R                  S5        f = fNrW   rb   r[   rq   rd   r$  r  s    r   0test_jump_out_of_with_block_within_finally_block=JumpTestCase.test_jump_out_of_with_block_within_finally_blockx	  s}    	MM!fa(a  )MM!a )(fa(a  )((MM!s.   A- A
A*-B8:B	B8
B#B8c           	        #     U R                  S5        [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   U R                  S5        U R                  S5        g  NH N)! , IS h  vN  (       d  f       N>= f! [        U S5       IS h  vN    U R                  S5        S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fU R                  S5        f = f7fro  r*  r  s    r   6test_jump_out_of_async_with_block_within_finally_blockCJumpTestCase.test_jump_out_of_async_with_block_within_finally_block	  s     	MM!(33a  43MM!a 4333(33a  433333MM!s   C5B C5A.C5A2C5A0(C50C52B	8A;9B	C5C2B 
C2"C4C2?C C2CCCC22C5rl  )rK   rY   r[   r  r  c                 V   U R                  S5        S Hk  nU R                  S5        S H@  nU R                  S5         S H  nU R                  S5        M     U R                  S5        MB     U R                  S5        Mm     U R                  S	5        g ! U R                  S5        f = f)
NrK   r   rY   rf  r[   rl  r   r  r  r  )r   r   r  ks       r   &test_jump_out_of_complex_nested_blocks3JumpTestCase.test_jump_out_of_complex_nested_blocks	  s    aAMM!a &#a( $ MM"%  MM"  	b MM"%s   BB()rK   rW   r[   c                     U R                  S5        [        U S5       nU R                  S5        S S S 5        U R                  S5        g ! , (       d  f       N = fNrK   rW   rb   r[   r$  r  s     r    test_jump_out_of_with_assignment-JumpTestCase.test_jump_out_of_with_assignment	  sC    a&!$MM! % 	a %$s   A


Ac                    #    U R                  S5        [        U S5       IS h  vN nU R                  S5        S S S 5      IS h  vN   U R                  S5        g  N7 N! , IS h  vN  (       d  f       N-= f7frz  r*  r  s     r   &test_jump_out_of_async_with_assignment3JumpTestCase.test_jump_out_of_async_with_assignment	  sQ     a$VQ//MM! 0/ 	a 0///sC   "A:AA:A A:AA:A: A7&A)'A73A:)rK   rq   rl  rn  c                    U R                  S5         U R                  S5        U (       d   U R                  S5        g U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        f = f)NrK   rY   rl  rq   rn  r  r  s    r   *test_jump_over_return_in_try_finally_block7JumpTestCase.test_jump_over_return_in_try_finally_block	  si    a	MM! MM! MM!MM!a MM!s   A2 A2 2B)rK   rY   rl  r   r  r  c                 X   U R                  S5         U R                  S5         U R                  S5        U (       d   U R                  S5        O4U R                  S5        U R                  S5        U R                  S5         U R                  S5        g ! U R                  S5        f = f)NrK   rY   r[   r   rl  r  r  r  r  s    r   )test_jump_over_break_in_try_finally_block6JumpTestCase.test_jump_over_break_in_try_finally_block	  s    aMM!"a  b! a b!MM"b b!s   B B B)c                     U R                  S5        U (       d  S H  nU R                  S5        M     O"U R                  S5        U R                  S5        U R                  S5        g NrK   r  rb   rq   rd   rl  r  r  s     r   $test_jump_over_for_block_before_else1JumpTestCase.test_jump_over_for_block_before_else	  M    aa   MM!MM!ar   c                    #    U R                  S5        U (       d(  [        S/5        S h  vN nU R                  S5        M  U R                  S5        U R                  S5        U R                  S5        g  NK
 N7fNrK   rY   rb   rq   rd   rl  r   r8   r  s     r   *test_jump_over_async_for_block_before_else7JumpTestCase.test_jump_over_async_for_block_before_else	  [     a$aS> !aa MM!MM!a!>&   %A;A9A7A9AA;7A99A;c                 H    U R                  S5        U R                  S5        g rk   r  r  s    r   test_no_jump_too_far_forwards*JumpTestCase.test_no_jump_too_far_forwards	  r  r   r   beforec                 H    U R                  S5        U R                  S5        g rk   r  r  s    r   test_no_jump_too_far_backwards+JumpTestCase.test_no_jump_too_far_backwards	  r  r   exceptc                 V     U R                  S5        g !   U R                  S5        e = fNrW   rb   r  r  s    r   test_no_jump_to_except_1%JumpTestCase.test_no_jump_to_except_1	  s)    	MM!	MM!s    (c                 h     U R                  S5        g ! [         a    U R                  S5        e f = fr  r   r!  r  s    r   test_no_jump_to_except_2%JumpTestCase.test_no_jump_to_except_2	  s1    	MM! 	MM!	s    1c                 r     U R                  S5        g ! [         a  nU R                  S5        UeS nAff = fr  r  r  s     r   test_no_jump_to_except_3%JumpTestCase.test_no_jump_to_except_3	  s4    	MM! 	MM!G	s    
616c                 ~     U R                  S5        g ! [        [        4 a  nU R                  S5        UeS nAff = fr  )r   r!  r   r  s     r   test_no_jump_to_except_4%JumpTestCase.test_no_jump_to_except_4
  s9    	MM!L) 	MM!G	s    <7<intoc                 Z    U R                  S5        S H  nU R                  S5        M     g )NrK   rf  rY   r  r  s     r   $test_no_jump_forwards_into_for_block1JumpTestCase.test_no_jump_forwards_into_for_block

  s$    aAMM! r   c                    #    U R                  S5        [        SS/5        S h  vN nU R                  S5        M   N
 g 7fr  r  r  s     r   *test_no_jump_forwards_into_async_for_block7JumpTestCase.test_no_jump_forwards_into_async_for_block
  s;     a !Q( 	!MM!	(s   A?=?A?Ac                 Z    S H  nU R                  S5        M     U R                  S5        g )Nrf  rW   rY   r  r  s     r   %test_no_jump_backwards_into_for_block2JumpTestCase.test_no_jump_backwards_into_for_block
  s$    AMM! ar   z&can't jump into the body of a for loopc                    #    [        SS/5        S h  vN nU R                  S5        M   N
 U R                  S5        g 7fr  )r8   r   r  s     r   +test_no_jump_backwards_into_async_for_block8JumpTestCase.test_no_jump_backwards_into_async_for_block
  s8      !Q( 	!MM!	(as   A.,.A.Ar  c                     U R                  S5        [        U S5         U R                  S5        S S S 5        g ! , (       d  f       g = fr  r$  r  s    r   %test_no_jump_forwards_into_with_block2JumpTestCase.test_no_jump_forwards_into_with_block$
  r'  r(  c                    #    U R                  S5        [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   g  N& N! , IS h  vN  (       d  f       g = f7fr  r*  r  s    r   +test_no_jump_forwards_into_async_with_block8JumpTestCase.test_no_jump_forwards_into_async_with_block*
  r-  r.  )rK   rW   r   c                     [        U S5         U R                  S5        S S S 5        U R                  S5        g ! , (       d  f       N = fr  r  r  s    r   &test_no_jump_backwards_into_with_block3JumpTestCase.test_no_jump_backwards_into_with_block0
  r  r  c                    #    [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   U R                  S5        g  N7 N! , IS h  vN  (       d  f       N-= f7fr  r  r  s    r   ,test_no_jump_backwards_into_async_with_block9JumpTestCase.test_no_jump_backwards_into_async_with_block6
  r!  r"  c                     U R                  S5         U R                  S5        U R                  S5        g ! U R                  S5        f = fr5  r  r  s    r   )test_jump_forwards_into_try_finally_block6JumpTestCase.test_jump_forwards_into_try_finally_block<
  r8  r9  )rW   rb   rW   rb   r[   c                      U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        f = fr  r  r  s    r   *test_jump_backwards_into_try_finally_block7JumpTestCase.test_jump_backwards_into_try_finally_blockD
  r2  r3  c                 x    U R                  S5         U R                  S5        g !   U R                  S5        e = fr5  r  r  s    r   (test_jump_forwards_into_try_except_block5JumpTestCase.test_jump_forwards_into_try_except_blockL
  rC  rD  )rW   rW   rq   c                 x     U R                  S5        U R                  S5        g !   U R                  S5        e = fr;  r  r  s    r   )test_jump_backwards_into_try_except_block6JumpTestCase.test_jump_backwards_into_try_except_blockU
  r>  r?  c                      SS-    U R                  S5        g ! [          a%    U R                  S5        U R                  S5         N@[         a  nU R                  S5         S nAN_S nAff = frF  rG  r  s     r   !test_jump_between_except_blocks_2.JumpTestCase.test_jump_between_except_blocks_2_
  s]    	aC 	a ! 	MM!MM!! 	MM!	s    ,A+	A+A&&A+c                     U R                  S5         U R                  S5        U R                  S5        g ! U R                  S5        f = fr5  r  r  s    r   test_jump_into_finally_block)JumpTestCase.test_jump_into_finally_blockj
  r8  r9  )rW   rq   rd   c                      U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        U R                  S5        f = f)NrW   rY   r[   rq   rd   r  r  s    r   +test_jump_into_finally_block_from_try_block8JumpTestCase.test_jump_into_finally_block_from_try_blockr
  s_    	MM!MM!MM!MM!a MM!MM!s   "A $A<)rK   rY   rK   rY   r[   c                     U R                  S5         U R                  S5        U R                  S5        g ! U R                  S5        f = fr5  r  r  s    r   test_jump_out_of_finally_block+JumpTestCase.test_jump_out_of_finally_block|
  r8  r9  z9can't jump into an 'except' block as there's no exceptionc                 z    U R                  S5         U R                  S5        g !   U R                  S5         g = fr5  r  r  s    r   #test_no_jump_into_bare_except_block0JumpTestCase.test_no_jump_into_bare_except_block
  s2    a	MM!	MM!s   % :c                     U R                  S5         U R                  S5        g ! [         a    U R                  S5         g f = fr5  r   r   r  s    r   (test_no_jump_into_qualified_except_block5JumpTestCase.test_no_jump_into_qualified_except_block
  s:    a	MM! 	MM!	s   % AA)rW   r[   rq   c                      U R                  S5        U R                  S5        U R                  S5        g !   U R                  S5        U R                  S5        e = fNrW   rY   r[   rq   rl  r  r  s    r   2test_no_jump_into_bare_except_block_from_try_block?JumpTestCase.test_no_jump_into_bare_except_block_from_try_block
  sO    	MM!MM!
 	a		MM!MM!s	   "6 %Ac                      U R                  S5        U R                  S5        U R                  S5        g ! [         a$    U R                  S5        U R                  S5        e f = fr  rR  r  s    r   7test_no_jump_into_qualified_except_block_from_try_blockDJumpTestCase.test_no_jump_into_qualified_except_block_from_try_block
  sY    	MM!MM!
 	a	 ! 	MM!MM!	s	   "6 .A$)rK   rY   rq   rK   rY   rq   rd   c                     U R                  S5         U R                  S5        SS-    g !   U R                  S5        U R                  S5         g = fNrK   rY   r   rq   rd   r  r  s    r   "test_jump_out_of_bare_except_block/JumpTestCase.test_jump_out_of_bare_except_block
  sE    a	MM!aC	MM!MM!s	   * $Ac                     U R                  S5         U R                  S5        SS-    g ! [         a%    U R                  S5        U R                  S5         g f = fr  r  r  s    r   'test_jump_out_of_qualified_except_block4JumpTestCase.test_jump_out_of_qualified_except_block
  sM    a	MM!aC 	MM!MM!	s   * ,AA)rK   rW   r[   r   c                    U R                  S5        [        U S5         U R                  S5        S S S 5        [        U S5         U R                  S5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = frV  r$  r  s    r   test_jump_between_with_blocks*JumpTestCase.test_jump_between_with_blocks
  rY  rZ  c                 ~  #    U R                  S5        [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   [        U S5       IS h  vN   U R                  S5        S S S 5      IS h  vN   g  N\ N=! , IS h  vN  (       d  f       NR= f ND N%! , IS h  vN  (       d  f       g = f7frV  r*  r  s    r   #test_jump_between_async_with_blocks0JumpTestCase.test_jump_between_async_with_blocks
  r^  r_  c                      U R                  S5        U R                  S5        U R                  S5        g ! U R                  S5        U R                  S5           g = fr  r  r  s    r   -test_no_jump_over_return_out_of_finally_block:JumpTestCase.test_no_jump_over_return_out_of_finally_block
  sM    	MM!MM!MM! MM!MM!r  c                     U R                  S5        U (       d  S H  nU R                  S5        M     O"U R                  S5        U R                  S5        U R                  S5        g r  r  r  s     r   'test_no_jump_into_for_block_before_else4JumpTestCase.test_no_jump_into_for_block_before_else
  r  r   c                    #    U R                  S5        U (       d(  [        S/5        S h  vN nU R                  S5        M  U R                  S5        U R                  S5        U R                  S5        g  NK
 N7fr  r  r  s     r   -test_no_jump_into_async_for_block_before_else:JumpTestCase.test_no_jump_into_async_for_block_before_else
  r  r  c                 6    U R                  [        SSS/5        g )NrW   SpamT)r	  r  r   s    r   test_no_jump_to_non_integers)JumpTestCase.test_no_jump_to_non_integers
  s    -q&4&Ar   c                     [        5         g r   )r  r   s    r   #test_no_jump_without_trace_function0JumpTestCase.test_no_jump_without_trace_function
  s
     	'(r   c                 x    0 n[        SS-  U5        US   nU R                  USSS/[        U R                  4S9  g )Na  def f(output):        # line 0
            x = 0                     # line 1
            y = 1                     # line 2
            '''                       # line 3
            %s                        # lines 4-1004
            '''                       # line 1005
            x += 1                    # line 1006
            output.append(x)          # line 1007
            return)a  







































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































rZ  rW   i  r   r  )r]  r	  RuntimeWarningunbound_locals)r   r  rZ  s      r   test_large_function JumpTestCase.test_large_function
  sQ      '' )*	+ cFaD1#@S@S/TUr   c                   ^ [        SSS5      m " U4S jS5      n[        USS5      n[        R                  " UR                  5        S/ 0n[        TU5        [        R                  " S 5        U R                  / S	QUS   5        g )
Nzd
# Comments don't count.
output.append(2)  # firstlineno is here.
output.append(3)
output.append(4)
z<fake module>r]  c                      > \ rS rSr Y rSrg)<JumpTestCase.test_jump_to_firstlineno.<locals>.fake_functioni  r)   N)r#   r$   r%   r&   r  r(   )rA  s   r   fake_functionr    s    Hr   r  rb   rK   r   )rW   rY   rW   rY   rb   )compiler  r   r   r   r]  r  )r   r  r  r^  rA  s       @r   test_jump_to_firstlineno%JumpTestCase.test_jump_to_firstlineno  sw      
 f	 	M1a0V\\"rN	T9T  )H2EFr   rN   z5can't jump from the 'call' trace event of a new frame)r   r}  c                 d   ^  T R                  S5        U 4S jnU" 5         T R                  S5        g )NrK   c                  (   > T R                  S5        g r  r  r  s   r   nested3JumpTestCase.test_no_jump_from_call.<locals>.nested  s    MM!r   r[   r  )r   r  s   ` r   test_no_jump_from_call#JumpTestCase.test_no_jump_from_call  s'     	a	ar   rR   z'can only jump from a 'line' trace eventc                 &    U R                  S5        g rJ   r  r  s    r   test_no_jump_from_return_event+JumpTestCase.test_no_jump_from_return_event   s     	ar   r   c                 0    U R                  S5        SS-    g r  r  r  s    r   !test_no_jump_from_exception_event.JumpTestCase.test_no_jump_from_exception_event&  s     	a	Ar   )r   c                 T   ^  U 4S jn[        U" 5       5        T R                  S5        g )Nc               3   8   >#    T R                  S5        Sv   g 7f)NrW   rY   r  r  s   r   r  .JumpTestCase.test_jump_from_yield.<locals>.gen.  s     MM!Gs   r[   )r  r   )r   r  s   ` r   test_jump_from_yield!JumpTestCase.test_jump_from_yield,  s    	 	SUar   c                     U R                  S5        [        S5       Vs/ s H  oPM     nnU R                  S5        g s  snf NrK   r   rY   r   rm   r   r   r7   s      r   test_jump_forward_over_listcomp,JumpTestCase.test_jump_forward_over_listcomp4  s7    ab	"	1Q	"a #s   >c                 J    Sn[        S5       Vs/ s H  o"PM     nnSng s  snf r"  rl   r   rn   r   r7   r  s        r    test_jump_backward_over_listcomp-JumpTestCase.test_jump_backward_over_listcomp<  s)    b	"	1Q	" #s    )rW   rd   rW   c                     SnU R                  S5        U(       a  g [        S5       Vs/ s H  o"PM     nnSnU R                  S5        U R                  S5        g s  snf NFrW   r[   rq   rd   rl  r#  r   flagr   r7   s       r   #test_jump_backward_over_listcomp_v20JumpTestCase.test_jump_backward_over_listcomp_v2B  sS    aa!1Q!aa "s   Ac                    #    U R                  S5        [        [        S5      5       Vs/ s S h  vN oPM   N
 Os  snf nnU R                  S5        g 7fr"  r   r8   rm   r$  s      r   %test_jump_forward_over_async_listcomp2JumpTestCase.test_jump_forward_over_async_listcompM  s?     a'b	233Q333as&   (A<:8
:<:<Ac                 r   #    Sn[        [        S5      5       Vs/ s S h  vN o"PM   N
 Os  snf nnSng 7fr"  )r8   rm   r(  s        r   &test_jump_backward_over_async_listcomp3JumpTestCase.test_jump_backward_over_async_listcompS  s1     'b	233Q333s$   7-+)
+-+-7c                    #    SnU R                  S5        U(       a  g [        [        S5      5       Vs/ s S h  vN o"PM   N
 Os  snf nnSnU R                  S5        U R                  S5        g 7fr,  r2  r-  s       r   )test_jump_backward_over_async_listcomp_v26JumpTestCase.test_jump_backward_over_async_listcomp_v2Y  s[     a'a122Q222aas0   2A2AAA
AAAA-A2)r}  c                     Sn[        U R                  S5      5        U R                  S5        US-   S-     U R                  S5        g NrK   rY   r[   r   r  r  rf  r   r   rn   s     r   (test_jump_with_null_on_stack_load_global5JumpTestCase.test_jump_with_null_on_stack_load_globale  sN    MM!	
 	a 
  	br   c                     Sn[         nU" U R                  S5      5        U R                  S5        US-   S-     U R                  S5        g )NrK   rb   rq   r  r     r=  )r   rn   rZ  s      r   &test_jump_with_null_on_stack_push_null3JumpTestCase.test_jump_with_null_on_stack_push_nullx  sS    	MM!	
 	a 
  	br   c                     Sn[         R                  U S5        U R                  S5        US-   S-     U R                  S5        g r<  )listr   r>  s     r   &test_jump_with_null_on_stack_load_attr3JumpTestCase.test_jump_with_null_on_stack_load_attr  sK    A	
 	a 
  	br   c                     U R                  S5        U R                  S5      =(       d    SGt    nU R                  S5        g NrK   rW   r  rY   r  r   r  s     r   (test_jump_extended_args_unpack_ex_simple5JumpTestCase.test_jump_extended_args_unpack_ex_simple  s3    a==#-vAqar   )rK   rb   rb   r[   c                     U R                  S5        U R                  S5      =(       d    SGt    nU R                  S5        g )NrK   rb   r  r[   r  rK  s     r   (test_jump_extended_args_unpack_ex_tricky5JumpTestCase.test_jump_extended_args_unpack_ex_tricky  s9    a MM!&	
1ar   cpuc                     SSS/S [        SS5       5       QSPn0 n[        SR                  U5      U5        US	   nU R                  US
SSS/[        U R
                  4S9  g )Nzdef f(output):z    output.append(1)z    for _ in spam:c              3   .   #    U  H  nS U S3v   M     g7f)z        output.append()Nr)   r   r   s     r   r   @JumpTestCase.test_jump_extended_args_for_iter.<locals>.<genexpr>  s     G5F&qc+5F   rY   i z    output.append(100_000)r   rZ  rW   rK   r  )rm   r]  r   r	  r  r  )r   sourcer^  rZ  s       r    test_jump_extended_args_for_iter-JumpTestCase.test_jump_extended_args_for_iter  s}    
 " 
 HU1g5FG	

 )
 	TYYv	*cNa!Wq'l^TM`M`<abr   c                 |    U R                  S5        U R                  S5      =(       a    SnU R                  S5        g rJ  r  rK  s     r   test_jump_or_popJumpTestCase.test_jump_or_pop  s-    aMM!'ar   r)   )NrP   FN)NrP   N)vr#   r$   r%   r&   r  r   r  r	  r  r  r  r  r  r  r  r  r  r  r  r  rH   r  r  r  r  r  r   r  r  r!  r	  r  r  r  r  r  r%  r+  r0  r6  r<  rA  rI  rL  rO  rS  rW  r\  rb  re  ri  rl  rp  rs  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r)  r/  r3  r6  r9  r?  rC  rG  rL  rO  r   requires_resourcerY  r\  r(   r)   r   r   r  r    sT   >N6 @D8<3. FJ8<3*

 q!aS 
 q!Y   q!aS>>"BC D q!Y   q!aS  q!Y   q!aVnn%EF G q!-. / QAq6"  # Q-.  / q!aS 
 q!Y   q!aV	 	 q!aV/45 6 q"q"g 1267 8 q"q!fz+OPQ R q!aS:w/0 1 q!aV  q!\" # q!aV 
 QAq6" #
 q!() *
 Q./ 0
 q!aS  q!\" # q!aS  q!Y   q!Y   q!Y   q!Y   q!\NN+KL M q!]# $ Q=) * q!\" # Q<( ) q!() * Q./ 0 q!\" # Q<( ) q"'( ) q!Y(HI J Q9~~.NO P q!\"	 #	 q!*+ , q!aVnn%EF G QAq6NN+KL M q!aS:w/0 1 q"qcJ12 3
 q!aS:x01 2 q!aS:x01 2 q!aS:x01 2 q!aS:x01 2 q!R*f-. /
 Q2
F34 5 q!aVj&12 3 QAq6J0X#YZ [
 q!R*g./ 0
 Q2
G45 6
 q!Z*g!67 8
 Q:
G'<= >
 q!aV  q!_% & q!aS  q!Y   q!Y(HI J q!aS  q!Y   q!_% & q!R*&abc d q!R*&abc d q!Y-h ij k q!aS:'bcd e q!*+ , q!*+ , q!]# $ Q=) * q!aVj'23 4 q!aVj&12 3 QAq6J#78 9B)
VG& q!aSz <8 /9 :: q!aS81: ;; q!aSJ84: ;; q!aV8, - q!aVnn%EF G q!R..!AB C
 q!Y(HI J QAq6NN+KL M
 Q2'GH I
 Q9~~.NO P q!R
G45 6$ q!R
G45 6& q!R
G45 6" q!aVnn%EF G
 q!\NN+KL M u%c &c q!aVnn%EF Gr   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestExtendedArgsi  c                     U R                  [        R                  [        R                  " 5       5        [        R                  " S 5        g r   rI  r   s    r   r   TestExtendedArgs.setUp  r  r   c                    ^^ [        S5       H
  nU" 5         M     SSSS.mUU4S jm[        R                  " T5        U" 5         [        R                  " S 5        T$ )N   r   rN   rP   rR   c                 "   > TU==   S-  ss'   T$ rJ   r)   )r   r   r   countsr   s      r   r   ,TestExtendedArgs.count_traces.<locals>.trace  s    5MQMLr   )rm   r   r   )r   r  r  rg  r   s      @@r   count_tracesTestExtendedArgs.count_traces  sM    rAF  Q!4	 	UTr   c                 v    0 nSn[        X!5        U R                  US   5      nU R                  USSSS.5        g )Na"  def f():
  (y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   y,
   ) = range(300)rZ  rK   i-  re  )r]  ri  r  )r   nsrA  rg  s       r   test_trace_unpack_long_sequence0TestExtendedArgs.test_trace_unpack_long_sequence  s>    AT""2c7+!SA!FGr   c                 r   [        S[        [        R                  " 5       S-  5      5      nSR	                  SR                  S [        U5       5       5      5      n[        U5       Vs0 s H	  nSU 3U_M     nn[        X$5        U R                  US   5      nU R                  USUS	-  SS
.5        g s  snf )Ni  g?zeif 1:
            def f():
                return (
                    {}
                )
        z
+
c              3   .   #    U  H  nS U S3v   M     g7f)varr   Nr)   rU  s     r   r   >TestExtendedArgs.test_trace_lots_of_globals.<locals>.<genexpr>  s     B\#aS\rW  rq  rZ  rK   rW   re  )
minintr   get_c_recursion_limitformatr   rm   r]  ri  r  )r   r	  rA  r   rl  rg  s         r   test_trace_lots_of_globals+TestExtendedArgs.test_trace_lots_of_globals  s    D#g;;=CDE
 F7<<BU5\BBC 	 %*%L1LqA3ilL1T""2c7+!UQY!!LM 2s   )B4r)   N)	r#   r$   r%   r&   r   ri  rm  rw  r(   r)   r   r   r`  r`    s     HNr   r`  c                   &    \ rS rSrS rS rS rSrg)TestEdgeCasesi  c                     U R                  [        R                  [        R                  " 5       5        [        R                  " S 5        g r   rI  r   s    r   r   TestEdgeCases.setUp  r  r   c                    ^ S nS m " U4S jS5      n[         R                  " U" 5       5        [         R                  " U5        U R                  [         R                  " 5       T5        g )Nc                      g r   r)   r  s    r   rr  *TestEdgeCases.test_reentrancy.<locals>.foo      r   c                      g r   r)   r  s    r   bar*TestEdgeCases.test_reentrancy.<locals>.bar  r  r   c                   (   > \ rS rSrS rU 4S jrSrg)(TestEdgeCases.test_reentrancy.<locals>.Ai  c                     g r   r)   )r   rC   s     r   __call__1TestEdgeCases.test_reentrancy.<locals>.A.__call__  r.  r   c                 2   > [         R                  " T5        g r   r  )r   r  s    r   __del__0TestEdgeCases.test_reentrancy.<locals>.A.__del__  s    S!r   r)   N)r#   r$   r%   r&   r  r  r(   )r  s   r   r  r    s    " "r   r  )r   r   r  r   )r   rr  r  r  s      @r   test_reentrancyTestEdgeCases.test_reentrancy  sI    			" 	" 	QSS-r   c                     S n[         R                  " U5        A[         R                  " [         R                  " 5       5        g )Nc                      g r   r)   r  s    r   rr  +TestEdgeCases.test_same_object.<locals>.foo
  r  r   )r   r   r   )r   rr  s     r   test_same_objectTestEdgeCases.test_same_object	  s*    	 	SS\\^$r   r)   N)r#   r$   r%   r&   r   r  r  r(   r)   r   r   rz  rz    s    .&%r   rz  c                       \ rS rSrS rSrg)TestLinesAfterTraceStartedi  c                 V   [        5       nUR                  [        R                  " 5       l        [        R
                  " UR                  5        SnSn[        R
                  " S 5        U R                  [        R                  R                  R                  UR                  / SQ5        g )Nrb   r[   )ra   rZ   rp   )r   r   r   r   r   r   r   r  test_eventsr  r  r   )r   r  rP   s      r   r  &TestLinesAfterTraceStarted.test_events  sp    "(,,V\\"T&22;;JJMM 	r   r)   N)r#   r$   r%   r&   r  r(   r)   r   r   r  r    s    r   r  c                       \ rS rSrS rSrg)TestSetLocalTracei#  c                    ^^ UU4S jmSS jn/ SQn/ m[         R                  " T5        T[         R                  " 5       l        U" 5         U R	                  TU5        [         R                  " S 5        g )Nc                    > U R                   R                  S:X  a<  TU l        U R                  U R                   R                  -
  nTR                  X145        T$ )Nr  )r   r  r   r   r  r   )r   r   r   rP   r   r   s       r   r   7TestSetLocalTrace.test_with_branches.<locals>.tracefunc'  sH    ||##v- )~~(C(CCtm,r   c                 <    SnU S:  a  SnOSnU S:  a  SnSng SnSng )NrK   rW   rY   r[   rd   rn  r   r)   )r   Nnot_reachedreachedthe_ends        r   r  2TestSetLocalTrace.test_with_branches.<locals>.func.  s7    Aaxax G Gr   )rM   rO   rV   rZ   rp   rm  r  r  r   )r   r   r   r   r  )r   r  r  r   r   s      @@r   test_with_branches$TestSetLocalTrace.test_with_branches%  sV    	
		
 Y"+1Tr   r)   N)r#   r$   r%   r&   r  r(   r)   r   r   r  r  #  s    %r   r  __main__)ArE   r   unittestr   r   r   	functoolsr   r  test.supportr   r   r  r>  r2  r0  r7  r  _testinternalcapiImportErrorrequires_working_socketr
   r+   r8   rH   rL   r   rU   r^   r`   rg   ro   rv   rz   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   TestCaser   r  r  r  r"  rG  r  r  r  r  r`  rz  r  r  r#   mainr)   r   r   <module>r     s     
  	   ;  	       t ,
( 
(
( 
(
 
' 
' ' 

( 	% 
' 

$
 /$ ,_  ,  ) +  "+  	- )+6;
< )-89  ' 2F1H%% F1R,	/- 	/ 	.6= .6 .6bg3x00 g3\$ $N+H]8$$ ]@*Nx(( *NZ%H%% %D "' 'T zMMO ua  s   H H)(H)