£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    `%                 @   sr   d dl mZmZmZ d dlZddlmZ ddlmZ dddd	d
dZ	dddZ
dd Zdd Zdd Zdd ZdS )    )absolute_importdivisionprint_functionN   )	new_class)_make_nez==<z<=>z>=)eqltlegtgeT
Comparablec       
         s  dgt  g td d}d}| dk	r>d}td|  d< t  d	< |dk	r\|d
7 }td| d< |dk	rz|d
7 }td| d< |dk	r|d
7 }td| d< |dk	r|d
7 }td| d< t|tfi  fdd}	|r|	jt d|  k rdk rn n|st	dt
|	}	|	S )a  
    Create a class that can be passed into `attr.ib`'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_tor   FNTr
   __eq____ne__r   r   __lt__r   __le__r   __gt__r   __ge__c                s
   |   S )N)update)ns)body :/opt/alt/python37/lib/python3.7/site-packages/attr/_cmp.py<lambda>Q       zcmp_using.<locals>.<lambda>   zDeq must be define is order to complete ordering from lt, le, gt, ge.)
_make_initr   _make_operatorr   r   objectr   append_check_same_type
ValueError	functoolstotal_ordering)
r
   r   r   r   r   Zrequire_same_type
class_nameZnum_order_functionsZhas_eq_functionZtype_r   )r   r   	cmp_using   s>    &

r,   c              C   s   dd } | S )z!
    Create __init__ method.
    c             S   s
   || _ dS )z1
        Initialize object with *value*.
        N)r   )selfr   r   r   r   r   j   s    z_make_init.<locals>.__init__r   )r   r   r   r   r#   e   s    r#   c                s,    fdd}d| f |_ dt|  f |_|S )z!
    Create operator method.
    c                s,   |  |stS  | j|j}|tkr(tS |S )N)r   NotImplementedr   )r-   otherresult)funcr   r   methodx   s    
z_make_operator.<locals>.methodz__%s__z"Return a %s b.  Computed by attrs.)__name___operation_names__doc__)namer1   r2   r   )r1   r   r$   s   s
    
r$   c             C   s"   x| j D ]}|| |sdS qW dS )z8
    Check whether `other` is comparable to `self`.
    FT)r   )r-   r/   r1   r   r   r   r      s    
r   c             C   s   |j j| j jkS )zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r   	__class__)r-   r/   r   r   r   r'      s    r'   )NNNNNTr   )Z
__future__r   r   r   r)   Z_compatr   _maker   r4   r,   r#   r$   r   r'   r   r   r   r   <module>   s         
R
