Releases: ghazi-git/drf-standardized-errors
Releases · ghazi-git/drf-standardized-errors
Release v0.15.0
Added
- add support for python 3.13
- add support for django 5.2
- add support for DRF 3.16
Changed (backward-incompatible)
- Unhandled exceptions now return a generic error message by default. This avoids unintentionally leaking
sensitive data included in the exception message. To revert to the old behavior or change the default error
message:- create a custom exception handler class
from rest_framework.exceptions import APIException from drf_standardized_errors.handler import ExceptionHandler class MyExceptionHandler(ExceptionHandler): def convert_unhandled_exceptions(self, exc: Exception) -> APIException: if not isinstance(exc, APIException): # `return APIException(detail=str(exc))` restores the old behavior return APIException(detail="New error message") else: return exc
- Then, update the settings to point to your exception handler class
DRF_STANDARDIZED_ERRORS = { # ... "EXCEPTION_HANDLER_CLASS": "path.to.MyExceptionHandler" }
- create a custom exception handler class
- set minimum version of drf-spectacular to 0.27.1
drf_standardized_errors.types.ErrorType
is now the following type hintfrom typing import Literal ErrorType = Literal["validation_error", "client_error", "server_error"]
ErrorType
was previously an enum. If you referenced its members in your code, make sure to replace their
use cases with the newly added constants:from drf_standardized_errors.types import VALIDATION_ERROR, CLIENT_ERROR, SERVER_ERROR ErrorType.VALIDATION_ERROR --> VALIDATION_ERROR ErrorType.CLIENT_ERROR --> CLIENT_ERROR ErrorType.SERVER_ERROR --> SERVER_ERROR
Release v0.14.1
Added
- declare support for django 5.1
Fixed
- stop ignoring exceptions with detail as an empty string when returning api errors.
Release v0.14.0
Added
- declare support for DRF 3.15
Fixed
- enforce support of only drf-spectacular 0.27 and newer in pyproject.toml
- ensure examples from
@extend_schema_serializer
are not ignored when adding error response examples - show default error response examples only when the corresponding status code is allowed
- add
"null"
to the error code enum ofnon_field_errors
validation errors
Release v0.13.0
Changed
- If you're using drf-spectacular 0.27.0 or newer, update
ENUM_NAME_OVERRIDES
entries to referencechoices
rather thanvalues
. The list of overrides specific to this package should become like this:
SPECTACULAR_SETTINGS = {
# other settings
"ENUM_NAME_OVERRIDES": {
"ValidationErrorEnum": "drf_standardized_errors.openapi_serializers.ValidationErrorEnum.choices",
"ClientErrorEnum": "drf_standardized_errors.openapi_serializers.ClientErrorEnum.choices",
"ServerErrorEnum": "drf_standardized_errors.openapi_serializers.ServerErrorEnum.choices",
"ErrorCode401Enum": "drf_standardized_errors.openapi_serializers.ErrorCode401Enum.choices",
"ErrorCode403Enum": "drf_standardized_errors.openapi_serializers.ErrorCode403Enum.choices",
"ErrorCode404Enum": "drf_standardized_errors.openapi_serializers.ErrorCode404Enum.choices",
"ErrorCode405Enum": "drf_standardized_errors.openapi_serializers.ErrorCode405Enum.choices",
"ErrorCode406Enum": "drf_standardized_errors.openapi_serializers.ErrorCode406Enum.choices",
"ErrorCode415Enum": "drf_standardized_errors.openapi_serializers.ErrorCode415Enum.choices",
"ErrorCode429Enum": "drf_standardized_errors.openapi_serializers.ErrorCode429Enum.choices",
"ErrorCode500Enum": "drf_standardized_errors.openapi_serializers.ErrorCode500Enum.choices",
# other overrides
},
}
Added
- add compatibility with drf-spectacular 0.27.x
- add support for django 5.0
Fixed
- Ensure accurate traceback inclusion in 500 error emails sent to ADMINS by capturing the original exception information using
self.exc
. This fixes the issue where tracebacks were previously showing as None fordjango version >= 4.1
. - Handle error responses with +1000 errors
Release v0.12.6
Added
- declare support for type checking
- add support for django 4.2
- add support for python 3.12
Fixed
- Avoid calling
AutoSchema.get_request_serializer
when inspecting a get operation for possible error responses.
Release v0.12.5
Added
- allow adding extra validation errors on an operation-basis using the new
@extend_validation_errors
decorator.
You can find more information about that in the documentation.
Fixed
- use
model._default_manager
instead ofmodel.objects
. - Don't generate error responses for OpenAPI callbacks.
- Make
_should_add_http403_error_response
check if permission isIsAuthenticated
andAllowAny
viatype
instead ofisinstance
- Don't collect error codes from nested
read_only
fields
Release v0.12.4
Fixed
- account for specifying the request serializer as a basic type (like
OpenApiTypes.STR
) or as a
PolymorphicProxySerializer
using@extend_schema(request=...)
when determining error codes for validation errors.
Release v0.12.3
Added
- add support for python 3.11
Release v0.12.2
Added
- When a custom validator class defines a
code
attribute, add it to the list of error codes raised by
the corresponding field. - add support for DRF 3.14
Release v0.12.1
Fixed
- generate the mapping for discriminator fields properly instead of showing a "null" value in the generated schema (#12).