+
    ÃìÜ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	   ó    ÚY/opt/render/project/src/.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Ø�I‰IŒKÜ×"Ò" 8Ó,ˆBØ×Ñœi¨¯©Ô3÷	 ð 	×Ñ˜Ø˜˜b�zÐ"Ø˜�zÐ"Ø˜˜b�zÐ"Ø�r�jÐ!ð	#
ö 	÷ ×ú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   ø€ Ø�K‰KŽMr   T)r   Nr7   )r!   r9   r7   r   r:   r   r;   Úgettrace)r   r2   Úgr   r<   s   &   @r   Ú!test_b_exception_disables_tracingÚ5TestGreenletTracing.test_b_exception_disables_tracingF   sš   ø€ Ü×"Ò"Ó$ˆõ	ä×Ò˜eÓ$ˆØ	�‰Œ
Ü¨4×0Õ0°GØ×Ñœi¨¯©Ô2Ø×ÑœX×.Ò.Ó0°$Ô7÷ 1ð 	×Ñ˜Ø˜˜a�yÐ!ð#
ö 	÷	 1×0ús   Á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Ô%÷ �V�VŠVús	   •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!   € à�‰×Ñ˜U§L¡L×$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Ø�K‰KŒM÷ àˆ÷ Ž^àˆú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_setÚ6TestPythonTracing._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_setÚBTestPythonTracing.test_trace_events_into_greenlet_func_already_set¢   s"   € ò	"ð 	×1Ñ1´(×2CÒ2CÀCÓ2HÖ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_setÚFTestPythonTracing.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_profilerÚATestPythonTracing._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_profilerÚDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler¾   s0   ø€ Ü“ˆõ	"ð 	×<Ñ<¼X×=NÒ=NÈsÓ=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_profilerÚHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profilerÇ   s0   ø€ Ü“ˆ÷	&”×!Ñ!ô 	&ð
 	×<Ñ<¹Q»SÀ&Ö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_runÚPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run×   s%   ø€ Ø×ÑÔÜŒNØ�I‰IŒKÜŒNÙr   c                  óp   <€ \        4        SP                  4        \        4        S P                  4        R # r   )rb   r(   r7   ©r=   rJ   s   €€r   Úg2_runÚPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_runÞ   s    ø€ ÜŒNØ�O‰OÔÜŒNØ�I‰IŽKr   )	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Ó&ˆà�I‰I‹KˆØ×Ñ˜˜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Ø�I‰IŒKÜŒ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Ø�O‰OÔÜŒNØ�I‰IŽKr   )rf   rh   rj   r£   rh   rj   rk   rl   r¤   r¥   s   &   @@@r   Ú7test_trace_events_multiple_greenlets_switching_siblingsÚITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblingsö   s“   ú€ ô “ˆàˆØˆö	ö	ô ×Ò˜vÓ&ˆÜ×Ò˜vÓ&ˆð 	�	‰	Œð 	�	‰	Œð �I‰I‹KˆØ×Ñ˜˜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Ò2°5Ó9×?Ñ?ÓAÒAá�SÐ,Ó-à7ðÐ ô	�	ô 	ô)�Vô )ô(.&˜(ô .&ôb&�6ô &ò"ôt˜ô tðn ˆzÔØ‡M‚M†Oñ r   