From c38ff04eb397f6aa6285d861d25ea8203ca26da5 Mon Sep 17 00:00:00 2001 From: Marti Raudsepp Date: Wed, 15 Nov 2023 14:57:54 +0200 Subject: [PATCH 1/2] Restore RelatedManager inheritance from Manager --- django-stubs/db/models/fields/related_descriptors.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django-stubs/db/models/fields/related_descriptors.pyi b/django-stubs/db/models/fields/related_descriptors.pyi index 75bf0caef..783496e91 100644 --- a/django-stubs/db/models/fields/related_descriptors.pyi +++ b/django-stubs/db/models/fields/related_descriptors.pyi @@ -6,7 +6,7 @@ from django.db.models.base import Model from django.db.models.fields import Field from django.db.models.fields.related import ForeignKey, ManyToManyField, RelatedField from django.db.models.fields.reverse_related import ManyToManyRel, ManyToOneRel, OneToOneRel -from django.db.models.manager import BaseManager +from django.db.models.manager import BaseManager, Manager from django.db.models.query import QuerySet from django.db.models.query_utils import DeferredAttribute from django.utils.functional import cached_property @@ -88,7 +88,7 @@ class ReverseManyToOneDescriptor: def __set__(self, instance: Any, value: Any) -> NoReturn: ... # Fake class, Django defines 'RelatedManager' inside a function body -class RelatedManager(BaseManager[_M], Generic[_M]): +class RelatedManager(Manager[_M], Generic[_M]): related_val: tuple[int, ...] def add(self, *objs: _M | int, bulk: bool = ...) -> None: ... async def aadd(self, *objs: _M | int, bulk: bool = ...) -> None: ... From 446b096d0534adc2cb9befc6ad0c91ecbd9c36f2 Mon Sep 17 00:00:00 2001 From: Marti Raudsepp Date: Wed, 15 Nov 2023 15:46:42 +0200 Subject: [PATCH 2/2] Switch ManyRelatedManager to inherit from Manager --- django-stubs/db/models/fields/related_descriptors.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django-stubs/db/models/fields/related_descriptors.pyi b/django-stubs/db/models/fields/related_descriptors.pyi index 783496e91..ad407175a 100644 --- a/django-stubs/db/models/fields/related_descriptors.pyi +++ b/django-stubs/db/models/fields/related_descriptors.pyi @@ -126,7 +126,7 @@ class ManyToManyDescriptor(ReverseManyToOneDescriptor, Generic[_M]): def related_manager_cls(self) -> type[ManyRelatedManager[Any]]: ... # type: ignore[override] # Fake class, Django defines 'ManyRelatedManager' inside a function body -class ManyRelatedManager(BaseManager[_M], Generic[_M]): +class ManyRelatedManager(Manager[_M], Generic[_M]): related_val: tuple[int, ...] def add(self, *objs: _M | int, bulk: bool = ...) -> None: ... async def aadd(self, *objs: _M | int, bulk: bool = ...) -> None: ...