
0c@_±  ã               @   s,   d  Z  d d l Z Gd d „  d e ƒ Z d S)zUtilities for defining models
é    Nc               @   sŽ   e  Z d  Z d Z d d g 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
    Ú_compare_keyÚ_defining_classc             C   s   | |  _  | |  _ d  S)N)r   r   )ÚselfÚkeyZdefining_class© r   ú9/tmp/pip-build-jynh7p1z/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   |  j  | t j ƒ S)N)Ú_compareÚoperatorÚ__lt__)r   Úotherr   r   r   r      s    zKeyBasedCompareMixin.__lt__c             C   s   |  j  | t j ƒ S)N)r   r   Ú__le__)r   r   r   r   r   r      s    zKeyBasedCompareMixin.__le__c             C   s   |  j  | t j ƒ S)N)r   r   Ú__gt__)r   r   r   r   r   r      s    zKeyBasedCompareMixin.__gt__c             C   s   |  j  | t j ƒ S)N)r   r   Ú__ge__)r   r   r   r   r   r      s    zKeyBasedCompareMixin.__ge__c             C   s   |  j  | t j ƒ S)N)r   r   Ú__eq__)r   r   r   r   r   r   "   s    zKeyBasedCompareMixin.__eq__c             C   s   |  j  | 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__Ú	__slots__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   