Xji!dddlZddlZddlZddlZddlmZddlmZexr=ejd"dejdjvne eddfZ Gd d e Z Gd d e ZGd deZGdde ZdZGddeZedk(rej(yy)N)TestCase)PY312OPTz-DNDEBUGgettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c eZdZy) SomeErrorN)__name__ __module__ __qualname__o/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/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)rrr rs r__exit__zGreenletTracer.__exit__)s$--(r)Fr r r r rrr"r$r rrrrsH- )rrc"eZdZdZdZdZdZy)TestGreenletTracingz* Tests of ``greenlet.settrace()`` c vtj}d}d}t5}tj|}|jtj|}|j t |jddd|j d|ffd||ffd|ffd||ffgy#1swY0xYw)Ncyrr r rrdummyz:TestGreenletTracing.test_a_greenlet_tracing..dummy4s rctr)r r rrdummyexcz=TestGreenletTracing.test_a_greenlet_tracing..dummyexc6s + rswitchthrow)r getcurrentrr- assertRaisesr assertEqual)rmainr*r,rg1g2s rtest_a_greenlet_tracingz+TestGreenletTracing.test_a_greenlet_tracing2s""$    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-)r2srr*zDTestGreenletTracing.test_b_exception_disables_tracing..dummyHs KKMrT)rr-)rr/r-rr0r r1gettrace)rr*grr2s @r!test_b_exception_disables_tracingz5TestGreenletTracing.test_b_exception_disables_tracingFs""$    e $  4 0 8G   i 2   X..0$ 7 8  ay !#   8 8s AB11B:cpt}|5tj|dddy#1swYyxYwr)rrrrtracers rtest_set_same_tracer_twicez.TestGreenletTracing.test_set_same_tracer_twiceTs2  !  &   f % & & &s,5N)r r r __doc__r5r:r>r rrr'r'-s (  &rr'c(eZdZdZdZdZdZdZy) PythonTracerNcg|_yr)rr!s rrzPythonTracer.__init__as  rcf|jj||jjfyr)rrf_codeco_name)rframeeventargs rrzPythonTracer.__call__ds# UELL$8$89:rcNtj||_|jSr)sys setprofiler rr!s rr"zPythonTracer.__enter__hst, ||rcBtj|jyr)rJrKr rs rr$zPythonTracer.__exit__ls t}}%rr%r rrrArA^sH;&rrAcyN*r r rr tpt_callbackrPos 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"callrPrUrPrWr$c_callr$)rArPr1)rrs rtest_trace_events_trivialz+TestPythonTracing.test_trace_events_trivial|s: ^ w N  #    s 3<cft5}|jddd|S#1swYSxYwr)rAr-rgletrs r _trace_switchzTestPythonTracing._trace_switchs, ^ w KKM  s&0cN|j|}|j|gdy)N) rT)r[r`)rWrunrVrXrUrb)c_returnr`rYrZ)r`r1r^s r$_check_trace_events_func_already_setz6TestPythonTracing._check_trace_events_func_already_sets'$$T*  # rcRd}|jtj|y)NctSrrPr rrrbzOTestPythonTracing.test_trace_events_into_greenlet_func_already_set..runs > !r)rer)rrbs 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..XctSrrhr!s rrbzUTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set..X.runs #~%rNr r r rbr rrXrls &rro)rre)rros r4test_trace_events_into_greenlet_subclass_already_setzFTestPythonTracing.test_trace_events_into_greenlet_subclass_already_sets& &!! & 11!#6rc|jt|j|j|jgdy)N)rTrVrXrcrVrXrYrZ)r-rPr$r1r)rr9r=s r/_check_trace_events_from_greenlet_sets_profilerzATestPythonTracing._check_trace_events_from_greenlet_sets_profilers3    * rcntfd}|jtj|y)Nc8jtSrr"rPr=srrbzQTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler..runs    > !r)rArrr)rrbr=s @r2test_trace_events_from_greenlet_func_sets_profilerzDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profilers0 " <.Xc8jtSrrur<s rrbzWTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler..X.runs  "#~%rNrnrvsrrorzs &rro)rArrr)rror=s @r6test_trace_events_from_greenlet_subclass_sets_profilerzHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profilers0 &!! & <.g1_runs%     N IIK Nrcntjtjyr)rPr$r-r3r=srg2_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching..g2_runs N OO  N IIKrrO) rTrVrXr[r)rWrrVrXrYrZrArr-r1rPrrrrxr3r4r=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 yrN)rr/parentr-r"rPrsrrzYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings..g1_runs@    ! ( ( / / 1     N IIK Nrctjjjt j t jyr)rr/rr-rPr$rsrrzYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings..g2_runs;    ! ( ( / / 1 N OO  N IIKrrO)rTrVrXrrVrXrYrZrrs @@@r7test_trace_events_multiple_greenlets_switching_siblingszITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblingss      v &   v &   IIK B  * r)r r r r?maxDiffr\r`rerirprrrwr|unittestskipIfASSERTION_BUILD_PY312rrr rrrRrRrszG &  J 7  EJX__+,# -# JX__+,/ -/ rrR__main__)rJ sysconfigrrrrget_config_varsplithasattrr Exceptionr objectrr'rArPrRr r2r rrrs   #9 # #E * 6 2)2259??AA S, -7   )V)(.&(.&b&6&"t t n zHMMOr