3 šig©ã@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 ú9/tmp/pip-build-88gy_88q/pip/pip/_internal/utils/models.pyÚ__init__ szKeyBasedCompareMixin.__init__)r cCs t|jƒS)N)Úhashr)r r r r Ú__hash__szKeyBasedCompareMixin.__hash__)Úotherr cCs|j|tjƒS)N)Ú_compareÚoperatorÚ__lt__)r rr r r rszKeyBasedCompareMixin.__lt__cCs|j|tjƒS)N)rrÚ__le__)r rr r r rszKeyBasedCompareMixin.__le__cCs|j|tjƒS)N)rrÚ__gt__)r rr r r rszKeyBasedCompareMixin.__gt__cCs|j|tjƒS)N)rrÚ__ge__)r rr r r rszKeyBasedCompareMixin.__ge__cCs|j|tjƒS)N)rrÚ__eq__)r rr r r r szKeyBasedCompareMixin.__eq__)rÚmethodr cCst||jƒstS||j|jƒS)N)Ú isinstancerÚNotImplementedr)r rrr r r r#s zKeyBasedCompareMixin._compare)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rrrÚintrÚboolrrrrrrrr r r r rsr)rrZtypingrrrrr r r r Ús