-# Disassembler
+"""Disassembler of Python byte code into mnemonics."""
import sys
import string
import types
def dis(x=None):
+ """Disassemble classes, methods, functions, or code.
+
+ With no argument, disassemble the last traceback.
+
+ """
if not x:
distb()
return
type(x).__name__
def distb(tb=None):
+ """Disassemble a traceback (default: last traceback)."""
if not tb:
try:
tb = sys.last_traceback
disassemble(tb.tb_frame.f_code, tb.tb_lasti)
def disassemble(co, lasti=-1):
+ """Disassemble a code object."""
code = co.co_code
labels = findlabels(code)
n = len(code)
disco = disassemble
def findlabels(code):
+ """Detect all offsets in a byte code which are jump targets.
+
+ Return the list of offsets.
+
+ """
labels = []
n = len(code)
i = 0