From 4e27af715a47fe2de29788f43e74b6995efde9d4 Mon Sep 17 00:00:00 2001 From: SaJH Date: Tue, 16 Apr 2024 19:59:25 +0900 Subject: [PATCH 1/2] [3.15] Add functions related to UniqueConstraint --- rest_framework-stubs/serializers.pyi | 5 ++++- rest_framework-stubs/utils/field_mapping.pyi | 4 +++- scripts/stubtest/allowlist_todo.txt | 2 -- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rest_framework-stubs/serializers.pyi b/rest_framework-stubs/serializers.pyi index 9f32ddcfe..5d99496a6 100644 --- a/rest_framework-stubs/serializers.pyi +++ b/rest_framework-stubs/serializers.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from collections.abc import Iterable, Iterator, Mapping, MutableMapping, Sequence -from typing import Any, ClassVar, Generic, Literal, NoReturn, TypeVar +from typing import Any, ClassVar, Generator, Generic, Literal, NoReturn, TypeVar from django.db import models from django.db.models import Manager, Model, QuerySet @@ -253,6 +253,9 @@ class ModelSerializer(Serializer, BaseSerializer[_MT]): self, kwargs: MutableMapping[str, Any], extra_kwargs: MutableMapping[str, Any] ) -> MutableMapping[str, Any]: ... def get_extra_kwargs(self) -> dict[str, Any]: ... + def get_unique_together_constraints( + self, model: _MT + ) -> Generator[tuple[set[tuple[str, ...]], Manager[_MT]], None, None]: ... def get_uniqueness_extra_kwargs( self, field_names: Iterable[str], declared_fields: Mapping[str, Field], extra_kwargs: dict[str, Any] ) -> tuple[dict[str, Any], dict[str, HiddenField]]: ... diff --git a/rest_framework-stubs/utils/field_mapping.pyi b/rest_framework-stubs/utils/field_mapping.pyi index 2a3ddf358..e334f2da0 100644 --- a/rest_framework-stubs/utils/field_mapping.pyi +++ b/rest_framework-stubs/utils/field_mapping.pyi @@ -1,8 +1,9 @@ from _typeshed import Incomplete from collections.abc import MutableMapping, Sequence -from typing import Any, Generic, TypeVar +from typing import Any, Generator, Generic, TypeVar from django.db import models +from rest_framework.validators import UniqueValidator NUMERIC_FIELD_TYPES: Sequence[type[models.Field]] @@ -17,6 +18,7 @@ class ClassLookupDict(Generic[_K, _V]): def needs_label(model_field: models.Field, field_name: str) -> bool: ... def get_detail_view_name(model: models.Model) -> str: ... +def get_unique_validators(field_name: str, model_field: models.Field) -> Generator[UniqueValidator, None, None]: ... def get_field_kwargs(field_name: str, model_field: models.Field) -> dict[str, Any]: ... def get_relation_kwargs(field_name: str, relation_info: Incomplete) -> dict[str, Any]: ... def get_nested_relation_kwargs(relation_info: Incomplete) -> dict[str, Any]: ... diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 4c656bf44..40c943438 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -138,5 +138,3 @@ rest_framework.views.GenericView # Added in 3.15: rest_framework.filters.search_smart_split -rest_framework.serializers.ModelSerializer.get_unique_together_constraints -rest_framework.utils.field_mapping.get_unique_validators From 673032b287e0a8970ad9d8a7aa6d280fa701516c Mon Sep 17 00:00:00 2001 From: SaJH Date: Wed, 17 Apr 2024 00:45:24 +0900 Subject: [PATCH 2/2] [3.15] Fix to the correct type --- rest_framework-stubs/serializers.pyi | 6 ++---- rest_framework-stubs/utils/field_mapping.pyi | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/rest_framework-stubs/serializers.pyi b/rest_framework-stubs/serializers.pyi index 5d99496a6..833005d17 100644 --- a/rest_framework-stubs/serializers.pyi +++ b/rest_framework-stubs/serializers.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from collections.abc import Iterable, Iterator, Mapping, MutableMapping, Sequence -from typing import Any, ClassVar, Generator, Generic, Literal, NoReturn, TypeVar +from typing import Any, ClassVar, Generic, Literal, NoReturn, TypeVar from django.db import models from django.db.models import Manager, Model, QuerySet @@ -253,9 +253,7 @@ class ModelSerializer(Serializer, BaseSerializer[_MT]): self, kwargs: MutableMapping[str, Any], extra_kwargs: MutableMapping[str, Any] ) -> MutableMapping[str, Any]: ... def get_extra_kwargs(self) -> dict[str, Any]: ... - def get_unique_together_constraints( - self, model: _MT - ) -> Generator[tuple[set[tuple[str, ...]], Manager[_MT]], None, None]: ... + def get_unique_together_constraints(self, model: _MT) -> Iterator[tuple[set[tuple[str, ...]], Manager[_MT]]]: ... def get_uniqueness_extra_kwargs( self, field_names: Iterable[str], declared_fields: Mapping[str, Field], extra_kwargs: dict[str, Any] ) -> tuple[dict[str, Any], dict[str, HiddenField]]: ... diff --git a/rest_framework-stubs/utils/field_mapping.pyi b/rest_framework-stubs/utils/field_mapping.pyi index e334f2da0..ea46f5672 100644 --- a/rest_framework-stubs/utils/field_mapping.pyi +++ b/rest_framework-stubs/utils/field_mapping.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from collections.abc import MutableMapping, Sequence -from typing import Any, Generator, Generic, TypeVar +from typing import Any, Generic, Iterator, TypeVar from django.db import models from rest_framework.validators import UniqueValidator @@ -18,7 +18,7 @@ class ClassLookupDict(Generic[_K, _V]): def needs_label(model_field: models.Field, field_name: str) -> bool: ... def get_detail_view_name(model: models.Model) -> str: ... -def get_unique_validators(field_name: str, model_field: models.Field) -> Generator[UniqueValidator, None, None]: ... +def get_unique_validators(field_name: str, model_field: models.Field) -> Iterator[UniqueValidator]: ... def get_field_kwargs(field_name: str, model_field: models.Field) -> dict[str, Any]: ... def get_relation_kwargs(field_name: str, relation_info: Incomplete) -> dict[str, Any]: ... def get_nested_relation_kwargs(relation_info: Incomplete) -> dict[str, Any]: ...