Bugfix: if you define a custom __eq__, you must define a __hash__ too

Also, on Python 3 the stock object.__hash__ raises an error ("unhashable
type"), and we have code that uses Host instances as dict keys.
This commit is contained in:
Marius Gedminas 2015-09-24 12:46:06 +03:00
parent a2bc6b4b26
commit 0624797375
2 changed files with 6 additions and 0 deletions

View file

@ -41,6 +41,9 @@ class Host:
def __ne__(self, other):
return not self.__eq__(other)
def __hash__(self):
return hash(self.name)
def serialize(self):
groups = []
for group in self.groups:

View file

@ -33,3 +33,6 @@ class TestHost(unittest.TestCase):
# __ne__ is a separate method
self.assertFalse(self.hostA != Host('a'))
def test_hashability(self):
# equality implies the hash values are the same
self.assertEqual(hash(self.hostA), hash(Host('a')))