L i!pddlmZddlZddlZddlZddlZddlmZddlmZexr=ejd"dejdjvne edd fZ Gd d e ZGd d eZGddeZGddeZdZGddeZedk(rej,yy))print_functionN)TestCase)PY312OPTz-DNDEBUGgettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c eZdZy) SomeErrorN)__name__ __module__ __qualname__a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/greenlet/tests/test_tracing.pyr r srr c*eZdZdZddZdZdZdZy)GreenletTracerNc g|_||_yN)actionserror_on_trace)selfrs r__init__zGreenletTracer.__init__s ,rc^|jj||jrtyr)rappendrr rargss r__call__zGreenletTracer.__call__!s' D!   O rcNtj||_|jSr)greenletsettraceoldtracerrs r __enter__zGreenletTracer.__enter__&s ))$/ ||rcBtj|jyr)rr r!rs r__exit__zGreenletTracer.__exit__*s$--(r)Fr r r r!rrr#r%rrrrrsH- )rrc"eZdZdZdZdZdZy)TestGreenletTracingz* Tests of ``greenlet.settrace()`` c vtj}d}d}t5}tj|}|jtj|}|j t |jddd|j d|ffd||ffd|ffd||ffgy#1swY0xYw)Ncyrrrrrdummyz:TestGreenletTracing.test_a_greenlet_tracing..dummy5s rctr)r rrrdummyexcz=TestGreenletTracing.test_a_greenlet_tracing..dummyexc7s + rswitchthrow)r getcurrentrr. assertRaisesr assertEqual)rmainr+r-rg1g2s rtest_a_greenlet_tracingz+TestGreenletTracing.test_a_greenlet_tracing3s""$    4""5)B IIK""8,B   i 3  4  bz " Dz " bz " r4j ! #   4 4s AB//B8cztjfd}tj|}|jtd5}|j t |j|j tjdddd|j d|ffgy#1swY!xYw)Nc&jyr)r.)r3srr+zDTestGreenletTracing.test_b_exception_disables_tracing..dummyIs KKMrT)rr.)rr0r.rr1r r2gettrace)rr+grr3s @r!test_b_exception_disables_tracingz5TestGreenletTracing.test_b_exception_disables_tracingGs""$    e $  4 0 8G   i 2   X..0$ 7 8  ay !#   8 8s AB11B:cpt}|5tj|dddy#1swYyxYwr)rrr rtracers rtest_set_same_tracer_twicez.TestGreenletTracing.test_set_same_tracer_twiceUs2  !  &   f % & & &s,5N)r r r __doc__r6r;r?rrrr(r(.s (  &rr(c(eZdZdZdZdZdZdZy) PythonTracerNcg|_yr)rr"s rrzPythonTracer.__init__bs  rcf|jj||jjfyr)rrf_codeco_name)rframeeventargs rrzPythonTracer.__call__es# UELL$8$89:rcNtj||_|jSr)sys setprofiler!rr"s rr#zPythonTracer.__enter__ist, ||rcBtj|jyr)rKrLr!rs rr%zPythonTracer.__exit__ms t}}%rr&rrrrBrB_sH;&rrBcyN*rrrr tpt_callbackrQps rceZdZdZdZdZdZdZdZdZ dZ d Z d Z e jed Ze jed Zy) TestPythonTracingz Tests of the interaction of ``sys.settrace()`` with greenlet facilities. NOTE: Most of this is probably CPython specific. Nc~t5}tddd|jgdy#1swYxYw)N)returnr#callrQrVrQrXr%c_callr%)rBrQr2)rrs rtest_trace_events_trivialz+TestPythonTracing.test_trace_events_trivial}s: ^ w N  #    s 3<cft5}|jddd|S#1swYSxYwr)rBr.rgletrs r _trace_switchzTestPythonTracing._trace_switchs, ^ w KKM  s&0cN|j|}|j|gdy)N) rU)r\ra)rXrunrWrYrVrc)c_returnrarZr[)rar2r_s r$_check_trace_events_func_already_setz6TestPythonTracing._check_trace_events_func_already_sets'$$T*  # rcRd}|jtj|y)NctSrrQrrrrczOTestPythonTracing.test_trace_events_into_greenlet_func_already_set..runs > !r)rfr)rrcs r0test_trace_events_into_greenlet_func_already_setzBTestPythonTracing.test_trace_events_into_greenlet_func_already_sets" " 11(2C2CC2HIrcbGddtj}|j|y)NceZdZdZy)QTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set..XctSrrir"s rrczUTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set..X.runs #~%rNr r r rcrrrXrms &rrp)rrf)rrps r4test_trace_events_into_greenlet_subclass_already_setzFTestPythonTracing.test_trace_events_into_greenlet_subclass_already_sets& &!! & 11!#6rc|jt|j|j|jgdy)N)rUrWrYrdrWrYrZr[)r.rQr%r2r)rr:r>s r/_check_trace_events_from_greenlet_sets_profilerzATestPythonTracing._check_trace_events_from_greenlet_sets_profilers3    * rcntfd}|jtj|y)Nc8jtSrr#rQr>srrczQTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler..runs    > !r)rBrsr)rrcr>s @r2test_trace_events_from_greenlet_func_sets_profilerzDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profilers0 " <.Xc8jtSrrvr=s rrczWTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler..X.runs  "#~%rNrorwsrrpr{s &rrp)rBrrs)rrpr>s @r6test_trace_events_from_greenlet_subclass_sets_profilerzHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profilers0 &!! & <srg1_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching..g1_runs%     N IIK Nrcntjtjyr)rQr%r.r4r>srg2_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching..g2_runs N OO  N IIKrrP) rUrWrYr\r)rXrrWrYrZr[rBrr.r2rQrrrrxr4r5r>s @@@r.test_trace_events_multiple_greenlets_switchingz@TestPythonTracing.test_trace_events_multiple_greenlets_switchingsy       v &   v & IIK B  * rcftddfd}fd}tj|tj|jjj}|j|dt |jj gdy)Nctjjjj t jt yrO)rr0parentr.r#rQrsrrzYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings..g1_runs@    ! ( ( / / 1     N IIK Nrctjjjt j t jyr)rr0rr.rQr%rsrrzYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings..g2_runs;    ! ( ( / / 1 N OO  N IIKrrP)rUrWrYrrWrYrZr[rrs @@@r7test_trace_events_multiple_greenlets_switching_siblingszITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblingss      v &   v &   IIK B  * r)r r r r@maxDiffr]rarfrjrqrsrxr}unittestskipIfASSERTION_BUILD_PY312rrrrrrSrSsszG &  J 7  EJX__+,# -# JX__+,/ -/ rrS__main__) __future__rrK sysconfigrrrrget_config_varsplithasattrr Exceptionr objectrr(rBrQrSr r3rrrrs%   #9 # #E * 6 2)2259??AA S, -7   )V)(.&(.&b&6&"t t n zHMMOr