__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",}ifnamenotindunder_to_metadata:msg=f"module {mod_name} has no attribute {name}"raiseAttributeError(msg)importsysimportwarningsifsys.version_info<(3,8):fromimportlib_metadataimportmetadataelse:fromimportlib.metadataimportmetadataifnamenotin("__version__","__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")ifname=="__license__":return"MIT"ifname=="__copyright__":return"Copyright (c) 2015 Hynek Schlawack"ifnamein("__uri__","__url__"):returnmeta["Project-URL"].split(" ",1)[-1]ifname=="__version_info__":returnVersionInfo._from_version_string(meta["version"])ifname=="__author__":returnmeta["Author-email"].rsplit(" ",1)[0]ifname=="__email__":returnmeta["Author-email"].rsplit("<",1)[1][:-1]returnmeta[dunder_to_metadata[name]]return__getattr____getattr__=_make_getattr(__name__)