From 4a0dd04611dac7c7e08f7bcd4cbb9fbf3ec524d1 Mon Sep 17 00:00:00 2001 From: w0rp Date: Fri, 17 Dec 2021 19:20:01 +0000 Subject: [PATCH] Set types for on_delete functions (#772) Set types for on_delete functions so they can be provided as values to the on_delete attribute of ForeignKey in Pyright's strict mode. --- django-stubs/db/models/deletion.pyi | 45 ++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/django-stubs/db/models/deletion.pyi b/django-stubs/db/models/deletion.pyi index 5fea4a8..1c23553 100644 --- a/django-stubs/db/models/deletion.pyi +++ b/django-stubs/db/models/deletion.pyi @@ -4,14 +4,45 @@ from django.db import IntegrityError from django.db.models.base import Model from django.db.models.fields import Field from django.db.models.options import Options +from django.db.models.query import QuerySet -def CASCADE(collector, field, sub_objs, using): ... -def SET_NULL(collector, field, sub_objs, using): ... -def SET_DEFAULT(collector, field, sub_objs, using): ... -def DO_NOTHING(collector, field, sub_objs, using): ... -def PROTECT(collector, field, sub_objs, using): ... -def RESTRICT(collector, field, sub_objs, using): ... -def SET(value: Any) -> Callable: ... +def CASCADE( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def SET_NULL( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def SET_DEFAULT( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def DO_NOTHING( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def PROTECT( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def RESTRICT( + collector: "Collector", + field: Field[Any, Any], + sub_objs: QuerySet[Model], + using: str, +) -> None: ... +def SET(value: Any) -> Callable[..., Any]: ... def get_candidate_relations_to_delete(opts: Options) -> Iterable[Field]: ... class ProtectedError(IntegrityError):