summaryrefslogtreecommitdiff
path: root/src/buildstream/node.pyi
blob: 059bec2b8174b9c8f7331ff118ed88ef851db5fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from typing import overload, Generic, List, Mapping, Optional, Sequence, TypeVar, Dict, Any

from ._project import Project

TNode = TypeVar("TNode", bound="Node")
TValidNodeValue = TypeVar("TValidNodeValue", int, str, bool, Mapping, Sequence)

class ProvenanceInformation: ...

class Node:
    def clone(self) -> "Node": ...
    def get_provenance(self) -> ProvenanceInformation: ...
    def strip_node_info(self) -> Dict[str, Any]: ...

class MappingNode(Node, Generic[TNode]):
    def __init__(self, file_index: int, line: int, column: int, value: Mapping[str, TValidNodeValue]) -> None: ...
    def clone(self) -> MappingNode[TNode]: ...
    def validate_keys(self, valid_keys: List[str]): ...
    @overload
    def get_str_list(self, key: str) -> List[str]: ...
    @overload
    def get_str_list(self, key: str, default: List[str]) -> List[str]: ...
    @overload
    def get_str_list(self, key: str, default: Optional[List[str]]) -> Optional[List[str]]: ...
    @overload
    def get_str(self, key: str) -> str: ...
    @overload
    def get_str(self, key: str, default: str) -> str: ...
    @overload
    def get_str(self, key: str, default: Optional[str]) -> Optional[str]: ...
    @overload
    def get_int(self, key: str) -> int: ...
    @overload
    def get_int(self, key: str, default: int) -> int: ...
    @overload
    def get_int(self, key: str, default: Optional[int]) -> Optional[int]: ...
    @overload
    def get_mapping(self, key: str) -> "MappingNode": ...
    @overload
    def get_mapping(self, key: str, default: "MappingNode") -> "MappingNode": ...
    @overload
    def get_mapping(self, key: str, default: Optional["MappingNode"]) -> Optional["MappingNode"]: ...

class ScalarNode(Node):
    def as_str(self) -> str: ...
    def clone(self) -> "ScalarNode": ...

class SequenceNode(Node, Generic[TNode]):
    def as_str_list(self) -> List[str]: ...
    def clone(self) -> "SequenceNode[TNode]": ...

def _assert_symbol_name(
    symbol_name: str, purpose: str, *, ref_node: Optional[Node], allow_dashes: bool = True
) -> None: ...
def _new_synthetic_file(filename: str, project: Optional[Project]) -> MappingNode[TNode]: ...