diff options
author | thegeorg <thegeorg@yandex-team.com> | 2024-03-15 23:28:02 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2024-03-15 23:38:24 +0300 |
commit | 6635e51dd2fc4c8fbc3e510cd31c9c9102b7cfda (patch) | |
tree | d51d048d3eb5d7a24ec6e4302b589513a3b97de3 /contrib/tools/python/src/Lib/compiler/future.py | |
parent | e894914751eea93bb23102a533c8d481b80c2560 (diff) | |
download | ydb-6635e51dd2fc4c8fbc3e510cd31c9c9102b7cfda.tar.gz |
Store generated list of frozen modules for contrib/tools/python
a94357bf8071b16879eeabac1f52f54e278c03ed
Diffstat (limited to 'contrib/tools/python/src/Lib/compiler/future.py')
-rw-r--r-- | contrib/tools/python/src/Lib/compiler/future.py | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/contrib/tools/python/src/Lib/compiler/future.py b/contrib/tools/python/src/Lib/compiler/future.py deleted file mode 100644 index fd5e5dfb374..00000000000 --- a/contrib/tools/python/src/Lib/compiler/future.py +++ /dev/null @@ -1,74 +0,0 @@ -"""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 |