Source code for globus_sdk.services.flows.errors
from __future__ import annotations
from globus_sdk import _guards
from globus_sdk.exc import ErrorSubdocument, GlobusAPIError
[docs]
class FlowsAPIError(GlobusAPIError):
"""
Error class to represent error responses from Flows.
"""
def _parse_undefined_error_format(self) -> bool:
"""
Treat any top-level "error" key as an "array of size 1".
Meaning that we'll see a single subdocument for data shaped like
{
"error": {
"foo": "bar"
}
}
"""
# if there is not a top-level 'error' key, no special behavior is defined
# fall-back to the base class implementation
if not isinstance(self._dict_data.get("error"), dict):
return super()._parse_undefined_error_format()
self.errors = [ErrorSubdocument(self._dict_data["error"])]
self.code = self._extract_code_from_error_array(self.errors)
details = self._dict_data["error"].get("detail")
if _guards.is_list_of(details, dict):
self.messages = [
error_detail["msg"]
for error_detail in details
if isinstance(error_detail.get("msg"), str)
]
else:
self.messages = self._extract_messages_from_error_array(self.errors)
return True