Modified various passes to use the inspect module instead of using type comparisons or isinstance.

This commit is contained in:
Jon Riehl 2013-06-07 15:30:45 -05:00
commit 0b24adb80a
3 changed files with 6 additions and 7 deletions

View file

@ -6,7 +6,7 @@ from __future__ import absolute_import
import opcode
import pprint
import types
import inspect
from . import opcode_util
from .bytecode_visitor import BasicBlockVisitor, BenignBytecodeVisitorMixin
@ -281,7 +281,7 @@ def main (*args, **kws):
def _visit(obj):
print("_" * 70)
print(obj)
if type(obj) == types.FunctionType:
if inspect.isfunction(obj):
cfg = build_cfg(obj)
else:
cfg = ControlFlowBuilder.build_cfg_from_co(obj)

View file

@ -5,7 +5,7 @@ from __future__ import absolute_import
import dis
import opcode
import pprint
import types
import inspect
from .bytecode_visitor import BasicBlockVisitor
from . import opcode_util
@ -341,11 +341,10 @@ def build_flow(func):
# ______________________________________________________________________
def demo_flow_builder(builder_cls, *args):
import pprint
def _visit(obj):
print("_" * 70)
print(obj)
if type(obj) == types.FunctionType:
if inspect.isfunction(obj):
flow = builder_cls.build_flow(obj)
else:
flow = builder_cls.build_flow_from_co(obj)

View file

@ -4,7 +4,7 @@
from collections import namedtuple
import dis
import opcode
import types
import inspect
# ______________________________________________________________________
# Module data
@ -208,7 +208,7 @@ def itercodeobjs(codeobj):
"Iterator that traverses code objects via the co_consts member."
yield codeobj
for const in codeobj.co_consts:
if isinstance(const, types.CodeType):
if inspect.iscode(const):
for childobj in itercodeobjs(const):
yield childobj