B
    ãUvg  ã               @   s    d Z ddlZG dd„ deƒZdS )zUtilities for defining models
é    Nc               @   sX   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚKeyBasedCompareMixinz=Provides comparision capabilities that is based on a key
    c             C   s   || _ || _d S )N)Ú_compare_keyÚ_defining_class)ÚselfÚkeyÚdefining_class© r   ú;/tmp/pip-install-r_9ig3yj/pip/pip/_internal/utils/models.pyÚ__init__   s    zKeyBasedCompareMixin.__init__c             C   s
   t | jƒS )N)Úhashr   )r   r   r   r	   Ú__hash__   s    zKeyBasedCompareMixin.__hash__c             C   s   |   |tj¡S )N)Ú_compareÚoperatorÚ__lt__)r   Úotherr   r   r	   r      s    zKeyBasedCompareMixin.__lt__c             C   s   |   |tj¡S )N)r   r   Ú__le__)r   r   r   r   r	   r      s    zKeyBasedCompareMixin.__le__c             C   s   |   |tj¡S )N)r   r   Ú__gt__)r   r   r   r   r	   r      s    zKeyBasedCompareMixin.__gt__c             C   s   |   |tj¡S )N)r   r   Ú__ge__)r   r   r   r   r	   r      s    zKeyBasedCompareMixin.__ge__c             C   s   |   |tj¡S )N)r   r   Ú__eq__)r   r   r   r   r	   r      s    zKeyBasedCompareMixin.__eq__c             C   s   |   |tj¡S )N)r   r   Ú__ne__)r   r   r   r   r	   r   !   s    zKeyBasedCompareMixin.__ne__c             C   s   t || jƒstS || j|jƒS )N)Ú
isinstancer   ÚNotImplementedr   )r   r   Úmethodr   r   r	   r   $   s    zKeyBasedCompareMixin._compareN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r   r   r   r   r   r   r   r   r   r	   r      s   r   )r   r   Úobjectr   r   r   r   r	   Ú<module>   s   