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: //home/arjun/projects/env/lib/python3.10/site-packages/attr/__pycache__/_cmp.cpython-310.pyc
o

"we�@shddlZddlZddlmZdddddd	�Z						
	ddd
�Zdd�Zdd�Zdd�Zdd�Z	dS)�N�)�_make_nez==�<z<=�>z>=)�eq�lt�le�gt�geT�
Comparablec
sdgt�gtd��d}d}|durd}td|��d<t��d	<|dur.|d
7}td|��d<|dur=|d
7}td
|��d<|durL|d
7}td|��d<|dur[|d
7}td|��d<t�|tfi�fdd��}	|rp|	j�t	�d|krzdkr�n|	S|s�t
d��t�|	�}	|	S)a�
    Create a class that can be passed into `attrs.field`'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��B/home/arjun/projects/env/lib/python3.10/site-packages/attr/_cmp.py�<lambda>Ss
zcmp_using.<locals>.<lambda>�zDeq must be define is order to complete ordering from lt, le, gt, ge.)
�
_make_initr�_make_operatorr�types�	new_class�objectr�append�_check_same_type�
ValueError�	functools�total_ordering)
rrrr	r
�require_same_type�
class_name�num_order_functions�has_eq_function�type_rrr�	cmp_using
sH&�
�
��
r/cCsdd�}|S)z!
    Create __init__ method.
    cSs
||_dS)z1
        Initialize object with *value*.
        N)r)�selfrrrrrms
z_make_init.<locals>.__init__r)rrrrr hsr cs0�fdd�}d|�d�|_dt|�d�|_|S)z!
    Create operator method.
    cs,|�|�stS�|j|j�}|turtS|Sr)r�NotImplementedr)r0�other�result��funcrr�method{s
z_make_operator.<locals>.method�__z	Return a z b.  Computed by attrs.)�__name__�_operation_names�__doc__)�namer5r6rr4rr!vs

�r!cCs |jD]
}|||�s
dSqdS)z8
    Check whether `other` is comparable to `self`.
    FT)r)r0r2r5rrrr�s


�rcCs|jj|jjuS)zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r�	__class__)r0r2rrrr&�sr&)NNNNNTr)
r(r"�_makerr9r/r r!rr&rrrr�<module>s 
�[