Commit 06247973 by Marius Gedminas

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.
parent a2bc6b4b
......@@ -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:
......
......@@ -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')))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment