U
    e|                     @   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 comparison capabilities that is based on a key
    c                 C   s   || _ || _d S N)_compare_key_defining_class)selfkeydefining_class r	   >/tmp/pip-unpacked-wheel-indi3crb/pip/_internal/utils/models.py__init__   s    zKeyBasedCompareMixin.__init__c                 C   s
   t | jS r   )hashr   )r   r	   r	   r
   __hash__   s    zKeyBasedCompareMixin.__hash__c                 C   s   |  |tjS r   )_compareoperator__lt__r   otherr	   r	   r
   r      s    zKeyBasedCompareMixin.__lt__c                 C   s   |  |tjS r   )r   r   __le__r   r	   r	   r
   r      s    zKeyBasedCompareMixin.__le__c                 C   s   |  |tjS r   )r   r   __gt__r   r	   r	   r
   r      s    zKeyBasedCompareMixin.__gt__c                 C   s   |  |tjS r   )r   r   __ge__r   r	   r	   r
   r      s    zKeyBasedCompareMixin.__ge__c                 C   s   |  |tjS r   )r   r   __eq__r   r	   r	   r
   r       s    zKeyBasedCompareMixin.__eq__c                 C   s   |  |tjS r   )r   r   __ne__r   r	   r	   r
   r   #   s    zKeyBasedCompareMixin.__ne__c                 C   s   t || jstS || j|jS r   )
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   