ó
    Eñi  ã                   ó`   • S SK r S SKrSSKJr  SSSSSS	.r       SS
 jrS rS rS rS r	g)é    Né   )Ú__ne__z==Ú<z<=Ú>z>=)ÚeqÚltÚleÚgtÚgec                 ó0  ^• S/[        5       / [        S.mSnSnU b  Sn[        SU 5      TS'   [        TS'   Ub  US	-  n[        S
U5      TS'   Ub  US	-  n[        SU5      TS'   Ub  US	-  n[        SU5      TS'   Ub  US	-  n[        SU5      TS'   [        R
                  " U[        40 U4S j5      n	U(       a  U	R                  R                  [        5        SUs=:  a  S:  a.  O  U	$ U(       d  Sn
[        U
5      e[        R                  " U	5      n	U	$ )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   FTr   Ú__eq__r   r   r   Ú__lt__r	   Ú__le__r
   Ú__gt__r   Ú__ge__c                 ó&   >• U R                  T5      $ ©N)Úupdate)ÚnsÚbodys    €ÚF/home/mande/repo/quber/.venv/lib/python3.13/site-packages/attr/_cmp.pyÚ<lambda>Úcmp_using.<locals>.<lambda>]   s   ø€ ¨b¯i©i¸¬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)r   r   r	   r
   r   Úrequire_same_typeÚ
class_nameÚnum_order_functionsÚhas_eq_functionÚtype_Úmsgr   s              @r   Ú	cmp_usingr1      sD  ø€ ð` �YÜ“LØÜ.ñ	€Dð ÐØ€Oà	�~ØˆÜ'¨¨bÓ1ˆˆX‰ÜˆˆX‰à	�~Ø˜qÑ ÐÜ'¨¨bÓ1ˆˆX‰à	�~Ø˜qÑ ÐÜ'¨¨bÓ1ˆˆX‰à	�~Ø˜qÑ ÐÜ'¨¨bÓ1ˆˆX‰à	�~Ø˜qÑ ÐÜ'¨¨bÓ1ˆˆX‰ä�OŠOØ”V�I˜rÔ#=ó€Eö
 Ø×Ñ×"Ñ"Ô#3Ô4ð 	ÐÕ" Õ"ð €Lö ð YˆCÜ˜S“/Ð!Ü×(Ò(¨Ó/ˆà€Lr   c                  ó   • S n U $ )z
Create __init__ method.
c                 ó   • Xl         g)z!
Initialize object with *value*.
N)r   )Úselfr   s     r   r   Ú_make_init.<locals>.__init__u   s	   € ð �
r   © )r   s    r   r!   r!   p   s   € ò
ð €Or   c                 óN   ^• U4S jnSU  S3Ul         S[        U     S3Ul        U$ )z
Create operator method.
c                 ó˜   >• U R                  U5      (       d  [        $ T" U R                  UR                  5      nU[        L a  [        $ U$ r   )r   ÚNotImplementedr   )r4   ÚotherÚresultÚfuncs      €r   ÚmethodÚ_make_operator.<locals>.methodƒ   sA   ø€ Ø×%Ñ% e×,Ñ,Ü!Ð!á�d—j‘j %§+¡+Ó.ˆØ”^Ò#Ü!Ð!àˆr   Ú__z	Return a z b.  Computed by attrs.)Ú__name__Ú_operation_namesÚ__doc__)Únamer<   r=   s    ` r   r"   r"   ~   s;   ø€ õ
ð ˜4˜& �m€F„Oà
Ô$ TÑ*Ð+Ð+BÐCð „Nð €Mr   c                 óF   ^ ^• [        UU 4S jT R                   5       5      $ )z0
Check whether `other` is comparable to `self`.
c              3   ó4   >#   • U  H  o" TT5      v •  M     g 7fr   r6   )Ú.0r<   r:   r4   s     €€r   Ú	<genexpr>Ú$_is_comparable_to.<locals>.<genexpr>™   s   øé € Ð@Ò-? Tˆt�D˜%× Ð Ò-?ùs   ƒ)Úallr   ©r4   r:   s   ``r   r   r   •   s   ù€ ô Õ@¨T×-?Ò-?Ó@Ó@Ð@r   c                 óZ   • UR                   R                  U R                   R                  L $ )zJ
Return True if *self* and *other* are of the same type, False otherwise.
)r   Ú	__class__rJ   s     r   r'   r'   œ   s#   € ð �;‰;× Ñ  D§J¡J×$8Ñ$8Ð8Ð8r   )NNNNNTÚ
Comparable)
r)   r#   Ú_maker   rA   r1   r!   r"   r   r'   r6   r   r   Ú<module>rO      sV   ðó Û å ð  c°¸SÈÑMÐ ð ØØØØØØô`òFòò.Aó9r   