Ë
    V.j“"  ã                   ód  — d dl Z d dlZd dlZd dlZddlmZ ddlmZ exr=  ej                  d«      �"d ej                  d«      j                  «       vn e	e d«      dfZ
 G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zd„ Z G d„ de«      Zedk(  r ej(                  «        yy)é    Né   )ÚTestCase)ÚPY312ÚOPTz-DNDEBUGÚgettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c                   ó   — e Zd Zy)Ú	SomeErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú]C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\greenlet/tests/test_tracing.pyr	   r	      s   „ Ør   r	   c                   ó*   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zy)ÚGreenletTracerNc                 ó    — g | _         || _        y ©N)ÚactionsÚerror_on_trace)Úselfr   s     r   Ú__init__zGreenletTracer.__init__   s   € ØˆŒØ,ˆÕr   c                 ó^   — | j                   j                  |«       | j                  rt        ‚y r   )r   Úappendr   r	   ©r   Úargss     r   Ú__call__zGreenletTracer.__call__    s'   € Ø�‰×Ñ˜DÔ!Ø×ÒÜˆOð r   c                 óN   — t        j                  | «      | _        | j                  S r   )ÚgreenletÚsettraceÚoldtracer   ©r   s    r   Ú	__enter__zGreenletTracer.__enter__%   s   € Ü ×)Ñ)¨$Ó/ˆŒØ�|‰|Ðr   c                 óB   — t        j                  | j                  «       y r   )r   r   r    r   s     r   Ú__exit__zGreenletTracer.__exit__)   s   € Ü×Ñ˜$Ÿ-™-Õ(r   )F©r
   r   r   r    r   r   r"   r$   r   r   r   r   r      s   „ Ø€Hó-òò
ó)r   r   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTestGreenletTracingz*
    Tests of ``greenlet.settrace()``
    c           	      óv  — t        j                  «       }d„ }d„ }t        «       5 }t        j                   |«      }|j                  «        t        j                   |«      }| j	                  t
        |j                  «       d d d «       | j                  d|ffd||ffd|ffd||ffg«       y # 1 sw Y   Œ0xY w)Nc                   ó   — y r   r   r   r   r   Údummyz:TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummy4   s   € Ør   c                  ó   — t        «       ‚r   )r	   r   r   r   Údummyexcz=TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummyexc6   s
   € Ü“+Ðr   ÚswitchÚthrow)r   Ú
getcurrentr   r-   ÚassertRaisesr	   ÚassertEqual)r   Úmainr*   r,   r   Úg1Úg2s          r   Útest_a_greenlet_tracingz+TestGreenletTracing.test_a_greenlet_tracing2   s¶   € Ü×"Ñ"Ó$ˆò	ò	ô Ô Ü×"Ñ" 5Ó)ˆBØ�I‰IŒKÜ×"Ñ" 8Ó,ˆBØ×Ñœi¨¯©Ô3÷	 ð 	×Ñ˜Ø˜˜b�zÐ"Ø˜˜D�zÐ"Ø˜˜b�zÐ"Ø�r˜4�jÐ!ð	#
õ 	÷ Ðús   ¥AB/Â/B8c                 óz  ‡— t        j                  «       Šˆfd„}t        j                   |«      }|j                  «        t        d¬«      5 }| j	                  t
        |j                  «       | j                  t        j                  «       d «       d d d «       | j                  d‰|ffg«       y # 1 sw Y   Œ!xY w)Nc                  ó&   •— ‰ j                  «        y r   )r-   )r2   s   €r   r*   zDTestGreenletTracing.test_b_exception_disables_tracing.<locals>.dummyH   s   ø€ Ø�K‰K�Mr   T)r   r-   )r   r/   r-   r   r0   r	   r1   Úgettrace)r   r*   Úgr   r2   s       @r   Ú!test_b_exception_disables_tracingz5TestGreenletTracing.test_b_exception_disables_tracingF   s—   ø€ Ü×"Ñ"Ó$ˆô	ä×Ñ˜eÓ$ˆØ	�‰Œ
