diff --git a/requirements.txt b/requirements.txt index 53fa6fd0c..3f55db396 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ pytest-shard==0.1.2 # Django deps: psycopg2-binary Django==4.2.13; python_version < '3.10' -Django==5.0.8; python_version >= '3.10' +Django==5.1; python_version >= '3.10' -e ./ext -e .[redis,compatible-mypy,oracle] diff --git a/scripts/stubtest.sh b/scripts/stubtest.sh index 6281eaa5c..4167f339c 100644 --- a/scripts/stubtest.sh +++ b/scripts/stubtest.sh @@ -15,4 +15,4 @@ stubtest django \ --ignore-positional-only \ --allowlist scripts/stubtest/allowlist.txt \ --allowlist scripts/stubtest/allowlist_todo.txt \ - --allowlist scripts/stubtest/allowlist_todo_django50.txt + --allowlist scripts/stubtest/allowlist_todo_django51.txt diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 60f4f8998..bc5e54706 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -2,10 +2,6 @@ # Unsorted: there are real problems and things we can really ignore. django.__main__ -django.conf.DEFAULT_FILE_STORAGE_DEPRECATED_MSG -django.conf.LazySettings.DEFAULT_FILE_STORAGE -django.conf.LazySettings.STATICFILES_STORAGE -django.conf.STATICFILES_STORAGE_DEPRECATED_MSG django.conf.global_settings.gettext_noop django.conf.urls.url django.contrib.admin.FieldListFilter.title @@ -86,10 +82,7 @@ django.contrib.auth.forms.BaseUserCreationForm.declared_fields django.contrib.auth.forms.UserChangeForm.declared_fields django.contrib.auth.forms.UserCreationForm.declared_fields django.contrib.auth.hashers.Argon2PasswordHasher.params -django.contrib.auth.hashers.SHA1PasswordHasher.__init__ django.contrib.auth.hashers.ScryptPasswordHasher -django.contrib.auth.hashers.UnsaltedMD5PasswordHasher.__init__ -django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher.__init__ django.contrib.auth.hashers.must_update_salt django.contrib.auth.hashers.reset_hashers django.contrib.auth.management.commands.createsuperuser.Command.get_input_data @@ -445,8 +438,6 @@ django.contrib.gis.gdal.raster.const.VSI_FILESYSTEM_PREFIX django.contrib.gis.gdal.raster.const.VSI_MEM_FILESYSTEM_BASE_PATH django.contrib.gis.gdal.srs.SpatialReference.pretty_wkt django.contrib.gis.gdal.srs.SpatialReference.xml -django.contrib.gis.geoip2.GeoIP2 -django.contrib.gis.geoip2.GeoIP2Exception django.contrib.gis.geoip2.base django.contrib.gis.geos.Point.tuple django.contrib.gis.geos.geometry.GEOSGeometryBase.geojson @@ -467,11 +458,9 @@ django.contrib.messages.storage.cookie.CookieStorage.key_salt django.contrib.messages.storage.cookie.MessageDecoder.decode django.contrib.messages.storage.cookie.MessageEncoder.default django.contrib.postgres.fields.ArrayField.formfield -django.contrib.postgres.fields.CIText.__init__ django.contrib.postgres.fields.HStoreField.formfield django.contrib.postgres.fields.RangeField.formfield django.contrib.postgres.fields.array.ArrayField.formfield -django.contrib.postgres.fields.citext.CIText.__init__ django.contrib.postgres.fields.hstore.HStoreField.formfield django.contrib.postgres.fields.ranges.RangeField.formfield django.contrib.postgres.forms.BaseRangeField.hidden_widget @@ -561,7 +550,6 @@ django.db.backends.mysql.schema.DatabaseSchemaEditor.sql_alter_column_comment django.db.backends.oracle.features.DatabaseFeatures.introspected_field_types django.db.backends.oracle.features.DatabaseFeatures.supports_collation_on_charfield django.db.backends.postgresql.base.DatabaseWrapper.Database -django.db.backends.postgresql.base.DatabaseWrapper.ensure_role django.db.backends.postgresql.base.DatabaseWrapper.ops django.db.backends.postgresql.base.DatabaseWrapper.tzinfo_factory django.db.backends.postgresql.base.INETARRAY @@ -612,7 +600,6 @@ django.db.backends.utils.names_digest django.db.backends.utils.split_tzname_delta django.db.connection django.db.migrations.Migration.suggest_name -django.db.migrations.autodetector.MigrationAutodetector.generate_removed_altered_index_together django.db.migrations.graph.Node.__ge__ django.db.migrations.graph.Node.__gt__ django.db.migrations.graph.Node.__le__ diff --git a/scripts/stubtest/allowlist_todo_django50.txt b/scripts/stubtest/allowlist_todo_django50.txt deleted file mode 100644 index a72262181..000000000 --- a/scripts/stubtest/allowlist_todo_django50.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Autogenerated by `stubtest` -# Only discrepancies that appeared after Django 4.2 -> 5.0 update. -# Unsorted: there are real problems and things we can really ignore. - -django.contrib.gis.db.models.Field._get_flatchoices -django.contrib.gis.db.models.ForeignKey.cast_db_type -django.contrib.gis.db.models.Q.identity -django.contrib.gis.geos.prototypes.io.DEFAULT_TRIM_VALUE -django.contrib.gis.management -django.contrib.gis.management.commands -django.contrib.gis.management.commands.inspectdb -django.contrib.gis.management.commands.ogrinspect -django.db.backends.mysql.features.DatabaseFeatures.allows_group_by_selected_pks -django.db.backends.mysql.features.DatabaseFeatures.has_native_uuid_field -django.db.backends.mysql.features.DatabaseFeatures.supports_expression_defaults -django.db.backends.oracle.features.DatabaseFeatures.supports_primitives_in_json_field -django.db.backends.oracle.features.DatabaseFeatures.test_collations -django.db.backends.oracle.oracledb_any -django.db.backends.postgresql.features.DatabaseFeatures.is_postgresql_15 -django.db.backends.postgresql.features.DatabaseFeatures.supports_nulls_distinct_unique_constraints -django.db.backends.postgresql.psycopg_any -django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_column_comment -django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_table_comment -django.db.models.Field._get_flatchoices -django.db.models.ForeignKey.cast_db_type -django.db.models.Q.identity -django.db.models.fields.Field._get_flatchoices -django.db.models.fields.related.ForeignKey.cast_db_type -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 diff --git a/scripts/stubtest/allowlist_todo_django51.txt b/scripts/stubtest/allowlist_todo_django51.txt new file mode 100644 index 000000000..8123c6764 --- /dev/null +++ b/scripts/stubtest/allowlist_todo_django51.txt @@ -0,0 +1,451 @@ +# Autogenerated by `stubtest` + +# Only discrepancies that appeared after Django 5.0 -> 5.1 update. +# Unsorted: there are real problems and things we can really ignore: + +django.conf.global_settings.DEFAULT_FILE_STORAGE +django.conf.global_settings.STATICFILES_STORAGE +django.contrib.admin.ModelAdmin.log_deletions +django.contrib.admin.helpers.Fieldset.is_collapsible +django.contrib.admin.helpers.InlineAdminFormSet.is_collapsible +django.contrib.admin.models.LogEntryManager.log_actions +django.contrib.admin.options.ModelAdmin.log_deletions +django.contrib.auth.base_user.BaseUserManager.make_random_password +django.contrib.auth.checks.check_middleware +django.contrib.auth.decorators.login_not_required +django.contrib.auth.forms.AdminPasswordChangeForm.clean_password2 +django.contrib.auth.forms.AdminPasswordChangeForm.usable_password_help_text +django.contrib.auth.forms.BaseUserCreationForm.clean_password2 +django.contrib.auth.forms.SetPasswordForm.clean_new_password2 +django.contrib.auth.forms.SetPasswordMixin +django.contrib.auth.hashers.SHA1PasswordHasher +django.contrib.auth.hashers.UnsaltedMD5PasswordHasher +django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher +django.contrib.auth.middleware.LoginRequiredMiddleware +django.contrib.auth.models.BaseUserManager.make_random_password +django.contrib.contenttypes.fields.GenericForeignKey.cache_name +django.contrib.contenttypes.fields.GenericForeignKey.get_attname_column +django.contrib.contenttypes.models.ContentType.get_object_for_this_type +django.contrib.gis.admin.ModelAdmin.log_deletions +django.contrib.gis.db.backends.mysql.operations.MySQLOperations.collect +django.contrib.gis.db.models.CharField.slice_expression +django.contrib.gis.db.models.CheckConstraint.__init__ +django.contrib.gis.db.models.F.__contains__ +django.contrib.gis.db.models.F.__getitem__ +django.contrib.gis.db.models.Field.slice_expression +django.contrib.gis.db.models.ForeignObjectRel.accessor_name +django.contrib.gis.db.models.ForeignObjectRel.cache_name +django.contrib.gis.db.models.ForeignObjectRel.is_hidden +django.contrib.gis.db.models.Model.arefresh_from_db +django.contrib.gis.db.models.Model.asave +django.contrib.gis.db.models.Model.refresh_from_db +django.contrib.gis.db.models.Model.save +django.contrib.gis.db.models.OrderBy.constraint_validation_compatible +django.contrib.gis.db.models.TextField.slice_expression +django.contrib.gis.db.models.WindowFrame.__init__ +django.contrib.gis.db.models.WindowFrame.get_exclusion +django.contrib.gis.db.models.WindowFrameExclusion +django.contrib.gis.db.models.functions.FromWKB.__init__ +django.contrib.gis.db.models.functions.FromWKB.as_oracle +django.contrib.gis.db.models.functions.FromWKB.output_field +django.contrib.gis.db.models.functions.FromWKT.output_field +django.contrib.gis.forms.ModelChoiceField.validate_no_null_characters +django.contrib.gis.forms.RadioSelect.__slotnames__ +django.contrib.gis.gdal.OGRGeometry.centroid +django.contrib.gis.gdal.OGRGeometry.is_3d +django.contrib.gis.gdal.OGRGeometry.is_measured +django.contrib.gis.gdal.OGRGeometry.set_3d +django.contrib.gis.gdal.OGRGeometry.set_measured +django.contrib.gis.gdal.geometries.LineString.m +django.contrib.gis.gdal.geometries.OGRGeometry.centroid +django.contrib.gis.gdal.geometries.OGRGeometry.is_3d +django.contrib.gis.gdal.geometries.OGRGeometry.is_measured +django.contrib.gis.gdal.geometries.OGRGeometry.set_3d +django.contrib.gis.gdal.geometries.OGRGeometry.set_measured +django.contrib.gis.gdal.geometries.Point.m +django.contrib.gis.gdal.prototypes.ds.GDAL_OF_ALL +django.contrib.gis.gdal.prototypes.ds.GDAL_OF_RASTER +django.contrib.gis.gdal.prototypes.ds.GDAL_OF_READONLY +django.contrib.gis.gdal.prototypes.ds.GDAL_OF_UPDATE +django.contrib.gis.gdal.prototypes.ds.GDAL_OF_VECTOR +django.contrib.gis.gdal.prototypes.ds.get_dataset_driver +django.contrib.gis.gdal.prototypes.ds.get_driver_description +django.contrib.gis.gdal.prototypes.ds.get_driver_name +django.contrib.gis.gdal.prototypes.ds.release_ds +django.contrib.gis.gdal.prototypes.geom.getm +django.contrib.gis.gdal.prototypes.geom.is_3d +django.contrib.gis.gdal.prototypes.geom.is_measured +django.contrib.gis.gdal.prototypes.geom.set_3d +django.contrib.gis.gdal.prototypes.geom.set_measured +django.contrib.gis.gdal.prototypes.geom.to_iso_wkb +django.contrib.gis.gdal.prototypes.geom.to_iso_wkt +django.contrib.gis.gdal.prototypes.raster.get_driver +django.contrib.gis.gdal.prototypes.raster.get_driver_by_name +django.contrib.gis.gdal.prototypes.raster.get_driver_count +django.contrib.gis.gdal.prototypes.raster.get_driver_description +django.contrib.gis.gdal.prototypes.raster.register_all +django.contrib.gis.geoip2.GeoIP2.info +django.contrib.gis.geoip2.resources +django.contrib.postgres.aggregates.JSONBAgg.__init__ +django.contrib.postgres.aggregates.general.JSONBAgg.__init__ +django.contrib.postgres.fields.ArrayField.slice_expression +django.contrib.postgres.fields.CIText +django.contrib.postgres.fields.array.ArrayField.slice_expression +django.contrib.postgres.fields.citext.CIText +django.contrib.postgres.indexes.BTreeIndex.__init__ +django.contrib.postgres.indexes.OpClass.constraint_validation_compatible +django.contrib.postgres.operations.AddConstraintNotValid.category +django.contrib.postgres.operations.AddIndexConcurrently.category +django.contrib.postgres.operations.CreateCollation.category +django.contrib.postgres.operations.CreateExtension.category +django.contrib.postgres.operations.RemoveCollation.category +django.contrib.postgres.operations.RemoveIndexConcurrently.category +django.contrib.postgres.operations.ValidateConstraint.category +django.contrib.sessions.backends.base.SessionBase.aclear_expired +django.contrib.sessions.backends.base.SessionBase.acreate +django.contrib.sessions.backends.base.SessionBase.acycle_key +django.contrib.sessions.backends.base.SessionBase.adelete +django.contrib.sessions.backends.base.SessionBase.adelete_test_cookie +django.contrib.sessions.backends.base.SessionBase.aexists +django.contrib.sessions.backends.base.SessionBase.aflush +django.contrib.sessions.backends.base.SessionBase.aget +django.contrib.sessions.backends.base.SessionBase.aget_expire_at_browser_close +django.contrib.sessions.backends.base.SessionBase.aget_expiry_age +django.contrib.sessions.backends.base.SessionBase.aget_expiry_date +django.contrib.sessions.backends.base.SessionBase.ahas_key +django.contrib.sessions.backends.base.SessionBase.aitems +django.contrib.sessions.backends.base.SessionBase.akeys +django.contrib.sessions.backends.base.SessionBase.aload +django.contrib.sessions.backends.base.SessionBase.apop +django.contrib.sessions.backends.base.SessionBase.asave +django.contrib.sessions.backends.base.SessionBase.aset +django.contrib.sessions.backends.base.SessionBase.aset_expiry +django.contrib.sessions.backends.base.SessionBase.aset_test_cookie +django.contrib.sessions.backends.base.SessionBase.asetdefault +django.contrib.sessions.backends.base.SessionBase.atest_cookie_worked +django.contrib.sessions.backends.base.SessionBase.aupdate +django.contrib.sessions.backends.base.SessionBase.avalues +django.contrib.sessions.backends.cache.SessionStore.acache_key +django.contrib.sessions.backends.cache.SessionStore.aclear_expired +django.contrib.sessions.backends.cache.SessionStore.acreate +django.contrib.sessions.backends.cache.SessionStore.adelete +django.contrib.sessions.backends.cache.SessionStore.aexists +django.contrib.sessions.backends.cache.SessionStore.aload +django.contrib.sessions.backends.cache.SessionStore.asave +django.contrib.sessions.backends.cached_db.SessionStore.acache_key +django.contrib.sessions.backends.cached_db.SessionStore.adelete +django.contrib.sessions.backends.cached_db.SessionStore.aexists +django.contrib.sessions.backends.cached_db.SessionStore.aflush +django.contrib.sessions.backends.cached_db.SessionStore.aload +django.contrib.sessions.backends.cached_db.SessionStore.asave +django.contrib.sessions.backends.cached_db.logger +django.contrib.sessions.backends.db.SessionStore.aclear_expired +django.contrib.sessions.backends.db.SessionStore.acreate +django.contrib.sessions.backends.db.SessionStore.acreate_model_instance +django.contrib.sessions.backends.db.SessionStore.adelete +django.contrib.sessions.backends.db.SessionStore.aexists +django.contrib.sessions.backends.db.SessionStore.aload +django.contrib.sessions.backends.db.SessionStore.asave +django.contrib.sessions.backends.file.SessionStore.aclear_expired +django.contrib.sessions.backends.file.SessionStore.acreate +django.contrib.sessions.backends.file.SessionStore.adelete +django.contrib.sessions.backends.file.SessionStore.aexists +django.contrib.sessions.backends.file.SessionStore.aload +django.contrib.sessions.backends.file.SessionStore.asave +django.contrib.sessions.backends.file.SessionStore.clean +django.contrib.sessions.backends.signed_cookies.SessionStore.aclear_expired +django.contrib.sessions.backends.signed_cookies.SessionStore.acreate +django.contrib.sessions.backends.signed_cookies.SessionStore.acycle_key +django.contrib.sessions.backends.signed_cookies.SessionStore.adelete +django.contrib.sessions.backends.signed_cookies.SessionStore.aexists +django.contrib.sessions.backends.signed_cookies.SessionStore.aload +django.contrib.sessions.backends.signed_cookies.SessionStore.asave +django.core.checks.templates.E001 +django.core.checks.templates.E002 +django.core.checks.templates.W003 +django.core.checks.templates.check_for_template_tags_with_the_same_name +django.core.checks.templates.check_setting_app_dirs_loaders +django.core.checks.templates.check_string_if_invalid_is_string +django.core.checks.templates.check_templates +django.core.checks.urls.check_custom_error_handlers +django.core.files.storage.FileSystemStorage.__init__ +django.core.files.storage.FileSystemStorage.is_name_available +django.core.files.storage.GET_STORAGE_CLASS_DEPRECATED_MSG +django.core.files.storage.Storage.is_name_available +django.core.files.storage.__all__ +django.core.files.storage.base.Storage.is_name_available +django.core.files.storage.filesystem.FileSystemStorage.__init__ +django.core.files.storage.filesystem.FileSystemStorage.is_name_available +django.core.files.storage.get_storage_class +django.core.signing.Signer.__init__ +django.core.validators.DomainNameValidator +django.core.validators.validate_domain_name +django.db.backends.base.features.BaseDatabaseFeatures.supports_frame_exclusion +django.db.backends.base.operations.BaseDatabaseOperations.bulk_insert_sql +django.db.backends.base.operations.BaseDatabaseOperations.force_group_by +django.db.backends.base.operations.BaseDatabaseOperations.window_frame_end +django.db.backends.base.operations.BaseDatabaseOperations.window_frame_start +django.db.backends.base.operations.BaseDatabaseOperations.window_frame_value +django.db.backends.ddl_references.Reference.references_index +django.db.backends.ddl_references.Statement.references_index +django.db.backends.ddl_references.Table.references_index +django.db.backends.oracle.features.DatabaseFeatures.bare_select_suffix +django.db.backends.oracle.features.DatabaseFeatures.supports_aggregation_over_interval_types +django.db.backends.oracle.features.DatabaseFeatures.supports_comparing_boolean_expr +django.db.backends.oracle.features.DatabaseFeatures.supports_frame_exclusion +django.db.backends.postgresql.base.DatabaseWrapper.close_pool +django.db.backends.postgresql.base.DatabaseWrapper.pool +django.db.backends.postgresql.base.ensure_role +django.db.backends.postgresql.base.ensure_timezone +django.db.backends.postgresql.features.DatabaseFeatures.django_test_skips +django.db.backends.postgresql.features.DatabaseFeatures.is_postgresql_16 +django.db.backends.postgresql.features.DatabaseFeatures.supports_frame_exclusion +django.db.backends.sqlite3.base.DatabaseWrapper.transaction_modes +django.db.backends.sqlite3.features.DatabaseFeatures.supports_frame_exclusion +django.db.backends.sqlite3.operations.DatabaseOperations.force_group_by +django.db.migrations.AddConstraint.category +django.db.migrations.AddField.category +django.db.migrations.AddIndex.category +django.db.migrations.AlterField.category +django.db.migrations.CreateModel.category +django.db.migrations.DeleteModel.category +django.db.migrations.RemoveConstraint.category +django.db.migrations.RemoveField.category +django.db.migrations.RemoveIndex.category +django.db.migrations.RenameField.category +django.db.migrations.RenameIndex.category +django.db.migrations.RenameModel.category +django.db.migrations.RunPython.category +django.db.migrations.RunSQL.category +django.db.migrations.SeparateDatabaseAndState.category +django.db.migrations.autodetector.MigrationAutodetector.generate_altered_index_together +django.db.migrations.autodetector.OperationDependency +django.db.migrations.operations.AddConstraint.category +django.db.migrations.operations.AddField.category +django.db.migrations.operations.AddIndex.category +django.db.migrations.operations.AlterField.category +django.db.migrations.operations.CreateModel.category +django.db.migrations.operations.DeleteModel.category +django.db.migrations.operations.RemoveConstraint.category +django.db.migrations.operations.RemoveField.category +django.db.migrations.operations.RemoveIndex.category +django.db.migrations.operations.RenameField.category +django.db.migrations.operations.RenameIndex.category +django.db.migrations.operations.RenameModel.category +django.db.migrations.operations.RunPython.category +django.db.migrations.operations.RunSQL.category +django.db.migrations.operations.SeparateDatabaseAndState.category +django.db.migrations.operations.base.Operation.category +django.db.migrations.operations.base.Operation.formatted_description +django.db.migrations.operations.base.OperationCategory +django.db.migrations.operations.fields.AddField.category +django.db.migrations.operations.fields.AlterField.category +django.db.migrations.operations.fields.RemoveField.category +django.db.migrations.operations.fields.RenameField.category +django.db.migrations.operations.models.AddConstraint.category +django.db.migrations.operations.models.AddIndex.category +django.db.migrations.operations.models.CreateModel.category +django.db.migrations.operations.models.DeleteModel.category +django.db.migrations.operations.models.ModelOptionOperation.category +django.db.migrations.operations.models.RemoveConstraint.category +django.db.migrations.operations.models.RemoveIndex.category +django.db.migrations.operations.models.RenameIndex.category +django.db.migrations.operations.models.RenameModel.category +django.db.migrations.operations.special.RunPython.category +django.db.migrations.operations.special.RunSQL.category +django.db.migrations.operations.special.SeparateDatabaseAndState.category +django.db.migrations.serializer.FUNCTION_TYPES +django.db.models.CharField.slice_expression +django.db.models.CheckConstraint.__init__ +django.db.models.F.__contains__ +django.db.models.F.__getitem__ +django.db.models.Field.slice_expression +django.db.models.ForeignObjectRel.accessor_name +django.db.models.ForeignObjectRel.cache_name +django.db.models.ForeignObjectRel.is_hidden +django.db.models.Model.arefresh_from_db +django.db.models.Model.asave +django.db.models.Model.refresh_from_db +django.db.models.Model.save +django.db.models.OrderBy.constraint_validation_compatible +django.db.models.TextField.slice_expression +django.db.models.WindowFrame.__init__ +django.db.models.WindowFrame.get_exclusion +django.db.models.WindowFrameExclusion +django.db.models.base.Model.arefresh_from_db +django.db.models.base.Model.asave +django.db.models.base.Model.refresh_from_db +django.db.models.base.Model.save +django.db.models.constraints.CheckConstraint.__init__ +django.db.models.expressions.BaseExpression.constraint_validation_compatible +django.db.models.expressions.BaseExpression.get_expression_for_validation +django.db.models.expressions.F.__contains__ +django.db.models.expressions.F.__getitem__ +django.db.models.expressions.OrderBy.constraint_validation_compatible +django.db.models.expressions.Sliced +django.db.models.expressions.WindowFrame.__init__ +django.db.models.expressions.WindowFrame.get_exclusion +django.db.models.expressions.WindowFrameExclusion +django.db.models.fields.CharField.slice_expression +django.db.models.fields.Field.slice_expression +django.db.models.fields.TextField.slice_expression +django.db.models.fields.mixins.FieldCacheMixin.cache_name +django.db.models.fields.related.ForeignObjectRel.accessor_name +django.db.models.fields.related.ForeignObjectRel.cache_name +django.db.models.fields.related.ForeignObjectRel.is_hidden +django.db.models.fields.related.RelatedField.cache_name +django.db.models.fields.reverse_related.ForeignObjectRel.accessor_name +django.db.models.fields.reverse_related.ForeignObjectRel.cache_name +django.db.models.fields.reverse_related.ForeignObjectRel.is_hidden +django.db.models.functions.ConcatPair.pipes_concat_sql +django.db.models.functions.JSONObject.as_native +django.db.models.functions.comparison.JSONObject.as_native +django.db.models.functions.text.ConcatPair.pipes_concat_sql +django.db.models.lookups.In.get_refs +django.db.models.options.Options.all_parents +django.db.models.options.Options.setting_changed +django.db.models.options.Options.swapped +django.db.models.options.Options.verbose_name_raw +django.forms.ModelChoiceField.validate_no_null_characters +django.forms.RadioSelect.__slotnames__ +django.forms.models.ModelChoiceField.validate_no_null_characters +django.forms.widgets.RadioSelect.__slotnames__ +django.template.backends.base.BaseEngine.check +django.template.backends.django.DjangoTemplates.check +django.template.defaultfilters.length_is +django.template.defaulttags.querystring +django.test.AsyncClient.__init__ +django.test.AsyncClient.delete +django.test.AsyncClient.get +django.test.AsyncClient.head +django.test.AsyncClient.options +django.test.AsyncClient.patch +django.test.AsyncClient.post +django.test.AsyncClient.put +django.test.AsyncClient.trace +django.test.AsyncRequestFactory.generic +django.test.Client.__init__ +django.test.Client.delete +django.test.Client.get +django.test.Client.head +django.test.Client.options +django.test.Client.patch +django.test.Client.post +django.test.Client.put +django.test.Client.trace +django.test.RequestFactory.__init__ +django.test.RequestFactory.delete +django.test.RequestFactory.generic +django.test.RequestFactory.get +django.test.RequestFactory.head +django.test.RequestFactory.options +django.test.RequestFactory.patch +django.test.RequestFactory.post +django.test.RequestFactory.put +django.test.RequestFactory.trace +django.test.SimpleTestCase.assertFormsetError +django.test.SimpleTestCase.assertNotInHTML +django.test.SimpleTestCase.ensure_connection_patch_method +django.test.TransactionTestCase.assertQuerysetEqual +django.test.client.AsyncClient.__init__ +django.test.client.AsyncClient.delete +django.test.client.AsyncClient.get +django.test.client.AsyncClient.head +django.test.client.AsyncClient.options +django.test.client.AsyncClient.patch +django.test.client.AsyncClient.post +django.test.client.AsyncClient.put +django.test.client.AsyncClient.trace +django.test.client.AsyncRequestFactory.generic +django.test.client.Client.__init__ +django.test.client.Client.delete +django.test.client.Client.get +django.test.client.Client.head +django.test.client.Client.options +django.test.client.Client.patch +django.test.client.Client.post +django.test.client.Client.put +django.test.client.Client.trace +django.test.client.RequestFactory.__init__ +django.test.client.RequestFactory.delete +django.test.client.RequestFactory.generic +django.test.client.RequestFactory.get +django.test.client.RequestFactory.head +django.test.client.RequestFactory.options +django.test.client.RequestFactory.patch +django.test.client.RequestFactory.post +django.test.client.RequestFactory.put +django.test.client.RequestFactory.trace +django.test.selenium.ChangeWindowSize +django.test.selenium.SeleniumTestCase.dark +django.test.selenium.SeleniumTestCase.desktop_size +django.test.selenium.SeleniumTestCase.high_contrast +django.test.selenium.SeleniumTestCase.mobile_size +django.test.selenium.SeleniumTestCase.rtl +django.test.selenium.SeleniumTestCase.screenshots +django.test.selenium.SeleniumTestCase.set_emulated_media +django.test.selenium.SeleniumTestCase.small_screen_size +django.test.selenium.SeleniumTestCase.take_screenshot +django.test.selenium.screenshot_cases +django.test.signals.file_storage_changed +django.test.signals.form_renderer_changed +django.test.testcases.SimpleTestCase.assertFormsetError +django.test.testcases.SimpleTestCase.assertNotInHTML +django.test.testcases.SimpleTestCase.ensure_connection_patch_method +django.test.testcases.TransactionTestCase.assertQuerysetEqual +django.test.utils.garbage_collect +django.urls.converters.get_converter +django.urls.resolvers.LocaleRegexRouteDescriptor +django.urls.resolvers.whitespace_set +django.utils.deprecation.RemovedInDjango51Warning +django.utils.html.VOID_ELEMENTS +django.utils.inspect.ARG_KINDS +django.utils.text.FakeMatch +django.utils.text.TruncateCharsHTMLParser +django.utils.text.TruncateHTMLParser +django.utils.text.TruncateWordsHTMLParser +django.utils.text.WordsRegex +django.utils.text.calculate_truncate_chars_length +django.utils.text.re_words +django.utils.version.PY313 +django.utils.version.PY36 +django.utils.version.PY37 +django.utils.version.PYPY + +# Only discrepancies that appeared after Django 4.2 -> 5.0 update. +# Unsorted: there are real problems and things we can really ignore: + +django.contrib.gis.db.models.Field._get_flatchoices +django.contrib.gis.db.models.ForeignKey.cast_db_type +django.contrib.gis.db.models.Q.identity +django.contrib.gis.geos.prototypes.io.DEFAULT_TRIM_VALUE +django.contrib.gis.management +django.contrib.gis.management.commands +django.contrib.gis.management.commands.inspectdb +django.contrib.gis.management.commands.ogrinspect +django.db.backends.mysql.features.DatabaseFeatures.allows_group_by_selected_pks +django.db.backends.mysql.features.DatabaseFeatures.has_native_uuid_field +django.db.backends.mysql.features.DatabaseFeatures.supports_expression_defaults +django.db.backends.oracle.features.DatabaseFeatures.supports_primitives_in_json_field +django.db.backends.oracle.features.DatabaseFeatures.test_collations +django.db.backends.oracle.oracledb_any +django.db.backends.postgresql.features.DatabaseFeatures.is_postgresql_15 +django.db.backends.postgresql.features.DatabaseFeatures.supports_nulls_distinct_unique_constraints +django.db.backends.postgresql.psycopg_any +django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_column_comment +django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_table_comment +django.db.models.Field._get_flatchoices +django.db.models.ForeignKey.cast_db_type +django.db.models.Q.identity +django.db.models.fields.Field._get_flatchoices +django.db.models.fields.related.ForeignKey.cast_db_type +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