Skip to content

exceptions

Reproduced imports from optimade.exceptions for backwards-compatibility.

BadRequest

Bases: OptimadeHTTPException

400 Bad Request

Source code in optimade/exceptions.py
55
56
57
58
59
class BadRequest(OptimadeHTTPException):
    """400 Bad Request"""

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

Forbidden

Bases: OptimadeHTTPException

403 Forbidden

Source code in optimade/exceptions.py
69
70
71
72
73
class Forbidden(OptimadeHTTPException):
    """403 Forbidden"""

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

InternalServerError

Bases: OptimadeHTTPException

500 Internal Server Error

Source code in optimade/exceptions.py
90
91
92
93
94
class InternalServerError(OptimadeHTTPException):
    """500 Internal Server Error"""

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

NotFound

Bases: OptimadeHTTPException

404 Not Found

Source code in optimade/exceptions.py
76
77
78
79
80
class NotFound(OptimadeHTTPException):
    """404 Not Found"""

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

NotImplementedResponse

Bases: OptimadeHTTPException

501 Not Implemented

Source code in optimade/exceptions.py
 97
 98
 99
100
101
class NotImplementedResponse(OptimadeHTTPException):
    """501 Not Implemented"""

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

OptimadeHTTPException

Bases: 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 str | None

An optional string containing the details of the error.

Source code in optimade/exceptions.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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: str | None = None
    headers: dict[str, Any] | None = None

    def __init__(self, detail: str | None = None, headers: dict | None = 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

Bases: OptimadeHTTPException

422 Unprocessable Entity

Source code in optimade/exceptions.py
83
84
85
86
87
class UnprocessableEntity(OptimadeHTTPException):
    """422 Unprocessable Entity"""

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

VersionNotSupported

Bases: OptimadeHTTPException

553 Version Not Supported

Source code in optimade/exceptions.py
62
63
64
65
66
class VersionNotSupported(OptimadeHTTPException):
    """553 Version Not Supported"""

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