All Versions
Latest Version
Avg Release Cycle
90 days
Latest Release

Changelog History
Page 1

  • v3.1.0 Changes

    ๐Ÿš€ Unreleased

  • v3.0.2 Changes

    • Fix a loop scoping bug that caused assignments in nested loops to still be referenced outside of it. :issue:1427
    • Make compile_templates deterministic for filter and import names. :issue:1452, 1453
    • โช Revert an unintended change that caused Undefined to act like StrictUndefined for the in operator. :issue:1448
  • v3.0.1 Changes

    ๐Ÿš€ Released 2021-05-18

    • โšก๏ธ Update MarkupSafe dependency to >= 2.0. :pr:1418
    • Mark top-level names as exported so type checking understands imports in user projects. :issue:1426
    • Fix some types that weren't available in Python 3.6.0. :issue:1433
    • ๐Ÿ—„ The deprecation warning for unneeded autoescape and with_ extensions shows more relevant context. :issue:1429
    • ๐Ÿ—„ Fixed calling deprecated jinja2.Markup without an argument. Use markupsafe.Markup instead. :issue:1438
    • ๐Ÿ”€ Calling sync render for an async template uses on Python >= 3.7. This fixes a deprecation that Python 3.10 introduces. :issue:1443
  • v3.0.0 Changes

    ๐Ÿš€ Released 2021-05-11

    • ๐Ÿ‘ Drop support for Python 2.7 and 3.5.
    • Bump MarkupSafe dependency to >=1.1.
    • Bump Babel optional dependency to >=2.1.
    • ๐Ÿšš Remove code that was marked deprecated.
    • Add type hinting. :pr:1412
    • Use :pep:451 API to load templates with :class:~loaders.PackageLoader. :issue:1168
    • Fix a bug that caused imported macros to not have access to the current template's globals. :issue:688
    • Add ability to ignore trim_blocks using +%}. :issue:1036
    • Fix a bug that caused custom async-only filters to fail with constant input. :issue:1279
    • Fix UndefinedError incorrectly being thrown on an undefined variable instead of Undefined being returned on NativeEnvironment on Python 3.10. :issue:1335
    • Blocks can be marked as required. They must be overridden at some point, but not necessarily by the direct child. :issue:1147
    • ๐Ÿ—„ Deprecate the autoescape and with extensions, they are built-in to the compiler. :issue:1203
    • The urlize filter recognizes mailto: links and takes extra_schemes (or env.policies["urlize.extra_schemes"]) to recognize other schemes. It tries to balance parentheses within a URL instead of ignoring trailing characters. The parsing in general has been updated to be more efficient and match more cases. URLs without a scheme are linked as https:// instead of http://. :issue:522, 827, 1172, :pr:1195
    • Filters that get attributes, such as map and groupby, can use a false or empty value as a default. :issue:1331
    • Fix a bug that prevented variables set in blocks or loops from being accessed in custom context functions. :issue:768
    • Fix a bug that caused scoped blocks from accessing special loop variables. :issue:1088
    • โšก๏ธ Update the template globals when calling Environment.get_template(globals=...) even if the template was already loaded. :issue:295
    • Do not raise an error for undefined filters in unexecuted if-statements and conditional expressions. :issue:842
    • โœ… Add is filter and is test tests to test if a name is a registered filter or test. This allows checking if a filter is available in a template before using it. Test functions can be decorated with @pass_environment, @pass_eval_context, or @pass_context. :issue:842, :pr:1248
    • ๐Ÿ‘ Support pgettext and npgettext (message contexts) in i18n extension. :issue:441
    • The |indent filter's width argument can be a string to indent by. :pr:1167
    • ๐Ÿ“œ The parser understands hex, octal, and binary integer literals. :issue:1170
    • Undefined.__contains__ (in) raises an UndefinedError instead of a TypeError. :issue:1198
    • Undefined is iterable in an async environment. :issue:1294
    • ๐Ÿ‘ NativeEnvironment supports async mode. :issue:1362
    • Template rendering only treats \n, \r\n and \r as line breaks. Other characters are left unchanged. :issue:769, 952, 1313
    • 0๏ธโƒฃ |groupby filter takes an optional default argument. :issue:1359
    • The function and filter decorators have been renamed and unified. The old names are deprecated. :issue:1381

      • pass_context replaces contextfunction and contextfilter.
      • pass_eval_context replaces evalcontextfunction and evalcontextfilter
      • pass_environment replaces environmentfunction and environmentfilter.
    • ๐Ÿ‘ Async support no longer requires Jinja to patch itself. It must still be enabled with Environment(enable_async=True). :issue:1390

    • ๐Ÿ—„ Overriding Context.resolve is deprecated, override resolve_or_missing instead. :issue:1380

  • v3.0.0.a1

    February 05, 2020
  • v2.11.3 Changes

    ๐Ÿš€ Released 2021-01-31

    • Improve the speed of the urlize filter by reducing regex backtracking. Email matching requires a word character at the start of the domain part, and only word characters in the TLD. :pr:1343
  • v2.11.2 Changes

    April 13, 2020

    ๐Ÿš€ Released 2020-04-13

    • Fix a bug that caused callable objects with __getattr__, like :class:~unittest.mock.Mock to be treated as a :func:contextfunction. :issue:1145
    • โšก๏ธ Update wordcount filter to trigger :class:Undefined methods by wrapping the input in :func:soft_str. :pr:1160
    • Fix a hang when displaying tracebacks on Python 32-bit. :issue:1162
    • Showing an undefined error for an object that raises AttributeError on access doesn't cause a recursion error. :issue:1177
    • ๐Ÿ“ฆ Revert changes to :class:~loaders.PackageLoader from 2.10 which removed the dependency on setuptools and pkg_resources, and added limited support for namespace packages. The changes caused issues when using Pytest. Due to the difficulty in supporting Python 2 and :pep:451 simultaneously, the changes are reverted until 3.0. :pr:1182
    • Fix line numbers in error messages when newlines are stripped. :pr:1178
    • The special namespace() assignment object in templates works in async environments. :issue:1180
    • ๐Ÿšš Fix whitespace being removed before tags in the middle of lines when lstrip_blocks is enabled. :issue:1138
    • :class:~nativetypes.NativeEnvironment doesn't evaluate intermediate strings during rendering. This prevents early evaluation which could change the value of an expression. :issue:1186
  • v2.11.1 Changes

    January 30, 2020

    ๐Ÿ›  This fixes an issue in async environment when indexing the result of an attribute lookup, like {{ data.items[1:] }}.

  • v2.11 Changes

    ๐Ÿš€ Unreleased

    • ๐Ÿ‘ Async support is only loaded the first time an :class:~environment.Environment enables it, in order to avoid a slow initial import. :issue:765
    • ๐Ÿ‘ Python 2.6 and 3.3 are not supported anymore.
    • The map filter in async mode now automatically awaits
    • ๐Ÿ‘ Added a new ChainableUndefined class to support getitem and getattr on an undefined object. :issue:977
    • Allow {%+ syntax (with NOP behavior) when lstrip_blocks is disabled. :issue:748
    • 0๏ธโƒฃ Added a default parameter for the map filter. :issue:557
    • Exclude environment globals from :func:meta.find_undeclared_variables. :issue:931
    • Float literals can be written with scientific notation, like 2.56e-3. :issue:912, :pr:922
    • Int and float literals can be written with the '_' separator for legibility, like 12_345. :pr:923
    • 0๏ธโƒฃ Fix a bug causing deadlocks in LRUCache.setdefault. :pr:1000
    • The trim filter takes an optional string of characters to trim. :pr:828
    • A new jinja2.ext.debug extension adds a {% debug %} tag to quickly dump the current context and available filters and tests. :issue:174, :pr:798, 983
    • Lexing templates with large amounts of whitespace is much faster. :issue:857, :pr:858
    • Parentheses around comparisons are preserved, so {{ 2 * (3 < 5) }} outputs "2" instead of "False". :issue:755, :pr:938
    • Add new boolean, false, true, integer and float tests. :pr:824