Skip to content

Commit 9b3a693

Browse files
fix(serializers): BaseSerializer should return Self (#39)
This fixes invalid type in following code: ```python def factory( serializer: Type[ModelSerializer], data: Dict[str, str], ) -> ModelSerializer: return serializer(data=data) ``` Without Self returned type is "BaseSerializer".
1 parent 5fb868d commit 9b3a693

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

poetry.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ packages = [
1717

1818
[tool.poetry.dependencies]
1919
python = "^3.7"
20+
typing_extensions = { version = "^4.6", python = "<3.11" }
2021

2122
[tool.poetry.dev-dependencies]
2223
ipython = "^7.19"

rest_framework-stubs/serializers.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ from typing import (
1111
Literal,
1212
NoReturn,
1313
)
14+
from typing_extensions import Self
1415

1516
from django.db import models
1617
from django.db.models import Manager, QuerySet
@@ -82,7 +83,7 @@ class BaseSerializer(Field[Any, Any, Any, Any]):
8283
instance: Any | None
8384
initial_data: Any
8485
_context: dict[str, Any]
85-
def __new__(cls, *args: Any, **kwargs: Any) -> BaseSerializer: ...
86+
def __new__(cls, *args: Any, **kwargs: Any) -> Self: ...
8687
def __class_getitem__(cls, *args: Any, **kwargs: Any) -> Any: ...
8788
def __init__(
8889
self,

0 commit comments

Comments
 (0)