HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/attr/__pycache__/_cmp.cpython-312.pyc
�

��`%��v�ddlmZmZmZddlZddlmZddlmZdddd	d
d�Z								dd�Z
d
�Zd�Zd�Z
d�Zy)�)�absolute_import�division�print_functionN�)�	new_class)�_make_nez==�<z<=�>z>=)�eq�lt�le�gt�gec��
�dgt�gtd��
d}d}|�d}td|��
d<t��
d<|�|d	z
}td
|��
d<|�|d	z
}td|��
d
<|�|d	z
}td|��
d<|�|d	z
}td|��
d<t	|t
fi�
fd��}	|r|	jjt�d|cxkrdkr&n|	S|std��tj|	�}	|	S)a�
    Create a class that can be passed into `attr.ib`'s ``eq``, ``order``, and
    ``cmp`` arguments to customize field comparison.

    The resulting class will have a full set of ordering methods if
    at least one of ``{lt, le, gt, ge}`` and ``eq``  are provided.

    :param Optional[callable] eq: `callable` used to evaluate equality
        of two objects.
    :param Optional[callable] lt: `callable` used to evaluate whether
        one object is less than another object.
    :param Optional[callable] le: `callable` used to evaluate whether
        one object is less than or equal to another object.
    :param Optional[callable] gt: `callable` used to evaluate whether
        one object is greater than another object.
    :param Optional[callable] ge: `callable` used to evaluate whether
        one object is greater than or equal to another object.

    :param bool require_same_type: When `True`, equality and ordering methods
        will return `NotImplemented` if objects are not of the same type.

    :param Optional[str] class_name: Name of class. Defaults to 'Comparable'.

    See `comparison` for more details.

    .. versionadded:: 21.1.0
    �value)�	__slots__�__init__�
_requirements�_is_comparable_torFTr�__eq__�__ne__rr�__lt__r
�__le__r�__gt__r�__ge__c�&��|j��S�N)�update)�ns�bodys ��+/usr/lib/python3/dist-packages/attr/_cmp.py�<lambda>zcmp_using.<locals>.<lambda>Qs
���B�I�I�d�O��zDeq must be define is order to complete ordering from lt, le, gt, ge.)�
_make_initr�_make_operatorrr�objectr�append�_check_same_type�
ValueError�	functools�total_ordering)rrr
rr�require_same_type�
class_name�num_order_functions�has_eq_function�type_r s          @r!�	cmp_usingr2sC���L�Y��L��.�	�D����O�	�~���'��b�1��X��!���X��	�~��q� ��'��b�1��X��	�~��q� ��'��b�1��X��	�~��q� ��'��b�1��X��	�~��q� ��'��b�1��X���j�6�)�R�1K�L�E��
���"�"�#3�4�	��"��"��L���"��
��(�(��/���Lr#c��d�}|S)z!
    Create __init__ method.
    c��||_y)z1
        Initialize object with *value*.
        N)r)�selfrs  r!rz_make_init.<locals>.__init__js����
r#�)rs r!r%r%es��
��Or#c�L���fd�}d|�d�|_dt|�d�|_|S)z!
    Create operator method.
    c���|j|�stS�|j|j�}|turtS|Sr)r�NotImplementedr)r5�other�result�funcs   �r!�methodz_make_operator.<locals>.methodxs>����%�%�e�,�!�!��d�j�j�%�+�+�.���^�#�!�!��
r#�__z	Return a z b.  Computed by attrs.)�__name__�_operation_names�__doc__)�namer<r=s ` r!r&r&ss,���
�#'�(�F�O�����F�N��Mr#c�<�|jD]
}|||�r�
yy)z8
    Check whether `other` is comparable to `self`.
    FT)r)r5r:r<s   r!rr�s&���"�"���D�%� ��#�r#c�Z�|jj|jjuS)zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r�	__class__)r5r:s  r!r)r)�s#���;�;� � �D�J�J�$8�$8�8�8r#)NNNNNT�
Comparable)�
__future__rrrr+�_compatr�_makerr@r2r%r&rr)r6r#r!�<module>rJsY��@�@�����c��S��M���������V�r��.�9r#