<div dir="ltr">Hi,<div><br></div><div>Here's something I want in Python: Multiple levels of tracers working on top of each other, instead of just one. </div><div><br></div><div>I'm talking about the tracer that one can set by calling sys.settrace.</div><div><br></div><div>I've recently released PySnooper: <a href="https://github.com/cool-RR/PySnooper/">https://github.com/cool-RR/PySnooper/</a></div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Obviously, we'll need to figure out the API and any other kind of problems with this proposal.</div><div><br></div><div>What do you think? </div><div><br></div><div><br></div><div>Thanks,</div><div>Ram.</div><div><br></div><div><br></div></div>