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-38.pyc
U

��`%�@srddlmZmZmZddlZddlmZddlmZdddd	d
d�Z	ddd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�)�absolute_import�division�print_functionN�)�	new_class)�_make_nez==�<z<=�>z>=)�eq�lt�le�gt�geT�
Comparablec
sdgt�gtd��d}d}|dk	r>d}td|��d<t��d	<|dk	r\|d
7}td|��d<|dk	rz|d
7}td
|��d<|dk	r�|d
7}td|��d<|dk	r�|d
7}td|��d<t|tfi�fdd��}	|r�|	j�t�d|kr�dk�rnn|�st	d��t
�|	�}	|	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_torFNTr
�__eq__�__ne__rr�__lt__r�__le__r
�__gt__r�__ge__cs
|���S�N)�update)�ns��body��+/usr/lib/python3/dist-packages/attr/_cmp.py�<lambda>Q�zcmp_using.<locals>.<lambda>�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)
r
rrr
rZrequire_same_type�
class_nameZnum_order_functionsZhas_eq_function�type_r rr!�	cmp_usingsB&�
�
r/cCsdd�}|S)z!
    Create __init__ method.
    cSs
||_dS)z1
        Initialize object with *value*.
        N)r)�selfrr r r!rjsz_make_init.<locals>.__init__r )rr r r!r%esr%cs,�fdd�}d|f|_dt|f|_|S)z!
    Create operator method.
    cs,|�|�stS�|j|j�}|tkr(tS|Sr)r�NotImplementedr)r0�other�result��funcr r!�methodxs
z_make_operator.<locals>.methodz__%s__z"Return a %s b.  Computed by attrs.)�__name__�_operation_names�__doc__)�namer5r6r r4r!r&ss
�r&cCs |jD]}|||�sdSqdS)z8
    Check whether `other` is comparable to `self`.
    FT)r)r0r2r5r r r!r�s

rcCs|jj|jjkS)zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r�	__class__)r0r2r r r!r)�sr))NNNNNTr)�
__future__rrrr+�_compatr�_makerr8r/r%r&rr)r r r r!�<module>s �
Y