You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
# 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__)
 |