[Python-ideas] Idea: Allow multiple levels of tracers

Ram Rachum ram at rachum.com
Thu Apr 25 10:51:08 EDT 2019


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?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190425/f785bce3/attachment.html>

More information about the Python-ideas mailing list