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

1import ast 

2import gast 

3 

4 

5def _generate_translators(to): 

6 

7 class Translator(ast.NodeTransformer): 

8 

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 

16 

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 

29 

30 return Translator 

31 

32 

33AstToGAst = _generate_translators(gast) 

34 

35GAstToAst = _generate_translators(ast)