Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-drf-standardized-errors for 
openSUSE:Factory checked in at 2026-04-12 17:53:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-drf-standardized-errors (Old)
 and      /work/SRC/openSUSE:Factory/.python-drf-standardized-errors.new.21863 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-drf-standardized-errors"

Sun Apr 12 17:53:01 2026 rev:2 rq:1346178 version:0.15.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-drf-standardized-errors/python-drf-standardized-errors.changes
    2025-04-30 19:05:56.638232388 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-drf-standardized-errors.new.21863/python-drf-standardized-errors.changes
 2026-04-12 17:53:04.413026301 +0200
@@ -1,0 +2,12 @@
+Sun Apr 12 12:37:23 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.15.0:
+  * add support for python 3.13
+  * add support for django 5.2
+  * add support for DRF 3.16
+  * Unhandled exceptions now return a generic error message by
+    default. This avoids unintentionally leaking
+    sensitive data included in the exception message.
+- remove fix-test.patch (obsolete)
+
+-------------------------------------------------------------------

Old:
----
  drf_standardized_errors-0.14.1.tar.gz
  fix-test.patch

New:
----
  drf_standardized_errors-0.15.0.tar.gz

----------(Old B)----------
  Old:    sensitive data included in the exception message.
- remove fix-test.patch (obsolete)
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-drf-standardized-errors.spec ++++++
--- /var/tmp/diff_new_pack.fl8HSM/_old  2026-04-12 17:53:05.977089990 +0200
+++ /var/tmp/diff_new_pack.fl8HSM/_new  2026-04-12 17:53:05.977089990 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-drf-standardized-errors
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,15 @@
 
 
 Name:           python-drf-standardized-errors
-Version:        0.14.1
+Version:        0.15.0
 Release:        0
 Summary:        Standardize your API error responses
 License:        MIT
 URL:            https://github.com/ghazi-git/drf-standardized-errors
 Source:         
https://files.pythonhosted.org/packages/source/d/drf-standardized-errors/drf_standardized_errors-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM 
https://github.com/ghazi-git/drf-standardized-errors/pull/96 fix 
test_openapi_utils
-Patch:          fix-test.patch
-BuildRequires:  python-rpm-macros
 BuildRequires:  %{python_module flit-core >= 3.2}
 BuildRequires:  %{python_module pip}
+BuildRequires:  python-rpm-macros
 # SECTION test requirements
 BuildRequires:  %{python_module Django >= 3.2}
 BuildRequires:  %{python_module django-filter}

++++++ drf_standardized_errors-0.14.1.tar.gz -> 
drf_standardized_errors-0.15.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/.github/workflows/tests.yml 
new/drf_standardized_errors-0.15.0/.github/workflows/tests.yml
--- old/drf_standardized_errors-0.14.1/.github/workflows/tests.yml      
2024-03-24 17:07:14.178439100 +0100
+++ new/drf_standardized_errors-0.15.0/.github/workflows/tests.yml      
2025-06-04 09:21:28.971057400 +0200
@@ -10,7 +10,7 @@
     strategy:
       matrix:
         platform: [ ubuntu-latest, macos-latest, windows-latest ]
-        python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ]
+        python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13" ]
 
     steps:
       - uses: actions/checkout@v4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/.pre-commit-config.yaml 
new/drf_standardized_errors-0.15.0/.pre-commit-config.yaml
--- old/drf_standardized_errors-0.14.1/.pre-commit-config.yaml  2024-08-10 
18:16:58.223908200 +0200
+++ new/drf_standardized_errors-0.15.0/.pre-commit-config.yaml  2025-06-04 
09:21:28.971057400 +0200
@@ -2,27 +2,27 @@
 
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.6.0
+    rev: v5.0.0
     hooks:
       - id: trailing-whitespace
       - id: end-of-file-fixer
       - id: check-yaml
 
   - repo: https://github.com/Zac-HD/shed
-    rev: 2024.3.1
+    rev: 2024.10.1
     hooks:
       - id: shed
         additional_dependencies: [ 'black~=24.3' ]
         types_or: [ python, pyi, markdown, rst ]
 
   - repo: https://github.com/PyCQA/flake8
