XylotrechusZ
B
�>t`� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZm Z m
Z
mZ ddddddd dd dd d ddd ddddd
�dd�ZeZ
eeddd
�Zedddddddd dddd�dd�ZdS )zr
These are Python 3.6+-only and keyword-only APIs that call `attr.s` and
`attr.ib` with different default values.
� )�partial)�UnannotatedAttributeError� )�setters)�NOTHING�_frozen_setattrs�attrib�attrsNTF)�these�repr�hash�init�slots�frozen�weakref_slot�str�auto_attribs�kw_only�
cache_hash�auto_exc�eq�order�auto_detect�getstate_setstate�
on_setattr�field_transformerc sV �������� �
���
�����fdd��� ���fdd�}| dkrJ|S || �S dS )aD
The only behavioral differences are the handling of the *auto_attribs*
option:
:param Optional[bool] auto_attribs: If set to `True` or `False`, it behaves
exactly like `attr.s`. If left `None`, `attr.s` will try to guess:
1. If any attributes are annotated and no unannotated `attr.ib`\ s
are found, it assumes *auto_attribs=True*.
2. Otherwise it assumes *auto_attribs=False* and tries to collect
`attr.ib`\ s.
and that mutable classes (``frozen=False``) validate on ``__setattr__``.
.. versionadded:: 20.1.0
c s0 t | �����
���|� ����� d��
�d�S )NT)� maybe_clsr
r r r
r r r r r r r r r r r Zcollect_by_mror r r )r )�clsr )r r r r r r r r r
r r r r r r r
r � �?/opt/alt/python37/lib/python3.7/site-packages/attr/_next_gen.py�do_it5 s* zdefine.<locals>.do_itc s� �dt jfk}�dkr$�dkr$t j�x,| jD ]"}|jtkr,|rFtd��t j�P q,W � dk rd�| � �S y
�| d�S tk
r� �| d�S X dS )z�
Making this a wrapper ensures this code runs during class creation.
We also ensure that frozen-ness of classes is inherited.
NFz@Frozen classes can't use on_setattr (frozen-ness was inherited).T)r ZNO_OP�validate� __bases__�__setattr__r �
ValueErrorr )r Zhad_on_setattrZbase_cls)r r r r r r �wrapM s
zdefine.<locals>.wrapNr )r r
r r r
r r r r r r r r r r r r r r r% r )r r r r r r r r r r r
r r r r r r r
r r �define s
',%r&