a [›ýf©ã@s2dZddlZddlmZmZmZGdd„dƒZdS)zUtilities for defining models éN)ÚAnyÚCallableÚTypec@sªeZdZdZddgZeedddœdd„Zedœd d „Z ee d œd d „Z ee d œdd„Z ee d œdd„Z ee d œdd„Zee d œdd„Zeeeege fe dœdd„ZdS)ÚKeyBasedCompareMixinz7Provides comparison capabilities that is based on a keyÚ _compare_keyÚ_defining_classN)ÚkeyÚdefining_classÚreturncCs||_||_dS©N)rr)Úselfrr ©r ú>/usr/lib/python3.9/site-packages/pip/_internal/utils/models.pyÚ__init__ szKeyBasedCompareMixin.__init__)r cCs t|jƒSr )Úhashr)r r r rÚ__hash__szKeyBasedCompareMixin.__hash__)Úotherr cCs| |tj¡Sr )Ú_compareÚoperatorÚ__lt__©r rr r rrszKeyBasedCompareMixin.__lt__cCs| |tj¡Sr )rrÚ__le__rr r rrszKeyBasedCompareMixin.__le__cCs| |tj¡Sr )rrÚ__gt__rr r rrszKeyBasedCompareMixin.__gt__cCs| |tj¡Sr )rrÚ__ge__rr r rrszKeyBasedCompareMixin.__ge__cCs| |tj¡Sr )rrÚ__eq__rr r rr szKeyBasedCompareMixin.__eq__)rÚmethodr cCst||jƒstS||j|jƒSr )Ú isinstancerÚNotImplementedr)r rrr r rr#s zKeyBasedCompareMixin._compare)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rrrÚintrÚboolrrrrrrrr r r rrsr)r!rÚtypingrrrrr r r rÚs