From 3962c0db694e1c1774aa4bb160d969c119210a59 Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 12:47:25 +0300 Subject: [PATCH 1/8] Add GeoModelAdminMixin --- django-stubs/contrib/gis/admin/options.pyi | 8 +++++++- scripts/stubtest/allowlist_todo.txt | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/django-stubs/contrib/gis/admin/options.pyi b/django-stubs/contrib/gis/admin/options.pyi index 047952c2d..cd9935fda 100644 --- a/django-stubs/contrib/gis/admin/options.pyi +++ b/django-stubs/contrib/gis/admin/options.pyi @@ -2,13 +2,19 @@ from typing import Any from django.contrib.admin import ModelAdmin from django.contrib.gis.forms import BaseGeometryWidget +from django.db.models import Field +from django.forms.fields import Field as FormField from django.forms.widgets import Media +from django.http import HttpRequest spherical_mercator_srid: int -class GISModelAdmin(ModelAdmin): +class GeoModelAdminMixin: gis_widget: BaseGeometryWidget gis_widget_kwargs: dict[str, Any] + def formfield_for_dbfield(self, db_field: Field, request: HttpRequest, **kwargs: Any) -> FormField: ... + +class GISModelAdmin(GeoModelAdminMixin, ModelAdmin): ... class GeoModelAdmin(ModelAdmin): default_lon: int diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 18ee516c0..8b7db9a11 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -239,7 +239,6 @@ django.contrib.gis.admin.display django.contrib.gis.admin.options.GISModelAdmin django.contrib.gis.admin.options.GISModelAdmin.gis_widget django.contrib.gis.admin.options.GeoModelAdmin -django.contrib.gis.admin.options.GeoModelAdminMixin django.contrib.gis.admin.options.OSMGeoAdmin django.contrib.gis.admin.site django.contrib.gis.db.backends.base.features.BaseSpatialFeatures.can_alter_geometry_field From c20c1742e13c178570bb012102704d258f83fd1f Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 18:34:08 +0300 Subject: [PATCH 2/8] fixup! Add GeoModelAdminMixin --- django-stubs/contrib/gis/admin/options.pyi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/django-stubs/contrib/gis/admin/options.pyi b/django-stubs/contrib/gis/admin/options.pyi index cd9935fda..37213178f 100644 --- a/django-stubs/contrib/gis/admin/options.pyi +++ b/django-stubs/contrib/gis/admin/options.pyi @@ -1,7 +1,7 @@ -from typing import Any +from typing import Any, ClassVar from django.contrib.admin import ModelAdmin -from django.contrib.gis.forms import BaseGeometryWidget +from django.contrib.gis.forms import OSMWidget from django.db.models import Field from django.forms.fields import Field as FormField from django.forms.widgets import Media @@ -10,8 +10,8 @@ from django.http import HttpRequest spherical_mercator_srid: int class GeoModelAdminMixin: - gis_widget: BaseGeometryWidget - gis_widget_kwargs: dict[str, Any] + gis_widget: ClassVar[type[OSMWidget]] + gis_widget_kwargs: ClassVar[dict[str, Any]] def formfield_for_dbfield(self, db_field: Field, request: HttpRequest, **kwargs: Any) -> FormField: ... class GISModelAdmin(GeoModelAdminMixin, ModelAdmin): ... From 683e8dd13ebdf18f04057ed885d0f9871e8ca108 Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 18:50:37 +0300 Subject: [PATCH 3/8] Remove unused todos --- scripts/stubtest/allowlist_todo.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 8b7db9a11..cf3e8ad04 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -225,7 +225,6 @@ django.contrib.flatpages.models.FlatPage.template_name django.contrib.flatpages.models.FlatPage.title django.contrib.flatpages.models.FlatPage.url django.contrib.gis.admin.GISModelAdmin -django.contrib.gis.admin.GISModelAdmin.gis_widget django.contrib.gis.admin.GeoModelAdmin django.contrib.gis.admin.ModelAdmin django.contrib.gis.admin.ModelAdmin.log_addition @@ -237,7 +236,6 @@ django.contrib.gis.admin.TabularInline django.contrib.gis.admin.action django.contrib.gis.admin.display django.contrib.gis.admin.options.GISModelAdmin -django.contrib.gis.admin.options.GISModelAdmin.gis_widget django.contrib.gis.admin.options.GeoModelAdmin django.contrib.gis.admin.options.OSMGeoAdmin django.contrib.gis.admin.site From 9ef5460ee46d636f5df03434d25af76e56d5b38a Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:00:17 +0300 Subject: [PATCH 4/8] Ignore now --- scripts/stubtest/allowlist.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index ca96d4868..16183da36 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -394,3 +394,6 @@ django.urls.resolvers.URLPattern.lookup_str django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings + +# Potential mypy bug with metaclass +django.contrib.gis.admin.options.GeoModelAdminMixin.gis_widget From dcfa42e908b40595b9bdca1af3eccebfbd583d0b Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:16:45 +0300 Subject: [PATCH 5/8] Without ClassVar test --- django-stubs/contrib/gis/admin/options.pyi | 2 +- scripts/stubtest/allowlist.txt | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/django-stubs/contrib/gis/admin/options.pyi b/django-stubs/contrib/gis/admin/options.pyi index 37213178f..5766e20a1 100644 --- a/django-stubs/contrib/gis/admin/options.pyi +++ b/django-stubs/contrib/gis/admin/options.pyi @@ -10,7 +10,7 @@ from django.http import HttpRequest spherical_mercator_srid: int class GeoModelAdminMixin: - gis_widget: ClassVar[type[OSMWidget]] + gis_widget: type[OSMWidget] gis_widget_kwargs: ClassVar[dict[str, Any]] def formfield_for_dbfield(self, db_field: Field, request: HttpRequest, **kwargs: Any) -> FormField: ... diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index 16183da36..ca96d4868 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -394,6 +394,3 @@ django.urls.resolvers.URLPattern.lookup_str django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings - -# Potential mypy bug with metaclass -django.contrib.gis.admin.options.GeoModelAdminMixin.gis_widget From 0dac9c486f2bf20cbba718e33f89e37d436ba28d Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:18:46 +0300 Subject: [PATCH 6/8] Revert "Without ClassVar test" This reverts commit dcfa42e908b40595b9bdca1af3eccebfbd583d0b. --- django-stubs/contrib/gis/admin/options.pyi | 2 +- scripts/stubtest/allowlist.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/django-stubs/contrib/gis/admin/options.pyi b/django-stubs/contrib/gis/admin/options.pyi index 5766e20a1..37213178f 100644 --- a/django-stubs/contrib/gis/admin/options.pyi +++ b/django-stubs/contrib/gis/admin/options.pyi @@ -10,7 +10,7 @@ from django.http import HttpRequest spherical_mercator_srid: int class GeoModelAdminMixin: - gis_widget: type[OSMWidget] + gis_widget: ClassVar[type[OSMWidget]] gis_widget_kwargs: ClassVar[dict[str, Any]] def formfield_for_dbfield(self, db_field: Field, request: HttpRequest, **kwargs: Any) -> FormField: ... diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index ca96d4868..16183da36 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -394,3 +394,6 @@ django.urls.resolvers.URLPattern.lookup_str django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings + +# Potential mypy bug with metaclass +django.contrib.gis.admin.options.GeoModelAdminMixin.gis_widget From c78ef2c3a3343cb510c481d33447397b70aff55e Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:02:01 +0300 Subject: [PATCH 7/8] stubtest bug --- scripts/stubtest/allowlist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index 16183da36..c8f56f223 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -395,5 +395,5 @@ django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings -# Potential mypy bug with metaclass +# Potential stubtest bug with metaclass django.contrib.gis.admin.options.GeoModelAdminMixin.gis_widget From cd2f2ecf285eb98d99dbb5b880e99338948aa24d Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:57:20 +0300 Subject: [PATCH 8/8] Remove django.contrib.gis.admin.options.spherical_mercator_srid --- scripts/stubtest/allowlist_todo_django50.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/stubtest/allowlist_todo_django50.txt b/scripts/stubtest/allowlist_todo_django50.txt index b0a884779..d7e534f60 100644 --- a/scripts/stubtest/allowlist_todo_django50.txt +++ b/scripts/stubtest/allowlist_todo_django50.txt @@ -30,7 +30,6 @@ django.contrib.contenttypes.fields.GenericForeignKey.get_content_type django.contrib.contenttypes.fields.GenericForeignKey.get_prefetch_querysets django.contrib.contenttypes.prefetch django.contrib.gis.admin.OpenLayersWidget -django.contrib.gis.admin.options.spherical_mercator_srid django.contrib.gis.admin.widgets django.contrib.gis.db.backends.spatialite.schema.SpatialiteSchemaEditor.alter_db_table django.contrib.gis.db.models.Case.allowed_default