1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
| # 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__)
|
|