Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/gast/astn.py: 38%
24 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
1import ast
2import gast
5def _generate_translators(to):
7 class Translator(ast.NodeTransformer):
9 def _visit(self, node):
10 if isinstance(node, list):
11 return [self._visit(n) for n in node]
12 elif isinstance(node, ast.AST):
13 return self.visit(node)
14 else:
15 return node
17 def generic_visit(self, node):
18 cls = type(node).__name__
19 # handle nodes that are not part of the AST
20 if not hasattr(to, cls):
21 return
22 new_node = getattr(to, cls)()
23 for field in node._fields:
24 setattr(new_node, field, self._visit(getattr(node, field)))
25 for attr in getattr(node, '_attributes'):
26 if hasattr(node, attr):
27 setattr(new_node, attr, getattr(node, attr))
28 return new_node
30 return Translator
33AstToGAst = _generate_translators(gast)
35GAstToAst = _generate_translators(ast)