Skip to content

exceptions

BadRequest (OptimadeHTTPException)

400 Bad Request

Source code in optimade/exceptions.py
class BadRequest(OptimadeHTTPException):
    """400 Bad Request"""

    status_code: int = 400
    title: str = "Bad Request"

Forbidden (OptimadeHTTPException)

403 Forbidden

Source code in optimade/exceptions.py
class Forbidden(OptimadeHTTPException):
    """403 Forbidden"""

    status_code: int = 403
    title: str = "Forbidden"

InternalServerError (OptimadeHTTPException)

500 Internal Server Error

Source code in optimade/exceptions.py
class InternalServerError(OptimadeHTTPException):
    """500 Internal Server Error"""

    status_code: int = 500
    title: str = "Internal Server Error"

NotFound (OptimadeHTTPException)

404 Not Found

Source code in optimade/exceptions.py
class NotFound(OptimadeHTTPException):
    """404 Not Found"""

    status_code: int = 404
    title: str = "Not Found"

NotImplementedResponse (OptimadeHTTPException)

501 Not Implemented

Source code in optimade/exceptions.py
class NotImplementedResponse(OptimadeHTTPException):
    """501 Not Implemented"""

    status_code: int = 501
    title: str = "Not Implemented"

OptimadeHTTPException (Exception, ABC)

This abstract class can be subclassed to define HTTP responses with the desired status codes, and detailed error strings to represent in the JSON:API error response.

This class closely follows the starlette.HTTPException without requiring it as a dependency, so that such errors can also be raised from within client code.

Attributes:

Name Type Description
status_code int

The HTTP status code accompanying this exception.

title str

A descriptive title for this exception.

detail Optional[str]

An optional string containing the details of the error.

Source code in optimade/exceptions.py
class OptimadeHTTPException(Exception, ABC):
    """This abstract class can be subclassed to define
    HTTP responses with the desired status codes, and
    detailed error strings to represent in the JSON:API
    error response.

    This class closely follows the `starlette.HTTPException` without
    requiring it as a dependency, so that such errors can also be
    raised from within client code.

    Attributes:
        status_code: The HTTP status code accompanying this exception.
        title: A descriptive title for this exception.
        detail: An optional string containing the details of the error.

    """

    status_code: int
    title: str
    detail: Optional[str] = None
    headers: Optional[dict[str, Any]] = None

    def __init__(
        self, detail: Optional[str] = None, headers: Optional[dict] = None
    ) -> None:
        if self.status_code is None:
            raise AttributeError(
                "HTTPException class {self.__class__.__name__} is missing required `status_code` attribute."
            )
        self.detail = detail
        self.headers = headers

    def __str__(self) -> str:
        return self.detail if self.detail is not None else self.__repr__()

    def __repr__(self) -> str:
        class_name = self.__class__.__name__
        return f"{class_name}(status_code={self.status_code!r}, detail={self.detail!r})"

UnprocessableEntity (OptimadeHTTPException)

422 Unprocessable Entity

Source code in optimade/exceptions.py
class UnprocessableEntity(OptimadeHTTPException):
    """422 Unprocessable Entity"""

    status_code: int = 422
    title: str = "Unprocessable Entity"

VersionNotSupported (OptimadeHTTPException)

553 Version Not Supported

Source code in optimade/exceptions.py
class VersionNotSupported(OptimadeHTTPException):
    """553 Version Not Supported"""

    status_code: int = 553
    title: str = "Version Not Supported"