
    Yh:                         S SK Jr  S SKrS SKrS SKrSSKJr  SSKJr  \=(       a	    \" \S5      S4r	 " S S	\
5      r " S
 S\5      r " S S\5      r " S S\5      rS r " S S\5      r\S:X  a  \R&                  " 5         gg)    )print_functionN   )TestCase)PY312gettotalrefcountz%Broken on debug builds of Python 3.12c                       \ rS rSrSrg)	SomeError    N)__name__
__module____qualname____firstlineno____static_attributes__r       M/var/www/html/env/lib/python3.13/site-packages/greenlet/tests/test_tracing.pyr	   r	      s    r   r	   c                   4    \ rS rSrSrSS jrS rS rS rSr	g)	GreenletTracer   Nc                     / U l         Xl        g N)actionserror_on_trace)selfr   s     r   __init__GreenletTracer.__init__   s    ,r   c                 h    U R                   R                  U5        U R                  (       a  [        eg r   )r   appendr   r	   r   argss     r   __call__GreenletTracer.__call__   s'    D!O r   c                 P    [         R                  " U 5      U l        U R                  $ r   )greenletsettraceoldtracer   r   s    r   	__enter__GreenletTracer.__enter__   s     ))$/||r   c                 D    [         R                  " U R                  5        g r   )r$   r%   r&   r   s     r   __exit__GreenletTracer.__exit__"   s    $--(r   )r   r   r&   )F
r   r   r   r   r&   r   r!   r(   r+   r   r   r   r   r   r      s    H-
)r   r   c                   *    \ rS rSrSrS rS rS rSrg)TestGreenletTracing&   z"
Tests of ``greenlet.settrace()``
c           	         [         R                  " 5       nS nS n[        5        n[         R                   " U5      nUR                  5         [         R                   " U5      nU R	                  [
        UR                  5        S S S 5        U R                  WSUW44SXQ44SUW44SXa44/5        g ! , (       d  f       N3= f)Nc                      g r   r   r   r   r   dummy:TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummy-   s    r   c                      [        5       er   )r	   r   r   r   dummyexc=TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummyexc/   s
    +r   switchthrow)r$   
getcurrentr   r8   assertRaisesr	   assertEqual)r   mainr3   r6   r   g1g2s          r   test_a_greenlet_tracing+TestGreenletTracing.test_a_greenlet_tracing+   s    ""$		 ""5)BIIK""8,Bi3	  	bz"z"bz"rj!	#
 	 s   AB00
