You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
5.9 KiB

import enum
from typing import (
Any,
Callable,
ClassVar,
Dict,
Final,
Iterable,
Literal,
Mapping,
Optional,
Tuple,
Type,
TypeVar,
Union,
overload,
)
from typing_extensions import dataclass_transform
from . import inspect, json, msgpack, structs, toml, yaml
T = TypeVar("T")
class UnsetType(enum.Enum):
UNSET = "UNSET"
UNSET = UnsetType.UNSET
class _NoDefault(enum.Enum):
NODEFAULT = "NODEFAULT"
NODEFAULT = _NoDefault.NODEFAULT
@overload
def field(*, default: T, name: Optional[str] = None) -> T: ...
@overload
def field(*, default_factory: Callable[[], T], name: Optional[str] = None) -> T: ...
@overload
def field(*, name: Optional[str] = None) -> Any: ...
@dataclass_transform(field_specifiers=(field,))
class Struct:
__struct_fields__: ClassVar[Tuple[str, ...]]
__struct_config__: ClassVar[structs.StructConfig]
__match_args__: ClassVar[Tuple[str, ...]]
# A default __init__ so that Structs with unknown field types (say
# constructed by `defstruct`) won't error on every call to `__init__`
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
def __init_subclass__(
cls,
tag: Union[None, bool, str, int, Callable[[str], Union[str, int]]] = None,
tag_field: Union[None, str] = None,
rename: Union[
None,
Literal["lower", "upper", "camel", "pascal", "kebab"],
Callable[[str], Optional[str]],
Mapping[str, str],
] = None,
omit_defaults: bool = False,
forbid_unknown_fields: bool = False,
frozen: bool = False,
eq: bool = True,
order: bool = False,
kw_only: bool = False,
repr_omit_defaults: bool = False,
array_like: bool = False,
gc: bool = True,
weakref: bool = False,
dict: bool = False,
cache_hash: bool = False,
) -> None: ...
def __rich_repr__(
self,
) -> Iterable[Union[Any, Tuple[Any], Tuple[str, Any], Tuple[str, Any, Any]]]: ...
def defstruct(
name: str,
fields: Iterable[Union[str, Tuple[str, type], Tuple[str, type, Any]]],
*,
bases: Optional[Tuple[Type[Struct], ...]] = None,
module: Optional[str] = None,
namespace: Optional[Dict[str, Any]] = None,
tag: Union[None, bool, str, int, Callable[[str], Union[str, int]]] = None,
tag_field: Union[None, str] = None,
rename: Union[
None,
Literal["lower", "upper", "camel", "pascal", "kebab"],
Callable[[str], Optional[str]],
Mapping[str, str],
] = None,
omit_defaults: bool = False,
forbid_unknown_fields: bool = False,
frozen: bool = False,
eq: bool = True,
order: bool = False,
kw_only: bool = False,
repr_omit_defaults: bool = False,
array_like: bool = False,
gc: bool = True,
weakref: bool = False,
dict: bool = False,
cache_hash: bool = False,
) -> Type[Struct]: ...
# Lie and say `Raw` is a subclass of `bytes`, so mypy will accept it in most
# places where an object that implements the buffer protocol is valid
class Raw(bytes):
@overload
def __new__(cls) -> "Raw": ...
@overload
def __new__(cls, msg: Union[bytes, str]) -> "Raw": ...
def copy(self) -> "Raw": ...
class Meta:
def __init__(
self,
*,
gt: Union[int, float, None] = None,
ge: Union[int, float, None] = None,
lt: Union[int, float, None] = None,
le: Union[int, float, None] = None,
multiple_of: Union[int, float, None] = None,
pattern: Union[str, None] = None,
min_length: Union[int, None] = None,
max_length: Union[int, None] = None,
tz: Union[bool, None] = None,
title: Union[str, None] = None,
description: Union[str, None] = None,
examples: Union[list, None] = None,
extra_json_schema: Union[dict, None] = None,
extra: Union[dict, None] = None,
): ...
gt: Final[Union[int, float, None]]
ge: Final[Union[int, float, None]]
lt: Final[Union[int, float, None]]
le: Final[Union[int, float, None]]
multiple_of: Final[Union[int, float, None]]
pattern: Final[Union[str, None]]
min_length: Final[Union[int, None]]
max_length: Final[Union[int, None]]
tz: Final[Union[int, None]]
title: Final[Union[str, None]]
description: Final[Union[str, None]]
examples: Final[Union[list, None]]
extra_json_schema: Final[Union[dict, None]]
extra: Final[Union[dict, None]]
def __rich_repr__(self) -> Iterable[Tuple[str, Any]]: ...
def to_builtins(
obj: Any,
*,
str_keys: bool = False,
builtin_types: Union[Iterable[type], None] = None,
enc_hook: Optional[Callable[[Any], Any]] = None,
order: Literal[None, "deterministic", "sorted"] = None,
) -> Any: ...
@overload
def convert(
obj: Any,
type: Type[T],
*,
strict: bool = True,
from_attributes: bool = False,
dec_hook: Optional[Callable[[type, Any], Any]] = None,
builtin_types: Union[Iterable[type], None] = None,
str_keys: bool = False,
) -> T: ...
@overload
def convert(
obj: Any,
type: Any,
*,
strict: bool = True,
from_attributes: bool = False,
dec_hook: Optional[Callable[[type, Any], Any]] = None,
builtin_types: Union[Iterable[type], None] = None,
str_keys: bool = False,
) -> Any: ...
# TODO: deprecated
@overload
def from_builtins(
obj: Any,
type: Type[T],
*,
str_keys: bool = False,
str_values: bool = False,
builtin_types: Union[Iterable[type], None] = None,
dec_hook: Optional[Callable[[type, Any], Any]] = None,
) -> T: ...
@overload
def from_builtins(
obj: Any,
type: Any,
*,
str_keys: bool = False,
str_values: bool = False,
builtin_types: Union[Iterable[type], None] = None,
dec_hook: Optional[Callable[[type, Any], Any]] = None,
) -> Any: ...
class MsgspecError(Exception): ...
class EncodeError(MsgspecError): ...
class DecodeError(MsgspecError): ...
class ValidationError(DecodeError): ...
__version__: str