Ü¨4Õ0°GØ×Ñœi¨¯©Ô2Ø×ÑœX×.Ñ.Ó0°$Ô7÷ 1ð 	×Ñ˜Ø˜˜a�yÐ!ð#
õ 	÷	 1Ð0ús   ÁAB1Â1B:c                 óp   — t        «       }|5  t        j                  |«       d d d «       y # 1 sw Y   y xY wr   )r   r   r   ©r   Útracers     r   Útest_set_same_tracer_twicez.TestGreenletTracing.test_set_same_tracer_twiceT   s'   € ô
  Ó!ˆÚÜ×Ñ˜fÔ%÷ �V‰Vús   �,¬5N)r
   r   r   Ú__doc__r5   r:   r>   r   r   r   r'   r'   -   s   „ ñòò(ó&r   r'   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚPythonTracerNc                 ó   — g | _         y r   )r   r!   s    r   r   zPythonTracer.__init__a   s	   € Øˆ�r   c                 óf   — | j                   j                  ||j                  j                  f«       y r   )r   r   Úf_codeÚco_name)r   ÚframeÚeventÚargs       r   r   zPythonTracer.__call__d   s#   € à�‰×Ñ˜U E§L¡L×$8Ñ$8Ð9Õ:r   c                 óN   — t        j                  | «      | _        | j                  S r   )ÚsysÚ
setprofiler    r   r!   s    r   r"   zPythonTracer.__enter__h   s   € ÜŸ™ tÓ,ˆŒØ�|‰|Ðr   c                 óB   — t        j                  | j                  «       y r   )rJ   rK   r    r   s     r   r$   zPythonTracer.__exit__l   s   € Ü�‰�t—}‘}Õ%r   r%   r   r   r   rA   rA   ^   s   „ Ø€Hòò;òó&r   rA   c                   ó   — y©Né*   r   r   r   r   Útpt_callbackrP   o   s   € Ør   c                   ó˜   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Z ej                  eŽ d„ «       Z ej                  eŽ d„ «       Zy)ÚTestPythonTracingzŒ
    Tests of the interaction of ``sys.settrace()``
    with greenlet facilities.

    NOTE: Most of this is probably CPython specific.
    Nc                 ó~   — t        «       5 }t        «        d d d «       | j                  g d¢«       y # 1 sw Y   ŒxY w)N)©Úreturnr"   ©ÚcallrP   ©rU   rP   ©rW   r$   ©Úc_callr$   )rA   rP   r1   )r   r   s     r   Útest_trace_events_trivialz+TestPythonTracing.test_trace_events_trivial|   s2   € ÜŒ^˜wÜŒN÷ ð 	×Ñ˜ò #
õ 	÷ ˆ^ús   ‹3³<c                 óf   — t        «       5 }|j                  «        d d d «       |S # 1 sw Y   S xY wr   )rA   r-   ©r   Úgletr   s      r   Ú_trace_switchzTestPythonTracing._trace_switch�   s'   € ÜŒ^˜wØ�K‰KŒM÷ àˆ÷ àˆús   ‹&¦0c                 óN   — | j                  |«      }| j                  |g d¢«       y )N)	rT   )r[   r`   )rW   ÚrunrV   rX   ©rU   rb   )Úc_returnr`   rY   rZ   )r`   r1   r^   s      r   Ú$_check_trace_events_func_already_setz6TestPythonTracing._check_trace_events_func_already_set”   s'   € Ø×$Ñ$ TÓ*ˆØ×Ñ˜ò 
#
õ 
	r   c                 óR   — d„ }| j                  t        j                  |«      «       y )Nc                  ó   — t        «       S r   ©rP   r   r   r   rb   zOTestPythonTracing.test_trace_events_into_greenlet_func_already_set.<locals>.run£   s
   € Ü“>Ð!r   )re   r   )r   rb   s     r   Ú0test_trace_events_into_greenlet_func_already_setzBTestPythonTracing.test_trace_events_into_greenlet_func_already_set¢   s"   € ò	"ð 	×1Ñ1´(×2CÑ2CÀCÓ2HÕIr   c                 ób   —  G d„ dt         j                   «      }| j                   |«       «       y )Nc                   ó   — e Zd Zd„ Zy)úQTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.Xc                 ó   — t        «       S r   rh   r!   s    r   rb   zUTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.X.runª   s
   € Ü#“~Ð%r   N©r
   r   r   rb   r   r   r   ÚXrl   ©   s   „ ó&r   ro   )r   re   )r   ro   s     r   Ú4test_trace_events_into_greenlet_subclass_already_setzFTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set¨   s&   € ô	&”×!Ñ!ô 	&ð 	×1Ñ1±!³#Õ6r   c                 ó”   — |j                  «        t        «        |j                  «        | j                  |j                  g d¢«       y )N)rT   rV   rX   rc   rV   rX   rY   rZ   )r-   rP   r$   r1   r   )r   r9   r=   s      r   Ú/_check_trace_events_from_greenlet_sets_profilerzATestPythonTracing._check_trace_events_from_greenlet_sets_profiler®   s3   € Ø	�‰Œ
