/opt/alt/python27/lib64/python2.7/compiler
NameSizeModeActions
ast.py375080644editdlrm
ast.pyc771820644editdlrm
ast.pyo771820644editdlrm
consts.py4680644editdlrm
consts.pyc7500644editdlrm
consts.pyo7500644editdlrm
future.py18930644editdlrm
future.pyc30860644editdlrm
future.pyo30860644editdlrm
misc.py17940644editdlrm
misc.pyc39800644editdlrm
misc.pyo39800644editdlrm
pyassem.py242680644editdlrm
pyassem.pyc269910644editdlrm
pyassem.pyo264170644editdlrm
pycodegen.py478090644editdlrm
pycodegen.pyc587640644editdlrm
pycodegen.pyo583200644editdlrm
symbols.py144890644editdlrm
symbols.pyc184050644editdlrm
symbols.pyo183710644editdlrm
syntax.py14440644editdlrm
syntax.pyc19600644editdlrm
syntax.pyo19600644editdlrm
transformer.py531160644editdlrm
transformer.pyc492700644editdlrm
transformer.pyo474550644editdlrm
visitor.py38960644editdlrm
visitor.pyc43170644editdlrm
visitor.pyo43170644editdlrm
__init__.py10230644editdlrm
__init__.pyc13100644editdlrm
__init__.pyo13100644editdlrm
Edit: /opt/alt/python27/lib64/python2.7/compiler/future.py (1893B)
"""Parser for future statements """ from compiler import ast, walk def is_future(stmt): """Return true if statement is a well-formed future statement""" if not isinstance(stmt, ast.From): return 0 if stmt.modname == "__future__": return 1 else: return 0 class FutureParser: features = ("nested_scopes", "generators", "division", "absolute_import", "with_statement", "print_function", "unicode_literals") def __init__(self): self.found = {} # set def visitModule(self, node): stmt = node.node for s in stmt.nodes: if not self.check_stmt(s): break def check_stmt(self, stmt): if is_future(stmt): for name, asname in stmt.names: if name in self.features: self.found[name] = 1 else: raise SyntaxError, \ "future feature %s is not defined" % name stmt.valid_future = 1 return 1 return 0 def get_features(self): """Return list of features enabled by future statements""" return self.found.keys() class BadFutureParser: """Check for invalid future statements""" def visitFrom(self, node): if hasattr(node, 'valid_future'): return if node.modname != "__future__": return raise SyntaxError, "invalid future statement " + repr(node) def find_futures(node): p1 = FutureParser() p2 = BadFutureParser() walk(node, p1) walk(node, p2) return p1.get_features() if __name__ == "__main__": import sys from compiler import parseFile, walk for file in sys.argv[1:]: print file tree = parseFile(file) v = FutureParser() walk(tree, v) print v.found print