def compileCodeObjects(filename, codeobjs): if len(codeobjs) == 0: stmts = [] else: stmts = [ast.For(ast.AssName('[--codeobj--]', 'OP_ASSIGN'), ast.Const(codeobjs), ast.Stmt([ast.Exec(ast.Name('[--codeobj--]'), None, None)]), None), ast.AssName('[--codeobj--]', 'OP_DELETE')] module = ast.Module(None, ast.Stmt(stmts)) compiler.misc.set_filename(filename, module) return pycodegen.ModuleCodeGenerator(module).getCode()
def _exec(self, code, env=None, locals=None): assertResult(code, "exec") if env is not None: assertResult(env, "exec in") pyenv = topy(env) else: pyenv = None if locals is not None: assertResult(locals, "exec in") pylocals = topy(locals) else: pylocals = None return ast.Exec(topy(code), pyenv, pylocals)
def _do_ExecStatement(self, node): expr = self.transform(node.Code) locals = self.transform(node.Locals) globals = self.transform(node.Globals) return ast.Exec(expr, globals, locals)