Releases: typeddjango/django-stubs
5.0.3
What's Changed
- Release workflow: publish
django-stubs-extbeforedjango-stubsby @flaeppe in #2188 - Migrate
apps/test_config.yml'assert_type' tests by @flaeppe in #2190 - Add
ManyToManyField.m2m_field_nameandModel._get_pk_valmethods by @YPCrumble in #2177 Lookupshould be a subtype ofExpressionby @mkurnikov in #2199- Update
django.db.models.functions: allowCombinableas parameter, addRoundfunction by @noamkush in #2195 - Add missing
django.core.management.utilsfunctions by @Viicos in #2200 - Improve
django.middlewarestubs by @Viicos in #2202 - Improve
django.httpstubs by @Viicos in #2201 - Tests: Migrate
db/models/test_constraints.ymlto 'assert_type' tests by @flaeppe in #2204 - Allow any function for admin's
displayandactiondecorators by @flaeppe in #2210 - Remove invalid re-export
django.forms.ChoiceWidgetby @asottile in #2207 - Model._meta.pk is non-None by @asottile in #2218
- update / create defaults are read-only Mapping by @asottile in #2216
- Add missing math.Random database function by @noamkush in #2222
- Make
ReverseManyToOneDescriptorgeneric over a model by @flaeppe in #2227 - Extract through table creation to separate method by @flaeppe in #2229
- Do many related manager creation during semantic analysis by @flaeppe in #2231
- Expand CheckRegistry.register as function (#2232) by @jwhitlock in #2233
- don't copy magic or private methods in from_queryset managers by @asottile in #2240
- Make plugin handle explicitly declared reverse descriptors for FKs by @flaeppe in #2230
- Expect a
QuerySetfor multiple defaults inMultipleObjectMixinby @flaeppe in #2191 - fix handling of explicit
objectsannotation by @asottile in #2241 - Add atomic_blocks to base DB wrapper by @palfrey in #2242
- walk mro for Field set type annotations by @asottile in #2244
- Add
serialized_aliasesparameter tosetup_databasesfunction indjango.test.utilsby @DongwookKim0823 in #2247 - use field annotations for values_list types by @asottile in #2248
- Improve types of
ConnectionProxyby @Viicos in #2246 - Add
get_template_tag_modulesfunction signature todjango.template.backends.djangoby @DongwookKim0823 in #2250 - add PlaceholderNode when deferring manager class hook by @asottile in #2228
- Update function signatures for
django.db.models.sql.Queryclass by @DongwookKim0823 in #2253 - Update
admin.sites._ViewTypebound to allowStreamingHttpResponseby @savanto in #2256 - Add
Options._get_fieldsby @Viicos in #2254 - Support inheriting ManyToManyField from an abstract model by @flaeppe in #2260
- Allow single generic param for Field in ForeignKey by @rafonseca in #2261
- Refactor: Unify plugin check for model type info by @flaeppe in #2263
- add
Pathtype argument to tuple returned byget_app_template_dirsby @joshuadavidthomas in #2266 - add missing type argument to
Paginatorby @joshuadavidthomas in #2271 - Update mypy to 1.11.0 by @sobolevn in #2269
- Check calls to filtering manager methods involving
ManyToManyFieldby @flaeppe in #2275 - Prepare for a release
5.0.3by @flaeppe in #2274 - lookup manager type via mro by @asottile in #2276
- Check model fields on filtering methods of queryset types by @flaeppe in #2277
- fill QuerySet generics using the manager's model type by @asottile in #2281
- convert as_manager hooks to base class hook by @asottile in #2282
New Contributors
- @YPCrumble made their first contribution in #2177
- @jwhitlock made their first contribution in #2233
- @DongwookKim0823 made their first contribution in #2247
- @savanto made their first contribution in #2256
- @rafonseca made their first contribution in #2261
- @joshuadavidthomas made their first contribution in #2266
Full Changelog: 5.0.2...5.0.3
5.0.2
What's Changed
This is a re-release of django-stubs 5.0.1 with a minor fix:
Full Changelog: 5.0.1...5.0.2
Release notes for version 5.0.1
Headline changes
-
Support for Django 4.1 have been dropped by @sobolevn in #2133
-
A new extra,
django-stubs[oracle], was added by @sobolevn in #2131 -
Remove QuerySet alias hacks via PEP 696 TypeVar defaults. All usages of
QuerySetAnyandValuesQuerySetcan now be replaced with simpleQuerySetby @intgr in #2104
What's Changed
- 5.0: Update
django.contrib.admin.viewsanddjango.forms.forms.Formmetaclass by @sudosubin in #2079 - Fix IndexError for custom queryset managers by @meshy in #1913
- 5.0: Update
django.db.models.lookupsby @saJaeHyukc in #2103 - 5.0: Update
django.db.backends.utilsby @saJaeHyukc in #2102 - 5.0: Update
django.forms.field.Fieldby @saJaeHyukc in #2107 - 5.0: Update
django.contrib.messages.storage.cookieby @saJaeHyukc in #2106 - Tests: Add test case for settings import cycle by @intgr in #2098
- 5.0: Update
django.db.models.expressionsby @saJaeHyukc in #2110 - 5.0: Update
django.contrib.auth.backendsby @saJaeHyukc in #2111 - 5.0: Update
django.contrib.auth.base_userby @saJaeHyukc in #2113 - 5.0: Update
django.db.migrations.serializerby @saJaeHyukc in #2109 - 5.0: Update
django.db.backends.base.features.BaseDatabaseFeatureby @saJaeHyukc in #2099 - 5.0: Update
django.db.backends.base.operations.BaseDatabaseOperationsby @saJaeHyukc in #2100 - Fix annotation for
request.auserby @bshelkhonov in #2108 - 5.0: Update
django.contrib.gis.admin.widgetsanddjango.contrib.gis.admin.optionsby @saJaeHyukc in #2116 - 5.0: Update
django.forms.boundfieldanddjango.forms.utilsby @saJaeHyukc in #2118 - Prepare django-stubs-ext for QuerySet typevar refactor by @intgr in #2117
BaseBackend.get_user: Relaxuser_idparam type by @tony in #2121- 5.0: Update
django.forms.renderersby @saJaeHyukc in #2119 - 5.0: Update
django.forms.formsby @saJaeHyukc in #2122 - 5.0: Update
django.contrib.gis.db.backends.sqatialite.schemaby @saJaeHyukc in #2123 - Improve types in DB backend
schemamodules by @saJaeHyukc in #2124 - 5.0: Update
django.contrib.messages.testby @saJaeHyukc in #2126 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #2129
- More pre-commit checks by @sobolevn in #2132
- Bump django from 5.0.5 to 5.0.6 by @dependabot in #2135
- 5.0: Update
django.contrib.contenttypes.prefetchby @saJaeHyukc in #2115 - 5.0: Update
django.contrib.admin.widgetsby @saJaeHyukc in #2105 - 5.0: Update
django.contrib.contenttypes.fields.GenericForeignKeymethods by @saJaeHyukc in #2137 - Relax typing of
backendindjango.contrib.auth(ModelBackend->BaseBackend) by @tony in #2141 - fix: UserAdmin accepts AbstractUser by @vadimshvetsov in #2139
- 4.2.8: Update
Query.resolve_lookup_value()parameters by @saJaeHyukc in #2136 - Increase priority of mypy internal Django settings import by @intgr in #2127
- Fix 'Import cycle from Django settings module' errors function context by @intgr in #2142
- Adjust priority of Django settings import again by @intgr in #2143
- 5.0: Update
django.forms.modelsby @saJaeHyukc in #2146 - Add typing of
django.db.migrations.autodetectorby @saJaeHyukc in #2149 - 5.0: Update
django.db.models.enumsby @saJaeHyukc in #2148 - 5.0: Update
django.forms.widgetsby @saJaeHyukc in #2147 - Add GitHub actions release workflow for
django-stubs-extby @flaeppe in #2150 - 5.0: Update
django.db.models.field.relatedby @saJaeHyukc in #2151 - Bump pre-commit from 3.7.0 to 3.7.1 by @dependabot in #2155
- Fix
TextChoices.__new__()parameter type by @mvaled in #2156 - Ensure ManyToManyField related managers supports renamed imports by @flaeppe in #2153
- 5.0: Update
django.contrib.gis.db.backends.postgis.operationsby @saJaeHyukc in #2138 - 5.0: Update
django.db.models.fields.reverse_relatedby @saJaeHyukc in #2158 - 5.0: Update
django.db.models.field: addgeneratedattribute to model fields by @saJaeHyukc in #2152 - 5.0: Update
django.db.models.sql.datastructuresby @saJaeHyukc in #2159 - 5.0: Update
django.db.models.queryby @saJaeHyukc in #2160 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #2161
- 5.0: Update
django.db.models.sql.compilerby @saJaeHyukc in #2166 - 5.0: Update
django.db.models.functions.datetimeby @saJaeHyukc in #2167 - 5.0: Update
django.forms.formsetsby @saJaeHyukc in #2145 - 5.0: Update
django.db.models.query_utilsby @saJaeHyukc in #2165 - Bump pytest from 8.2.0 to 8.2.1 by @dependabot in #2169
- 5.0: Update
django.db.models.functions.datetime.Nowby @saJaeHyukc in #2173 - 5.0: Update
django.db.models.sql.query.Queryby @saJaeHyukc in #2172 - 5.0: Update
django.db.models.field.related_descriptorsby @saJaeHyukc in #2157 - 5.0: Update django.db.models.constraints.UniqueConstraint by @steve148 in #2175
- 5.0: Update
django.db.models.expressionsby @saJaeHyukc in #2176 - Add
BaseConstraint.get_violation_error_message()by @q0w in #2178 - Fix signature of Choices member creation, add
assert_typetest cases, runpyrightby @Viicos in #2162 AbstractBaseSession: Use model fields for subclassed cases by @tony in #2180- Migrate 'test_conf.yml' to 'assert_type' tests by @flaeppe in #2182
- Don't crash when inspecting classes loaded from cache by @flaeppe in #2185
- Formset get_queryset() returns QuerySet by @MrkGrgsn in #2174
- Prepare for a release
5.0.1by @flaeppe in #2183
New Contributors
- @meshy made their first contribution in #1913
- @bshelkhonov made their first contribution in #2108
- @vadimshvetsov made their first contribution in #2139
- @mvaled made their first contribution in #2156
- @steve148 made their first contribution in #2175
Full Changelog: 5.0.0...5.0.1
5.0.1
Headline changes
-
Support for Django 4.1 have been dropped by @sobolevn in #2133
-
A new extra,
django-stubs[oracle], was added by @sobolevn in #2131 -
Remove QuerySet alias hacks via PEP 696 TypeVar defaults. All usages of
QuerySetAnyandValuesQuerySetcan now be replaced with simpleQuerySetby @intgr in #2104
What's Changed
- 5.0: Update
django.contrib.admin.viewsanddjango.forms.forms.Formmetaclass by @sudosubin in #2079 - Fix IndexError for custom queryset managers by @meshy in #1913
- 5.0: Update
django.db.models.lookupsby @saJaeHyukc in #2103 - 5.0: Update
django.db.backends.utilsby @saJaeHyukc in #2102 - 5.0: Update
django.forms.field.Fieldby @saJaeHyukc in #2107 - 5.0: Update
django.contrib.messages.storage.cookieby @saJaeHyukc in #2106 - Tests: Add test case for settings import cycle by @intgr in #2098
- 5.0: Update
django.db.models.expressionsby @saJaeHyukc in #2110 - 5.0: Update
django.contrib.auth.backendsby @saJaeHyukc in #2111 - 5.0: Update
django.contrib.auth.base_userby @saJaeHyukc in #2113 - 5.0: Update
django.db.migrations.serializerby @saJaeHyukc in #2109 - 5.0: Update
django.db.backends.base.features.BaseDatabaseFeatureby @saJaeHyukc in #2099 - 5.0: Update
django.db.backends.base.operations.BaseDatabaseOperationsby @saJaeHyukc in #2100 - Fix annotation for
request.auserby @bshelkhonov in #2108 - 5.0: Update
django.contrib.gis.admin.widgetsanddjango.contrib.gis.admin.optionsby @saJaeHyukc in #2116 - 5.0: Update
django.forms.boundfieldanddjango.forms.utilsby @saJaeHyukc in #2118 - Prepare django-stubs-ext for QuerySet typevar refactor by @intgr in #2117
BaseBackend.get_user: Relaxuser_idparam type by @tony in #2121- 5.0: Update
django.forms.renderersby @saJaeHyukc in #2119 - 5.0: Update
django.forms.formsby @saJaeHyukc in #2122 - 5.0: Update
django.contrib.gis.db.backends.sqatialite.schemaby @saJaeHyukc in #2123 - Improve types in DB backend
schemamodules by @saJaeHyukc in #2124 - 5.0: Update
django.contrib.messages.testby @saJaeHyukc in #2126 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #2129
- More pre-commit checks by @sobolevn in #2132
- Bump django from 5.0.5 to 5.0.6 by @dependabot in #2135
- 5.0: Update
django.contrib.contenttypes.prefetchby @saJaeHyukc in #2115 - 5.0: Update
django.contrib.admin.widgetsby @saJaeHyukc in #2105 - 5.0: Update
django.contrib.contenttypes.fields.GenericForeignKeymethods by @saJaeHyukc in #2137 - Relax typing of
backendindjango.contrib.auth(ModelBackend->BaseBackend) by @tony in #2141 - fix: UserAdmin accepts AbstractUser by @vadimshvetsov in #2139
- 4.2.8: Update
Query.resolve_lookup_value()parameters by @saJaeHyukc in #2136 - Increase priority of mypy internal Django settings import by @intgr in #2127
- Fix 'Import cycle from Django settings module' errors function context by @intgr in #2142
- Adjust priority of Django settings import again by @intgr in #2143
- 5.0: Update
django.forms.modelsby @saJaeHyukc in #2146 - Add typing of
django.db.migrations.autodetectorby @saJaeHyukc in #2149 - 5.0: Update
django.db.models.enumsby @saJaeHyukc in #2148 - 5.0: Update
django.forms.widgetsby @saJaeHyukc in #2147 - Add GitHub actions release workflow for
django-stubs-extby @flaeppe in #2150 - 5.0: Update
django.db.models.field.relatedby @saJaeHyukc in #2151 - Bump pre-commit from 3.7.0 to 3.7.1 by @dependabot in #2155
- Fix
TextChoices.__new__()parameter type by @mvaled in #2156 - Ensure ManyToManyField related managers supports renamed imports by @flaeppe in #2153
- 5.0: Update
django.contrib.gis.db.backends.postgis.operationsby @saJaeHyukc in #2138 - 5.0: Update
django.db.models.fields.reverse_relatedby @saJaeHyukc in #2158 - 5.0: Update
django.db.models.field: addgeneratedattribute to model fields by @saJaeHyukc in #2152 - 5.0: Update
django.db.models.sql.datastructuresby @saJaeHyukc in #2159 - 5.0: Update
django.db.models.queryby @saJaeHyukc in #2160 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #2161
- 5.0: Update
django.db.models.sql.compilerby @saJaeHyukc in #2166 - 5.0: Update
django.db.models.functions.datetimeby @saJaeHyukc in #2167 - 5.0: Update
django.forms.formsetsby @saJaeHyukc in #2145 - 5.0: Update
django.db.models.query_utilsby @saJaeHyukc in #2165 - Bump pytest from 8.2.0 to 8.2.1 by @dependabot in #2169
- 5.0: Update
django.db.models.functions.datetime.Nowby @saJaeHyukc in #2173 - 5.0: Update
django.db.models.sql.query.Queryby @saJaeHyukc in #2172 - 5.0: Update
django.db.models.field.related_descriptorsby @saJaeHyukc in #2157 - 5.0: Update django.db.models.constraints.UniqueConstraint by @steve148 in #2175
- 5.0: Update
django.db.models.expressionsby @saJaeHyukc in #2176 - Add
BaseConstraint.get_violation_error_message()by @q0w in #2178 - Fix signature of Choices member creation, add
assert_typetest cases, runpyrightby @Viicos in #2162 AbstractBaseSession: Use model fields for subclassed cases by @tony in #2180- Migrate 'test_conf.yml' to 'assert_type' tests by @flaeppe in #2182
- Don't crash when inspecting classes loaded from cache by @flaeppe in #2185
- Formset get_queryset() returns QuerySet by @MrkGrgsn in #2174
- Prepare for a release
5.0.1by @flaeppe in #2183
New Contributors
- @meshy made their first contribution in #1913
- @bshelkhonov made their first contribution in #2108
- @vadimshvetsov made their first contribution in #2139
- @mvaled made their first contribution in #2156
- @steve148 made their first contribution in #2175
Full Changelog: 5.0.0...5.0.1
5.0.0
Announcements
QuerySetclass no longer derives fromCollection. If you run into errors likeincompatible type "_QuerySet[User, User]"; expected "Collection[User]", please read this announcement.
Headline changes
- Remove incorrect
Collectionbase class and__contains__method fromQuerySetby @fidoriel in #1925 - Pyright joins the workflow in an advisory capacity by @jorenham in #2019
- feat: Allow setting django_settings_module from env by @armanckeser in #2021
- Add
ManyRelatedManager.throughattribute and generic type parameter by @flaeppe in #2026
What's Changed
- Make
StrPromisenot inherit fromSequence[str]by @intgr in #1841 - Update and prepare for Django 5.0 by @intgr in #1859
- Ensure mypy plugin processes inherited many to many fields by @flaeppe in #1864
- Include ModelBase subclasses in plugin base class hook condition by @flaeppe in #1863
- [5.0] Added many new a-prefixed asynchronous methods by @bigfootjon in #1741
- Remove section regarding custom queryset methods from README by @flaeppe in #1865
- Fix type of
AppConfig.models_moduleby @Viicos in #1866 - Allow
Nonein settingsMIGRATION_MODULESdict values by @asottile in #1871 - Add type hints for
JSONField.from_db_valueby @flaeppe in #1879 - Fix/pyright unknown by @dephiros in #1873
- Fix type hints of
convertersinurls.resolversby @Viicos in #1892 - Update mypy to 1.8.0 by @sobolevn in #1885
- Add
@type_check_onlyto all Protocols and known stubs-only classes by @intgr in #1894 - Fix types for UniqueConstraint instantiation by @flaeppe in #1880
- Add
ModuleTypeas a possible type toURLResolver.urlconf_nameby @Viicos in #1891 - Fix type hint of
URLPattern.default_argsby @Viicos in #1895 - Update ruff and silence
PYI046by @sobolevn in #1907 - Use PEP 570 syntax by @Viicos in #1908
- Fix readme settings example by @Viicos in #1910
- Fix type hint of
EmailBackend.ssl_keyfileandEmailBackend.ssl_certfileby @Viicos in #1911 - Add type of
django.VERSIONby @Viicos in #1916 - Added
CommandParsertocommands.__init__by @jamesbraza in #1927 - [5.0] add
assume_schemeto forms.URLField by @asottile in #1929 - Fix return type of
BaseModelAdmin.formfield_for_dbfieldby @Viicos in #1934 - Revert
pre-commit==3.6.1by @sobolevn in #1936 - Fix type hint of
Response.set_cookie.max_ageby @Viicos in #1941 - 5.0: Add ChoicesType by @q0w in #1942
- Add through_defaults for RelatedManager methods by @mfosterw in #1943
- Update type hints of
core.signingby @Viicos in #1945 - [5.0] Update
core.validatorsby @Viicos in #1947 - [5.0] Update
core.paginatorby @Viicos in #1946 - Generic
forms.ModelChoiceFieldby @UnknownPlatypus in #1889 - Support processing of other relations and fields when one is broken by @flaeppe in #1877
- Allowing
setinmodel_to_dict'sexcludeby @jamesbraza in #1952 - [5.0] Add django.db.models.GeneratedField by @palfrey in #1944
- Fix type hint of
BaseEngine.template_dirsby @Viicos in #1954 - Update type hints of contrib.auth.hashers by @yhay81 in #1955
- deps: Upgrade pre-commit for newer versions of python by @delfick in #1961
- 5.0: Add auth.middleware.auser by @q0w in #1966
- 5.0: Add ModelAdmin.show_facets by @q0w in #1967
- ruff: Fix config warnings by @q0w in #1964
- 5.0: Add BaseConstraint.violation_error_code by @q0w in #1969
- 5.0: Add Signal.asend and Signal.asend_robust by @q0w in #1965
- 5.0: Add QuerySet.(a)update_or_create new create_defaults arg by @q0w in #1970
- 5.0: Add AdminSite.get_log_entries by @q0w in #1963
- 5.0: Add gis ClosestPoint by @q0w in #1968
- 5.0: Rename save_existing arg instance to obj by @q0w in #1971
- 5.0: Remove admin.helpers.checkbox by @q0w in #1972
- 5.0: Change annotation_select_mask from set[str] to list[str] by @q0w in #1973
- fixup: Pass violation_error_code to init by @q0w in #1975
- Avoid returning None from get_field_related_model_cls by @SingingTree in #1956
- 5.0: Pass positional args name and violation_error_message to BaseConstraint by @q0w in #1974
- 5.0: Remove pytz support by @q0w in #1980
- 5.0: Remove global setting USE_L10N by @q0w in #1979
- 5.0: Remove OSMGeoAdmin, GeoModelAdmin by @q0w in #1981
- 5.0: Remove extra_tests arg for DiscoverRunner.build_suite/run_tests by @q0w in #1978
- 5.0: Remove django.utils baseconv and datetime_safe modules by @q0w in #1977
- 5.0: Add request arg to ModelAdmin.lookup_allowed by @q0w in #1976
- Add URL converter protocol type by @adamchainz in #1984
- Fix type annotation for RegisterLookupMixin.class_lookups by @avoronov-box in #1962
- Update django to 5.0.3 by @sobolevn in #1990
- Remove some deprecated Django 3.x APIs by @sobolevn in #1991
- Fix BaseModelAdmin.view_on_site annotation by @cuu508 in #1993
- Allow immutable
extra_contextonTemplateViews by @samueljsb in #1994 - Add BoundField.html() by @pelme in #1999
- Allow timedelta type for session.set_expiry() argument by @mlazar-endear in #2001
- Bump
pytest-mypy-pluginsto 3.1.1 by @sobolevn in #2003 - Update mypy, add a bit more metadata by @sobolevn in #1997
- 5.0: Update
django.contrib.authby @ngnpope in #2009 - 5.0: Update
django.confby @ngnpope in #2008 - 5.0: Update
django.viewsby @ngnpope in #2007 - 5.0: Update
django.testby @ngnpope in #2005 - 5.0: Update
django.utilsby @ngnpope in #2006 - Specify d.c.serializers.base.DeserializedObject.object type by @j00bar in #2010
- Clean the cache on each run of
stubtestby @sobolevn in #2015 - Keep abstract Django models internally in the plugin by @flaeppe in #2017
- Add GitHub actions release workflow by @flaeppe in #1950
- Adding missing
Qmethods:check(),flatten()by @Alexerson in #1899 - Improve types in
utils.termcolorsby @Viicos in #1901 - Set the calculated metaclass when creating type info in the plugin by @flaeppe in https://github.c...
4.2.7
Headline changes
- mypy 1.7: Recommended mypy version updated to 1.7.x
- Improved type inference for
ManyToManyFieldandModel.<manytomany>.through - If you previously imported
RelatedManagerorManyRelatedManager, update those to django-stubs-ext:
from django_stubs_ext.db.models.manager import ManyRelatedManager, RelatedManager - It's now allowed to override Django's
@cached_propertyproperties with class variables or@propertyproperties. - Even though Django 5.0 was released yesterday, this version does not yet include any changes specific to Django 5.0.
Plugin improvements
- Improved
ManyToManyDescriptorand fixedModel.<manytomany>.throughtyping by @flaeppe in #1805 - Fixed
Self-typed custom queryset methods to be compatible withQuerySetby @moranabadie in #1852
django-stubs-ext
- django-stubs-ext: Export
RelatedManager,ManyRelatedManagerstub-only classes by @intgr in #1834 - Updated
TypedModelMetaorderingattribute to allowOrderByobjects by @HansAarneLiblik in #1847
Stubs fixes
- Added missing
search_help_text=parameter toChangeList.__init__()by @quinox in #1801 - Allow additional types for SQL parameters in
migrations.RunSQL()by @UnknownPlatypus in #1803 - Allow custom Form class in
SuccessMessageMixin.form_valid()by @SukiCZ in #1812 - Fixed
db_comment=parameter position fordjango.db.models.Field.__init__()by @flaeppe in #1815 - Added missing
RelatedField.__init__()method and removedForeignObject.__init__(db_constraint=)parameter in Field constructors by @flaeppe in #1816 - Fixed argument types of
assertNumQueries()andassertQuerySetEqual()by @flaeppe in #1823 - Fixed
get_deleted_objects()return fromlist[Model]->list[str]by @golgor in #1825 - Removed incorrect
django.db.modelsre-exports by @intgr in #1835 - Fixed
TemplateResponse.cookiesattribute andSimpleCookietype by @apollo13 in #1702
Stubs improvements
- Added stubs for
django.contrib.postgres.expressionsby @flaeppe in #1765 - Improved hints of
django.contrib.gis.gdal.libgdalby @flaeppe in #1811 - Simulate
@deconstructibleas a mixin class by @flaeppe in #1818 - Improved types for
django.db.models.enums.*modules by @flaeppe in #1819 - Added
BaseExpression.contains_subquery()method (update to Django 4.2.7) by @intgr in #1827 - Improved types for multiple methods of
QuerySetby @flaeppe in #1822 - Improved
CollectorandNestedObjectsattributes, methods by @intgr in #1826 - Added
django.db.models.functions.MD5()database function by @kevinmarsh in #1830 - Constrained multiple
BaseModelAdminattributes to be either list or tuple by @flaeppe in #1832 - Constrained multiple
BaseModelAdminmethods to return either list or tuple by @flaeppe in #1833 - Accurately infer
capfirst()Nonereturn by @intgr in #1842 - Various improvements in
django.core.management.commandsmodules by @UnknownPlatypus in #1829 - Added
Model._do_update()method signature by @pfouque in #1854
Stubs improvements: @cached_property
- Reuse
functools.cached_propertydefinition instead of defining our own by @intgr in #1771 - Updated
@propertyattributes to@cached_propertypart 1 by @UnknownPlatypus in #1761 - Updated
@propertyattributes to@cached_propertypart 2 by @UnknownPlatypus in #1768 - Updated Expression classes
output_fieldto@cached_propertyorClassVarand improves type by @UnknownPlatypus in #1769
Housekeeping
- Moved plugin generated
<Model>_RelatedManagerentries to allowlist by @flaeppe in #1806 - Moved
RelatedManagertodjango.db.models.fields.related_descriptorsby @flaeppe in #1814 - Restored
RelatedManager,ManyRelatedManagerto inherit fromManagernotBaseManagerby @intgr in #1843 - Upgraded to mypy 1.7.0 by @intgr in #1837
- Unify plugin check for model type info by @flaeppe in #1853
- Version 4.2.7 release (django-stubs, django-stubs-ext) by @intgr in #1856
New Contributors
- @SukiCZ made their first contribution in #1812
- @golgor made their first contribution in #1825
- @HansAarneLiblik made their first contribution in #1847
- @apollo13 made their first contribution in #1702
- @pfouque made their first contribution in #1854
Full Changelog: 4.2.6...4.2.7
4.2.6
Headline changes
-
Fixed several bugs in version 4.2.5. Thanks to everyone for contributing fixes on a short order!
-
Removed direct mypy dependency. If you are using mypy, please add an explicit
mypydev dependency to your project, or install django-stubs with the extradjango-stubs[compatible-mypy].Mypy remains the only supported type checker. Improvements for other type checkers may be considered in the future, pull requests welcome. See #1628 for details.
Plugin fixes
- Fixed
as_manager()andfrom_queryset()when combined withSelftypes (#1788) by @moranabadie in #1789 - Fix IndexError crash when using
from_queryset()of custom Manager subclass by @moranabadie in #1786 - Revert "Use
parse_boolimplementation from mypy" by @intgr in #1792
(Turns out this was not necessary and will be reverted)
Stubs fixes
- Fixed
Field.formfield(),GeometryField.formfield()method arguments by @brianhelba in #1778
Stubs improvements
- Various improvements in
django.core.managementmodules by @UnknownPlatypus in #1787 - Various improvments in
django.db.backend.basemodules by @UnknownPlatypus in #1791
Housekeeping
- Drop hard dependency on mypy by @intgr in #1782
- Version 4.2.6 release (django-stubs only) by @intgr in #1794
Full Changelog: 4.2.5...4.2.6
4.2.5
Headline changes
-
mypy 1.6: Recommended mypy version updated to 1.6.x
-
Next django-stubs version (4.2.6) will remove direct mypy dependency. If you are using mypy, please add an explicit
mypydev dependency to your project, or install django-stubs with the extradjango-stubs[compatible-mypy].Mypy remains the only supported type checker. Improvements for other type checkers may be considered in the future, pull requests welcome. See #1628 for details.
-
Officially added Python 3.12 support
Stubs fixes
- Made
default_storageproduce aStorageobject by @brianhelba in #1665 - Fixed wrong type hints for
SyndicationFeedmethods by @WhyNotHugo in #1705 - Fixed variance of
Migration.operationsattribute by @asottile in #1707 - Fixed variance of all
Migrationlist attributes by @brianhelba in #1710 - Adjust
bases=parameter inCreateModelmigration op to allow for mixins by @asottile in #1708 - Fixed
_Composableprotocol for compatibility withpsycopg2-stubschange by @andersk in #1714 - Various fixes and improvements in
django.viewsmodules by @GabDug in #1716 - Removed
nullandvalidatorsarguments fromManyToManyField.__init__by @flaeppe in #1720 - Various fixes and improvements in
django.testmodules by @UnknownPlatypus in #1752 - Fixed
BaseModelForm,ErrorList,ErrorDictconstructorrenderer=parameter by @GabDug in #1690
Stubs improvements
- Annotated return value of all
deconstructmethods by @brianhelba in #1695 - Added missing arguments to
SQLCompilermethods by @ashm-tech in #1689 - Added missing
max_lengthattribute toforms.FileFieldby @GabDug in #1715 - Added missing type arguments to various generic classes by @GabDug in #1717
- Added missing
Layer.num_featattribute (GeoDjango) by @niconoe in #1722 - Specify
AbstractBaseUser.REQUIRED_FIELDSasClassVarby @WhyNotHugo in #1737 - Improve
fields.Field.formfield()method by @WhyNotHugo in #1739 - Added
ModelStateFieldsCacheDescriptor.__get__method by @asottile in #1743 - Update
Model._metatoClassVar[Options[Self]]by @flaeppe in #1732 - Improved
django.test.signalstypes by @UnknownPlatypus in #1751 - Updated Django to 4.2.6 and updated stubs by @sobolevn in #1757
- Require 1 callable argument for
@cached_propertydecorated method by @flaeppe in #1766 - Allow
psycopg2.sql.SQLinQuerySet.raw()by @flaeppe in #1767 - Added missing stubs in
django.middleware.csrfmodule by @UnknownPlatypus in #1770 - Various improvements in
django.core.cachemodules by @UnknownPlatypus in #1774 - Improved
Field.formfield(),GeometryField.formfield()methods by @brianhelba in #1724 - Fixed query
F.resolve_expression()return type by @schinckel in #1659
Plugin improvements
- Resolve dynamic
Managermethods through manager MRO by @flaeppe in #1701 - Use
functools.cached_propertyinstead of Django's in mypy plugin by @flaeppe in #1721 - Improved hints for
ReverseOneToOneDescriptorand start using it by @flaeppe in #1733 - Add better support for
ManyToManyField'sthroughmodel by @flaeppe in #1719 - Resolve any
settings.AUTH_USER_MODELused asto=in relation by @flaeppe in #1746 - Added missing
_default_managersymbol to generatedthroughmodel by @flaeppe in #1745
Plugin crash fixes
- Gracefully handle unwanted types when creating fallback managers by @flaeppe in #1728
Fixes someAssertionErrorcrashes. - Handle mismatching types in queryset method resolving gracefully by @flaeppe in #1727
Fixes someAssertionErrorcrashes. - Fixed crash on bad arguments for model relationship fields by @flaeppe in #1735
Fixes someValueErrorcrashes.
Documentation
- Fixed link to
django_stubs_extby @tony in #1747 & #1748 - Add version 4.2.4 to version compatibility table by @intgr in #1758
Housekeeping
- Removed a bunch of unused code by @flaeppe in #1687
- Removed redefinition of inherited
deconstructmethods. by @brianhelba in #1693 & #1694 - Use
parse_boolimplementation from mypy by @flaeppe in #1703 - Specify error codes in
# type: ignorecomments for plugin code by @flaeppe in #1726 - Specify error codes in
# type: ignorecomments in stubs files by @UnknownPlatypus in #1734 - CI: Enable testing with Python 3.12 by @intgr in #1759
- Bump mypy from 1.5.1 to 1.6.0 by @dependabot in #1764
- Tests: Add mypy error codes to typecheck by @UnknownPlatypus in #1773
- chore: Migrate from flake8 to ruff by @GabDug in #1718
- Update black version by @sobolevn in #1776
- Added test to verify that
Manager.from_queryset()handles invalid argument types by @flaeppe in #1731 - Version 4.2.5 release (django-stubs, django-stubs-ext) by @intgr in #1777
New Contributors
- @ashm-tech made their first contribution in #1689
- @WhyNotHugo made their first contribution in #1705
- @niconoe made their first contribution in #1722
- @schinckel made their first contribution in #1659
Full Changelog: 4.2.4...4.2.5
4.2.4
Most important changes:
- This version add Mypy
1.5.*support and update[compatible-mypy]extra to use1.5.*. - We also update our stubs to be compatible with Django
4.2.5(and all prior versions of4.2). django_stubs_ext/folder was renamed to be justext/, it should not affect users (unless you install it from git)- We no longer assume the
objectsattribute to be present on generic Model classes. As per the django documentation, code working with generic models should use the_default_managerattribute instead.
This time there is no corresponding release of django-stubs-ext.
Plugin changes
- We now forbid to instantiate abstract models #1663 @flaeppe
- Manager attributes are now
ClassVars #1672 @flaeppe
Thanks a lot to all contributors and maintainers! 🎉
4.2.3
This version fixes two regressions in previons django-stubs release and also a few other fixes and improvements. Special thanks to @GabDug for contributing regression fixes on a short order.
This time there is no corresponding release of django-stubs-ext.
Stubs fixes
- Fixed type error when subclassing
AppConfigand assigning string todefault_auto_fieldby @GabDug in #1596 - Fixed type error when subclassing
MiddlewareMixin.__call__()and usingreturn self.get_response()by @GabDug in #1595 - Allow
Noneasredirect_field_namevalue for@user_passes_testand@login_requireddecorators by @JoeHitchen in #1600
Plugin fixes
- Fixed long-standing issue with
Date(Time)Fieldwhen using mypy settingdisallow_any_explicitby @sobolevn in #1599
Stubs changes
- Added
BigIntegerField.MAX_BIGINTattribute by @asottile in #1598 - Improved Jinja2 types and updated
pytest-mypy-pluginsby @sobolevn in #1601
CI/Testing
Housekeeping
- Converted
_typeshed.Selfusages totyping_extensions.Self(PEP 673) by @intgr in #1591 - Version 4.2.3 release (django-stubs only) by @intgr in #1604
New Contributors
- @JoeHitchen made their first contribution in #1600
Full Changelog: 4.2.2...4.2.3
4.2.2
Headline changes
-
mypy 1.4: Recommended mypy version updated to 1.4.x
-
Support for
django-split-settings,django-configurationsand other Django settings addons withstrict_settings = falseoption, see README for details -
We have now adopted mypy's stubtest to automatically find discrepancies between Django and django-stubs.
If you want to contribute to django-stubs but are not sure where to start, have a look at stubtest's TODO list file, which lists the many issues discovered by stubtest.
Django 4.2 changes
- Applied Django 4.2 deprecations by @Alexerson in #1523
- Updated global settings and
AppConfigclass to match Django 4.2 by @Alexerson in #1524 - Added types for new 'system checks' in Django 4.2 by @Alexerson in #1526
- Added
ManifestStaticFilesStoragenew parameters by @Alexerson in #1528 - Added new methods to
Sitemapclass by @Alexerson in #1527 - Added new
headers=parameter to(Async)RequestFactoryand(Async)Clientclasses by @Alexerson in #1529 - GDAL-related GeoDjango updates in Django 4.2 by @Alexerson in #1525
- Added ORM
^and~operator support, JSON lookup classes, Postgres lookup classes,ModelFormchanges,json_scripttemplate filter parameters by @Alexerson in #1536 - Added and updated
db.backendsDatabaseIntrospectionandDatabaseOperationsclasses by @GabDug in #1571
Stubs additions
- Added
QuerySet._result_cacheattribute and_fetch_all()method by @adamchainz in #1505 - Added
ModelAdmin.search_help_textattribute by @adamchainz in #1546 - Added email console handler
EmailBackend.write_message()method by @adamchainz in #1547 - Added
ModelAdmin.get_formset_kwargs()method by @adamchainz in #1545 - Added
Signal._live_receivers()method by @adamchainz in #1551 - Added
SQLCompiler._order_by_pairs()method by @adamchainz in #1586 - Added
memcache_key_warnings()function by @rvanlaar in #1562
Stubs fixes
- Fixed
create_model_instanceincorrect data argument type by @namper in #1521 - Marked
RequestSite.{save,delete}methods asNoReturnsince they always raise by @sobolevn in #1530 - Updated
SafeExceptionReporterFilterattributes and removed obsoleteCLEANSED_SUBSTITUTEby @mthuurne in #1540 - Changed
AppConfig.default_auto_fieldto attribute instead of method by @mthuurne in #1541 - Fixed
default_error_messagesattribute type of baseFieldandGenericIPAddressFieldclasses by @asottile in #1538 - Improved spatialite
DatabaseWrapperattributes by @filbasi in #1544 - Improved types for Signal
dispatch.dispatcherby @GabDug in #1567 - Accept
strfield names forWindow.order_by(), allowNoneforasc/descarguments by @GabDug in #1574 - Updated many
django.utils.*types from stubtest by @GabDug in #1575 - Updated many
db.migrations.operationstypes from stubtest by @GabDug in #1583 - Added
StepValueValidator, fixed argument forSRIDCacheEntry/EmailValidator, improvedurls.resolverstypes by @GabDug in #1589
Plugin changes
- Fixed
ForeignKeyqueryset filters on un-swapped models by @UnknownPlatypus in #1495 - Add
strict_settingsoption, allow runtime fallbacks for custom settings by @sobolevn in #1557 - Automatically reset mypy cache when plugin settings change by @sobolevn in #1578
- Fixed unhandled exception
KeyError: 'model_bases'and related errors by @intgr in #1563
django-stubs-ext
CI/testing
- CI: Replace isort with Ruff import sorting by @intgr in #1507
- CI: Auto-remove unused imports using Ruff by @intgr in #1508
- CI: Enable Ruff pyupgrade fixes by @intgr in #1509
- CI: Run django-stubs-ext tests in full build matrix by @intgr in #1552
- Remove typecheck test and clean things up by @sobolevn in #1556
- Add stubtest with lots of errors (currently) by @sobolevn in #1560
Housekeeping
- Removed unsupported Django versions from package classifiers by @intgr in #1553
- Removed try-except around import of
ArrayFieldby @sobolevn in #1558 - Removed usage of
mypy_extensionsby @sobolevn in #1566 - Upgrade to Mypy 1.4.0 by @christianbundy in #1572
- Chore: set Black Python target to 3.8+ explicitely by @GabDug in #1573
- Update
flake8plugins by @sobolevn in #1579 - CI: Run tests and pre-commit using newest Python version by @intgr in #1582
- Removed duplicate "import all" test file by @adamchainz in #1587
- Update compatible-mypy to 1.4.x by @intgr in #1588
- Version 4.2.2 release (django-stubs, django-stubs-ext) by @intgr in #1590
New Contributors
- @namper made their first contribution in #1521
- @filbasi made their first contribution in #1544
- @GabDug made their first contribution in #1567
- @rvanlaar made their first contribution in #1562
Full Changelog: 4.2.1...4.2.2