X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a04ea95e79c60ed2a54eaec5b5c2e235fe39ef9a..ba34a22d9918ae97306472c04701e69090821c82:/sdk/python/arvados/errors.py diff --git a/sdk/python/arvados/errors.py b/sdk/python/arvados/errors.py index 3629520a4d..15b1f6d4b9 100644 --- a/sdk/python/arvados/errors.py +++ b/sdk/python/arvados/errors.py @@ -1,7 +1,10 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + # errors.py - Arvados-specific exceptions. import json -import requests from apiclient import errors as apiclient_errors from collections import OrderedDict @@ -9,7 +12,7 @@ from collections import OrderedDict class ApiError(apiclient_errors.HttpError): def _get_reason(self): try: - return '; '.join(json.loads(self.content)['errors']) + return '; '.join(json.loads(self.content.decode('utf-8'))['errors']) except (KeyError, TypeError, ValueError): return super(ApiError, self)._get_reason() @@ -38,7 +41,7 @@ class KeepRequestError(Exception): self._request_errors = OrderedDict(request_errors) if self._request_errors: exc_reports = [self._format_error(*err_pair) - for err_pair in self._request_errors.iteritems()] + for err_pair in self._request_errors.items()] base_msg = "{}: {}".format(message, "; ".join(exc_reports)) else: base_msg = message @@ -46,7 +49,7 @@ class KeepRequestError(Exception): self.message = message def _format_error(self, key, error): - if isinstance(error, requests.Response): + if isinstance(error, HttpError): err_fmt = "{} {} responded with {e.status_code} {e.reason}" else: err_fmt = "{} {} raised {e.__class__.__name__} ({e})" @@ -61,6 +64,12 @@ class KeepRequestError(Exception): return self._request_errors +class HttpError(Exception): + def __init__(self, status_code, reason): + self.status_code = status_code + self.reason = reason + + class ArgumentError(Exception): pass class SyntaxError(Exception): @@ -73,6 +82,8 @@ class KeepReadError(KeepRequestError): pass class KeepWriteError(KeepRequestError): pass +class KeepCacheError(KeepRequestError): + pass class NotFoundError(KeepReadError): pass class NotImplementedError(Exception):