�
ʺh��`�ddlZddlZddlmZdddddd �Z dd�Zd
�Zd�Zd�Zd�Z dS)�N�)�_make_nez==�<z<=�>z>=)�eq�lt�le�gt�geT�
Comparablec�N�
�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 j|tfi�
fd���} |r| j�t��d|cxkrdkr(nn%|std���tj| ��} | 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__c�.��|����S�N)�update)�ns�bodys ��i/builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib/python3.11/site-packages/attr/_cmp.py�<lambda>zcmp_using.<locals>.<lambda>Ss���b�i�i��o�o���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)rrr r
r�require_same_type�
class_name�num_order_functions�has_eq_function�type_rs @r� cmp_usingr1
s����L�Y��L�L��.� ��D����O� �~���'��b�1�1��X��!����X�� �~��q� ��'��b�1�1��X�� �~��q� ��'��b�1�1��X�� �~��q� ��'��b�1�1��X�� �~��q� ��'��b�1�1��X���O��V�I�r�#=�#=�#=�#=�
�
�E�
�5�
��"�"�#3�4�4�4� ��"�"�"�"��"�"�"�"�"�� ��"���
��(��/�/���Lr c��d�}|S)z!
Create __init__ method.
c��||_dS)z1
Initialize object with *value*.
N)r)�selfrs rrz_make_init.<locals>.__init__ms����
�
�
r �)rs rr"r"hs��
����Or c�T���fd�}d|�d�|_dt|�d�|_|S)z!
Create operator method.
c���|�|��stS�|j|j��}|turtS|Sr)r�NotImplementedr)r4�other�result�funcs �r�methodz_make_operator.<locals>.method{sJ����%�%�e�,�,� "�!�!���d�j�%�+�.�.���^�#�#�!�!��
r �__z Return a z b. Computed by attrs.)�__name__�_operation_names�__doc__)�namer;r<s ` rr#r#vsO���
�����$�4�m�m�m�F�O�C�$�T�*�C�C�C��N��Mr c�8�|jD]}|||��sdS�dS)z8
Check whether `other` is comparable to `self`.
FT)r)r4r9r;s rrr�s;���"�����t�D�%� � � ��5�5� ��4r c�2�|jj|jjuS)zR
Return True if *self* and *other* are of the same type, False otherwise.
)r� __class__)r4r9s rr(r(�s���;� �D�J�$8�8�8r )NNNNNTr)
r*r$�_makerr?r1r"r#rr(r5r r�<module>rFs������������������c��S��M�M���������X�X�X�X�v������.���9�9�9�9�9r |