Releases: typeddjango/django-stubs
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
objects
attribute to be present on generic Model classes. As per the django documentation, code working with generic models should use the_default_manager
attribute 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
ClassVar
s #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
AppConfig
and assigning string todefault_auto_field
by @GabDug in #1596 - Fixed type error when subclassing
MiddlewareMixin.__call__()
and usingreturn self.get_response()
by @GabDug in #1595 - Allow
None
asredirect_field_name
value for@user_passes_test
and@login_required
decorators by @JoeHitchen in #1600
Plugin fixes
- Fixed long-standing issue with
Date(Time)Field
when using mypy settingdisallow_any_explicit
by @sobolevn in #1599
Stubs changes
- Added
BigIntegerField.MAX_BIGINT
attribute by @asottile in #1598 - Improved Jinja2 types and updated
pytest-mypy-plugins
by @sobolevn in #1601
CI/Testing
Housekeeping
- Converted
_typeshed.Self
usages 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-configurations
and other Django settings addons withstrict_settings = false
option, 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
AppConfig
class to match Django 4.2 by @Alexerson in #1524 - Added types for new 'system checks' in Django 4.2 by @Alexerson in #1526
- Added
ManifestStaticFilesStorage
new parameters by @Alexerson in #1528 - Added new methods to
Sitemap
class by @Alexerson in #1527 - Added new
headers=
parameter to(Async)RequestFactory
and(Async)Client
classes 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,ModelForm
changes,json_script
template filter parameters by @Alexerson in #1536 - Added and updated
db.backends
DatabaseIntrospection
andDatabaseOperations
classes by @GabDug in #1571
Stubs additions
- Added
QuerySet._result_cache
attribute and_fetch_all()
method by @adamchainz in #1505 - Added
ModelAdmin.search_help_text
attribute 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_instance
incorrect data argument type by @namper in #1521 - Marked
RequestSite.{save,delete}
methods asNoReturn
since they always raise by @sobolevn in #1530 - Updated
SafeExceptionReporterFilter
attributes and removed obsoleteCLEANSED_SUBSTITUTE
by @mthuurne in #1540 - Changed
AppConfig.default_auto_field
to attribute instead of method by @mthuurne in #1541 - Fixed
default_error_messages
attribute type of baseField
andGenericIPAddressField
classes by @asottile in #1538 - Improved spatialite
DatabaseWrapper
attributes by @filbasi in #1544 - Improved types for Signal
dispatch.dispatcher
by @GabDug in #1567 - Accept
str
field names forWindow.order_by()
, allowNone
forasc/desc
arguments by @GabDug in #1574 - Updated many
django.utils.*
types from stubtest by @GabDug in #1575 - Updated many
db.migrations.operations
types from stubtest by @GabDug in #1583 - Added
StepValueValidator
, fixed argument forSRIDCacheEntry
/EmailValidator
, improvedurls.resolvers
types by @GabDug in #1589
Plugin changes
- Fixed
ForeignKey
queryset filters on un-swapped models by @UnknownPlatypus in #1495 - Add
strict_settings
option, 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
ArrayField
by @sobolevn in #1558 - Removed usage of
mypy_extensions
by @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
flake8
plugins 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
4.2.1
Headline changes
- mypy 1.3.0: Recommended mypy version updated to 1.3.0
- Compatibility: Support for Python 3.7 and Django 4.0 have been dropped.
- New logo: django-stubs has a new logo: https://raw.githubusercontent.com/typeddjango/django-stubs/4.2.1/logo.svg
Django 4.2 additions
- Added support for
db_comment=
argument on Model fields by @andrlik in #1492 - Improve
core.files.storages
types for Django 4.2 by @Alexerson in #1488 - Allow using async
StreamingHttpResponse
by @Alexerson in #1484 - Added
robust
parameter totransaction.on_commit()
by @realsuayip in #1469
Other stubs additions
- Added set/get typing for spatial Model fields by @martinlehoux in #1487
- Made
django.conf
constantsLiteral
s by @sobolevn in #1470 - Added
TypedModelMeta
for typing Model inner Meta class. This feature was deferred from the previous version due to a bug. by @intgr in #1375, #1456
Stubs fixes
- Fixed return types of many decorators (
cache_page
,cache_control
,sensitive_variables
,sensitive_post_parameters
,condition
,etag
,last_modified
) by @Kostia-K in #1465 - Fixed
ManyToManyRawIdWidget
to acceptManyToManyRel
argument by @RyanWalker277 in #1447 - Fixed
classonlymethod
decorator declaration by @adamchainz in #1494 - Fixed type of field attribute descriptors on Model classes (not instance) by @intgr in #1491
- Added missing argument default to
admin.sites.get_app_list()
by @AkaZecik in #1497 - Updated name of
lookup_needs_distinct()
function by @AkaZecik in #1498 - Fixed
_make_token_with_timestamp()
argumentsecret
type by @christianbundy in #1462 - Fixed
send_mass_email()
argument type to allowNone
by @dlesbre in #1516 - Made
UserCreationForm
generic by @monosans in #1518 - Added
SessionBase
methods, improvedSessionStore.get_model_class()
return type by @realsuayip in #1517
Other fixes
Housekeeping
- Added new logo by @adamchainz in #1499, #1500, #1501, #1502
- Dropped Python 3.7 compatibility by @intgr in #1459
- Dropped Django 4.0 compatibility by @intgr in #1468
- Update compatible-mypy & CI to mypy 1.3.0 by @intgr in #1496
- CI: Check and fix missing
__init__.py
with flake8-no-pep420 by @intgr in #1461 - Tweaked package license metadata and rename files by @intgr in #1463
- Version 4.2.1 release (django-stubs, django-stubs-ext) by @intgr in #1520
New Contributors
- @Kostia-K made their first contribution in #1465
- @andrlik made their first contribution in #1492
- @AkaZecik made their first contribution in #1497
- @asottile made their first contribution in #1503
- @Alexerson made their first contribution in #1488
- @dlesbre made their first contribution in #1516
Full Changelog: 4.2.0...4.2.1
4.2.0
Headline changes
- New version scheme: django-stubs will now use the same major.minor version number as Django.
Our Django support policy remains the same: Older versions are still partially supported, and we will continue supporting them as long as it's not a maintenance burden. - Django 4.2: This release adds initial support for some new features in 4.2.
There is still work to do, feel free to open issues or submit pull requests! - mypy 1.2.0: Recommended mypy version updated to 1.2.0
- Compatibility: This is the last release to support Python version 3.7 and Django 4.0.
Django 4.2 additions
- Added
django.utils.http.content_disposition_header()
function by @alexmv in #1448 - Add stubs for new async
Model
methods by @bigfootjon in #1443
Other stubs additions
- Added
Query.join()
method by @RyanWalker277 in #1404 - Added
Query.where
attribute by @RyanWalker277 in #1407 - Added
Model
methodsdate_error_message()
,get_constraints()
,serializable_value()
,prepare_database_save()
Addedapp_label=
argument toAdminSite.get_app_list()
by @RyanWalker277 in #1413 - Added
BaseConstraint.default_violation_error_message
attribute by @RyanWalker277 in #1419 - Added
BaseUserCreationForm
class by @monosans in #1424 - Improve
Form
,FormSet
,BoundField
,ErrorDict
andErrorList
rendering types.
AddedIntegerField.step_size
attribute and argument by @monosans in #1427 - Added type
JSONObject.__init__()
constructor by @realsuayip in #1430 - Added
RenameIndex
migration from Django 4.1 by @karamanolev in #1438 - Added
STORAGES
setting by @federicobond in #1439
Stubs fixes
- Allow lazy translation strings for constraint
violation_error_message
arguments, attributes by @realsuayip in #1418 - Allow setting
SECRET_KEY
to be str or bytes, addSECRET_KEY_FALLBACKS
, updatePasswordResetTokenGenerator
by @christianbundy in #1411 - Allow passing
BaseExpression
toUniqueConstraint.expressions
by @realsuayip in #1420 - Allow middlewares to return
StreamingReponse
by @rik in #1421 - Removed
Manager.delete()
method which is not accessible onManager
by @mschoettle in #1431 - Allow lazy translation strings in email contexts by @realsuayip in #1442
- Fixed
aiterator()
method ofQuerySet
andBaseManager
by @kjagiello in #1449 - Syndication
Feed
items do not need to beModel
instances by @bigfootjon in #1444
Mypy plugin fixes
- Allow custom
Manager
andQuerySet
classes to be inner class ofModel
by @federicobond in #1392 - Fixed handling of
ForeignKey
in abstract models when usingto=
with a string reference by @Kircheneer in #1436 - Handle repeated field lookups in calls to
QuerySet.values_list()
by @leamingrad in #1441 - Handle
Model
relations created withForeignObject
/ForeignObjectRel
by @Photonios in #1451
Other improvements
Tests & CI
- Add tests for
QuerySet.select_related
returning queryset type by @flaeppe in #1400 - Add test for overriding User model manager by @flaeppe in #1401
- CI: Add Django 4.2 to typecheck and update other Django versions by @intgr in #1455
- CI: Stop testing with Python 3.7 by @intgr in #1453
- Run CI with Django 4.2 and declare support in package metadata by @intgr in #1452
Dependencies
- Sync pre-commit and requirements by @sobolevn in #1417
- Update compatible-mypy & CI to mypy 1.2.0 by @intgr in #1429
- Bump isort to 5.12.0 by @leamingrad in #1440
- Version 4.2.0 release (django-stubs, django-stubs-ext) by @intgr in #1458
Deferred for next release
- Added
decorators.AsyncGetResponseCallable
Protocol, but is not yet used anywhere by @RyanWalker277 in #1425 - Added
BaseModelMeta
for typing Model inner Meta class by @intgr in #1375 - Rename
BaseModelMeta
toTypedModelMeta
and document it by @intgr in #1456
New Contributors
- @realsuayip made their first contribution in #1418
- @monosans made their first contribution in #1424
- @karamanolev made their first contribution in #1438
- @Kircheneer made their first contribution in #1436
- @kjagiello made their first contribution in #1449
- @alexmv made their first contribution in #1448
- @bigfootjon made their first contribution in #1443
Full Changelog: 1.16.0...4.2.0
1.16.0
What's Changed
This release updates recommended mypy version to 1.1.x.
Stubs fixes
- Annotate
BaseCreateView.object
attribute asModel | None
by @RyanWalker277 in #1377 - Fixed
ListFilter.expected_parameters()
return type by @pheki in #1373 - Fixed type of
AdminSite.site_url
to allowNone
by @LincolnPuzey in #1379 - Fixed
@vary_on_headers()
decorator to preserve decorated function type by @RyanWalker277 in #1370
Stubs additions
- Added argument
validate_constraints=
toModel.full_clean()
method by @lklivingstone in #1385 - Added
Model.validate_constraints()
method by @OvervCW in #1388
Housekeeping
- Update recommended mypy & CI to 1.1.1, update MultiValueDict by @intgr in #1391
- Release script: Also clean build directories before a build by @intgr in #1378
- Version 1.16.0 release by @intgr in #1396
New Contributors
- @pheki made their first contribution in #1373
- @LincolnPuzey made their first contribution in #1379
- @lklivingstone made their first contribution in #1385
- @OvervCW made their first contribution in #1388
Full Changelog: 1.15.0...1.16.0
django-stubs-ext 0.8.0
1.15.0
This release updates recommended mypy version to 1.0.x. No changes in Django version compatibility.
Some re-exports that were unintentional have been removed. If you get errors like error: Module "django.core.cache" has no attribute "ConnectionProxy"
(for any import path), you probably need to change the module you are importing e.g. ConnectionProxy from. These re-exports were never intentional and are not stable across Django versions.
In addition to code contributions, I'd like to thank @ngnpope, @sobolevn, @ljodal, @christianbundy, @mschoettle for helping out with reviews.
What's Changed
Fixes
- Fix crash using
.values_list("pk")
on abstract model by @flaeppe in #1355 - Fixed Collector.data and NestedObjects.data types by @RyanWalker277 in #1366
- Update Model subclass DoesNotExist type by @mateenkasim in #1364
Django 4.2 compatibility
- Add new names for assert functions from Django 4.2 by @adamchainz in #1365
Documentation
- Use supported version in typecheck_tests command in Contributing guide by @adamantike in #1251
Housekeeping
- Remove unintentional re-exports by @intgr in #1309
- Remove unintentional GeoDjango re-exports by @intgr in #1308
- Version 1.15.0 release by @intgr in #1371
Dependencies
- Upgrade to Mypy 1.0 by @christianbundy in #1360
- Update Black to 23.1.0 and reformat with new style by @intgr in #1358
- Bump mypy from 1.0.0 to 1.0.1 by @dependabot in #1369
New Contributors
- @adamantike made their first contribution in #1251
- @RyanWalker277 made their first contribution in #1366
- @mateenkasim made their first contribution in #1364
Full Changelog: 1.14.0...1.15.0
1.14.0
What's Changed
This release updates recommended mypy version to 0.991 and fixes a few regressions in the last release. No changes in Django version compatibility.
In addition to code contributions, I'd like to thank @flaeppe, @ngnpope and @sobolevn who helped out with reviews.
Fixes for regressions from last version
- Fix some errors in GeoDjango stubs by @ciscorn in #1335
- Allow returning Response from admin @action callbacks by @christianbundy in #1331
- Fixes Recent change to admin action decorators bans return values #1330
- Allow int, bool for data argument in test.client.Client.get() by @nils-van-zuijlen in #1345
- Fixes Recent changes to test.client.Client.get() do not accept valid data types #1327
Mypy plugin fixes
- Fix crash when filtering on implicit
pk
field on abstract model by @flaeppe in #1328 - Suppress
FieldDoesNotExist
raised from attribute on class definition by @flaeppe in #1329 - Fix crash when FK references unknown 'app_label' by @flaeppe in #1342
Enhancements
- Support passing lazy strings to utils.text functions by @ds-cbo in #1344
- Add PASSWORD_RESET_TIMEOUT_DAYS by @christianbundy in #1332
- Improve types of
as_sql()
andas_<engine>()
methods by @intgr in #1315
Housekeeping, dependencies
- Update to mypy 0.991 for compatible-mypy & CI by @intgr in #1260
- Version 1.14.0 release by @intgr in #1343
New Contributors
- @christianbundy made their first contribution in #1332
- @ds-cbo made their first contribution in #1344
Full Changelog: 1.13.2...1.14.0
1.13.2
What's Changed
Mypy plugin fixes
Strings/translations
- Enhance support for gettext_lazy in AdminSite and ModelAdmin by @rclement in #1296
- Support lazy strings for form errors and ValidationError by @mschoettle in #1319
- Add support for send_mail subject using gettext_lazy by @mschoettle in #1304
- Add FAQ entry regarding StrPromise to README by @mschoettle in #1320
GeoDjango
- GeoDjango spatial reference fixes by @mjakob in #1265
- Improve GeoDjango type-hints by @ciscorn in #1299
Decorators
- Fix @classproperty decorator by @intgr in #1287
- Improve types of
django.contrib.admin.decorators
by @flaeppe in #1267 - Improve ModelAdmin and decorator hints and attributes, add tests by @intgr in #1292
- Improve system check registry hints by @intgr in #1249
- Fix override_settings decorator typing by @martinlehoux in #1322
Other type stubs changes
- Add LANGUAGE_COOKIE_SECURE setting by @sshishov in #1294
- Added types for template.backends.django.Template by @smithdc1 in #1302
- request arg to shortcuts.render() can be None. by @smithdc1 in #1305
- Add typing for data parameter in get from RequestFactory, test Client and urlencode by @nils-van-zuijlen in #1297
- Type cache delete functions to return bool by @flaeppe in #1310
- Allow expressions in CheckConstraint.check by @adamchainz in #1219
- Improve some DB expression types by @adamchainz in #1243
- Add support for
django.core.cache.backends.memcached.PyMemcacheCache
by @ngnpope in #1314
Housekeeping
- Version 1.13.2 release by @intgr in #1326
- Used _ContextKeys for context like dicts by @smithdc1 in #1298
- change render_to_string context type by @mschoettle in #1306
- Revert "Used _ContextKeys for context like dicts" by @intgr in #1311
CI
- Run apt-get update in CI by @adamchainz in #1313
Dependency updates
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1291
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1293
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1301
- Bump black from 22.10.0 to 22.12.0 by @dependabot in #1290
- Bump pre-commit from 2.20.0 to 2.21.0 by @dependabot in #1300
- Bump gitpython from 3.1.29 to 3.1.30 by @dependabot in #1303
- Bump pytest from 7.2.0 to 7.2.1 by @dependabot in #1324
- Bump requests from 2.28.1 to 2.28.2 by @dependabot in #1321
New Contributors
- @sshishov made their first contribution in #1294
- @rclement made their first contribution in #1296
- @mschoettle made their first contribution in #1304
- @nils-van-zuijlen made their first contribution in #1297
- @ciscorn made their first contribution in #1299
- @jimmylai made their first contribution in #1317
Full Changelog: 1.13.1...1.13.2