123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- import sys
- from typing import (
- Any,
- Callable,
- Mapping,
- Sequence,
- overload,
- TypeVar,
- )
- # Because we need to type our own stuff, we have to make everything from
- # attr explicitly public too.
- from attr import __author__ as __author__
- from attr import __copyright__ as __copyright__
- from attr import __description__ as __description__
- from attr import __email__ as __email__
- from attr import __license__ as __license__
- from attr import __title__ as __title__
- from attr import __url__ as __url__
- from attr import __version__ as __version__
- from attr import __version_info__ as __version_info__
- from attr import assoc as assoc
- from attr import Attribute as Attribute
- from attr import AttrsInstance as AttrsInstance
- from attr import cmp_using as cmp_using
- from attr import converters as converters
- from attr import Converter as Converter
- from attr import evolve as evolve
- from attr import exceptions as exceptions
- from attr import Factory as Factory
- from attr import fields as fields
- from attr import fields_dict as fields_dict
- from attr import filters as filters
- from attr import has as has
- from attr import make_class as make_class
- from attr import NOTHING as NOTHING
- from attr import resolve_types as resolve_types
- from attr import setters as setters
- from attr import validate as validate
- from attr import validators as validators
- from attr import attrib, asdict as asdict, astuple as astuple
- from attr import NothingType as NothingType
- if sys.version_info >= (3, 11):
- from typing import dataclass_transform
- else:
- from typing_extensions import dataclass_transform
- _T = TypeVar("_T")
- _C = TypeVar("_C", bound=type)
- _EqOrderType = bool | Callable[[Any], Any]
- _ValidatorType = Callable[[Any, "Attribute[_T]", _T], Any]
- _CallableConverterType = Callable[[Any], Any]
- _ConverterType = _CallableConverterType | Converter[Any, Any]
- _ReprType = Callable[[Any], str]
- _ReprArgType = bool | _ReprType
- _OnSetAttrType = Callable[[Any, "Attribute[Any]", Any], Any]
- _OnSetAttrArgType = _OnSetAttrType | list[_OnSetAttrType] | setters._NoOpType
- _FieldTransformer = Callable[
- [type, list["Attribute[Any]"]], list["Attribute[Any]"]
- ]
- # FIXME: in reality, if multiple validators are passed they must be in a list
- # or tuple, but those are invariant and so would prevent subtypes of
- # _ValidatorType from working when passed in a list or tuple.
- _ValidatorArgType = _ValidatorType[_T] | Sequence[_ValidatorType[_T]]
- @overload
- def field(
- *,
- default: None = ...,
- validator: None = ...,
- repr: _ReprArgType = ...,
- hash: bool | None = ...,
- init: bool = ...,
- metadata: Mapping[Any, Any] | None = ...,
- converter: None = ...,
- factory: None = ...,
- kw_only: bool = ...,
- eq: bool | None = ...,
- order: bool | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- alias: str | None = ...,
- type: type | None = ...,
- ) -> Any: ...
- # This form catches an explicit None or no default and infers the type from the
- # other arguments.
- @overload
- def field(
- *,
- default: None = ...,
- validator: _ValidatorArgType[_T] | None = ...,
- repr: _ReprArgType = ...,
- hash: bool | None = ...,
- init: bool = ...,
- metadata: Mapping[Any, Any] | None = ...,
- converter: _ConverterType
- | list[_ConverterType]
- | tuple[_ConverterType]
- | None = ...,
- factory: Callable[[], _T] | None = ...,
- kw_only: bool = ...,
- eq: _EqOrderType | None = ...,
- order: _EqOrderType | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- alias: str | None = ...,
- type: type | None = ...,
- ) -> _T: ...
- # This form catches an explicit default argument.
- @overload
- def field(
- *,
- default: _T,
- validator: _ValidatorArgType[_T] | None = ...,
- repr: _ReprArgType = ...,
- hash: bool | None = ...,
- init: bool = ...,
- metadata: Mapping[Any, Any] | None = ...,
- converter: _ConverterType
- | list[_ConverterType]
- | tuple[_ConverterType]
- | None = ...,
- factory: Callable[[], _T] | None = ...,
- kw_only: bool = ...,
- eq: _EqOrderType | None = ...,
- order: _EqOrderType | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- alias: str | None = ...,
- type: type | None = ...,
- ) -> _T: ...
- # This form covers type=non-Type: e.g. forward references (str), Any
- @overload
- def field(
- *,
- default: _T | None = ...,
- validator: _ValidatorArgType[_T] | None = ...,
- repr: _ReprArgType = ...,
- hash: bool | None = ...,
- init: bool = ...,
- metadata: Mapping[Any, Any] | None = ...,
- converter: _ConverterType
- | list[_ConverterType]
- | tuple[_ConverterType]
- | None = ...,
- factory: Callable[[], _T] | None = ...,
- kw_only: bool = ...,
- eq: _EqOrderType | None = ...,
- order: _EqOrderType | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- alias: str | None = ...,
- type: type | None = ...,
- ) -> Any: ...
- @overload
- @dataclass_transform(field_specifiers=(attrib, field))
- def define(
- maybe_cls: _C,
- *,
- these: dict[str, Any] | None = ...,
- repr: bool = ...,
- unsafe_hash: bool | None = ...,
- hash: bool | None = ...,
- init: bool = ...,
- slots: bool = ...,
- frozen: bool = ...,
- weakref_slot: bool = ...,
- str: bool = ...,
- auto_attribs: bool = ...,
- kw_only: bool = ...,
- cache_hash: bool = ...,
- auto_exc: bool = ...,
- eq: bool | None = ...,
- order: bool | None = ...,
- auto_detect: bool = ...,
- getstate_setstate: bool | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- field_transformer: _FieldTransformer | None = ...,
- match_args: bool = ...,
- ) -> _C: ...
- @overload
- @dataclass_transform(field_specifiers=(attrib, field))
- def define(
- maybe_cls: None = ...,
- *,
- these: dict[str, Any] | None = ...,
- repr: bool = ...,
- unsafe_hash: bool | None = ...,
- hash: bool | None = ...,
- init: bool = ...,
- slots: bool = ...,
- frozen: bool = ...,
- weakref_slot: bool = ...,
- str: bool = ...,
- auto_attribs: bool = ...,
- kw_only: bool = ...,
- cache_hash: bool = ...,
- auto_exc: bool = ...,
- eq: bool | None = ...,
- order: bool | None = ...,
- auto_detect: bool = ...,
- getstate_setstate: bool | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- field_transformer: _FieldTransformer | None = ...,
- match_args: bool = ...,
- ) -> Callable[[_C], _C]: ...
- mutable = define
- @overload
- @dataclass_transform(frozen_default=True, field_specifiers=(attrib, field))
- def frozen(
- maybe_cls: _C,
- *,
- these: dict[str, Any] | None = ...,
- repr: bool = ...,
- unsafe_hash: bool | None = ...,
- hash: bool | None = ...,
- init: bool = ...,
- slots: bool = ...,
- frozen: bool = ...,
- weakref_slot: bool = ...,
- str: bool = ...,
- auto_attribs: bool = ...,
- kw_only: bool = ...,
- cache_hash: bool = ...,
- auto_exc: bool = ...,
- eq: bool | None = ...,
- order: bool | None = ...,
- auto_detect: bool = ...,
- getstate_setstate: bool | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- field_transformer: _FieldTransformer | None = ...,
- match_args: bool = ...,
- ) -> _C: ...
- @overload
- @dataclass_transform(frozen_default=True, field_specifiers=(attrib, field))
- def frozen(
- maybe_cls: None = ...,
- *,
- these: dict[str, Any] | None = ...,
- repr: bool = ...,
- unsafe_hash: bool | None = ...,
- hash: bool | None = ...,
- init: bool = ...,
- slots: bool = ...,
- frozen: bool = ...,
- weakref_slot: bool = ...,
- str: bool = ...,
- auto_attribs: bool = ...,
- kw_only: bool = ...,
- cache_hash: bool = ...,
- auto_exc: bool = ...,
- eq: bool | None = ...,
- order: bool | None = ...,
- auto_detect: bool = ...,
- getstate_setstate: bool | None = ...,
- on_setattr: _OnSetAttrArgType | None = ...,
- field_transformer: _FieldTransformer | None = ...,
- match_args: bool = ...,
- ) -> Callable[[_C], _C]: ...
|