
    g                     `    d dl Z d dlZddlmZ dddddd	Z	 	 	 	 	 	 	 ddZd Zd Zd Zd Z	dS )    N   )_make_nez==<z<=>z>=)eqltlegtgeT
Comparablec                 R   dgt                      g t          dd}d}| &d}t          d|           d<   t                      d	<   ||d
z  }t          d|          d<   ||d
z  }t          d|          d<   ||d
z  }t          d|          d<   ||d
z  }t          d|          d<   t	          j        |t          fi fd          }	|r|	j                            t                     d|cxk     rdk     r*n n'|sd}
t          |
          t          j        |	          }	|	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.

    Args:
        eq (typing.Callable | None):
            Callable used to evaluate equality of two objects.

        lt (typing.Callable | None):
            Callable used to evaluate whether one object is less than another
            object.

        le (typing.Callable | None):
            Callable used to evaluate whether one object is less than or equal
            to another object.

        gt (typing.Callable | None):
            Callable used to evaluate whether one object is greater than
            another object.

        ge (typing.Callable | None):
            Callable used to evaluate whether one object is greater than or
            equal to another object.

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

        class_name (str | None): Name of class. Defaults to "Comparable".

    See `comparison` for more details.

    .. versionadded:: 21.1.0
    value)	__slots____init___requirements_is_comparable_tor   FNTr   __eq____ne__r   r   __lt__r	   __le__r
   __gt__r   __ge__c                 .    |                                S N)update)nsbodys    U/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/attr/_cmp.py<lambda>zcmp_using.<locals>.<lambda>]   s    biioo        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)r   r   r	   r
   r   require_same_type
class_namenum_order_functionshas_eq_functiontype_msgr   s              @r   	cmp_usingr2      s   ` YLL.	 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VIr#=#=#=#= E
  5""#3444 	""""""""" 	" YCS//!(//Lr    c                      d } | S )z!
    Create __init__ method.
    c                     || _         dS )z1
        Initialize object with *value*.
        N)r   )selfr   s     r   r   z_make_init.<locals>.__init__u   s     


r     )r   s    r   r"   r"   p   s    
   Or    c                 T    fd}d|  d|_         dt          |           d|_        |S )z!
    Create operator method.
    c                     |                      |          st          S  | j        |j                  }|t          u rt          S |S r   )r   NotImplementedr   )r5   otherresultfuncs      r   methodz_make_operator.<locals>.method   sJ    %%e,, 	"!!dj%+..^##!!r    __z	Return a z b.  Computed by attrs.)__name___operation_names__doc__)namer<   r=   s    ` r   r#   r#   ~   sO    
     $4mmmFOC$T*CCC N Mr    c                 H     t           fd j        D                       S )z8
    Check whether `other` is comparable to `self`.
    c              3   0   K   | ]} |          V  d S r   r6   ).0r<   r:   r5   s     r   	<genexpr>z$_is_comparable_to.<locals>.<genexpr>   s/      @@TttD%  @@@@@@r    )allr   r5   r:   s   ``r   r   r      s/     @@@@@T-?@@@@@@r    c                 2    |j         j        | j         j        u S )zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r   	__class__rH   s     r   r(   r(      s     ; DJ$888r    )NNNNNTr   )
r*   r$   _maker   r@   r2   r"   r#   r   r(   r6   r    r   <module>rL      s               cSMM  ` ` ` `F    .A A A9 9 9 9 9r    