Skip to content

Commit 3448174

Browse files
authored
Accept Promise as Validator.message|missing_message (#618)
1 parent 53c21ee commit 3448174

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

pyproject.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ extend-exclude = [
1414
line-length = 120
1515
target-version = "py38"
1616
# See Rules in Ruff documentation: https://docs.astral.sh/ruff/rules/
17+
[tool.ruff.lint]
1718
select = [
1819
"B", # bugbear
1920
"E", # pycodestyle
@@ -30,7 +31,7 @@ select = [
3031
]
3132
ignore = ["PYI021", "PYI024", "PYI041", "PYI043"]
3233

33-
[tool.ruff.per-file-ignores]
34+
[tool.ruff.lint.per-file-ignores]
3435
"*.pyi" = [
3536
"B",
3637
"E501",
@@ -44,10 +45,10 @@ ignore = ["PYI021", "PYI024", "PYI041", "PYI043"]
4445
]
4546
"rest_framework-stubs/compat.pyi" = ["PYI042"]
4647

47-
[tool.ruff.flake8-tidy-imports.banned-api]
48+
[tool.ruff.lint.flake8-tidy-imports.banned-api]
4849
"_typeshed.Self".msg = "Use typing_extensions.Self (PEP 673) instead."
4950

50-
[tool.ruff.isort]
51+
[tool.ruff.lint.isort]
5152
split-on-trailing-comma = false
5253
extra-standard-library = ["_typeshed"]
5354

rest_framework-stubs/validators.pyi

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ from collections.abc import Callable, Container, Iterable, MutableMapping
22
from typing import Any, Protocol, TypeVar
33

44
from django.db.models import Model, QuerySet
5+
from django.utils.functional import _StrOrPromise
56
from rest_framework.fields import Field
67
from rest_framework.serializers import BaseSerializer
78
from typing_extensions import TypeAlias
@@ -19,22 +20,22 @@ def qs_exists(queryset: QuerySet) -> bool: ...
1920
def qs_filter(queryset: QuerySet[_T], **kwargs: Any) -> QuerySet[_T]: ...
2021

2122
class UniqueValidator:
22-
message: str
23+
message: _StrOrPromise
2324
requires_context: bool
2425
queryset: QuerySet
2526
lookup: str
26-
def __init__(self, queryset: QuerySet, message: str | None = ..., lookup: str = ...) -> None: ...
27+
def __init__(self, queryset: QuerySet, message: _StrOrPromise | None = ..., lookup: str = ...) -> None: ...
2728
def filter_queryset(self, value: Any, queryset: QuerySet[_T], field_name: str) -> QuerySet[_T]: ...
2829
def exclude_current_instance(self, queryset: QuerySet[_T], instance: _T) -> QuerySet[_T]: ...
2930
def __call__(self, value: Any, serializer_field: Field) -> None: ...
3031

3132
class UniqueTogetherValidator:
32-
message: str
33-
missing_message: str
33+
message: _StrOrPromise
34+
missing_message: _StrOrPromise
3435
requires_context: bool
3536
queryset: QuerySet
3637
fields: Iterable[str]
37-
def __init__(self, queryset: QuerySet, fields: Iterable[str], message: str | None = ...) -> None: ...
38+
def __init__(self, queryset: QuerySet, fields: Iterable[str], message: _StrOrPromise | None = ...) -> None: ...
3839
def enforce_required_fields(self, attrs: Container[str], serializer: BaseSerializer) -> None: ...
3940
def filter_queryset(
4041
self, attrs: MutableMapping[str, Any], queryset: QuerySet[_T], serializer: BaseSerializer
@@ -45,18 +46,20 @@ class UniqueTogetherValidator:
4546
def __call__(self, attrs: MutableMapping[str, Any], serializer: BaseSerializer) -> None: ...
4647

4748
class ProhibitSurrogateCharactersValidator:
48-
message: str
49+
message: _StrOrPromise
4950
code: str
5051
def __call__(self, value: Any) -> None: ...
5152

5253
class BaseUniqueForValidator:
53-
message: str
54-
missing_message: str
54+
message: _StrOrPromise
55+
missing_message: _StrOrPromise
5556
requires_context: bool
5657
queryset: QuerySet
5758
field: str
5859
date_field: str
59-
def __init__(self, queryset: QuerySet, field: str, date_field: str, message: str | None = ...) -> None: ...
60+
def __init__(
61+
self, queryset: QuerySet, field: str, date_field: str, message: _StrOrPromise | None = ...
62+
) -> None: ...
6063
def enforce_required_fields(self, attrs: Container[str]) -> None: ...
6164
def filter_queryset(
6265
self, attrs: MutableMapping[str, Any], queryset: QuerySet[_T], field_name: str, date_field_name: str

0 commit comments

Comments
 (0)