Well, it would trigger the top level chaining trace function, but they should be able to decide when to call the sub-trace functions. Hmm... Maybe :)
> On 25 Apr 2019, at 19:16, Ned Batchelder <n...@nedbatchelder.com> wrote: > > Perhaps I misunderstand what's implied by "simple(!) monkeypatch of > sys.settrace", but the trickiest part of Ram's proposal is that the body of > one trace function would still trigger the remaining trace functions. That > to me sounds like it's going to require changes to ceval.c > > --Ned. > >> On 4/25/19 12:26 PM, Ram Rachum wrote: >> Hmm, looks like, for this to work, you'll need the existing tracer to be >> cooperative. Right now there are existing tracers, for example coverage's >> tracer and Wing IDE's tracer, and I would need to modify them for your idea >> to work, right? >> >> If I understand your idea correctly, the first tracer would monkeypatch >> `sys.settrace` so whenever someone else adds a tracer, it doesn't really do >> `sys.settrace` but just add a function that the real tracer would be calling >> after it's done tracing. But this can't really be done without the original >> tracer implementing it, right? >> >>> On Thu, Apr 25, 2019 at 6:16 PM Ram Rachum <r...@rachum.com> wrote: >>> Oh wow, I didn't even consider that. I think you're right, I'll >>> do more thinking about this. Thanks Anders! >>> >>>> On Thu, Apr 25, 2019 at 6:10 PM Anders Hovmöller <bo...@killingar.net> >>>> wrote: >>>> Can't this be implemented today by a simple monkey patch of sys.settrace? >>>> >>>> On 25 Apr 2019, at 16:51, Ram Rachum <r...@rachum.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Here's something I want in Python: Multiple levels of tracers working on >>>>> top of each other, instead of just one. >>>>> >>>>> I'm talking about the tracer that one can set by calling sys.settrace. >>>>> >>>>> I've recently released PySnooper: https://github.com/cool-RR/PySnooper/ >>>>> >>>>> One of the difficulties I have, is that I can't debug or run the >>>>> `coverage` tool on the core of this module. That's because the core is a >>>>> trace function, and debuggers and coverage tools work by setting a trace >>>>> function. When PySnooper sets its trace function using `sys.settrace`, >>>>> the code that runs in that trace function runs without getting traced by >>>>> the coverage tracer. >>>>> >>>>> This means that people who develop debuggers and coverage tools can't use >>>>> a debugger or a coverage tool on the core of their tool. It's quite an >>>>> annoying problem. >>>>> >>>>> My proposed solution: Multiple levels of tracing, instead of just one. >>>>> When you install a tracer, you're not replacing the existing one, you're >>>>> appending a tracer to the existing list of tracers. >>>>> >>>>> If this was implemented, then when PySnooper would install its tracer, >>>>> the coverage tracer would still be active and running, for every line of >>>>> code including the ones in PySnooper's tracer. >>>>> >>>>> Obviously, we'll need to figure out the API and any other kind of >>>>> problems with this proposal. >>>>> >>>>> What do you think? >>>>> >>>>> >>>>> Thanks, >>>>> Ram. >>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-ideas mailing list >>>>> Python-ideas@python.org >>>>> https://mail.python.org/mailman/listinfo/python-ideas >>>>> Code of Conduct: http://python.org/psf/codeofconduct/ >> >> >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/