Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/python2.7/compiler
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: future.py
"""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
.
22 Items
Change directory
Remove directory
Rename directory
..
442 Items
Change directory
Remove directory
Rename directory
__init__.py
1 KB
Edit
Delete
Copy
Move
Remame
__init__.pyc
1.26 KB
Edit
Delete
Copy
Move
Remame
ast.py
36.63 KB
Edit
Delete
Copy
Move
Remame
ast.pyc
69.67 KB
Edit
Delete
Copy
Move
Remame
consts.py
0.46 KB
Edit
Delete
Copy
Move
Remame
consts.pyc
0.72 KB
Edit
Delete
Copy
Move
Remame
future.py
1.85 KB
Edit
Delete
Copy
Move
Remame
future.pyc
2.87 KB
Edit
Delete
Copy
Move
Remame
misc.py
1.75 KB
Edit
Delete
Copy
Move
Remame
misc.pyc
3.61 KB
Edit
Delete
Copy
Move
Remame
pyassem.py
23.69 KB
Edit
Delete
Copy
Move
Remame
pyassem.pyc
25.17 KB
Edit
Delete
Copy
Move
Remame
pycodegen.py
46.69 KB
Edit
Delete
Copy
Move
Remame
pycodegen.pyc
54.85 KB
Edit
Delete
Copy
Move
Remame
symbols.py
14.15 KB
Edit
Delete
Copy
Move
Remame
symbols.pyc
17.15 KB
Edit
Delete
Copy
Move
Remame
syntax.py
1.41 KB
Edit
Delete
Copy
Move
Remame
syntax.pyc
1.83 KB
Edit
Delete
Copy
Move
Remame
transformer.py
51.86 KB
Edit
Delete
Copy
Move
Remame
transformer.pyc
46.27 KB
Edit
Delete
Copy
Move
Remame
visitor.py
3.8 KB
Edit
Delete
Copy
Move
Remame
visitor.pyc
4.07 KB
Edit
Delete
Copy
Move
Remame