-    rev: 7.1.1
+    rev: 7.2.0
     hooks:
       - id: flake8
         args: [ --max-line-length, '120' , --ignore, 'E,W']
 
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v1.11.1
+    rev: v1.16.0
     hooks:
       - id: mypy
         args: [ --ignore-missing-imports, --check-untyped-defs, 
--disallow-incomplete-defs ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/PKG-INFO 
new/drf_standardized_errors-0.15.0/PKG-INFO
--- old/drf_standardized_errors-0.14.1/PKG-INFO 1970-01-01 01:00:00.000000000 
+0100
+++ new/drf_standardized_errors-0.15.0/PKG-INFO 1970-01-01 01:00:00.000000000 
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: drf-standardized-errors
-Version: 0.14.1
+Version: 0.15.0
 Summary: Standardize your API error responses.
 Keywords: standardized errors,errors formatter,django rest framework,exception 
handler
 Author: Ghazi Abbassi
@@ -14,6 +14,8 @@
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+License-File: LICENSE
 Requires-Dist: django >=3.2
 Requires-Dist: djangorestframework >=3.12
 Requires-Dist: pre-commit ; extra == "dev"
@@ -21,7 +23,7 @@
 Requires-Dist: sphinx-autobuild ; extra == "doc"
 Requires-Dist: sphinx-rtd-theme>=1.1.0 ; extra == "doc"
 Requires-Dist: myst-parser ; extra == "doc"
-Requires-Dist: drf-spectacular>=0.27.0 ; extra == "openapi"
+Requires-Dist: drf-spectacular>=0.27.1 ; extra == "openapi"
 Requires-Dist: inflection ; extra == "openapi"
 Requires-Dist: flit ; extra == "release"
 Requires-Dist: keyring ; extra == "release"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/docs/changelog.md 
new/drf_standardized_errors-0.15.0/docs/changelog.md
--- old/drf_standardized_errors-0.14.1/docs/changelog.md        2024-08-10 
18:46:27.342139500 +0200
+++ new/drf_standardized_errors-0.15.0/docs/changelog.md        2025-06-09 
09:45:41.652574300 +0200
@@ -6,10 +6,57 @@
 
 ## [UNRELEASED]
 
+## [0.15.0] - 2025-06-09
+### 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
+    ```python
+    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
+    ```python
+    DRF_STANDARDIZED_ERRORS = {
+        # ...
+        "EXCEPTION_HANDLER_CLASS": "path.to.MyExceptionHandler"
+    }
+    ```
+- set minimum version of drf-spectacular to 0.27.1
+- `drf_standardized_errors.types.ErrorType` is now the following type hint
+    ```python
+    from 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
+    ```
+
 ## [0.14.1] - 2024-08-10
+### Added
+- declare support for django 5.1
+
 ### Fixed
 - stop ignoring exceptions with detail as an empty string when returning api 
errors.
-- declare support for django 5.1
 
 ## [0.14.0] - 2024-06-19
 ### Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/docs/faq.md 
new/drf_standardized_errors-0.15.0/docs/faq.md
--- old/drf_standardized_errors-0.14.1/docs/faq.md      1970-01-01 
01:00:00.000000000 +0100
+++ new/drf_standardized_errors-0.15.0/docs/faq.md      2025-06-04 
09:21:28.972114600 +0200
@@ -0,0 +1,68 @@
+# FAQs
+
+## Standardized errors are not shown in local development
+
+By default, standardized error responses when `DEBUG=True` for unhandled 
exceptions are disabled.
+That is to allow you to get more information out of the traceback. You can 
enable standardized errors
+instead with:
+
+```python
+DRF_STANDARDIZED_ERRORS = {"ENABLE_IN_DEBUG_FOR_UNHANDLED_EXCEPTIONS": True}
+```
+
+
+## Some exceptions are not converted to the standardized format
+
+This package is a DRF exception handler, so it only standardizes errors that 
reach a DRF API view.
+That means it cannot handle errors that happen at the middleware level for 
example. To handle those
+as well, you can customize the necessary [django error 
views](https://docs.djangoproject.com/en/dev/topics/http/views/#customizing-error-views).
+You can find more about that in [this 
issue](https://github.com/ghazi-git/drf-standardized-errors/issues/44).
+
+
+## I want to let exceptions propagate up the middleware stack
+
+This might be needed when code written in middleware adds custom logic based 
on raised exceptions
+(either by you or by a third party package). In that case, it is possible to 
allow the exception
+to pass through the DRF exception handler and later convert it to the 
corresponding error response
+in django error views. You can check [this 
issue](https://github.com/ghazi-git/drf-standardized-errors/issues/91#issuecomment-2397956441)
 for sample code.
+
+
+## How can I add extra details about the exception in the error response
+
+This can be done using a custom exception along with a custom exception 
formatter. You can find sample
+code in [this 
issue](https://github.com/ghazi-git/drf-standardized-errors/issues/95#issuecomment-2661633736).
+Note that this does not work with `ValidationError`s or its subclasses raised 
in a serializer. That's
+because DRF creates new `ValidationError` instances when they are raised. See
+[here](https://github.com/encode/django-rest-framework/blob/f30c0e2eedda410a7e6a0d1b351377a9084361b4/rest_framework/serializers.py#L221-L231)
+and 
[here](https://github.com/encode/django-rest-framework/blob/f30c0e2eedda410a7e6a0d1b351377a9084361b4/rest_framework/serializers.py#L443-L448).
+
+
+## How to integrate this package with djangorestframework-camel-case
+
+You can check this 
[issue](https://github.com/ghazi-git/drf-standardized-errors/issues/59#issuecomment-1889826918)
+for a possible solution. Still, `djangorestframework-camel-case` is built to 
work specifically with
+the default exception handler from DRF. It assumes that field names are the 
keys in the returned dict.
+So, that does not work well with this package.
+
+
+## How can I change the default error message for unhandled exceptions
+
+You need to create a custom exception handler class
+```python
+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="New error message")
+        else:
+            return exc
+```
+Then, update the settings to point to your exception handler class
+```python
+DRF_STANDARDIZED_ERRORS = {
+    # ...
+    "EXCEPTION_HANDLER_CLASS": "path.to.MyExceptionHandler"
+}
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/docs/index.md 
new/drf_standardized_errors-0.15.0/docs/index.md
--- old/drf_standardized_errors-0.14.1/docs/index.md    2022-11-12 
23:47:16.000000000 +0100
+++ new/drf_standardized_errors-0.15.0/docs/index.md    2025-06-04 
09:21:28.973895500 +0200
@@ -8,6 +8,7 @@
 settings.md
 error_response.md
 customization.md
