diff --git a/doc/Makefile b/doc/Makefile index 267db01..6e5e36f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -5,7 +5,7 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = -BUILDDIR = /Users/sean/indigo_workspace/Meta_Doc +BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 diff --git a/meta/asttools/visitors/cond_symbol_visitor.py b/meta/asttools/visitors/cond_symbol_visitor.py index 46f3a69..e4860ab 100644 --- a/meta/asttools/visitors/cond_symbol_visitor.py +++ b/meta/asttools/visitors/cond_symbol_visitor.py @@ -296,7 +296,7 @@ def visitExceptHandler(self, node): self.update_stable_rhs(get_symbols(node.type, ast.Load)) if node.name: - self.update_stable_lhs({node.name}) + self.update_stable_lhs(set([node.name])) self.visit_list(node.body) @@ -315,7 +315,7 @@ def visitImport(self, node): def visitLambda(self, node): gen = ConditionalSymbolVisitor() - gen.update_stable_lhs(symbols={arg for arg in node.args.args}) + gen.update_stable_lhs(symbols=set(arg for arg in node.args.args)) gen.visit_list(node.body) self.update_stable_rhs(gen.undefined) @@ -325,10 +325,10 @@ def visitFunctionDef(self, node): for decorator in node.decorator_list: self.update_stable_rhs(get_symbols(decorator, ast.Load)) - self.update_stable_lhs({node.name}) + self.update_stable_lhs(set([node.name])) gen = ConditionalSymbolVisitor() - gen.update_stable_lhs(symbols={arg for arg in node.args.args}) + gen.update_stable_lhs(symbols=set(arg for arg in node.args.args)) gen.visit_list(node.body) self.update_stable_rhs(gen.undefined) diff --git a/meta/asttools/visitors/graph_visitor.py b/meta/asttools/visitors/graph_visitor.py index c52de11..c12f563 100644 --- a/meta/asttools/visitors/graph_visitor.py +++ b/meta/asttools/visitors/graph_visitor.py @@ -57,7 +57,7 @@ def visitName(self, node): if not self.graph.has_edge(node.id, ctx_var): self.graph.add_edge(node.id, ctx_var) - return {node.id} + return set([node.id]) def visitalias(self, node): name = node.asname if node.asname else node.name @@ -68,7 +68,7 @@ def visitalias(self, node): if not self.graph.has_node(name): self.graph.add_node(name) - return {name} + return set([name]) def visitCall(self, node): left = self.visit(node.func) diff --git a/meta/asttools/visitors/print_visitor.py b/meta/asttools/visitors/print_visitor.py index 6acdd38..edaa1f7 100644 --- a/meta/asttools/visitors/print_visitor.py +++ b/meta/asttools/visitors/print_visitor.py @@ -10,7 +10,7 @@ import _ast from warnings import warn -if sys.version_info.major < 3: +if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO diff --git a/meta/asttools/visitors/pysourcegen.py b/meta/asttools/visitors/pysourcegen.py index 2ef00a9..c869e04 100644 --- a/meta/asttools/visitors/pysourcegen.py +++ b/meta/asttools/visitors/pysourcegen.py @@ -11,7 +11,7 @@ from meta.utils import py3op, py2op from contextlib import contextmanager -if sys.version_info.major < 3: +if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO diff --git a/meta/asttools/visitors/symbol_visitor.py b/meta/asttools/visitors/symbol_visitor.py index f847de6..804d309 100644 --- a/meta/asttools/visitors/symbol_visitor.py +++ b/meta/asttools/visitors/symbol_visitor.py @@ -29,7 +29,7 @@ def visitDefault(self, node): def visitName(self, node): if isinstance(node.ctx, self.ctx_types): - return {node.id} + return set([node.id]) else: return set() @@ -41,7 +41,7 @@ def visitalias(self, node): name = name.split('.', 1)[0] if ast.Store in self.ctx_types: - return {name} + return set([name]) else: return set() diff --git a/meta/bytecodetools/disassembler_.py b/meta/bytecodetools/disassembler_.py index 36dede4..82f7926 100644 --- a/meta/bytecodetools/disassembler_.py +++ b/meta/bytecodetools/disassembler_.py @@ -11,7 +11,7 @@ import sys from meta.bytecodetools.instruction import Instruction -py3 = sys.version_info.major >= 3 +py3 = sys.version_info[0] >= 3 co_ord = (lambda c:c) if py3 else ord def disassembler(co, lasti= -1): diff --git a/meta/bytecodetools/instruction.py b/meta/bytecodetools/instruction.py index 159abaa..948c519 100644 --- a/meta/bytecodetools/instruction.py +++ b/meta/bytecodetools/instruction.py @@ -8,7 +8,7 @@ import opcode import sys -py3 = sys.version_info.major >= 3 +py3 = sys.version_info[0] >= 3 co_ord = (lambda c:c) if py3 else ord diff --git a/meta/decompiler/__init__.py b/meta/decompiler/__init__.py index e358a11..8ab6558 100644 --- a/meta/decompiler/__init__.py +++ b/meta/decompiler/__init__.py @@ -52,7 +52,9 @@ def compile_func(ast_node, filename, globals, **defaults): funcion_name = ast_node.name module = _ast.Module(body=[ast_node]) - ctx = {'%s_default' % key : arg for key, arg in defaults.items()} + ctx = {} + for key, arg in defaults.iteritems(): + ctx['%s_default' % key] = arg code = compile(module, filename, 'exec') diff --git a/meta/decompiler/control_flow_instructions.py b/meta/decompiler/control_flow_instructions.py index c8777db..1e0524d 100644 --- a/meta/decompiler/control_flow_instructions.py +++ b/meta/decompiler/control_flow_instructions.py @@ -6,13 +6,21 @@ from __future__ import print_function import opcode import _ast +import sys from meta.bytecodetools.instruction import Instruction from meta.asttools.visitors.print_visitor import print_ast from meta.utils import py3op, py2op, py3 -AND_JUMPS = ['JUMP_IF_FALSE_OR_POP', 'POP_JUMP_IF_FALSE'] -OR_JUMPS = ['JUMP_IF_TRUE_OR_POP', 'POP_JUMP_IF_TRUE'] -JUMPS = AND_JUMPS + OR_JUMPS -JUMP_OPS = [opcode.opmap[name] for name in JUMPS] + +if sys.version_info >= (2, 7): + AND_JUMPS = ['JUMP_IF_FALSE_OR_POP', 'POP_JUMP_IF_FALSE'] + OR_JUMPS = ['JUMP_IF_TRUE_OR_POP', 'POP_JUMP_IF_TRUE'] + JUMPS = AND_JUMPS + OR_JUMPS + JUMP_OPS = [opcode.opmap[name] for name in JUMPS] +else: + AND_JUMPS = [] + OR_JUMPS = [] + JUMPS = [] + JUMP_OPS = [] def split(block, name): @@ -602,7 +610,9 @@ def while_loop(self, instr, loop_block): kw = dict(lineno=instr.lineno, col_offset=0) - loop_block_map = {instr.i:instr.op for instr in loop_block} + loop_block_map = {} + for instr in loop_block: + loop_block_map[instr.i] = instr.op first_i = loop_block[0].i @@ -662,7 +672,7 @@ def gather_jumps(self, jump_instr): and_block = self.make_block(to=to, inclusive=False, raise_=False) - jump_tos = {to} + jump_tos = set([to]) last_len = 0 old_max = to diff --git a/meta/utils.py b/meta/utils.py index 349cf51..34f1e67 100644 --- a/meta/utils.py +++ b/meta/utils.py @@ -5,7 +5,7 @@ ''' import sys -py3 = sys.version_info.major >= 3 +py3 = sys.version_info[0] >= 3 class Python2(object): @staticmethod