ó
    ÷Þ ji!  ã                   ót  • S SK r S SKrS SKrS SKrSSKJr  SSKJr  \=(       a?    \R                  " S5      b#  S\R                  " S5      R                  5       ;  O\	" \ 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)é    Né   )ÚTestCase)ÚPY312ÚOPTz-DNDEBUGÚgettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c                   ó   • \ rS rSrSrg)Ú	SomeErroré   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚU/var/www/html/gaurav/venv/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>.dummy4   s   € Ør   c                  ó   • [        5       er   )r	   r   r   r   ÚdummyexcÚ=TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummyexc6   s
   € Ü“+Ðr   ÚswitchÚthrow)r$   Ú
getcurrentr   r8   ÚassertRaisesr	   ÚassertEqual)r   Úmainr3   r6   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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>.dummyH   s   ø€ Ø�K‰K�Mr   T)r   r8   )r$   r:   r8   r   r;   r	   r<   Úgettrace)r   r3   Úgr   r=   s       @r   Ú!test_b_exception_disables_tracingÚ5TestGreenletTracing.test_b_exception_disables_tracingF   s—   ø€ Ü×"Ò"Ó$ˆõ	ä×Ò˜eÓ$ˆØ	�‰Œ
Ü¨4Ò0°GØ×Ñœi¨¯©Ô2Ø×ÑœX×.Ò.Ó0°$Ô7÷ 1ð 	×Ñ˜Ø˜˜a�yÐ!ð#
õ 	÷	 1Õ0ús   Á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_twiceT   s'   € ô
  Ó!ˆÚÜ×Ò˜fÔ%÷ �VŽVús   �-­
;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)ÚPythonTraceré^   Nc                 ó   • / U l         g r   )r   r'   s    r   r   ÚPythonTracer.__init__a   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__d   s!   € à�‰×Ñ˜U§L¡L×$8Ñ$8Ð9Õ:r   c                 óP   • [         R                  " U 5      U l        U R                  $ r   )ÚsysÚ
setprofiler&   r   r'   s    r   r(   ÚPythonTracer.__enter__h   s   € ÜŸš tÓ,ˆŒØ�|‰|Ðr   c                 óD   • [         R                  " U R                  5        g r   )r\   r]   r&   r   s     r   r+   ÚPythonTracer.__exit__l   s   € Ü�Š�t—}‘}Õ%r   )r   r&   r-   r   r   r   rP   rP   ^   s   † Ø€Hòò;òõ&r   rP   c                  ó   • g©Né*   r   r   r   r   Útpt_callbackrd   o   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)ÚTestPythonTracingér   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_trivial|   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Ø�K‰KŒM÷ àˆ÷ Œ^àˆú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_setÚ6TestPythonTracing._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_setÚBTestPythonTracing.test_trace_events_into_greenlet_func_already_set¢   s"   € ò	"ð 	×1Ñ1´(×2CÒ2CÀCÓ2HÕ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_setÚFTestPythonTracing.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_profilerÚATestPythonTracing._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_profilerÚDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler¾   s0   ø€ Ü“ˆõ	"ð 	×<Ñ<¼X×=NÒ=NÈsÓ=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_profilerÚHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profilerÇ   s0   ø€ Ü“ˆ÷	&”×!Ñ!ô 	&ð
 	×<Ñ<¹Q»SÀ&Õ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_runÚPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run×   s%   ø€ Ø×ÑÔÜŒNØ�I‰IŒKÜŒNØr   c                  ón   >• [        5         TR                  5         [        5         T R                  5         g r   )rd   r+   r8   ©r>   rK   s   €€r   Úg2_runÚPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_runÞ   s    ø€ ÜŒNØ�O‰OÔÜŒNØ�I‰I�Kr   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Ó&ˆà�I‰I‹KˆØ×Ñ˜˜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Ø�I‰IŒKÜŒ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Ø�O‰OÔÜŒNØ�I‰I�Kr   rc   )ri   rk   rm   r©   rk   rm   rn   ro   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   rN   ÚmaxDiffrq   rv   r|   r‚   rŒ   r�   r–   rž   ÚunittestÚskipIfÚASSERTION_BUILD_PY312r­   rµ   r   r   r   r   rf   rf   r   sv   † ñð €Gòò&ò
òJò7òò EòJð ‡_‚_Ð+Ð,ñ#ó -ð#ðJ ‡_‚_Ð+Ð,ñ/ó -ó/r   rf   Ú__main__)r\   Ú	sysconfigr$   r¸   Ú r   r   Úget_config_varÚsplitÚhasattrrº   Ú	Exceptionr	   Úobjectr   r/   rP   rd   rf   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   