Skip to content

4.2.0

Compare
Choose a tag to compare
@intgr intgr released this 27 Apr 12:45
· 524 commits to master since this release
87f48b3

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 methods date_error_message(), get_constraints(), serializable_value(), prepare_database_save()
    Added app_label= argument to AdminSite.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 and ErrorList rendering types.
    Added IntegerField.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, add SECRET_KEY_FALLBACKS, update PasswordResetTokenGenerator by @christianbundy in #1411
  • Allow passing BaseExpression to UniqueConstraint.expressions by @realsuayip in #1420
  • Allow middlewares to return StreamingReponse by @rik in #1421
  • Removed Manager.delete() method which is not accessible on Manager by @mschoettle in #1431
  • Allow lazy translation strings in email contexts by @realsuayip in #1442
  • Fixed aiterator() method of QuerySet and BaseManager by @kjagiello in #1449
  • Syndication Feed items do not need to be Model instances by @bigfootjon in #1444

Mypy plugin fixes

  • Allow custom Manager and QuerySet classes to be inner class of Model by @federicobond in #1392
  • Fixed handling of ForeignKey in abstract models when using to= 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 with ForeignObject/ForeignObjectRel by @Photonios in #1451

Other improvements

  • Don't require tomli dependency on Python>=3.11 by @monosans in #1423

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

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 to TypedModelMeta and document it by @intgr in #1456

New Contributors

Full Changelog: 1.16.0...4.2.0