U
    g	                  "   @   sn  d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ dd
l%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ e Z,Z-e Z.Z/eeddZ0G dd deZ1eej Z2dddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g"Z3e4ed1d2d3Z5e5e6Z7d4S )5z
Classes Without Boilerplate
    )partial)CallableLiteralProtocol   )
converters
exceptionsfilterssetters
validators)	cmp_using)get_run_validatorsset_run_validators)asdictassocastuplehasresolve_types)NOTHING	Attribute	ConverterFactory_Nothingattribattrsevolvefieldsfields_dict
make_classvalidate)definefieldfrozenmutable)VersionInfoT)Zauto_attribsc                   @   s   e Zd ZdS )AttrsInstanceN)__name__
__module____qualname__ r)   r)   1/tmp/pip-unpacked-wheel-4g8m5gbg/attr/__init__.pyr%   %   s   r%   r   r   r   r   NothingTyper   r   r   attrr   
attributesr   r   r   r    r   r   r!   r   r   r	   r"   r   r   ibr   r#   r   sr   r
   r   r   )mod_namereturnc                    s   t t d fdd}|S )zp
    Create a metadata proxy for packaging information that uses *mod_name* in
    its warnings and errors.
    )namer1   c                    sR   | dkr d  d|  }t |ddlm} |d}| dkrJt|d S |d S )	N)__version____version_info__zmodule z has no attribute r   )metadatar   r4   version)AttributeErrorimportlib.metadatar5   r$   Z_from_version_string)r2   msgr5   metar0   r)   r*   __getattr__W   s    z"_make_getattr.<locals>.__getattr__)str)r0   r<   r)   r;   r*   _make_getattrQ   s    r>   N)8__doc__	functoolsr   typingr   r   r    r   r   r	   r
   r   Z_cmpr   _configr   r   Z_funcsr   r   r   r   r   _maker   r   r   r   r   r   r   r   r   r   r   r   Z	_next_genr    r!   r"   r#   Z_version_infor$   r/   r-   r.   r,   Z	dataclassr%   r+   __all__r=   r>   r&   r<   r)   r)   r)   r*   <module>   sf   8
&