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.ErrorTypeis now the following type hintfrom typing import Literal ErrorType = Literal["validation_error", "client_error", "server_error"]
ErrorTypewas 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_serializerare 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_errorsvalidation errors
Release v0.13.0
Changed
- If you're using drf-spectacular 0.27.0 or newer, update
ENUM_NAME_OVERRIDESentries 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_serializerwhen 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_errorsdecorator.
You can find more information about that in the documentation.
Fixed
- use
model._default_managerinstead ofmodel.objects. - Don't generate error responses for OpenAPI callbacks.
- Make
_should_add_http403_error_responsecheck if permission isIsAuthenticatedandAllowAnyviatypeinstead ofisinstance - Don't collect error codes from nested
read_onlyfields
Release v0.12.4
Fixed
- account for specifying the request serializer as a basic type (like
OpenApiTypes.STR) or as a
PolymorphicProxySerializerusing@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
codeattribute, 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).