ÜŒØ�‰ÔØ×Ñ˜Ÿ™ò 	*
õ 		r   c                 ón   ‡— t        «       Šˆfd„}| j                  t        j                  |«      ‰«       y )Nc                  ó8   •— ‰ j                  «        t        «       S r   ©r"   rP   ©r=   s   €r   rb   zQTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler.<locals>.runÀ   s   ø€ Ø×ÑÔÜ“>Ð!r   )rA   rr   r   )r   rb   r=   s     @r   Ú2test_trace_events_from_greenlet_func_sets_profilerzDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler¾   s0   ø€ Ü“ˆô	"ð 	×<Ñ<¼X×=NÑ=NÈsÓ=SØ=Cõ	Er   c                 ó~   ‡— t        «       Š G ˆfd„dt        j                  «      }| j                   |«       ‰«       y )Nc                   ó   •— e Zd Zˆ fd„Zy)úSTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.Xc                 ó8   •— ‰j                  «        t        «       S r   ru   r<   s    €r   rb   zWTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.X.runÊ   s   ø€ Ø× Ñ Ô"Ü#“~Ð%r   Nrn   rv   s   €r   ro   rz   É   s   ø„ õ&r   ro   )rA   r   rr   )r   ro   r=   s     @r   Ú6test_trace_events_from_greenlet_subclass_sets_profilerzHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profilerÇ   s0   ø€ Ü“ˆö	&”×!Ñ!ô 	&ð
 	×<Ñ<¹Q»SÀ&ÕIr   c                 ó&  ‡‡‡— t        «       Šd Šd Šˆˆfd„}ˆˆfd„}t        j                  |«      Št        j                  |«      Š‰j                  «       }| j                  |d«       t	        «        | j                  ‰j
                  g d¢«       y )Nc                  ón   •— ‰j                  «        t        «        ‰ j                  «        t        «        yrN   )r"   rP   r-   ©r4   r=   s   €€r   Úg1_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run×   s%   ø€ Ø×ÑÔÜŒNØ�I‰IŒKÜŒNØr   c                  ón   •— t        «        ‰j                  «        t        «        ‰ j                  «        y r   )rP   r$   r-   ©r3   r=   s   €€r   Úg2_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_runÞ   s    ø€ ÜŒNØ�O‰OÔÜŒNØ�I‰I�Kr   rO   )	rT   rV   rX   ©r[   r€   )rW   rƒ   rV   rX   rY   rZ   ©rA   r   r-   r1   rP   r   ©r   r€   rƒ   Úxr3   r4   r=   s       @@@r   Ú.test_trace_events_multiple_greenlets_switchingz@TestPythonTracing.test_trace_events_multiple_greenlets_switchingÐ   sy   ú€ ä“ˆàˆØˆõ	õ	ô ×Ñ˜vÓ&ˆÜ×Ñ˜vÓ&ˆà�I‰I‹KˆØ×Ñ˜˜BÔÜŒØ×Ñ˜Ÿ™ò 
*
õ 
	r   c                 óf  ‡‡‡— t        «       Šd Šd Šˆˆfd„}ˆˆfd„}t        j                  |«      Št        j                  |«      Š‰j                  «        ‰j                  «        ‰j                  «       }| j                  |d«       t	        «        | j                  ‰j
                  g d¢«       y )Nc                  óÆ   •— t        j                  «       j                  j                  «        ‰j	                  «        t        «        ‰ j                  «        t        «        yrN   )r   r/   Úparentr-   r"   rP   r   s   €€r   r€   zYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g1_runÿ   s@   ø€ Ü×ÑÓ!×(Ñ(×/Ñ/Ô1Ø×ÑÔÜŒNØ�I‰IŒKÜŒNØr   c                  óÆ   •— t        j                  «       j                  j                  «        t	        «        ‰j                  «        t	        «        ‰ j                  «        y r   )r   r/   r‹   r-   rP   r$   r‚   s   €€r   rƒ   zYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g2_run  s;   ø€ Ü×ÑÓ!×(Ñ(×/Ñ/Ô1äŒNØ�O‰OÔÜŒNØ�I‰I�Kr   rO   )rT   rV   rX   r„   rV   rX   rY   rZ   r…   r†   s       @@@r   Ú7test_trace_events_multiple_greenlets_switching_siblingszITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblingsö   s“   ú€ ô “ˆàˆØˆõ	õ	ô ×Ñ˜vÓ&ˆÜ×Ñ˜vÓ&ˆð 	�	‰	Œð 	�	‰	Œð �I‰I‹KˆØ×Ñ˜˜BÔäŒØ×Ñ˜Ÿ™ò 	*
õ 		r   )r
   r   r   r?   ÚmaxDiffr\   r`   re   ri   rp   rr   rw   r|   ÚunittestÚskipIfÚASSERTION_BUILD_PY312rˆ   r�   r   r   r   rR   rR   r   sz   „ ñð €Gòò&ò
òJò7òò EòJð €X‡_�_Ð+Ð,ñ#ó -ð#ðJ €X‡_�_Ð+Ð,ñ/ó -ñ/r   rR   Ú__main__)rJ   Ú	sysconfigr   r�   Ú r   r   Úget_config_varÚsplitÚhasattrr‘   Ú	Exceptionr	   Úobjectr   r'   rA   rP   rR   r
   r2   r   r   r   Ú<module>rš      sÊ   ðÛ 
Û Û Û å Ý ð 
ò à#ˆ9×#Ñ# EÓ*Ð6ð 	Ð2˜)×2Ñ2°5Ó9×?Ñ?ÓAÑAá�SÐ,Ó-à7ðÐ ô	�	ô 	ô)�Vô )ô(.&˜(ô .&ôb&�6ô &ò"ôt˜ô tðn ˆzÒØ€H‡M�M…Oð r   