File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/attr/__pycache__/_next_gen.cpython-311.pyc
�
    � h  �                   �   � d Z ddlmZ ddlmZ ddlmZ ddlmZ	 ddl
mZmZm
Z
mZmZ ddlmZ 	 dd	d	d	d	d	d
dd
dd	ddd
d	dd
d	d	d	d
d�d
�ZeZ eed
d	��  �        Zed	d
d	d
d	d	d	d	dd	d	d	d	d�d�Zd
d	d	d�d�Zd
d	d�d�Zd	S )z]
These are keyword-only APIs that call `attr.s` and `attr.ib` with different
default values.
�    )�partial�   )�setters)�asdict)�astuple)�NOTHING�_frozen_setattrs�_ng_default_on_setattr�attrib�attrs)�UnannotatedAttributeErrorNTF)�these�repr�unsafe_hash�hash�init�slots�frozen�weakref_slot�str�auto_attribs�kw_only�
cache_hash�auto_exc�eq�order�auto_detect�getstate_setstate�
on_setattr�field_transformer�
match_argsc                �   ���������	�
���
��������� ��
��������������	���fd���
���fd�}| �|S  || �  �        S )a�  
    Define an *attrs* class.
    Differences to the classic `attr.s` that it uses underneath:
    - Automatically detect whether or not *auto_attribs* should be `True` (c.f.
      *auto_attribs* parameter).
    - If *frozen* is `False`, run converters and validators when setting an
      attribute by default.
    - *slots=True*
      .. caution::
         Usually this has only upsides and few visible effects in everyday
         programming. But it *can* lead to some suprising behaviors, so please
         make sure to read :term:`slotted classes`.
    - *auto_exc=True*
    - *auto_detect=True*
    - *order=False*
    - Some options that were only relevant on Python 2 or were kept around for
      backwards-compatibility have been removed.
    Please note that these are all defaults and you can change them as you
    wish.
    :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 `attrs.fields`\ s
          are found, it assumes *auto_attribs=True*.
       2. Otherwise it assumes *auto_attribs=False* and tries to collect
          `attrs.fields`\ s.
    For now, please refer to `attr.s` for the rest of the parameters.
    .. versionadded:: 20.1.0
    .. versionchanged:: 21.3.0 Converters are also run ``on_setattr``.
    .. versionadded:: 22.2.0
       *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
    c                 �   �� t          di d| �d��d��d�	�d��d�
�d��d��d	��d
��d|�d��d
��d��d��d��d��dd�d��d�
�d��d���S )N�	maybe_clsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   �collect_by_mroTr   r   r    r!   � )r   )�clsr   r   r   r   r   r    r   r   r   r   r   r!   r   r   r   r   r   r   r   r   s     ��������������������C/opt/cloudlinux/venv/lib/python3.11/site-packages/attr/_next_gen.py�do_itzdefine.<locals>.do_itY   s   �� �� 
� 
� 
��c�
��%�
� ��
� ��	
�
 $��
� ��
� �%�
� �6�
� &��
� ��
� &��
� �G�
� "�z�
� �X�
� �r�
�  �%�!
�"