§
    £”j  ã                   ó`   — 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é   )Ú__ne__z==ú<z<=ú>z>=)ÚeqÚltÚleÚgtÚgeTÚ
Comparablec                 óD  ‡— 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__r   r   r   Ú__lt__r	   Ú__le__r
   Ú__gt__r   Ú__ge__c                 ó.   •— |                       ‰¦  «        S ©N)Úupdate)ÚnsÚbodys    €úX/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/attr/_cmp.pyú<lambda>zcmp_using.<locals>.<lambda>]   s   ø€ ¨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)r   r   r	   r
   r   Úrequire_same_typeÚ
class_nameÚnum_order_functionsÚhas_eq_functionÚtype_Úmsgr   s              @r   Ú	cmp_usingr1      s�  ø€ ð` �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ð 	ÐÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"Ð"Øð 	"ð 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   )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    ` r   r"   r"   ~   sO   ø€ ð
ð ð ð ð ð $˜4�m�m�m€F„Oà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   r5   )Ú.0r;   r9   r4   s     €€r   ú	<genexpr>z$_is_comparable_to.<locals>.<genexpr>™   s/   øè è € Ð@Ð@ Tˆtˆt�D˜%Ñ Ô Ð@Ð@Ð@Ð@Ð@Ð@r   )Úallr   ©r4   r9   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__rG   s     r   r'   r'   œ   s   € ð Œ;Ô  D¤JÔ$8Ð8Ð8r   )NNNNNTr   )
r)   r#   Ú_maker   r?   r1   r!   r"   r   r'   r5   r   r   ú<module>rK      s½   ðð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð ð  c°¸SÈÐMÐMÐ ð ØØØØØØð`ð `ð `ð `ðFð ð ðð ð ð.Að Að Að9ð 9ð 9ð 9ð 9r   