Your IP : 3.145.12.100


Current Path : /opt/alt/python37/lib/python3.7/site-packages/attr/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/attr/__pycache__/_cmp.cpython-37.pyc

B

���`%�@srddlmZmZmZddlZddlmZddlmZdddd	d
d�Z	ddd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�)�absolute_import�division�print_functionN�)�	new_class)�_make_nez==�<z<=�>z>=)�eq�lt�le�gt�geT�
Comparablec
sdgt�gtd��d}d}|dk	r>d}td|��d<t��d	<|dk	r\|d
7}td|��d<|dk	rz|d
7}td
|��d<|dk	r�|d
7}td|��d<|dk	r�|d
7}td|��d<t|tfi�fdd��}	|r�|	j�t�d|kr�dk�rnn|�st	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_torFNTr
�__eq__�__ne__rr�__lt__r�__le__r
�__gt__r�__ge__cs
|���S)N)�update)�ns)�body��:/opt/alt/python37/lib/python3.7/site-packages/attr/_cmp.py�<lambda>Q�zcmp_using.<locals>.<lambda>�zDeq must be define is order to complete ordering from lt, le, gt, ge.)�
_make_initr�_make_operatorrr�objectr�append�_check_same_type�
ValueError�	functools�total_ordering)
r
rrr
rZrequire_same_type�
class_nameZnum_order_functionsZhas_eq_function�type_r)rr�	cmp_usings>&

r-cCsdd�}|S)z!
    Create __init__ method.
    cSs
||_dS)z1
        Initialize object with *value*.
        N)r)�selfrrrrrjsz_make_init.<locals>.__init__r)rrrrr#esr#cs,�fdd�}d|f|_dt|f|_|S)z!
    Create operator method.
    cs,|�|�stS�|j|j�}|tkr(tS|S)N)r�NotImplementedr)r.�other�result)�funcrr�methodxs
z_make_operator.<locals>.methodz__%s__z"Return a %s b.  Computed by attrs.)�__name__�_operation_names�__doc__)�namer2r3r)r2rr$ss

r$cCs"x|jD]}|||�sdSqWdS)z8
    Check whether `other` is comparable to `self`.
    FT)r)r.r0r2rrrr�s
rcCs|jj|jjkS)zR
    Return True if *self* and *other* are of the same type, False otherwise.
    )r�	__class__)r.r0rrrr'�sr')NNNNNTr)�
__future__rrrr)�_compatr�_makerr5r-r#r$rr'rrrr�<module>s
R

?>