Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,11 @@ jobs:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
django-version: ['5.0', '5.1', '5.2']
include:
- python-version: '3.12'
django-version: '6.0'
- python-version: '3.13'
django-version: '6.0'
steps:
- uses: actions/checkout@v6
- name: Setup system dependencies
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ tests = [
"pytest-shard==0.1.2",
"pytest-xdist==3.8.0",
# Django deps:
"django==5.2.9",
"django==5.2.9; python_version < '3.12'",
"django==6.0; python_version >= '3.12'",
"mysqlclient==2.2.7",
"psycopg2-binary==2.9.11",
"jinja2==3.1.6",
Expand Down
3 changes: 2 additions & 1 deletion scripts/stubtest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ stubtest django \
--mypy-config-file mypy.ini \
--allowlist scripts/stubtest/allowlist.txt \
--allowlist scripts/stubtest/allowlist_todo.txt \
--allowlist scripts/stubtest/allowlist_todo_django52.txt
--allowlist scripts/stubtest/allowlist_todo_django52.txt \
--allowlist scripts/stubtest/allowlist_todo_django60.txt
21 changes: 0 additions & 21 deletions scripts/stubtest/allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -235,24 +235,6 @@ django.contrib.sessions.backends.base.SessionBase.setdefault
# Limited stubtest support for enums (https://github.com/python/mypy/issues/16806)
django.db.migrations.operations.base.OperationCategory.__new__

# Ignore: ...Model.[a]save is inconsistent, stub does not have *args argument "args"
# Positional arguments were deprecated in Django 5.1, we have adopted keyword-only arguments early.
django.contrib.auth.base_user.AbstractBaseUser.save
django.contrib.auth.models.AbstractBaseUser.save
django.contrib.gis.db.models.Model.asave
django.contrib.gis.db.models.Model.save
django.db.models.Model.asave
django.db.models.Model.save
django.db.models.base.Model.asave
django.db.models.base.Model.save

# Ignore: GeneratedField.__init__ is inconsistent, runtime argument "db_persist" has a default value but stub argument does not
# The default value None never worked and has been dropped for Django 6.0:
# https://code.djangoproject.com/ticket/36262
django.contrib.gis.db.models.GeneratedField.__init__
django.db.models.GeneratedField.__init__
django.db.models.fields.generated.GeneratedField.__init__

# These are dynamically added when using `save(commit=False)`
# See https://docs.djangoproject.com/en/5.2/topics/forms/modelforms/#the-save-method
django.forms.BaseModelForm.save_m2m
Expand All @@ -276,9 +258,6 @@ django.http.request.QueryDict.pop
# Django incorrectly uses a signature of `(cls, **kwargs)` when it should be `(cls, *args, **kwargs)`.
django.test.selenium.SeleniumTestCase.__init_subclass__

# Django incorrectly uses a signature of `(self, *args, **kwargs)` when it should be `(self)`.
django.forms.renderers.Jinja2DivFormRenderer.__init__

# mypy does not understand __getitem__ unpacking python/mypy#2220
django.urls.ResolverMatch.__iter__
django.urls.resolvers.ResolverMatch.__iter__
9 changes: 0 additions & 9 deletions scripts/stubtest/allowlist_todo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ django.contrib.admin.site
django.contrib.admin.sites.site
django.contrib.admin.tests.AdminSeleniumTestCase
django.contrib.admin.tests.AdminSeleniumTestCase.assertCountSeleniumElements
django.contrib.admin.tests.CSPMiddleware.process_response
django.contrib.admin.utils.QUOTE_MAP
django.contrib.admin.utils.UNQUOTE_MAP
django.contrib.admin.utils.prepare_lookup_value
Expand Down Expand Up @@ -212,10 +211,8 @@ django.contrib.gis.db.models.ForeignObject.get_extra_descriptor_filter
django.contrib.gis.db.models.ForeignObject.get_extra_restriction
django.contrib.gis.db.models.ForeignObject.get_foreign_related_value
django.contrib.gis.db.models.ForeignObject.get_instance_value_for_fields
django.contrib.gis.db.models.ForeignObject.get_joining_columns
django.contrib.gis.db.models.ForeignObject.get_local_related_value
django.contrib.gis.db.models.ForeignObject.get_path_info
django.contrib.gis.db.models.ForeignObject.get_reverse_joining_columns
django.contrib.gis.db.models.ForeignObject.get_reverse_path_info
django.contrib.gis.db.models.ForeignObject.path_infos
django.contrib.gis.db.models.ForeignObject.related_accessor_class
Expand Down Expand Up @@ -397,7 +394,6 @@ django.core.servers.basehttp.ServerHandler.__init__
django.core.servers.basehttp.ThreadedWSGIServer.__init__
django.db.backends.ddl_references.Expressions
django.db.backends.mysql.base.DatabaseWrapper.ops
django.db.backends.mysql.features.DatabaseFeatures.can_rename_index
django.db.backends.mysql.features.DatabaseFeatures.can_return_rows_from_bulk_insert
django.db.backends.mysql.features.DatabaseFeatures.django_test_skips
django.db.backends.mysql.features.DatabaseFeatures.minimum_database_version
Expand Down Expand Up @@ -546,10 +542,8 @@ django.db.models.ForeignObject.get_extra_descriptor_filter
django.db.models.ForeignObject.get_extra_restriction
django.db.models.ForeignObject.get_foreign_related_value
django.db.models.ForeignObject.get_instance_value_for_fields
django.db.models.ForeignObject.get_joining_columns
django.db.models.ForeignObject.get_local_related_value
django.db.models.ForeignObject.get_path_info
django.db.models.ForeignObject.get_reverse_joining_columns
django.db.models.ForeignObject.get_reverse_path_info
django.db.models.ForeignObject.path_infos
django.db.models.ForeignObject.related_accessor_class
Expand Down Expand Up @@ -757,10 +751,8 @@ django.db.models.fields.related.ForeignObject.get_extra_descriptor_filter
django.db.models.fields.related.ForeignObject.get_extra_restriction
django.db.models.fields.related.ForeignObject.get_foreign_related_value
django.db.models.fields.related.ForeignObject.get_instance_value_for_fields
django.db.models.fields.related.ForeignObject.get_joining_columns
django.db.models.fields.related.ForeignObject.get_local_related_value
django.db.models.fields.related.ForeignObject.get_path_info
django.db.models.fields.related.ForeignObject.get_reverse_joining_columns
django.db.models.fields.related.ForeignObject.get_reverse_path_info
django.db.models.fields.related.ForeignObject.path_infos
django.db.models.fields.related.ForeignObject.related_accessor_class
Expand Down Expand Up @@ -916,7 +908,6 @@ django.forms.models.BaseModelFormSet.model
django.forms.models.ModelChoiceField.__deepcopy__
django.forms.models.inlineformset_factory
django.forms.models.modelformset_factory
django.forms.renderers.DjangoDivFormRenderer
django.forms.widgets.ChoiceWidget.template_name
django.forms.widgets.Input.input_type
django.forms.widgets.Media.__html__
Expand Down
2 changes: 0 additions & 2 deletions scripts/stubtest/allowlist_todo_django52.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ django.db.backends.oracle.features.DatabaseFeatures.supports_primitives_in_json_
django.db.backends.oracle.features.DatabaseFeatures.supports_tuple_lookups
django.db.backends.oracle.features.DatabaseFeatures.test_collations
django.db.backends.oracle.introspection.TableInfo
django.db.backends.oracle.oracledb_any
django.db.backends.oracle.utils.BulkInsertMapper.NCLOB
django.db.backends.oracle.utils.dsn
django.db.backends.postgresql.base.DatabaseWrapper.close_pool
Expand All @@ -71,7 +70,6 @@ django.db.backends.postgresql.features.DatabaseFeatures.django_test_skips
django.db.backends.postgresql.features.DatabaseFeatures.supports_nulls_distinct_unique_constraints
django.db.backends.postgresql.psycopg_any
django.db.backends.sqlite3.base.DatabaseWrapper.transaction_modes
django.db.backends.sqlite3.features.DatabaseFeatures.supports_tuple_lookups
django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_column_comment
django.db.backends.sqlite3.schema.DatabaseSchemaEditor.sql_alter_table_comment
django.db.migrations.autodetector.MigrationAutodetector.generate_altered_constraints
Expand Down
Loading