+
    '(ji!                     ~   ^ RI t ^ RIt^ RIt^ RIt^RIHt ^RIHt ];'       dA    ]P                  ! R4      e$   R]P                  ! R4      P                  4       9  M]	! ] R4      R3t
 ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      tR t ! R R]4      t]R8X  d   ]P(                  ! 4        R# R# )    N)TestCase)PY312OPTz-DNDEBUGgettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c                       ] tR t^tRtR# )	SomeError N)__name__
__module____qualname____firstlineno____static_attributes__r	       P/home/ubuntu/cf-venv/lib/python3.14/site-packages/greenlet/tests/test_tracing.pyr   r      s    r   r   c                   @   a  ] tR t^t o RtRR ltR tR tR tRt	V t
R# )GreenletTracerNc                     . V n         Wn        R # N)actionserror_on_trace)selfr   s   &&r   __init__GreenletTracer.__init__   s    ,r   c                l    V P                   P                  V4       V P                  '       d   \        hR # r   )r   appendr   r   r   argss   &*r   __call__GreenletTracer.__call__    s*    D!O r   c                P    \         P                  ! V 4      V n        V P                  # r   )greenletsettraceoldtracer   r   s   &r   	__enter__GreenletTracer.__enter__%   s     ))$/||r   c                F    \         P                  ! V P                  4       R # 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   __classdictcell____classdict__s   @r   r   r      s#     H-
) )r   r   c                   6   a  ] tR t^-t o RtR tR tR tRtV t	R# )TestGreenletTracingz"
Tests of ``greenlet.settrace()``
c           	        \         P                  ! 4       pR  pR p\        4       ;_uu_ 4       p\         P                   ! V4      pVP                  4        \         P                   ! V4      pV P	                  \
        VP                  4       RRR4       V P                  XRVX33RWQ33RVX33RWa33.4       R#   + '       g   i     L6; i)c                      R # r   r	   r	   r   r   dummy:TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummy4   s    r   c                      \        4       hr   )r   r	   r   r   dummyexc=TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummyexc6   s
    +r   Nswitchthrow)r!   
getcurrentr   r7   assertRaisesr   assertEqual)r   mainr2   r5   r   g1g2s   &      r   test_a_greenlet_tracing+TestGreenletTracing.test_a_greenlet_tracing2   s    ""$		 ""5)BIIK""8,Bi3	  	bz"z"bz"rj!	#
 	 s   AB99C		c                  a \         P                  ! 4       oV3R  lp\         P                   ! V4      pVP                  4        \        RR7      ;_uu_ 4       pV P	                  \
        VP                  4       V P                  \         P                  ! 4       R4       RRR4       V P                  XRSV33.4       R#   + '       g   i     L); i)c                  (   < S P                  4        R # r   )r7   )r<   s   r   r2   DTestGreenletTracing.test_b_exception_disables_tracing.<locals>.dummyH   s    KKMr   T)r   Nr7   )r!   r9   r7   r   r:   r   r;   gettrace)r   r2   gr   r<   s   &   @r   !test_b_exception_disables_tracing5TestGreenletTracing.test_b_exception_disables_tracingF   s    ""$	e$	
400Gi2X..0$7 1 	ay!#
 		 10s   AB>>C	c                    \        4       pV;_uu_ 4        \        P                  ! V4       R R R 4       R #   + '       g   i     R # ; ir   )r   r!   r"   r   tracers   & r   test_set_same_tracer_twice.TestGreenletTracing.test_set_same_tracer_twiceT   s+    
  !Vf% VVVs	   6A	r	   N)
r
   r   r   r   __doc__r?   rF   rK   r   r+   r,   s   @r   r/   r/   -   s     (& &r   r/   c                   <   a  ] tR t^^t o RtR tR tR tR tRt	V t
R# )PythonTracerNc                    . V n         R # r   )r   r$   s   &r   r   PythonTracer.__init__a   s	    r   c                f    V P                   P                  W!P                  P                  34       R # r   )r   r   f_codeco_name)r   frameeventargs   &&&&r   r   PythonTracer.__call__d   s!    ULL$8$89:r   c                P    \         P                  ! V 4      V n        V P                  # r   )sys
setprofiler#   r   r$   s   &r   r%   PythonTracer.__enter__h   s    t,||r   c                F    \         P                  ! V P                  4       R # r   )rZ   r[   r#   r   s   &*r   r(   PythonTracer.__exit__l   s    t}}%r   )r   r#   r*   r,   s   @r   rO   rO   ^   s#     H;& &r   rO   c                      ^*# *   r	   r	   r   r   tpt_callbackrb   o   s    r   c                      a  ] tR t^rt o RtRtR tR tR tR t	R t
R tR	 tR
 t]P                  ! ]!  R 4       t]P                  ! ]!  R 4       tRtV tR# )TestPythonTracingz|
Tests of the interaction of ``sys.settrace()``
with greenlet facilities.

