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