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
« 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.
7from typing import Optional
9import libcst as cst
10from libcst.metadata.base_provider import BatchableMetadataProvider
13class ParentNodeVisitor(cst.CSTVisitor):
14 def __init__(self, provider: "ParentNodeProvider") -> None:
15 self.provider: ParentNodeProvider = provider
16 super().__init__()
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)
24class ParentNodeProvider(BatchableMetadataProvider[cst.CSTNode]):
25 def visit_Module(self, node: cst.Module) -> Optional[bool]:
26 node.visit(ParentNodeVisitor(self))