August 2018
Intermediate to advanced
366 pages
10h 14m
English
The report_tracing function is the one actually in charge of tracing the execution of another function.
First of all, as the execution is per module, it creates defaultdict, where the tracing can be stored. The key will be the module, and the value will be a list containing information for each line of that module:
def report_tracing(func, *args, **kwargs):
outputs = collections.defaultdict(list)
Then, it creates the actual tracing machinery. The trace=False option is especially important to avoid the tracing being printed on screen. Right now, we want to save it aside, not print it:
tracing = trace.Trace(trace=False)
Once the tracer is available, we can use it to run the provided function with any given argument:
tracing.runfunc(func, ...