1import datetime
2from _typeshed import SupportsItems
3from collections.abc import Callable, Iterable, Mapping
4from types import BuiltinFunctionType, FunctionType, ModuleType
5from typing import Any, ClassVar, NoReturn, Type, TypeVar
6
7from yaml.error import YAMLError as YAMLError
8from yaml.nodes import MappingNode as MappingNode, Node as Node, ScalarNode as ScalarNode, SequenceNode as SequenceNode
9
10_T = TypeVar("_T")
11_R = TypeVar("_R", bound=BaseRepresenter)
12
13class RepresenterError(YAMLError): ...
14
15class BaseRepresenter:
16    yaml_representers: ClassVar[dict[Type[Any], Callable[[BaseRepresenter, Any], Node]]]
17    yaml_multi_representers: ClassVar[dict[Type[Any], Callable[[BaseRepresenter, Any], Node]]]
18    default_style: str | Any
19    sort_keys: bool
20    default_flow_style: bool
21    represented_objects: dict[int, Node]
22    object_keeper: list[Any]
23    alias_key: int | Any
24    def __init__(self, default_style: str | None = ..., default_flow_style: bool = ..., sort_keys: bool = ...) -> None: ...
25    def represent(self, data) -> None: ...
26    def represent_data(self, data) -> Node: ...
27    @classmethod
28    def add_representer(cls: Type[_R], data_type: Type[_T], representer: Callable[[_R, _T], Node]) -> None: ...
29    @classmethod
30    def add_multi_representer(cls: Type[_R], data_type: Type[_T], representer: Callable[[_R, _T], Node]) -> None: ...
31    def represent_scalar(self, tag: str, value, style: str | None = ...) -> ScalarNode: ...
32    def represent_sequence(self, tag: str, sequence: Iterable[Any], flow_style: bool | None = ...) -> SequenceNode: ...
33    def represent_mapping(
34        self, tag: str, mapping: SupportsItems[Any, Any] | Iterable[tuple[Any, Any]], flow_style: bool | None = ...
35    ) -> MappingNode: ...
36    def ignore_aliases(self, data) -> bool: ...
37
38class SafeRepresenter(BaseRepresenter):
39    inf_value: ClassVar[float]
40    def ignore_aliases(self, data) -> bool: ...
41    def represent_none(self, data) -> ScalarNode: ...
42    def represent_str(self, data: str) -> ScalarNode: ...
43    def represent_binary(self, data: bytes) -> ScalarNode: ...
44    def represent_bool(self, data: bool) -> ScalarNode: ...
45    def represent_int(self, data: int) -> ScalarNode: ...
46    def represent_float(self, data: float) -> ScalarNode: ...
47    def represent_list(self, data: Iterable[Any]) -> SequenceNode: ...
48    def represent_dict(self, data: SupportsItems[Any, Any] | Iterable[tuple[Any, Any]]) -> MappingNode: ...
49    def represent_set(self, data: Iterable[Any]) -> MappingNode: ...
50    def represent_date(self, data: datetime.date) -> ScalarNode: ...
51    def represent_datetime(self, data: datetime.datetime) -> ScalarNode: ...
52    def represent_yaml_object(self, tag: str, data, cls, flow_style: bool | None = ...) -> MappingNode: ...
53    def represent_undefined(self, data) -> NoReturn: ...
54
55class Representer(SafeRepresenter):
56    def represent_complex(self, data: complex) -> ScalarNode: ...
57    def represent_tuple(self, data: Iterable[Any]) -> SequenceNode: ...
58    def represent_name(self, data: BuiltinFunctionType | FunctionType) -> ScalarNode: ...
59    def represent_module(self, data: ModuleType) -> ScalarNode: ...
60    def represent_object(self, data) -> SequenceNode | MappingNode: ...
61    def represent_ordered_dict(self, data: Mapping[Any, Any]) -> SequenceNode: ...
62