| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # SPDX-License-Identifier: MIT
- """
- Classes Without Boilerplate
- """
- from functools import partial
- from typing import Callable, Literal, Protocol
- from . import converters, exceptions, filters, setters, validators
- from ._cmp import cmp_using
- from ._config import get_run_validators, set_run_validators
- from ._funcs import asdict, assoc, astuple, has, resolve_types
- from ._make import (
- NOTHING,
- Attribute,
- Converter,
- Factory,
- _Nothing,
- attrib,
- attrs,
- evolve,
- fields,
- fields_dict,
- make_class,
- validate,
- )
- from ._next_gen import define, field, frozen, mutable
- from ._version_info import VersionInfo
- s = attributes = attrs
- ib = attr = attrib
- dataclass = partial(attrs, auto_attribs=True) # happy Easter ;)
- class AttrsInstance(Protocol):
- pass
- NothingType = Literal[_Nothing.NOTHING]
- __all__ = [
- "NOTHING",
- "Attribute",
- "AttrsInstance",
- "Converter",
- "Factory",
- "NothingType",
- "asdict",
- "assoc",
- "astuple",
- "attr",
- "attrib",
- "attributes",
- "attrs",
- "cmp_using",
- "converters",
- "define",
- "evolve",
- "exceptions",
- "field",
- "fields",
- "fields_dict",
- "filters",
- "frozen",
- "get_run_validators",
- "has",
- "ib",
- "make_class",
- "mutable",
- "resolve_types",
- "s",
- "set_run_validators",
- "setters",
- "validate",
- "validators",
- ]
- def _make_getattr(mod_name: str) -> Callable:
- """
- Create a metadata proxy for packaging information that uses *mod_name* in
- its warnings and errors.
- """
- def __getattr__(name: str) -> str:
- if name not in ("__version__", "__version_info__"):
- msg = f"module {mod_name} has no attribute {name}"
- raise AttributeError(msg)
- from importlib.metadata import metadata
- meta = metadata("attrs")
- if name == "__version_info__":
- return VersionInfo._from_version_string(meta["version"])
- return meta["version"]
- return __getattr__
- __getattr__ = _make_getattr(__name__)
|