B>c                   ^ [         R                  " 5       mU4S jn[         R                   " U5      nUR                  5         [        SS9 nU R	                  [
        UR                  5        U R                  [         R                  " 5       S 5        S S S 5        U R                  WSTU44/5        g ! , (       d  f       N&= f)Nc                  &   > T R                  5         g r   )r8   )r=   s   r   r3   DTestGreenletTracing.test_b_exception_disables_tracing.<locals>.dummyA   s    KKMr   T)r   r8   )r$   r:   r8   r   r;   r	   r<   gettrace)r   r3   gr   r=   s       @r   !test_b_exception_disables_tracing5TestGreenletTracing.test_b_exception_disables_tracing?   s    ""$	e$	
40Gi2X..0$7 1 	ay!#
 		 10s   AB22
C c                 |    [        5       nU   [        R                  " U5        S S S 5        g ! , (       d  f       g = fr   )r   r$   r%   r   tracers     r   test_set_same_tracer_twice.TestGreenletTracing.test_set_same_tracer_twiceM   s'    
  !f% VVs   -
;r   N)	r   r   r   r   __doc__r@   rG   rL   r   r   r   r   r/   r/   &   s    (&r   r/   c                   0    \ rS rSrSrS rS rS rS rSr	g)PythonTracerW   Nc                     / U l         g r   )r   r'   s    r   r   PythonTracer.__init__Z   s	    r   c                 d    U R                   R                  X!R                  R                  45        g r   )r   r   f_codeco_name)r   frameeventargs       r   r!   PythonTracer.__call__]   s!    ULL$8$89:r   c                 P    [         R                  " U 5      U l        U R                  $ r   )sys
setprofiler&   r   r'   s    r   r(   PythonTracer.__enter__a   s    t,||r   c                 D    [         R                  " U R                  5        g r   )r\   r]   r&   r   s     r   r+   PythonTracer.__exit__e   s    t}}%r   )r   r&   r-   r   r   r   rP   rP   W   s    H;&r   rP   c                      gN*   r   r   r   r   tpt_callbackrd   h   s    r   c                       \ 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\R                  " \6 S 5       r\R                  " \6 S 5       rSrg)TestPythonTracingk   z|
Tests of the interaction of ``sys.settrace()``
with greenlet facilities.

NOTE: Most of this is probably CPython specific.
Nc                     [        5        n[        5         S S S 5        U R                  W/ SQ5        g ! , (       d  f       N#= f)N)returnr(   callrd   rj   rd   rl   r+   c_callr+   )rP   rd   r<   )r   r   s     r   test_trace_events_trivial+TestPythonTracing.test_trace_events_trivialu   s2    ^wN  	 #
 	 ^s	   3
Ac                 p    [        5        nUR                  5         S S S 5        U$ ! , (       d  f       W$ = fr   )rP   r8   r   gletr   s      r   _trace_switchTestPythonTracing._trace_switch   s)    ^wKKM  ^s   &
5c                 N    U R                  U5      nU R                  U/ SQ5        g )N)	ri   )rp   rv   )rl   runrk   rm   rj   ry   )c_returnrv   rn   ro   )rv   r<   rt   s      r   $_check_trace_events_func_already_set6TestPythonTracing._check_trace_events_func_already_set   s'    $$T* 
#
 
	r   c                 T    S nU R                  [        R                  " U5      5        g )Nc                      [        5       $ r   rd   r   r   r   ry   OTestPythonTracing.test_trace_events_into_greenlet_func_already_set.<locals>.run   s
    >!r   )r|   r$   )r   ry   s     r   0test_trace_events_into_greenlet_func_already_setBTestPythonTracing.test_trace_events_into_greenlet_func_already_set   s"    	" 	11(2C2CC2HIr   c                 b     " S S[         R                   5      nU R                  U" 5       5        g )Nc                       \ rS rSrS rSrg)QTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.X   c                     [        5       $ r   r   r'   s    r   ry   UTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.X.run   s
    #~%r   r   Nr   r   r   r   ry   r   r   r   r   Xr      s    &r   r   )r$   r|   )r   r   s     r   4test_trace_events_into_greenlet_subclass_already_setFTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set   s&    	&!! 	& 	11!#6r   c                     UR                  5         [        5         UR                  5         U R                  UR                  / SQ5        g )N)ri   rk   rm   rz   rk   rm   rn   ro   )r8   rd   r+   r<   r   )r   rF   rK   s      r   /_check_trace_events_from_greenlet_sets_profilerATestPythonTracing._check_trace_events_from_greenlet_sets_profiler   s3    	
 	*
 		r   c                 r   ^ [        5       mU4S jnU R                  [        R                  " U5      T5        g )Nc                  8   > T R                  5         [        5       $ r   r(   rd   rK   s   r   ry   QTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler.<locals>.run   s    >!r   )rP   r   r$   )r   ry   rK   s     @r   2test_trace_events_from_greenlet_func_sets_profilerDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler   s0    	" 	<<X=N=Ns=S=C	Er   c                    ^ [        5       m " U4S jS[        R                  5      nU R                  U" 5       T5        g )Nc                   "   > \ rS rSrU 4S jrSrg)STestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.X   c                 8   > TR                  5         [        5       $ r   r   rJ   s    r   ry   WTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.X.run   s      "#~%r   r   Nr   r   s   r   r   r      s    & &r   r   )rP   r$   r   )r   r   rK   s     @r   6test_trace_events_from_greenlet_subclass_sets_profilerHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler   s0    	&!! 	&
 	<<QS&Ir   c                 .  ^^^ [        5       mS mS mUU4S jnUU4S jn[        R                  " U5      m[        R                  " U5      mTR                  5       nU R                  US5        [	        5         U R                  TR
                  / SQ5        g )Nc                  n   > TR                  5         [        5         T R                  5         [        5         grb   )r(   rd   r8   r?   rK   s   r   g1_runPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run   s%    NIIKNr   c                  n   > [        5         TR                  5         [        5         T R                  5         g r   )rd   r+   r8   r>   rK   s   r   g2_runPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_run   s     NOONIIKr   rc   )	ri   rk   rm   rp   r   )rl   r   rk   rm   rn   ro   rP   r$   r8   r<   rd   r   r   r   r   xr>   r?   rK   s       @@@r   .test_trace_events_multiple_greenlets_switching@TestPythonTracing.test_trace_events_multiple_greenlets_switching   sy    		 v&v&IIKB 
*
 
	r   c                 n  ^^^ [        5       mS mS mUU4S jnUU4S jn[        R                  " U5      m[        R                  " U5      mTR                  5         TR                  5         TR                  5       nU R                  US5        [	        5         U R                  TR
                  / SQ5        g )Nc                     > [         R                  " 5       R                  R                  5         TR	                  5         [        5         T R                  5         [        5         grb   )r$   r:   parentr8   r(   rd   r   s   r   r   YTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g1_run   s@    !((//1NIIKNr   c                     > [         R                  " 5       R                  R                  5         [	        5         TR                  5         [	        5         T R                  5         g r   )r$   r:   r   r8   rd   r+   r   s   r   r   YTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g2_run   s;    !((//1NOONIIKr   rc   )ri   rk   rm   r   rk   rm   rn   ro   r   r   s       @@@r   7test_trace_events_multiple_greenlets_switching_siblingsITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings   s     		 v&v& 			 			 IIKB 	*
 		r   r   )r   r   r   r   rN   maxDiffrq   rv   r|   r   r   r   r   r   unittestskipIfDEBUG_BUILD_PY312r   r   r   r   r   r   rf   rf   k   sv     G&
J7 EJ __'(# )#J __'(/ )/r   rf   __main__)
__future__r   r\   r$   r    r   r   hasattrr   	Exceptionr	   objectr   r/   rP   rd   rf   r   r=   r   r   r   <module>r      s    % 
     
.gc-.+ 
		 	)V )(.&( .&b&6 &"t tn zMMO r   