RFC9457 implementation for Python

rfc9457
is a set of exceptions to support easy error management and responses
in web based apis.
Each exception easily marshals to JSON based on the
RFC9457 spec for use in api
errors.
This library is currently used to support problem details in both Starlette and FastAPI.
starlette-problem
fastapi-problem
Custom Errors
Subclassing the convenience classes provides a simple way to consistently raise
the same error with details/extras changing based on the raised context.
from rfc9457.error import NotFoundProblem
class UserNotFoundError(NotFoundProblem):
title = "User not found."
UserNotFoundError(
details="details",
custom_key="value",
).marshal()
{
"type": "user-not-found",
"title": "User not found",
"status": 404,
"details": "details",
"custom_key": "value",
}
Removing debug information in production
In production environments, it may be desirable to exclude per instance
information to prevent data leakage. In that scenario use strip_debug
when
marshaling the error.
UserNotFoundError(
details="details",
custom_key="value",
).marshal(strip_debug=True)
{
"type": "user-not-found",
"title": "User not found",
"status": 404,
}