From 53d34ad9faefb032de09901c501593af5b419ff0 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 11:50:04 +0300 Subject: [PATCH 1/8] Update django to 5.0.5 --- django-stubs/db/models/__init__.pyi | 1 + django-stubs/db/models/query_utils.pyi | 2 ++ requirements.txt | 4 ++-- setup.py | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/django-stubs/db/models/__init__.pyi b/django-stubs/db/models/__init__.pyi index 483225654..06c0383b9 100644 --- a/django-stubs/db/models/__init__.pyi +++ b/django-stubs/db/models/__init__.pyi @@ -91,6 +91,7 @@ from .lookups import Transform as Transform from .manager import Manager as Manager from .query import Prefetch as Prefetch from .query import QuerySet as QuerySet +from .query import aprefetch_related_objects as aprefetch_related_objects from .query import prefetch_related_objects as prefetch_related_objects from .query_utils import FilteredRelation as FilteredRelation from .query_utils import Q as Q diff --git a/django-stubs/db/models/query_utils.pyi b/django-stubs/db/models/query_utils.pyi index c6cfb2470..2f5fe67a2 100644 --- a/django-stubs/db/models/query_utils.pyi +++ b/django-stubs/db/models/query_utils.pyi @@ -44,6 +44,8 @@ class Q(tree.Node): def flatten(self) -> Iterator[Incomplete]: ... def check(self, against: dict[str, Any], using: str = ...) -> bool: ... def deconstruct(self) -> tuple[str, Sequence[Any], dict[str, Any]]: ... + @cached_property + def referenced_base_fields(self) -> set[str]: ... class DeferredAttribute: field: Field diff --git a/requirements.txt b/requirements.txt index 95b5eb2c0..968c131b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,9 +9,9 @@ pytest-shard==0.1.2 # Django deps: psycopg2-binary Django==4.2.11; python_version < '3.10' -Django==5.0.4; python_version >= '3.10' +Django==5.0.5; python_version >= '3.10' -e ./ext --e .[redis,compatible-mypy] +-e .[redis,compatible-mypy,oracle] # Overrides: mypy==1.10.0 diff --git a/setup.py b/setup.py index d056f7b2a..66bcca87b 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,7 @@ def find_stub_files(name: str) -> List[str]: extras_require = { "compatible-mypy": ["mypy~=1.10.0"], "redis": ["redis"], + "oracle": ["oracledb"], } setup( From 7652d75f7e67007243f5dedfe272820692a58400 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 11:52:22 +0300 Subject: [PATCH 2/8] Fix CI --- django-stubs/db/models/query_utils.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/django-stubs/db/models/query_utils.pyi b/django-stubs/db/models/query_utils.pyi index 2f5fe67a2..563072b24 100644 --- a/django-stubs/db/models/query_utils.pyi +++ b/django-stubs/db/models/query_utils.pyi @@ -13,6 +13,7 @@ from django.db.models.sql.compiler import SQLCompiler, _AsSqlType from django.db.models.sql.query import Query from django.db.models.sql.where import WhereNode from django.utils import tree +from django.utils.functional import cached_property PathInfo = namedtuple( "PathInfo", ["from_opts", "to_opts", "target_fields", "join_field", "m2m", "direct", "filtered_relation"] From 1b4754e5b2b94eddfced65399a50d7e53bdc13fb Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 12:11:18 +0300 Subject: [PATCH 3/8] Update django to 4.2.12 --- django-stubs/contrib/gis/db/backends/oracle/features.pyi | 2 ++ pytest.ini | 1 + requirements.txt | 2 +- scripts/stubtest/allowlist_todo_django50.txt | 9 +++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/django-stubs/contrib/gis/db/backends/oracle/features.pyi b/django-stubs/contrib/gis/db/backends/oracle/features.pyi index 5c4571cc7..d492f809b 100644 --- a/django-stubs/contrib/gis/db/backends/oracle/features.pyi +++ b/django-stubs/contrib/gis/db/backends/oracle/features.pyi @@ -7,3 +7,5 @@ class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures): supports_geometry_field_unique_index: bool supports_perimeter_geodetic: bool supports_dwithin_distance_expr: bool + @cached_property + def django_test_skips(self) -> dict[str, Any]: ... # type: ignore[override] diff --git a/pytest.ini b/pytest.ini index e30adfa9b..6f05d1c63 100644 --- a/pytest.ini +++ b/pytest.ini @@ -8,4 +8,5 @@ addopts = -v --cache-clear --mypy-ini-file=mypy.ini + --mypy-only-local-stub --mypy-extension-hook=scripts.tests_extension_hook.django_plugin_hook diff --git a/requirements.txt b/requirements.txt index 968c131b8..e35b68505 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ pytest-shard==0.1.2 # Django deps: psycopg2-binary -Django==4.2.11; python_version < '3.10' +Django==4.2.12; python_version < '3.10' Django==5.0.5; python_version >= '3.10' -e ./ext -e .[redis,compatible-mypy,oracle] diff --git a/scripts/stubtest/allowlist_todo_django50.txt b/scripts/stubtest/allowlist_todo_django50.txt index 9da15e5aa..227ed3c2c 100644 --- a/scripts/stubtest/allowlist_todo_django50.txt +++ b/scripts/stubtest/allowlist_todo_django50.txt @@ -92,3 +92,12 @@ django.forms.fields_for_model django.forms.models.fields_for_model django.forms.widgets.ClearableFileInput.checked django.template.autoreload + +# Django + Oracle (new errors after 5.0.5 update) +django.db.backends.oracle.utils.dsn +django.db.backends.oracle.utils.BulkInsertMapper.NCLOB +django.db.backends.oracle.introspection.TableInfo +django.db.backends.oracle.base.DatabaseWrapper.oracledb_version +django.db.backends.oracle.base.DatabaseWrapper.ops +django.contrib.gis.db.backends.oracle.operations.OracleOperations.from_text +django.contrib.gis.db.backends.oracle.operations.OracleOperations.convert_extent From 69d1d1c1264d9605982e155f82ddd695e5b16e20 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 12:15:43 +0300 Subject: [PATCH 4/8] Fix CI --- django-stubs/contrib/gis/db/backends/oracle/features.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/django-stubs/contrib/gis/db/backends/oracle/features.pyi b/django-stubs/contrib/gis/db/backends/oracle/features.pyi index d492f809b..c1dd439ff 100644 --- a/django-stubs/contrib/gis/db/backends/oracle/features.pyi +++ b/django-stubs/contrib/gis/db/backends/oracle/features.pyi @@ -1,5 +1,6 @@ from django.contrib.gis.db.backends.base.features import BaseSpatialFeatures from django.db.backends.oracle.features import DatabaseFeatures as OracleDatabaseFeatures +from django.utils.functional import cached_property class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures): supports_add_srs_entry: bool From fe19e0e4ad4adf24fac53c5ae57a7d606d39f9a1 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 12:17:20 +0300 Subject: [PATCH 5/8] Fix CI --- django-stubs/contrib/gis/db/backends/oracle/features.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/django-stubs/contrib/gis/db/backends/oracle/features.pyi b/django-stubs/contrib/gis/db/backends/oracle/features.pyi index c1dd439ff..0cb30a2b4 100644 --- a/django-stubs/contrib/gis/db/backends/oracle/features.pyi +++ b/django-stubs/contrib/gis/db/backends/oracle/features.pyi @@ -1,6 +1,7 @@ from django.contrib.gis.db.backends.base.features import BaseSpatialFeatures from django.db.backends.oracle.features import DatabaseFeatures as OracleDatabaseFeatures from django.utils.functional import cached_property +from typing import Any class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures): supports_add_srs_entry: bool From 5c392508d9371d6ba9ec10a4d9d553026829dfd9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 09:17:36 +0000 Subject: [PATCH 6/8] [pre-commit.ci] auto fixes from pre-commit.com hooks --- django-stubs/contrib/gis/db/backends/oracle/features.pyi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django-stubs/contrib/gis/db/backends/oracle/features.pyi b/django-stubs/contrib/gis/db/backends/oracle/features.pyi index 0cb30a2b4..9785b6e1b 100644 --- a/django-stubs/contrib/gis/db/backends/oracle/features.pyi +++ b/django-stubs/contrib/gis/db/backends/oracle/features.pyi @@ -1,7 +1,8 @@ +from typing import Any + from django.contrib.gis.db.backends.base.features import BaseSpatialFeatures from django.db.backends.oracle.features import DatabaseFeatures as OracleDatabaseFeatures from django.utils.functional import cached_property -from typing import Any class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures): supports_add_srs_entry: bool From 27def9f23cc16ae8317ef18316ad30f88fdbd80b Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 12:55:21 +0300 Subject: [PATCH 7/8] Fix CI --- mypy.ini | 4 ++++ pytest.ini | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mypy.ini b/mypy.ini index 0ac3d750f..8d4fee185 100644 --- a/mypy.ini +++ b/mypy.ini @@ -27,5 +27,9 @@ plugins = disallow_untyped_defs = false disallow_incomplete_defs = false +[mypy-cryptography.*] +disallow_untyped_defs = false +disallow_incomplete_defs = false + [mypy.plugins.django-stubs] django_settings_module = scripts.django_tests_settings diff --git a/pytest.ini b/pytest.ini index 6f05d1c63..e30adfa9b 100644 --- a/pytest.ini +++ b/pytest.ini @@ -8,5 +8,4 @@ addopts = -v --cache-clear --mypy-ini-file=mypy.ini - --mypy-only-local-stub --mypy-extension-hook=scripts.tests_extension_hook.django_plugin_hook From 8157dcd2bd74e693d78b8b379127aa3738255570 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 May 2024 13:05:49 +0300 Subject: [PATCH 8/8] Try `ignore_errors` --- mypy.ini | 3 +-- scripts/stubtest/allowlist.txt | 4 ++++ scripts/stubtest/allowlist_todo.txt | 8 -------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/mypy.ini b/mypy.ini index 8d4fee185..0dd267fa9 100644 --- a/mypy.ini +++ b/mypy.ini @@ -28,8 +28,7 @@ disallow_untyped_defs = false disallow_incomplete_defs = false [mypy-cryptography.*] -disallow_untyped_defs = false -disallow_incomplete_defs = false +ignore_errors = true [mypy.plugins.django-stubs] django_settings_module = scripts.django_tests_settings diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index 44113453d..ef6a09219 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -393,6 +393,10 @@ django.urls.resolvers.URLPattern.lookup_str django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings +django.db.models.Q.referenced_base_fields +django.db.models.query_utils.Q.referenced_base_fields +django.contrib.gis.db.models.Q.referenced_base_fields +django.db.backends.oracle.features.DatabaseFeatures.django_test_skips # Ignore missing inner `Meta` class, see PR #2000 for the related discussion django.contrib.auth.base_user.AbstractBaseUser.Meta diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 45811f582..2c58335df 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -208,13 +208,9 @@ django.contrib.gis.db.backends.base.operations.BaseSpatialOperations.mariadb django.contrib.gis.db.backends.mysql.base django.contrib.gis.db.backends.mysql.features.DatabaseFeatures.unsupported_geojson_options django.contrib.gis.db.backends.mysql.introspection -django.contrib.gis.db.backends.oracle.adapter -django.contrib.gis.db.backends.oracle.base django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.django_test_skips django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.supports_tolerance_parameter django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.unsupported_geojson_options -django.contrib.gis.db.backends.oracle.introspection -django.contrib.gis.db.backends.oracle.operations django.contrib.gis.db.backends.postgis.adapter.PostGISAdapter.prepare django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.empty_intersection_returns_none django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.supports_geography @@ -592,12 +588,8 @@ django.db.backends.mysql.features.DatabaseFeatures.supports_table_check_constrai django.db.backends.mysql.features.DatabaseFeatures.test_collations django.db.backends.mysql.introspection django.db.backends.mysql.schema.DatabaseSchemaEditor.sql_alter_column_comment -django.db.backends.oracle.base django.db.backends.oracle.features.DatabaseFeatures.introspected_field_types django.db.backends.oracle.features.DatabaseFeatures.supports_collation_on_charfield -django.db.backends.oracle.introspection -django.db.backends.oracle.operations -django.db.backends.oracle.utils django.db.backends.postgresql.base.DatabaseWrapper.Database django.db.backends.postgresql.base.DatabaseWrapper.ensure_role django.db.backends.postgresql.base.DatabaseWrapper.ops