Source code for aihwkit.cloud.client.exceptions

# -*- coding: utf-8 -*-

# (C) Copyright 2020, 2021, 2022, 2023, 2024 IBM. All Rights Reserved.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

"""Exceptions related to the cloud client."""

from urllib.parse import urlparse

from requests import Response

from aihwkit.exceptions import CloudError


[docs]class ResponseError(CloudError): """Error retrieving a response.""" def __init__(self, response: Response): self.response = response self.url = self._sanitize_url(response.url) super().__init__(str(self)) def __str__(self) -> str: return "{} {} for url: {} {}".format( self.response.status_code, self.response.reason, self.response.request.method, self.url ) @staticmethod def _sanitize_url(url: str) -> str: """Remove sensitive parts from an url.""" return url
[docs]class ApiResponseError(ResponseError): """Error retrieving a response (object storage).""" @staticmethod def _sanitize_url(url: str) -> str: """Remove sensitive parts from an url.""" parts = urlparse(url) return "{}{}".format(parts.path, "?..." if parts.query else "")
[docs]class InvalidResponseFieldError(CloudError): """Invalid or unsupported field in the response."""
[docs]class ExperimentStatusError(CloudError): """Error dependent on to the Experiment status."""
[docs]class CredentialsError(CloudError): """Errors related to cloud credentials."""