def file_input(self, nodelist): # Add a "from IO_MODULE import IO_CLASS" statement to the # beginning of the module. doc = None # self.get_docstring(nodelist, symbol.file_input) if sys.hexversion >= 0x02050000: io_imp = ast.From(IO_MODULE, [(IO_CLASS, None)], 0) markup_imp = ast.From(MARKUP_MODULE, [(MARKUP_CLASS, None)], 0) else: io_imp = ast.From(IO_MODULE, [(IO_CLASS, None)]) markup_imp = ast.From(MARKUP_MODULE, [(MARKUP_CLASS, None)]) markup_assign = ast.Assign( [ast.AssName(MARKUP_MANGLED_CLASS, OP_ASSIGN)], ast.Name(MARKUP_CLASS)) # Add an IO_INSTANCE binding for module level expressions (like # doc strings). This instance will not be returned. io_instance = ast.CallFunc(ast.Name(IO_CLASS), []) io_assign_name = ast.AssName(IO_INSTANCE, OP_ASSIGN) io_assign = ast.Assign([io_assign_name], io_instance) stmts = [io_imp, io_assign, markup_imp, markup_assign] for node in nodelist: if node[0] != token.ENDMARKER and node[0] != token.NEWLINE: self.com_append_stmt(stmts, node) return ast.Module(doc, ast.Stmt(stmts))
def file_input(self, nodelist): doc = None # self.get_docstring(nodelist, symbol.file_input) if sys.hexversion >= 0x02050000: html_imp = ast.From( 'quixote.html', [('TemplateIO', '_q_TemplateIO'), ('htmltext', '_q_htmltext')], 0) vars_imp = ast.From("__builtin__", [("vars", "_q_vars")], 0) else: html_imp = ast.From( 'quixote.html', [('TemplateIO', '_q_TemplateIO'), ('htmltext', '_q_htmltext')]) vars_imp = ast.From("__builtin__", [("vars", "_q_vars")]) ptl_imports = [ vars_imp, html_imp ] stmts = [] for node in nodelist: if node[0] != token.ENDMARKER and node[0] != token.NEWLINE: self.com_append_stmt(stmts, node) # count __future__ statements i = 0 for stmt in stmts: if isinstance(stmt, ast.From) and stmt.modname == '__future__': i += 1 else: break stmts[i:i] = ptl_imports return ast.Module(doc, ast.Stmt(stmts))
def _do_FromImportStatement(self, node): modname = node.Root.MakeString() if node.Names is FromImportStatement.Star: return ast.From(modname, [('*', None)]) names = map(str, node.Names) as_names = map(str, node.AsNames) names = zip(names, as_names) return ast.From(modname, names)
def file_input(self, nodelist): doc = None # self.get_docstring(nodelist, symbol.file_input) html_imp = ast.From('quixote.html', [('TemplateIO', '_q_TemplateIO'), ('htmltext', '_q_htmltext')]) vars_imp = ast.From("__builtin__", [("vars", "_q_vars")]) stmts = [ vars_imp, html_imp ] for node in nodelist: if node[0] != token.ENDMARKER and node[0] != token.NEWLINE: self.com_append_stmt(stmts, node) return ast.Module(doc, ast.Stmt(stmts))
def _from(self, module, imp): if imp == 'star': imps = [('*', None)] else: def tostr(a): if a is None: return None else: return str(a) imps = [(tostr(a), tostr(b)) for a,b in zip(imp[::2], imp[1::2])] return ast.From(str('.'.join(module)), imps)