NOTE: Most of this is probably CPython specific.
Nc                    \        4       ;_uu_ 4       p\        4        R R R 4       V P                  X. RO4       R #   + '       g   i     L&; i)N)returnr%   callrb   rg   rb   ri   r(   c_callr(   )rO   rb   r;   )r   r   s   & r   test_trace_events_trivial+TestPythonTracing.test_trace_events_trivial|   s4    ^^wN  	 #
 	 ^s	   <A	c                    \        4       ;_uu_ 4       pVP                  4        R R R 4       V#   + '       g   i     X# ; ir   )rO   r7   r   gletr   s   && r   _trace_switchTestPythonTracing._trace_switch   s+    ^^wKKM  ^s   .?	c                P    V P                  V4      pV P                  V. RO4       R# )rg   N)	rf   )rm   rs   )ri   runrh   rj   rg   rv   )c_returnrs   rk   rl   )rs   r;   rq   s   && r   $_check_trace_events_func_already_set6TestPythonTracing._check_trace_events_func_already_set   s'    $$T* 
#
 
	r   c                V    R  pV P                  \        P                  ! V4      4       R# )c                      \        4       # r   rb   r	   r   r   rv   OTestPythonTracing.test_trace_events_into_greenlet_func_already_set.<locals>.run   s
    >!r   N)ry   r!   )r   rv   s   & r   0test_trace_events_into_greenlet_func_already_setBTestPythonTracing.test_trace_events_into_greenlet_func_already_set   s"    	" 	11(2C2CC2HIr   c                d     ! R  R\         P                   4      pV P                  V! 4       4       R# )c                   &   a  ] tR t^t o R tRtV tR# )QTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.Xc                    \        4       # r   r}   r$   s   &r   rv   UTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.X.run   s
    #~%r   r	   Nr
   r   r   r   rv   r   r+   r,   s   @r   Xr      s     & &r   r   N)r!   ry   )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                    VP                  4        \        4        VP                  4        V P                  VP                  . RO4       R# )rg   N)rf   rh   rj   rw   rh   rj   rk   rl   )r7   rb   r(   r;   r   )r   rE   rJ   s   &&&r   /_check_trace_events_from_greenlet_sets_profilerATestPythonTracing._check_trace_events_from_greenlet_sets_profiler   s3    	
 	*
 		r   c                t   a \        4       oV3R  lpV P                  \        P                  ! V4      S4       R# )c                  8   < S P                  4        \        4       # r   r%   rb   )rJ   s   r   rv   QTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler.<locals>.run   s    >!r   N)rO   r   r!   )r   rv   rJ   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                   a \        4       o ! V3R  lR\        P                  4      pV P                  V! 4       S4       R# )c                   .   <a  ] tR t^t o V3R ltRtV tR# )STestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.Xc                8   < SP                  4        \        4       # r   r   rI   s   &r   rv   WTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.X.run   s      "#~%r   r	   Nr   )r-   rJ   s   @r   r   r      s     & &r   r   N)rO   r!   r   )r   r   rJ   s   & @r   6test_trace_events_from_greenlet_subclass_sets_profilerHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler   s0    	&!! 	&
 	<<QS&Ir   c                0  aaa \        4       oR oR oVV3R lpVV3R lp\        P                  ! V4      o\        P                  ! V4      oSP                  4       pV P                  V^*4       \	        4        V P                  SP
                  . RO4       R # )Nc                  p   < SP                  4        \        4        S P                  4        \        4        ^*# r`   )r%   rb   r7   r>   rJ   s   r   g1_runPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run   s%    NIIKNr   c                  p   < \        4        SP                  4        \        4        S P                  4        R # r   )rb   r(   r7   r=   rJ   s   r   g2_runPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_run   s     NOONIIKr   )	rf   rh   rj   rm   r   )ri   r   rh   rj   rk   rl   rO   r!   r7   r;   rb   r   r   r   r   xr=   r>   rJ   s   &   @@@r   .test_trace_events_multiple_greenlets_switching@TestPythonTracing.test_trace_events_multiple_greenlets_switching   sy    		 v&v&IIKB 
*
 
	r   c                p  aaa \        4       oR oR oVV3R lpVV3R lp\        P                  ! V4      o\        P                  ! V4      oSP                  4        SP                  4        SP                  4       pV P                  V^*4       \	        4        V P                  SP
                  . RO4       R # )Nc                     < \         P                  ! 4       P                  P                  4        SP	                  4        \        4        S P                  4        \        4        ^*# r`   )r!   r9   parentr7   r%   rb   r   s   r   r   YTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g1_run   s@    !((//1NIIKNr   c                     < \         P                  ! 4       P                  P                  4        \	        4        SP                  4        \	        4        S P                  4        R # r   )r!   r9   r   r7   rb   r(   r   s   r   r   YTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g2_run  s;    !((//1NOONIIKr   )rf   rh   rj   r   rh   rj   rk   rl   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   rM   maxDiffrn   rs   ry   r   r   r   r   r   unittestskipIfASSERTION_BUILD_PY312r   r   r   r+   r,   s   @r   rd   rd   r   sy      G&
J7 EJ __+,# -#J __+,/ -/r   rd   __main__)rZ   	sysconfigr!   r    r   r   get_config_varsplithasattrr   	Exceptionr   objectr   r/   rO   rb   rd   r
   r<   r	   r   r   <module>r      s    
      
  ##E*6 	)2259??AAS,-7 		 	)V )(.&( .&b&6 &"t tn zMMO r   