summaryrefslogtreecommitdiff
path: root/gitlab/base.py
diff options
context:
space:
mode:
authorJohn L. Villalovos <john@sodarock.com>2021-05-31 10:47:03 -0700
committerJohn L. Villalovos <john@sodarock.com>2021-06-10 07:39:58 -0700
commitc7bcc25a361f9df440f9c972672e5eec3b057625 (patch)
treede9bc431060437fe259115c920c67389a0cccb5f /gitlab/base.py
parent161bb0bf1684374ed01c4e3bc8ebc2f5afe7546b (diff)
downloadgitlab-c7bcc25a361f9df440f9c972672e5eec3b057625.tar.gz
fix: catch invalid type used to initialize RESTObject
Sometimes we have errors where we don't get a dictionary passed to RESTObject.__init__() method. This breaks things but in confusing ways. Check in the __init__() method and raise an exception if it occurs.
Diffstat (limited to 'gitlab/base.py')
-rw-r--r--gitlab/base.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/gitlab/base.py b/gitlab/base.py
index 689b68c..bea1901 100644
--- a/gitlab/base.py
+++ b/gitlab/base.py
@@ -20,6 +20,7 @@ from types import ModuleType
from typing import Any, Dict, Iterable, NamedTuple, Optional, Tuple, Type
from gitlab import types as g_types
+from gitlab.exceptions import GitlabParsingError
from .client import Gitlab, GitlabList
@@ -51,6 +52,12 @@ class RESTObject(object):
manager: "RESTManager"
def __init__(self, manager: "RESTManager", attrs: Dict[str, Any]) -> None:
+ if not isinstance(attrs, dict):
+ raise GitlabParsingError(
+ "Attempted to initialize RESTObject with a non-dictionary value: "
+ "{!r}\nThis likely indicates an incorrect or malformed server "
+ "response.".format(attrs)
+ )
self.__dict__.update(
{
"manager": manager,