From c4d7b10e5cca4c0eeba3244353173d973d3bb031 Mon Sep 17 00:00:00 2001 From: Guoshuai Li Date: Tue, 2 May 2017 18:38:36 +0800 Subject: [PATCH] Fix the object is unhashable when inheriting the class "ComparableVersionedObject" In python3, A class that overrides __eq__() and does not define "__hash__()" will have its __hash__() implicitly set to None. This will cause the set method to unhashable failed. https://docs.python.org/3/reference/datamodel.html#object.__hash__ Change-Id: I21685303e9bd233241b7b4216e3feb7bdaecc0a4 Closes-Bug: #1687592 --- oslo_versionedobjects/base.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/oslo_versionedobjects/base.py b/oslo_versionedobjects/base.py index 7df5e52..6881193 100644 --- a/oslo_versionedobjects/base.py +++ b/oslo_versionedobjects/base.py @@ -706,6 +706,9 @@ class ComparableVersionedObject(object): return self.obj_to_primitive() == obj.obj_to_primitive() return NotImplemented + def __hash__(self): + return super(ComparableVersionedObject, self).__hash__() + def __ne__(self, obj): if hasattr(obj, 'obj_to_primitive'): return self.obj_to_primitive() != obj.obj_to_primitive() -- GitLab