Skip to content

Commit 4faff23

Browse files
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
1 parent e416810 commit 4faff23

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

github/GithubObject.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@ def __init__(self, requester, headers, attributes, completed):
286286
def __eq__(self, other):
287287
return other.__class__ is self.__class__ and other._url.value == self._url.value
288288

289+
def __hash__(self):
290+
return hash(self._url.value)
291+
289292
def __ne__(self, other):
290293
return not self == other
291294

tests/Equality.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,14 @@ class Equality(Framework.TestCase):
3030
def testUserEquality(self):
3131
u1 = self.g.get_user("jacquev6")
3232
u2 = self.g.get_user("jacquev6")
33-
self.assertTrue(u1 == u2)
34-
self.assertFalse(u1 != u2)
3533
self.assertEqual(u1, u2)
34+
self.assertEqual(hash(u1), hash(u2))
3635

3736
def testUserDifference(self):
3837
u1 = self.g.get_user("jacquev6")
3938
u2 = self.g.get_user("OddBloke")
40-
self.assertFalse(u1 == u2)
41-
self.assertTrue(u1 != u2)
4239
self.assertNotEqual(u1, u2)
40+
self.assertNotEqual(hash(u1), hash(u2))
4341

4442
def testBranchEquality(self):
4543
# Erf, equality of NonCompletableGithubObjects will be difficult to implement

0 commit comments

Comments
 (0)