Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/libcst/metadata/parent_node_provider.py: 57%

14 statements  

« prev     ^ index     » next       coverage.py v7.3.1, created at 2023-09-25 06:43 +0000

1# Copyright (c) Meta Platforms, Inc. and affiliates. 

2# 

3# This source code is licensed under the MIT license found in the 

4# LICENSE file in the root directory of this source tree. 

5 

6 

7from typing import Optional 

8 

9import libcst as cst 

10from libcst.metadata.base_provider import BatchableMetadataProvider 

11 

12 

13class ParentNodeVisitor(cst.CSTVisitor): 

14 def __init__(self, provider: "ParentNodeProvider") -> None: 

15 self.provider: ParentNodeProvider = provider 

16 super().__init__() 

17 

18 def on_leave(self, original_node: cst.CSTNode) -> None: 

19 for child in original_node.children: 

20 self.provider.set_metadata(child, original_node) 

21 super().on_leave(original_node) 

22 

23 

24class ParentNodeProvider(BatchableMetadataProvider[cst.CSTNode]): 

25 def visit_Module(self, node: cst.Module) -> Optional[bool]: 

26 node.visit(ParentNodeVisitor(self))