def dump(co, indent=0): import dis import types def pprint(text, extra=0): for i in range(indent + extra): print(" ", end="") print(text) pprint("co_name:\t{0}".format(co.co_name)) for key in dir(co): if not key.startswith("co_"): continue if key in ["co_name", "co_code", "co_lnotab"]: continue elif key == "co_consts": pprint("{0}:".format(key)) for v in co.co_consts: if type(v) == types.CodeType: pprint("- Code Object:") dump(v, indent + 1) else: pprint("- {0}".format(v)) elif key == "co_flags": val = dis.pretty_flags(co.co_flags) pprint("{0}:\t\t{1}".format(key, val)) else: val = getattr(co, key) pprint("{0}:\t{1}".format(key, val)) # doesn't obey indent level dis.dis(co)
def test_pretty_flags_no_flags(self): self.assertEqual(dis.pretty_flags(0), '0x0')
def update_event(self, inp=-1): self.set_output_val(0, dis.pretty_flags(self.input(0)))