Source code for alerce.exceptions

import requests


[docs] def handle_error(response, response_format="json"): # TODO: The direct API uses code 400 for user input error (bad requests, etc), what should be done here then? codes = {-1: APIError, 400: ParseError, 404: ObjectNotFoundError} message = "Unknown API error." error = "Unknown API error." if response_format == "json": try: error = response.json().get("errors", {}) message = response.json().get("detail") except requests.exceptions.JSONDecodeError: pass elif response_format == "csv": error = response.content.decode("utf-8") message = response.content.decode("utf-8") code = response.status_code data = error raise codes.get(code, APIError)( message=message, code=code, data=data, response=response )
[docs] class APIError(Exception): response = None data = {} message = "An error with the API occurred." code = -1 def __init__(self, message=None, code=None, data={}, response=None): self.response = response if message: self.message = message if code: self.code = code if data: self.data = data def __str__(self): if self.code: ret = {"Error code": self.code, "Message": self.message, "Data": self.data} return str(ret) return self.message
[docs] class CandidError(Exception): response = None data = {} message = "Object has no stamps." code = -1
[docs] class ParseError(APIError): pass
[docs] class FormatValidationError(ParseError): pass
[docs] class ObjectNotFoundError(APIError): ## TODO add logic for including oid in error message pass