o ÏEc©ã@s2dZddlZddlmZmZmZGdd„dƒZdS)zUtilities for defining models éN)ÚAnyÚCallableÚTypec@s¼eZdZdZddgZdededddfdd „Zdefd d „Z d ede fd d„Z d ede fdd„Z d ede fdd„Z d ede fdd„Zd ede fdd„Zd edeeege fde fdd„ZdS)ÚKeyBasedCompareMixinz7Provides comparison capabilities that is based on a keyÚ _compare_keyÚ_defining_classÚkeyÚdefining_classÚreturnNcCs||_||_dS©N)rr)Úselfrr ©r úM/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/utils/models.pyÚ__init__ s zKeyBasedCompareMixin.__init__cCs t|jƒSr )Úhashr)r r r rÚ__hash__s zKeyBasedCompareMixin.__hash__ÚothercCó| |tj¡Sr )Ú_compareÚoperatorÚ__lt__©r rr r rrózKeyBasedCompareMixin.__lt__cCrr )rrÚ__le__rr r rrrzKeyBasedCompareMixin.__le__cCrr )rrÚ__gt__rr r rrrzKeyBasedCompareMixin.__gt__cCrr )rrÚ__ge__rr r rrrzKeyBasedCompareMixin.__ge__cCrr )rrÚ__eq__rr r rr rzKeyBasedCompareMixin.__eq__ÚmethodcCst||jƒstS||j|jƒSr )Ú isinstancerÚNotImplementedr)r rrr r rr#s zKeyBasedCompareMixin._compare)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rrrÚintrÚboolrrrrrrrr r r rrs&r)r#rÚtypingrrrrr r r rÚs