From 4c9adfad549909447720ff32bcd79ee82ab8bf43 Mon Sep 17 00:00:00 2001 From: Alessio Bogon <778703+youtux@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:49:12 +0200 Subject: [PATCH 1/4] Fix signature of `LogEntryManager.log_actions` `LogEntryManager.log_actions` can take any `Iterable[T]` for the `queryset` param, not necessarily a `QuerySet[T]`. Indeed, Django itself invokes it with a `list[T]` in `ModelAdmin.log_addition`: https://github.com/django/django/blob/091f66e51aa900f7d7650529621bdc8e4b0dee68/django/contrib/admin/options.py#L945 --- django-stubs/contrib/admin/models.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django-stubs/contrib/admin/models.pyi b/django-stubs/contrib/admin/models.pyi index 56c9e2926..0da4e705c 100644 --- a/django-stubs/contrib/admin/models.pyi +++ b/django-stubs/contrib/admin/models.pyi @@ -25,7 +25,7 @@ class LogEntryManager(models.Manager[LogEntry]): def log_actions( self, user_id: int | str | UUID, - queryset: QuerySet[Model], + queryset: Iterable[Model], action_flag: int, change_message: str | list[Any] = "", *, From 6a0354c038ee30164871aadad8c62f1916403ca8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 08:49:59 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- django-stubs/contrib/admin/models.pyi | 1 - 1 file changed, 1 deletion(-) diff --git a/django-stubs/contrib/admin/models.pyi b/django-stubs/contrib/admin/models.pyi index 0da4e705c..7d534319a 100644 --- a/django-stubs/contrib/admin/models.pyi +++ b/django-stubs/contrib/admin/models.pyi @@ -2,7 +2,6 @@ from typing import Any, ClassVar from uuid import UUID from django.db import models -from django.db.models import QuerySet from django.db.models.base import Model from typing_extensions import deprecated From 5940319f48faa6986a14b3b78d1f89b03b4c127d Mon Sep 17 00:00:00 2001 From: Alessio Bogon <778703+youtux@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:52:04 +0200 Subject: [PATCH 3/4] Add missing import --- django-stubs/contrib/admin/models.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/django-stubs/contrib/admin/models.pyi b/django-stubs/contrib/admin/models.pyi index 7d534319a..d8d902be9 100644 --- a/django-stubs/contrib/admin/models.pyi +++ b/django-stubs/contrib/admin/models.pyi @@ -1,3 +1,4 @@ +from collections.abc import Iterable from typing import Any, ClassVar from uuid import UUID From 9c1964023684511f63ddd5f232ae6f512978da33 Mon Sep 17 00:00:00 2001 From: Alessio Bogon <778703+youtux@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:50:22 +0000 Subject: [PATCH 4/4] Add signature overrides for `LogEntryManager.log_actions` --- django-stubs/contrib/admin/models.pyi | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/django-stubs/contrib/admin/models.pyi b/django-stubs/contrib/admin/models.pyi index d8d902be9..3d0f878d0 100644 --- a/django-stubs/contrib/admin/models.pyi +++ b/django-stubs/contrib/admin/models.pyi @@ -1,5 +1,5 @@ from collections.abc import Iterable -from typing import Any, ClassVar +from typing import Any, ClassVar, Literal, overload from uuid import UUID from django.db import models @@ -22,6 +22,7 @@ class LogEntryManager(models.Manager[LogEntry]): action_flag: int, change_message: Any = ..., ) -> LogEntry: ... + @overload def log_actions( self, user_id: int | str | UUID, @@ -29,8 +30,18 @@ class LogEntryManager(models.Manager[LogEntry]): action_flag: int, change_message: str | list[Any] = "", *, - single_object: bool = False, - ) -> list[LogEntry] | LogEntry: ... + single_object: Literal[True] = ..., + ) -> LogEntry: ... + @overload + def log_actions( + self, + user_id: int | str | UUID, + queryset: Iterable[Model], + action_flag: int, + change_message: str | list[Any] = "", + *, + single_object: Literal[False] = ..., + ) -> list[LogEntry]: ... class LogEntry(models.Model): action_time: models.DateTimeField