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

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, 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 

16 

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 

24 

25 for field in node._fields: 

26 setattr(new_node, field, self._visit(getattr(node, field))) 

27 

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 

34 

35 return Translator 

36 

37 

38AstToGAst = _generate_translators(gast) 

39 

40GAstToAst = _generate_translators(ast)