+faq.md
 gotchas.md
 openapi.md
 openapi_sample_description.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/docs/openapi.md 
new/drf_standardized_errors-0.15.0/docs/openapi.md
--- old/drf_standardized_errors-0.14.1/docs/openapi.md  2024-01-01 
20:50:13.453827600 +0100
+++ new/drf_standardized_errors-0.15.0/docs/openapi.md  2025-06-04 
09:21:28.973895500 +0200
@@ -196,7 +196,7 @@
 
 ### Already using a custom `AutoSchema` class
 If you're already overriding the `AutoSchema` class provided by 
drf-spectacular, be sure to inherit from the
-AutoSchema class provided by this package instead. Also, if you're overriding 
`get_examples` and/or
+AutoSchema class provided by this package instead. Also, if you're overriding 
`_get_examples` and/or
 `_get_response_bodies`, be sure to call `super`.
 
 
@@ -391,8 +391,8 @@
 ```
 
 What remains is removing the default examples from the `AutoSchema` class or 
generating new ones that match the new
-error response output. Removing the default examples is easy and can be done 
by overriding `get_examples` and
-returning an empty list which leaves example generation up to the OpenAPI UI 
used (swagger UI, redoc, ...). But,
+error response output. Removing the default examples is easy and can be done 
by overriding `_get_error_response_examples`
+and returning an empty list which leaves example generation up to the OpenAPI 
UI used (swagger UI, redoc, ...). But,
 if you're picky about the examples and want to show that the `field_name` 
attribute is always `null` for errors
 other than validation errors, you can provide examples. Therefore, let's go 
with generating new examples for
 `403` and `404`.
@@ -403,7 +403,7 @@
 
 
 class CustomAutoSchema(AutoSchema):
-    def get_examples(self):
+    def _get_error_response_examples(self):
         errors = [exceptions.PermissionDenied(), exceptions.NotFound()]
         return [get_example_from_exception(error) for error in errors]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/drf_standardized_errors/__init__.py 
new/drf_standardized_errors-0.15.0/drf_standardized_errors/__init__.py
--- old/drf_standardized_errors-0.14.1/drf_standardized_errors/__init__.py      
2024-08-10 18:46:27.281890000 +0200
+++ new/drf_standardized_errors-0.15.0/drf_standardized_errors/__init__.py      
2025-06-09 09:45:41.572369000 +0200
@@ -1,3 +1,3 @@
 """Standardize your API error responses."""
 
-__version__ = "0.14.1"
+__version__ = "0.15.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/drf_standardized_errors/formatter.py 
new/drf_standardized_errors-0.15.0/drf_standardized_errors/formatter.py
--- old/drf_standardized_errors-0.14.1/drf_standardized_errors/formatter.py     
2024-08-10 18:16:58.225808900 +0200
+++ new/drf_standardized_errors-0.15.0/drf_standardized_errors/formatter.py     
2025-06-04 09:21:28.975020600 +0200
@@ -5,7 +5,15 @@
 from rest_framework.status import is_client_error
 
 from .settings import package_settings
-from .types import Error, ErrorResponse, ErrorType, ExceptionHandlerContext
+from .types import (
+    CLIENT_ERROR,
+    SERVER_ERROR,
+    VALIDATION_ERROR,
+    Error,
+    ErrorResponse,
+    ErrorType,
+    ExceptionHandlerContext,
+)
 
 
 class ExceptionFormatter:
@@ -42,11 +50,11 @@
 
     def get_error_type(self) -> ErrorType:
         if isinstance(self.exc, exceptions.ValidationError):
-            return ErrorType.VALIDATION_ERROR
+            return VALIDATION_ERROR
         elif is_client_error(self.exc.status_code):
-            return ErrorType.CLIENT_ERROR
+            return CLIENT_ERROR
         else:
-            return ErrorType.SERVER_ERROR
+            return SERVER_ERROR
 
     def get_errors(self) -> List[Error]:
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/drf_standardized_errors/handler.py 
new/drf_standardized_errors-0.15.0/drf_standardized_errors/handler.py
--- old/drf_standardized_errors-0.14.1/drf_standardized_errors/handler.py       
2024-01-07 15:30:18.815524300 +0100
+++ new/drf_standardized_errors-0.15.0/drf_standardized_errors/handler.py       
2025-06-04 09:21:28.976028200 +0200
@@ -75,7 +75,10 @@
         has a 500 status code.
         """
         if not isinstance(exc, exceptions.APIException):
-            return exceptions.APIException(detail=str(exc))
+            # return a generic error message to avoid potentially leaking 
sensitive
+            # data and match DRF/django behavior (same generic error message 
returned
+            # by django.views.defaults.server_error)
+            return exceptions.APIException(detail="Server Error (500)")
         else:
             return exc
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/drf_standardized_errors/types.py 
new/drf_standardized_errors-0.15.0/drf_standardized_errors/types.py
--- old/drf_standardized_errors-0.14.1/drf_standardized_errors/types.py 
2023-02-19 09:15:28.000000000 +0100
+++ new/drf_standardized_errors-0.15.0/drf_standardized_errors/types.py 
2025-06-04 09:21:28.976028200 +0200
@@ -1,6 +1,5 @@
 from dataclasses import dataclass
-from enum import Enum
-from typing import List, Optional, TypedDict
+from typing import Final, List, Literal, Optional, TypedDict
 
 from rest_framework.request import Request
 from rest_framework.views import APIView
@@ -13,10 +12,10 @@
     request: Optional[Request]
 
 
-class ErrorType(str, Enum):
-    VALIDATION_ERROR = "validation_error"
-    CLIENT_ERROR = "client_error"
-    SERVER_ERROR = "server_error"
+VALIDATION_ERROR: Final = "validation_error"
+CLIENT_ERROR: Final = "client_error"
+SERVER_ERROR: Final = "server_error"
+ErrorType = Literal["validation_error", "client_error", "server_error"]
 
 
 @dataclass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/pyproject.toml 
new/drf_standardized_errors-0.15.0/pyproject.toml
--- old/drf_standardized_errors-0.14.1/pyproject.toml   2024-08-10 
18:46:27.281890000 +0200
+++ new/drf_standardized_errors-0.15.0/pyproject.toml   2025-06-09 
09:45:41.572369000 +0200
@@ -22,6 +22,7 @@
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
 ]
 dynamic = ["version", "description"]
 requires-python = ">=3.8"
@@ -58,14 +59,14 @@
     "tbump",
 ]
 openapi = [
-    "drf-spectacular>=0.27.0",
+    "drf-spectacular>=0.27.1",
     "inflection",
 ]
 
 [tool.tbump]
 
 [tool.tbump.version]
-current = "0.14.1"
+current = "0.15.0"
 regex = '''
   (?P<major>\d+)
   \.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/tests/test_openapi.py 
new/drf_standardized_errors-0.15.0/tests/test_openapi.py
--- old/drf_standardized_errors-0.14.1/tests/test_openapi.py    2024-06-18 
20:05:49.695811500 +0200
+++ new/drf_standardized_errors-0.15.0/tests/test_openapi.py    2025-06-04 
09:21:28.978130000 +0200
@@ -630,6 +630,11 @@
     assert response.status_code == 200
 
 
+def test_protected_schema_response(api_client):
+    response = api_client.get("/protected-schema/")
+    assert response.status_code == 403
+
+
 @extend_schema_serializer(
     examples=[
         OpenApiExample(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/tests/test_openapi_utils.py 
new/drf_standardized_errors-0.15.0/tests/test_openapi_utils.py
--- old/drf_standardized_errors-0.14.1/tests/test_openapi_utils.py      
2024-06-18 20:06:15.328114000 +0200
+++ new/drf_standardized_errors-0.15.0/tests/test_openapi_utils.py      
2025-06-04 09:21:28.978130000 +0200
@@ -1,6 +1,7 @@
 import sys
 from unittest import mock
 
+import django
 import pytest
 from django import forms
 from django.contrib.auth.models import User
@@ -515,7 +516,14 @@
     assert slug.error_codes == {"invalid", "null_characters_not_allowed"}
     assert regex.error_codes == {"invalid", "required", 
"null_characters_not_allowed"}
     assert uuid.error_codes == {"invalid", "required", 
"null_characters_not_allowed"}
-    assert ip.error_codes == {"invalid", "null_characters_not_allowed"}
+    if django.VERSION >= (4, 2):
+        assert ip.error_codes == {
+            "invalid",
+            "null_characters_not_allowed",
+            "max_length",
+        }
+    else:
+        assert ip.error_codes == {"invalid", "null_characters_not_allowed"}
 
 
 class NumberForm(forms.Form):
@@ -587,7 +595,10 @@
 
 class MultiValueForm(forms.Form):
     split = forms.SplitDateTimeField()
-    disabled = forms.URLField(disabled=True)
+    if django.VERSION >= (5, 0):
+        disabled = forms.URLField(disabled=True, assume_scheme="https")
+    else:
+        disabled = forms.URLField(disabled=True)
 
 
 def test_multi_value_fields_with_error_codes():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/drf_standardized_errors-0.14.1/tests/test_settings.py 
new/drf_standardized_errors-0.15.0/tests/test_settings.py
--- old/drf_standardized_errors-0.14.1/tests/test_settings.py   2022-11-12 
23:47:16.000000000 +0100
+++ new/drf_standardized_errors-0.15.0/tests/test_settings.py   2025-06-04 
09:21:28.979192500 +0200
@@ -41,7 +41,7 @@
     assert response.status_code == 500
     assert response.data["type"] == "server_error"
     assert response.data["code"] == "error"
-    assert response.data["message"] == "Internal server error."
+    assert response.data["message"] == "Server Error (500)"
     assert response.data["field_name"] is None
 
 
@@ -82,7 +82,7 @@
     assert len(response.data["errors"]) == 1
     error = response.data["errors"][0]
     assert error["code"] == "error"
-    assert error["detail"] == "Internal server error."
+    assert error["detail"] == "Server Error (500)"
     assert error["attr"] is None
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/tests/urls.py 
new/drf_standardized_errors-0.15.0/tests/urls.py
--- old/drf_standardized_errors-0.14.1/tests/urls.py    2024-06-29 
14:44:53.617765200 +0200
+++ new/drf_standardized_errors-0.15.0/tests/urls.py    2025-06-04 
09:21:28.979192500 +0200
@@ -1,5 +1,6 @@
 from django.urls import path
 from drf_spectacular.views import SpectacularAPIView
+from rest_framework.permissions import IsAdminUser
 
 from .views import (
     AuthErrorView,
@@ -18,4 +19,8 @@
     path("rate-limit-error/", RateLimitErrorView.as_view()),
     path("recursion-error/", RecursionView.as_view()),
     path("schema/", SpectacularAPIView.as_view(), name="api-schema"),
+    path(
+        "protected-schema/",
+        SpectacularAPIView.as_view(permission_classes=[IsAdminUser]),
+    ),
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/drf_standardized_errors-0.14.1/tox.ini 
new/drf_standardized_errors-0.15.0/tox.ini
--- old/drf_standardized_errors-0.14.1/tox.ini  2024-08-10 18:45:26.441801800 
+0200
+++ new/drf_standardized_errors-0.15.0/tox.ini  2025-06-04 09:21:28.979192500 
+0200
@@ -8,25 +8,27 @@
 envlist =
     py{38,39,310,311}-dj32-drf312
     py{38,39,310,311,312}-dj{32,40,41}-drf{313,314,315}
-    py{38,39,310,311,312}-dj42-drf{314,315}
-    py{310,311,312}-dj50-drf{314,315}
-    py{310,311,312}-dj51-drf315
+    py{38,39,310,311,312,313}-dj42-drf{314,315}
+    py{310,311,312,313}-dj50-drf{314,315}
+    py{310,311,312,313}-dj{51,52}-drf315
+    py{310,311,312,313}-dj{42,50,51,52}-drf316
     lint
     docs
 
 [gh-actions]
 python =
-    3.8: py38, lint, docs
+    3.8: py38
     3.9: py39
     3.10: py310
     3.11: py311
-    3.12: py312
+    3.12: py312, lint, docs
+    3.13: py313
 
 [testenv]
 deps =
     pytest
     pytest-django
-    drf-spectacular>=0.27.0
+    drf-spectacular>=0.27.1
     django-filter
     dj32: Django>=3.2,<4.0
     dj40: Django>=4.0,<4.1
@@ -34,10 +36,12 @@
     dj42: Django>=4.2,<5.0
     dj50: Django>=5.0,<5.1
     dj51: Django>=5.1,<5.2
+    dj52: Django>=5.2,<6.0
     drf312: djangorestframework>=3.12,<3.13
     drf313: djangorestframework>=3.13,<3.14
     drf314: djangorestframework>=3.14,<3.15
     drf315: djangorestframework>=3.15,<3.16
+    drf316: djangorestframework>=3.16,<3.17
 commands =
     pytest
 
@@ -48,7 +52,6 @@
 
 [testenv:docs]
 extras = doc
-basepython = python3.8
 commands = sphinx-build -d "{toxworkdir}/docs_doctree" docs 
"{toxworkdir}/docs_out" --color -W -bhtml {posargs}
            python -c 'import pathlib; print("documentation available under 
file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / 
"index.html"))'
 

Reply via email to