Jinja2 v2.10 Release Notes

Release Date: 2017-11-08 // over 6 years ago
  • Primary changes

    โฌ†๏ธ Install or upgrade

    Install from PyPI with pip:

    pip install -U Jinja2
    

    ๐Ÿ”„ Changelog

    • โž• Added a new extension node called OverlayScope which can be used to create an unoptimized scope that will look up all variables from a derived context.
    • โž• Added an in test that works like the in operator. This can be used in combination with reject and select.
    • โž• Added previtem and nextitem to loop contexts, providing access to the previous/next item in the loop. If such an item does not exist, the value is undefined.
    • โž• Added changed(*values) to loop contexts, providing an easy way of checking whether a value has changed since the last iteration (or rather since the last call of the method)
    • โž• Added a namespace function that creates a special object which allows attribute assignment using the set tag. This can be used to carry data across scopes, e.g. from a loop body to code that comes after the loop.
    • โž• Added a trimmed modifier to {% trans %} to strip linebreaks and surrounding whitespace. Also added a new policy to enable this for all trans blocks.
    • The random filter is no longer incorrectly constant folded and will produce a new random choice each time the template is rendered. (#478)
    • โž• Added a unique filter. (#469)
    • โž• Added min and max filters. (#475)
    • โž• Added tests for all comparison operators: eq, ne, lt, le, gt, ge. (#665)
    • import statement cannot end with a trailing comma. (#617, #618)
    • 0๏ธโƒฃ indent filter will not indent blank lines by default. (#685)
    • โž• Add reverse argument for dictsort filter. (#692)
    • โž• Add a NativeEnvironment that renders templates to native Python types instead of strings. (#708)
    • โž• Added filter support to the block set tag. (#489)
    • tojson filter marks output as safe to match documented behavior. (#718)
    • Resolved a bug where getting debug locals for tracebacks could modify template context.
    • ๐Ÿ›  Fixed a bug where having many {% elif ... %} blocks resulted in a "too many levels of indentation" error. These blocks now compile to native elif ..: instead of else: if ..: (#759)