MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / _Tracer

Class _Tracer

tests_python/test_bytecode_manipulation.py:16–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14
15
16class _Tracer(object):
17 def __init__(self):
18 self.stream = StringIO()
19 self._in_print = False
20 self.accept_frame = None # Can be set to a callable
21 self.lines_executed = set()
22
23 def tracer_printer(self, frame, event, arg):
24 if self._in_print:
25 return None
26 self._in_print = True
27 try:
28 if self.accept_frame is None or self.accept_frame(frame):
29 if arg is not None:
30 if event == "exception":
31 arg = arg[0].__name__
32 elif arg is not None:
33 arg = str(arg)
34 if arg is None:
35 arg = ""
36
37 self.lines_executed.add(frame.f_lineno)
38
39 s = " ".join(
40 (
41 str(frame.f_lineno),
42 frame.f_code.co_name,
43 os.path.basename(frame.f_code.co_filename),
44 event.upper() if event != "line" else event,
45 arg,
46 )
47 )
48 self.writeln(s)
49 except:
50 traceback.print_exc()
51 self._in_print = False
52 return self.tracer_printer
53
54 def writeln(self, s):
55 self.write(s)
56 self.write("\n")
57
58 def write(self, s):
59 if isinstance(s, bytes):
60 s = s.decode("utf-8")
61 self.stream.write(s)
62
63 def call(self, c):
64 sys.settrace(self.tracer_printer)
65 c()
66 sys.settrace(None)
67 return self.stream.getvalue()
68
69
70def check(

Callers 1

checkFunction · 0.70

Calls

no outgoing calls

Tested by 1

checkFunction · 0.56