Log message:
py-jinja2: updated to 2.11.1
Version 2.11.1
- Fix a bug that prevented looking up a key after an attribute
(``{{ data.items[1:] }}``) in an async template.
Version 2.11.0
- Drop support for Python 2.6, 3.3, and 3.4. This will be the last
version to support Python 2.7 and 3.5.
- Added a new ``ChainableUndefined`` class to support getitem and
getattr on an undefined object.
- Allow ``{%+`` syntax (with NOP behavior) when ``lstrip_blocks`` is
disabled.
- Added a ``default`` parameter for the ``map`` filter.
- Exclude environment globals from
:func:`meta.find_undeclared_variables`.
- Float literals can be written with scientific notation, like
2.56e-3.
- Int and float literals can be written with the '_' separator for
legibility, like 12_345.
- Fix a bug causing deadlocks in ``LRUCache.setdefault``.
- The ``trim`` filter takes an optional string of characters to trim.
- A new ``jinja2.ext.debug`` extension adds a ``{% debug %}`` tag to
quickly dump the current context and available filters and tests.
- Lexing templates with large amounts of whitespace is much faster.
- Parentheses around comparisons are preserved, so
``{{ 2 * (3 < 5) }}`` outputs "2" instead of "False".
- Add new ``boolean``, ``false``, ``true``, ``integer`` and ``float``
tests.
- The environment's ``finalize`` function is only applied to the
output of expressions (constant or not), not static template data.
- When providing multiple paths to ``FileSystemLoader``, a template
can have the same name as a directory.
- Always return :class:`Undefined` when omitting the ``else`` clause
in a ``{{ 'foo' if bar }}`` expression, regardless of the
environment's ``undefined`` class. Omitting the ``else`` clause is a
valid shortcut and should not raise an error when using
:class:`StrictUndefined`.
- Fix behavior of ``loop`` control variables such as ``length`` and
``revindex0`` when looping over a generator.
- Async support is only loaded the first time an environment enables
it, in order to avoid a slow initial import.
- In async environments, the ``|map`` filter will await the filter
call if needed.
- In for loops that access ``loop`` attributes, the iterator is not
advanced ahead of the current iteration unless ``length``,
``revindex``, ``nextitem``, or ``last`` are accessed. This makes it
less likely to break ``groupby`` results.
- In async environments, the ``loop`` attributes ``length`` and
``revindex`` work for async iterators.
- In async environments, values from attribute/property access will
be awaited if needed.
- :class:`~loader.PackageLoader` doesn't depend on setuptools or
pkg_resources.
- ``PackageLoader`` has limited support for :pep:`420` namespace
packages.
- Support :class:`os.PathLike` objects in
:class:`~loader.FileSystemLoader` and :class:`~loader.ModuleLoader`.
- :class:`~nativetypes.NativeTemplate` correctly handles quotes
between expressions. ``"'{{ a }}', '{{ b }}'"`` renders as the tuple
``('1', '2')`` rather than the string ``'1, 2'``.
- Creating a :class:`~nativetypes.NativeTemplate` directly creates a
:class:`~nativetypes.NativeEnvironment` instead of a default
:class:`Environment`.
- After calling ``LRUCache.copy()``, the copy's queue methods point to
the correct queue.
- Compiling templates always writes UTF-8 instead of defaulting to the
system encoding.
- ``|wordwrap`` filter treats existing newlines as separate paragraphs
to be wrapped individually, rather than creating short intermediate
lines.
- Add ``break_on_hyphens`` parameter to ``|wordwrap`` filter.
- Cython compiled functions decorated as context functions will be
passed the context.
- When chained comparisons of constants are evaluated at compile time,
the result follows Python's behavior of returning ``False`` if any
comparison returns ``False``, rather than only the last one.
- Tracebacks for exceptions in templates show the correct line numbers
and source for Python >= 3.7.
- Tracebacks for template syntax errors in Python 3 no longer show
internal compiler frames.
- Add a ``DerivedContextReference`` node that can be used by
extensions to get the current context and local variables such as
``loop``.
- Constant folding during compilation is applied to some node types
that were previously overlooked.
- ``TemplateSyntaxError.source`` is not empty when raised from an
included template.
- Passing an ``Undefined`` value to ``get_template`` (such as through
``extends``, ``import``, or ``include``), raises an
``UndefinedError`` consistently. ``select_template`` will show the
undefined message in the list of attempts rather than the empty
string.
- ``TemplateSyntaxError`` can be pickled.
|
Log message:
py-jinja2: updated to 2.10
Version 2.10:
- 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.
- Added a unique filter.
- Added min and max filters.
- Added tests for all comparison operators: eq, ne, lt, le,
gt, ge.
- import statement cannot end with a trailing comma.
- indent filter will not indent blank lines by default.
- Add reverse argument for dictsort filter.
- Add a NativeEnvironment that renders templates to native Python types
instead of strings.
- Added filter support to the block set tag.
- tojson filter marks output as safe to match documented behavior.
- 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 ..:
|