diff options
author | Nejc Habjan <nejc.habjan@siemens.com> | 2022-06-20 16:55:34 +0200 |
---|---|---|
committer | John Villalovos <john@sodarock.com> | 2022-06-20 10:33:49 -0700 |
commit | 1efb123f63eab57600228b75a1744f8787c16671 (patch) | |
tree | 8d635b96a95c0d79bbb4502b842a0757635371ef /gitlab | |
parent | 41ceaca1cdee6251beb453f22b7def3c95b279a5 (diff) | |
download | gitlab-1efb123f63eab57600228b75a1744f8787c16671.tar.gz |
fix(base): do not fail repr() on lazy objects
Diffstat (limited to 'gitlab')
-rw-r--r-- | gitlab/base.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gitlab/base.py b/gitlab/base.py index 6e7d5c5..205a0f2 100644 --- a/gitlab/base.py +++ b/gitlab/base.py @@ -162,15 +162,15 @@ class RESTObject: def __repr__(self) -> str: name = self.__class__.__name__ - if (self._id_attr and self._repr_attr) and (self._id_attr != self._repr_attr): + if (self._id_attr and self._repr_value) and (self._id_attr != self._repr_attr): return ( f"<{name} {self._id_attr}:{self.get_id()} " - f"{self._repr_attr}:{getattr(self, self._repr_attr)}>" + f"{self._repr_attr}:{self._repr_value}>" ) if self._id_attr: return f"<{name} {self._id_attr}:{self.get_id()}>" - if self._repr_attr: - return f"<{name} {self._repr_attr}:{getattr(self, self._repr_attr)}>" + if self._repr_value: + return f"<{name} {self._repr_attr}:{self._repr_value}>" return f"<{name}>" @@ -230,6 +230,13 @@ class RESTObject: return getattr(self, self._id_attr) @property + def _repr_value(self) -> Optional[str]: + """Safely returns the human-readable resource name if present.""" + if self._repr_attr is None or not hasattr(self, self._repr_attr): + return None + return getattr(self, self._repr_attr) + + @property def encoded_id(self) -> Optional[Union[int, str]]: """Ensure that the ID is url-encoded so that it can be safely used in a URL path""" |