diff options
author | Max Wittig <max.wittig@siemens.com> | 2019-02-22 13:12:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-22 13:12:04 +0100 |
commit | a4ea0fe6b91d856b30d25c9f0f71ef9cae8f3f08 (patch) | |
tree | 699a183bb6c71a29ef162cbdbbca21ae9cea039b /gitlab/base.py | |
parent | 57fa4e37aaf6ccee0d75085520f96fd15752a3df (diff) | |
parent | 3d60850aa42351a0bb0066ef579ade95df5a81ee (diff) | |
download | gitlab-a4ea0fe6b91d856b30d25c9f0f71ef9cae8f3f08.tar.gz |
Merge pull request #702 from jpiron/eq_hash
Implement __eq__ and __hash__ methods
Diffstat (limited to 'gitlab/base.py')
-rw-r--r-- | gitlab/base.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gitlab/base.py b/gitlab/base.py index 7324c31..c3da077 100644 --- a/gitlab/base.py +++ b/gitlab/base.py @@ -96,6 +96,16 @@ class RESTObject(object): else: return '<%s>' % self.__class__.__name__ + def __eq__(self, other): + if self.get_id() and other.get_id(): + return self.get_id() == other.get_id() + return super().__eq__(other) + + def __hash__(self): + if not self.get_id(): + return super().__hash__() + return hash(self.get_id()) + def _create_managers(self): managers = getattr(self, '_managers', None) if managers is None: @@ -112,7 +122,7 @@ class RESTObject(object): def get_id(self): """Returns the id of the resource.""" - if self._id_attr is None: + if self._id_attr is None or not hasattr(self, self._id_attr): return None return getattr(self, self._id_attr) |