Jinja2 v3.1.0 Release Notes

  • ๐Ÿš€ Released 2022-03-24

    • ๐Ÿ‘ Drop support for Python 3.6. :pr:1534
    • ๐Ÿšš Remove previously deprecated code. :pr:1544

      • WithExtension and AutoEscapeExtension are built-in now.
      • contextfilter and contextfunction are replaced by pass_context. evalcontextfilter and evalcontextfunction are replaced by pass_eval_context. environmentfilter and environmentfunction are replaced by pass_environment.
      • Markup and escape should be imported from MarkupSafe.
      • Compiled templates from very old Jinja versions may need to be recompiled.
      • Legacy resolve mode for Context subclasses is no longer supported. Override resolve_or_missing instead of resolve.
      • unicode_urlencode is renamed to url_quote.
    • ๐Ÿ‘ Add support for native types in macros. :issue:1510

    • The {% trans %} tag can use pgettext and npgettext by passing a context string as the first token in the tag, like {% trans "title" %}. :issue:1430

    • โšก๏ธ Update valid identifier characters from Python 3.6 to 3.7. :pr:1571

    • โœ… Filters and tests decorated with @async_variant are pickleable. :pr:1612

    • Add items filter. :issue:1561

    • โœ… Subscriptions ([0], etc.) can be used after filters, tests, and calls when the environment is in async mode. :issue:1573

    • 0๏ธโƒฃ The groupby filter is case-insensitive by default, matching other comparison filters. Added the case_sensitive parameter to control this. :issue:1463

    • ๐Ÿ Windows drive-relative path segments in template names will not result in FileSystemLoader and PackageLoader loading from drive-relative paths. :pr:1621