# SPDX-License-Identifier: MIT """ Classes Without Boilerplate """ from functools import partial from typing import Callable 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, evolve, has, resolve_types from ._make import ( NOTHING, Attribute, Factory, attrib, attrs, 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: pass __all__ = [ "Attribute", "AttrsInstance", "Factory", "NOTHING", "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: dunder_to_metadata = { "__title__": "Name", "__copyright__": "", "__version__": "version", "__version_info__": "version", "__description__": "summary", "__uri__": "", "__url__": "", "__author__": "", "__email__": "", "__license__": "license", } if name not in dunder_to_metadata.keys(): raise AttributeError(f"module {mod_name} has no attribute {name}") import sys import warnings if sys.version_info < (3, 8): from importlib_metadata import metadata else: from importlib.metadata import metadata if name != "__version_info__": warnings.warn( f"Accessing {mod_name}.{name} is deprecated and will be " "removed in a future release. Use importlib.metadata directly " "to query for attrs's packaging metadata.", DeprecationWarning, stacklevel=2, ) meta = metadata("attrs") if name == "__license__": return "MIT" elif name == "__copyright__": return "Copyright (c) 2015 Hynek Schlawack" elif name in ("__uri__", "__url__"): return meta["Project-URL"].split(" ", 1)[-1] elif name == "__version_info__": return VersionInfo._from_version_string(meta["version"]) elif name == "__author__": return meta["Author-email"].rsplit(" ", 1)[0] elif name == "__email__": return meta["Author-email"].rsplit("<", 1)[1][:-1] return meta[dunder_to_metadata[name]] return __getattr__ __getattr__ = _make_getattr(__name__)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 3.17 KB | 0644 |
|
__init__.pyi | File | 17.2 KB | 0644 |
|
_cmp.py | File | 4 KB | 0644 |
|
_cmp.pyi | File | 399 B | 0644 |
|
_compat.py | File | 5.67 KB | 0644 |
|
_config.py | File | 826 B | 0644 |
|
_funcs.py | File | 16.34 KB | 0644 |
|
_make.py | File | 94.71 KB | 0644 |
|
_next_gen.py | File | 6.12 KB | 0644 |
|
_typing_compat.pyi | File | 469 B | 0644 |
|
_version_info.py | File | 2.07 KB | 0644 |
|
_version_info.pyi | File | 209 B | 0644 |
|
converters.py | File | 3.52 KB | 0644 |
|
converters.pyi | File | 406 B | 0644 |
|
exceptions.py | File | 1.85 KB | 0644 |
|
exceptions.pyi | File | 539 B | 0644 |
|
filters.py | File | 1.44 KB | 0644 |
|
filters.pyi | File | 225 B | 0644 |
|
py.typed | File | 0 B | 0644 |
|
setters.py | File | 1.37 KB | 0644 |
|
setters.pyi | File | 567 B | 0644 |
|
validators.py | File | 20.22 KB | 0644 |
|
validators.pyi | File | 2.52 KB | 0644 |
|