o
    h                     @   s2   d Z ddlZddlmZmZmZ G dd dZdS )zUtilities for defining models
    N)AnyCallableTypec                   @   s   e Zd ZdZddgZdeded  ddfdd	Zdefd
dZ	dede
fddZdede
fddZdede
fddZdede
fddZdede
fddZdedeeege
f de
fddZdS )KeyBasedCompareMixinz7Provides comparison capabilities that is based on a key_compare_key_defining_classkeydefining_classreturnNc                 C   s   || _ || _d S N)r   r   )selfr   r	    r   \/var/www/html/optinet_system/venv/lib/python3.10/site-packages/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__otherc                 C      |  |tjS r   )_compareoperator__lt__r   r   r   r   r   r         zKeyBasedCompareMixin.__lt__c                 C   r   r   )r   r   __le__r   r   r   r   r      r   zKeyBasedCompareMixin.__le__c                 C   r   r   )r   r   __gt__r   r   r   r   r      r   zKeyBasedCompareMixin.__gt__c                 C   r   r   )r   r   __ge__r   r   r   r   r      r   zKeyBasedCompareMixin.__ge__c                 C   r   r   )r   r   __eq__r   r   r   r   r       r   zKeyBasedCompareMixin.__eq__methodc                 C   s   t || jstS || j|jS r   )
isinstancer   NotImplementedr   )r   r   r   r   r   r   r   #   s   zKeyBasedCompareMixin._compare)__name__
__module____qualname____doc__	__slots__r   r   r   intr   boolr   r   r   r   r   r   r   r   r   r   r   r      s    &r   )r#   r   typingr   r   r   r   r   r   r   r   <module>   s    