summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <hab.nejc@gmail.com>2021-04-21 21:04:40 +0200
committerGitHub <noreply@github.com>2021-04-21 21:04:40 +0200
commit60c5fd8878ff54f6e3fcd168545ab3af139f1dcc (patch)
tree89ab54d6e55775706e5cbaf496ad4ca485d90b13
parentdd236a09c6a3e01a11410791210a95dd6cee9b5a (diff)
parenta8e591f742f777f8747213b783271004e5acc74d (diff)
downloadgitlab-60c5fd8878ff54f6e3fcd168545ab3af139f1dcc.tar.gz
Merge pull request #1383 from spyoungtech/dirfix
fix(types): prevent __dir__ in RestObject from producing duplicates
-rw-r--r--gitlab/base.py2
-rw-r--r--gitlab/tests/test_base.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/gitlab/base.py b/gitlab/base.py
index 7b4e3f8..8f4e49b 100644
--- a/gitlab/base.py
+++ b/gitlab/base.py
@@ -133,7 +133,7 @@ class RESTObject(object):
return super(RESTObject, self) != other
def __dir__(self):
- return super(RESTObject, self).__dir__() + list(self.attributes)
+ return super(RESTObject, self).__dir__() | self.attributes.keys()
def __hash__(self) -> int:
if not self.get_id():
diff --git a/gitlab/tests/test_base.py b/gitlab/tests/test_base.py
index a0adcb0..6ca261d 100644
--- a/gitlab/tests/test_base.py
+++ b/gitlab/tests/test_base.py
@@ -135,6 +135,10 @@ class TestRESTObject:
assert {"foo": "foo"} == obj._attrs
assert {} == obj._updated_attrs
+ def test_dir_unique(self, fake_manager):
+ obj = FakeObject(fake_manager, {"manager": "foo"})
+ assert len(dir(obj)) == len(set(dir(obj)))
+
def test_create_managers(self, fake_gitlab, fake_manager):
class ObjectWithManager(FakeObject):
_managers = (("fakes", "FakeManager"),)