1 from typing import overload, Any, Callable, Dict, Generic, Iterable, List, Mapping, Optional, Tuple, Type, TypeVar, Union
\r
6 class _MISSING_TYPE: ...
\r
7 MISSING: _MISSING_TYPE
\r
9 def asdict(obj: Any, *, dict_factory: Callable[[List[Tuple[str, Any]]], _T] = ...) -> _T: ...
\r
11 def astuple(obj: Any, *, tuple_factory: Callable[[List[Any]], _T] = ...) -> _T: ...
\r
15 def dataclass(_cls: Type[_T]) -> Type[_T]: ...
\r
18 def dataclass(*, init: bool = ..., repr: bool = ..., eq: bool = ..., order: bool = ...,
\r
19 unsafe_hash: bool = ..., frozen: bool = ...) -> Callable[[Type[_T]], Type[_T]]: ...
\r
22 class Field(Generic[_T]):
\r
26 default_factory: Callable[[], _T]
\r
28 hash: Optional[bool]
\r
31 metadata: Optional[Mapping[str, Any]]
\r
34 # NOTE: Actual return type is 'Field[_T]', but we want to help type checkers
\r
35 # to understand the magic that happens at runtime.
\r
36 @overload # `default` and `default_factory` are optional and mutually exclusive.
\r
37 def field(*, default: _T,
\r
38 init: bool = ..., repr: bool = ..., hash: Optional[bool] = ..., compare: bool = ...,
\r
39 metadata: Optional[Mapping[str, Any]] = ...) -> _T: ...
\r
42 def field(*, default_factory: Callable[[], _T],
\r
43 init: bool = ..., repr: bool = ..., hash: Optional[bool] = ..., compare: bool = ...,
\r
44 metadata: Optional[Mapping[str, Any]] = ...) -> _T: ...
\r
48 init: bool = ..., repr: bool = ..., hash: Optional[bool] = ..., compare: bool = ...,
\r
49 metadata: Optional[Mapping[str, Any]] = ...) -> Any: ...
\r
52 def fields(class_or_instance: Any) -> Tuple[Field[Any], ...]: ...
\r
54 def is_dataclass(obj: Any) -> bool: ...
\r
56 class FrozenInstanceError(AttributeError): ...
\r
58 class InitVar(Generic[_T]): ...
\r
60 def make_dataclass(cls_name: str, fields: Iterable[Union[str, Tuple[str, type], Tuple[str, type, Field[Any]]]], *,
\r
61 bases: Tuple[type, ...] = ..., namespace: Optional[Dict[str, Any]] = ...,
\r
62 init: bool = ..., repr: bool = ..., eq: bool = ..., order: bool = ..., hash: bool = ..., frozen: bool = ...): ...
\r
64 def replace(obj: _T, **changes: Any) -> _T: ...
\r