From 4faff23ce9eab00c451ffdd842686781e8a1b4eb Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Mon, 26 Apr 2021 14:24:00 +1000 Subject: [PATCH] Implement hash for CompletableGithubObject (#1922) Since CompletableGithubObject already uses its URL attribute to implement equality, extend it to also use that attribute for hashing. Fixes #1826 --- github/GithubObject.py | 3 +++ tests/Equality.py | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/github/GithubObject.py b/github/GithubObject.py index 21705e66..ae8ea0d1 100644 --- a/github/GithubObject.py +++ b/github/GithubObject.py @@ -286,6 +286,9 @@ class CompletableGithubObject(GithubObject): def __eq__(self, other): return other.__class__ is self.__class__ and other._url.value == self._url.value + def __hash__(self): + return hash(self._url.value) + def __ne__(self, other): return not self == other diff --git a/tests/Equality.py b/tests/Equality.py index ed2d01b7..9006a4de 100755 --- a/tests/Equality.py +++ b/tests/Equality.py @@ -30,16 +30,14 @@ class Equality(Framework.TestCase): def testUserEquality(self): u1 = self.g.get_user("jacquev6") u2 = self.g.get_user("jacquev6") - self.assertTrue(u1 == u2) - self.assertFalse(u1 != u2) self.assertEqual(u1, u2) + self.assertEqual(hash(u1), hash(u2)) def testUserDifference(self): u1 = self.g.get_user("jacquev6") u2 = self.g.get_user("OddBloke") - self.assertFalse(u1 == u2) - self.assertTrue(u1 != u2) self.assertNotEqual(u1, u2) + self.assertNotEqual(hash(u1), hash(u2)) def testBranchEquality(self): # Erf, equality of NonCompletableGithubObjects will be difficult to implement