diff options
author | IRIS YANG <irisykyang@google.com> | 2020-07-17 04:30:05 +0000 |
---|---|---|
committer | IRIS YANG <irisykyang@google.com> | 2020-07-17 04:30:05 +0000 |
commit | 81aec74062b5c629b3408f7f3d18343ec0bbcab8 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /CHANGES.rst | |
parent | e868444bb65b7ae2a025b1c8c7854a8c4f2f58c1 (diff) | |
download | jinja-81aec74062b5c629b3408f7f3d18343ec0bbcab8.tar.gz |
Revert "Import external/python/jinja into master"
This reverts commit e868444bb65b7ae2a025b1c8c7854a8c4f2f58c1.
Reason for revert: Since build will failed. We might need to wait b/160731429 fixed and submit it again.
Change-Id: I56449de779d11c13cdfe1243b9a9726f94e55b33
Diffstat (limited to 'CHANGES.rst')
-rw-r--r-- | CHANGES.rst | 789 |
1 files changed, 0 insertions, 789 deletions
diff --git a/CHANGES.rst b/CHANGES.rst deleted file mode 100644 index 298cf0ab..00000000 --- a/CHANGES.rst +++ /dev/null @@ -1,789 +0,0 @@ -.. currentmodule:: jinja2 - -Version 3.0.0 -------------- - -Unreleased - -- 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. -- 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` - -Version 2.11.2 --------------- - -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` - - -Version 2.11.1 --------------- - -Released 2020-01-30 - -- Fix a bug that prevented looking up a key after an attribute - (``{{ data.items[1:] }}``) in an async template. :issue:`1141` - - -Version 2.11.0 --------------- - -Released 2020-01-27 - -- 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. :issue:`977` -- Allow ``{%+`` syntax (with NOP behavior) when ``lstrip_blocks`` is - disabled. :issue:`748` -- 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` -- 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` -- The environment's ``finalize`` function is only applied to the - output of expressions (constant or not), not static template data. - :issue:`63` -- When providing multiple paths to ``FileSystemLoader``, a template - can have the same name as a directory. :issue:`821` -- 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`. :issue:`710`, :pr:`1079` -- Fix behavior of ``loop`` control variables such as ``length`` and - ``revindex0`` when looping over a generator. :issue:`459, 751, 794`, - :pr:`993` -- Async support is only loaded the first time an environment enables - it, in order to avoid a slow initial import. :issue:`765` -- In async environments, the ``|map`` filter will await the filter - call if needed. :pr:`913` -- 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. :issue:`555`, :pr:`1101` -- In async environments, the ``loop`` attributes ``length`` and - ``revindex`` work for async iterators. :pr:`1101` -- In async environments, values from attribute/property access will - be awaited if needed. :pr:`1101` -- :class:`~loader.PackageLoader` doesn't depend on setuptools or - pkg_resources. :issue:`970` -- ``PackageLoader`` has limited support for :pep:`420` namespace - packages. :issue:`1097` -- Support :class:`os.PathLike` objects in - :class:`~loader.FileSystemLoader` and :class:`~loader.ModuleLoader`. - :issue:`870` -- :class:`~nativetypes.NativeTemplate` correctly handles quotes - between expressions. ``"'{{ a }}', '{{ b }}'"`` renders as the tuple - ``('1', '2')`` rather than the string ``'1, 2'``. :issue:`1020` -- Creating a :class:`~nativetypes.NativeTemplate` directly creates a - :class:`~nativetypes.NativeEnvironment` instead of a default - :class:`Environment`. :issue:`1091` -- After calling ``LRUCache.copy()``, the copy's queue methods point to - the correct queue. :issue:`843` -- Compiling templates always writes UTF-8 instead of defaulting to the - system encoding. :issue:`889` -- ``|wordwrap`` filter treats existing newlines as separate paragraphs - to be wrapped individually, rather than creating short intermediate - lines. :issue:`175` -- Add ``break_on_hyphens`` parameter to ``|wordwrap`` filter. - :issue:`550` -- Cython compiled functions decorated as context functions will be - passed the context. :pr:`1108` -- 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. - :issue:`1102` -- Tracebacks for exceptions in templates show the correct line numbers - and source for Python >= 3.7. :issue:`1104` -- Tracebacks for template syntax errors in Python 3 no longer show - internal compiler frames. :issue:`763` -- Add a ``DerivedContextReference`` node that can be used by - extensions to get the current context and local variables such as - ``loop``. :issue:`860` -- Constant folding during compilation is applied to some node types - that were previously overlooked. :issue:`733` -- ``TemplateSyntaxError.source`` is not empty when raised from an - included template. :issue:`457` -- 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. :issue:`1037` -- ``TemplateSyntaxError`` can be pickled. :pr:`1117` - - -Version 2.10.3 --------------- - -Released 2019-10-04 - -- Fix a typo in Babel entry point in ``setup.py`` that was preventing - installation. - - -Version 2.10.2 --------------- - -Released 2019-10-04 - -- Fix Python 3.7 deprecation warnings. -- Using ``range`` in the sandboxed environment uses ``xrange`` on - Python 2 to avoid memory use. :issue:`933` -- Use Python 3.7's better traceback support to avoid a core dump when - using debug builds of Python 3.7. :issue:`1050` - - -Version 2.10.1 --------------- - -Released 2019-04-06 - -- ``SandboxedEnvironment`` securely handles ``str.format_map`` in - order to prevent code execution through untrusted format strings. - The sandbox already handled ``str.format``. - - -Version 2.10 ------------- - -Released 2017-11-08 - -- 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. - :pr:`478` -- Added a ``unique`` filter. :pr:`469` -- Added ``min`` and ``max`` filters. :pr:`475` -- Added tests for all comparison operators: ``eq``, ``ne``, ``lt``, - ``le``, ``gt``, ``ge``. :pr:`665` -- ``import`` statement cannot end with a trailing comma. :pr:`617`, - :pr:`618` -- ``indent`` filter will not indent blank lines by default. :pr:`685` -- Add ``reverse`` argument for ``dictsort`` filter. :pr:`692` -- Add a ``NativeEnvironment`` that renders templates to native Python - types instead of strings. :pr:`708` -- Added filter support to the block ``set`` tag. :pr:`489` -- ``tojson`` filter marks output as safe to match documented behavior. - :pr:`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 ..:`` :issue:`759` - - -Version 2.9.6 -------------- - -Released 2017-04-03 - -- Fixed custom context behavior in fast resolve mode :issue:`675` - - -Version 2.9.5 -------------- - -Released 2017-01-28 - -- Restored the original repr of the internal ``_GroupTuple`` because - this caused issues with ansible and it was an unintended change. - :issue:`654` -- Added back support for custom contexts that override the old - ``resolve`` method since it was hard for people to spot that this - could cause a regression. -- Correctly use the buffer for the else block of for loops. This - caused invalid syntax errors to be caused on 2.x and completely - wrong behavior on Python 3 :issue:`669` -- Resolve an issue where the ``{% extends %}`` tag could not be used - with async environments. :issue:`668` -- Reduce memory footprint slightly by reducing our unicode database - dump we use for identifier matching on Python 3 :issue:`666` -- Fixed autoescaping not working for macros in async compilation mode. - :issue:`671` - - -Version 2.9.4 -------------- - -Released 2017-01-10 - -- Solved some warnings for string literals. :issue:`646` -- Increment the bytecode cache version which was not done due to an - oversight before. -- Corrected bad code generation and scoping for filtered loops. - :issue:`649` -- Resolved an issue where top-level output silencing after known - extend blocks could generate invalid code when blocks where - contained in if statements. :issue:`651` -- Made the ``truncate.leeway`` default configurable to improve - compatibility with older templates. - - -Version 2.9.3 -------------- - -Released 2017-01-08 - -- Restored the use of blocks in macros to the extend that was possible - before. On Python 3 it would render a generator repr instead of the - block contents. :issue:`645` -- Set a consistent behavior for assigning of variables in inner scopes - when the variable is also read from an outer scope. This now sets - the intended behavior in all situations however it does not restore - the old behavior where limited assignments to outer scopes was - possible. For more information and a discussion see :issue:`641` -- Resolved an issue where ``block scoped`` would not take advantage of - the new scoping rules. In some more exotic cases a variable - overriden in a local scope would not make it into a block. -- Change the code generation of the ``with`` statement to be in line - with the new scoping rules. This resolves some unlikely bugs in edge - cases. This also introduces a new internal ``With`` node that can be - used by extensions. - - -Version 2.9.2 -------------- - -Released 2017-01-08 - -- Fixed a regression that caused for loops to not be able to use the - same variable for the target as well as source iterator. - :issue:`640` -- Add support for a previously unknown behavior of macros. It used to - be possible in some circumstances to explicitly provide a caller - argument to macros. While badly buggy and unintended it turns out - that this is a common case that gets copy pasted around. To not - completely break backwards compatibility with the most common cases - it's now possible to provide an explicit keyword argument for caller - if it's given an explicit default. :issue:`642` - - -Version 2.9.1 -------------- - -Released 2017-01-07 - -- Resolved a regression with call block scoping for macros. Nested - caller blocks that used the same identifiers as outer macros could - refer to the wrong variable incorrectly. - - -Version 2.9 ------------ - -Released 2017-01-07, codename Derivation - -- Change cache key definition in environment. This fixes a performance - regression introduced in 2.8. -- Added support for ``generator_stop`` on supported Python versions - (Python 3.5 and later) -- Corrected a long standing issue with operator precedence of math - operations not being what was expected. -- Added support for Python 3.6 async iterators through a new async - mode. -- Added policies for filter defaults and similar things. -- Urlize now sets "rel noopener" by default. -- Support attribute fallback for old-style classes in 2.x. -- Support toplevel set statements in extend situations. -- Restored behavior of Cycler for Python 3 users. -- Subtraction now follows the same behavior as other operators on - undefined values. -- ``map`` and friends will now give better error messages if you - forgot to quote the parameter. -- Depend on MarkupSafe 0.23 or higher. -- Improved the ``truncate`` filter to support better truncation in - case the string is barely truncated at all. -- Change the logic for macro autoescaping to be based on the runtime - autoescaping information at call time instead of macro define time. -- Ported a modified version of the ``tojson`` filter from Flask to - Jinja and hooked it up with the new policy framework. -- Block sets are now marked ``safe`` by default. -- On Python 2 the asciification of ASCII strings can now be disabled - with the ``compiler.ascii_str`` policy. -- Tests now no longer accept an arbitrary expression as first argument - but a restricted one. This means that you can now properly use - multiple tests in one expression without extra parentheses. In - particular you can now write ``foo is divisibleby 2 or foo is - divisibleby 3`` as you would expect. -- Greatly changed the scoping system to be more consistent with what - template designers and developers expect. There is now no more magic - difference between the different include and import constructs. - Context is now always propagated the same way. The only remaining - differences is the defaults for ``with context`` and ``without - context``. -- The ``with`` and ``autoescape`` tags are now built-in. -- Added the new ``select_autoescape`` function which helps configuring - better autoescaping easier. -- Fixed a runtime error in the sandbox when attributes of async - generators were accessed. - - -Version 2.8.1 -------------- - -Released 2016-12-29 - -- Fixed the ``for_qs`` flag for ``urlencode``. -- Fixed regression when applying ``int`` to non-string values. -- SECURITY: if the sandbox mode is used format expressions are now - sandboxed with the same rules as in Jinja. This solves various - information leakage problems that can occur with format strings. - - -Version 2.8 ------------ - -Released 2015-07-26, codename Replacement - -- Added ``target`` parameter to urlize function. -- Added support for ``followsymlinks`` to the file system loader. -- The truncate filter now counts the length. -- Added equalto filter that helps with select filters. -- Changed cache keys to use absolute file names if available instead - of load names. -- Fixed loop length calculation for some iterators. -- Changed how Jinja enforces strings to be native strings in Python 2 - to work when people break their default encoding. -- Added ``make_logging_undefined`` which returns an undefined - object that logs failures into a logger. -- If unmarshalling of cached data fails the template will be reloaded - now. -- Implemented a block ``set`` tag. -- Default cache size was increased to 400 from a low 50. -- Fixed ``is number`` test to accept long integers in all Python - versions. -- Changed ``is number`` to accept Decimal as a number. -- Added a check for default arguments followed by non-default - arguments. This change makes ``{% macro m(x, y=1, z) %}`` a syntax - error. The previous behavior for this code was broken anyway - (resulting in the default value being applied to ``y``). -- Add ability to use custom subclasses of - ``jinja2.compiler.CodeGenerator`` and ``jinja2.runtime.Context`` by - adding two new attributes to the environment - (``code_generator_class`` and ``context_class``). :pr:`404` -- Added support for context/environment/evalctx decorator functions on - the finalize callback of the environment. -- Escape query strings for urlencode properly. Previously slashes were - not escaped in that place. -- Add 'base' parameter to 'int' filter. - - -Version 2.7.3 -------------- - -Released 2014-06-06 - -- Security issue: Corrected the security fix for the cache folder. - This fix was provided by RedHat. - - -Version 2.7.2 -------------- - -Released 2014-01-10 - -- Prefix loader was not forwarding the locals properly to inner - loaders. This is now fixed. -- Security issue: Changed the default folder for the filesystem cache - to be user specific and read and write protected on UNIX systems. - See `Debian bug 734747`_ for more information. - -.. _Debian bug 734747: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734747 - - -Version 2.7.1 -------------- - -Released 2013-08-07 - -- Fixed a bug with ``call_filter`` not working properly on environment - and context filters. -- Fixed lack of Python 3 support for bytecode caches. -- Reverted support for defining blocks in included templates as this - broke existing templates for users. -- Fixed some warnings with hashing of undefineds and nodes if Python - is run with warnings for Python 3. -- Added support for properly hashing undefined objects. -- Fixed a bug with the title filter not working on already uppercase - strings. - - -Version 2.7 ------------ - -Released 2013-05-20, codename Translation - -- Choice and prefix loaders now dispatch source and template lookup - separately in order to work in combination with module loaders as - advertised. -- Fixed filesizeformat. -- Added a non-silent option for babel extraction. -- Added ``urlencode`` filter that automatically quotes values for URL - safe usage with utf-8 as only supported encoding. If applications - want to change this encoding they can override the filter. -- Added ``keep-trailing-newline`` configuration to environments and - templates to optionally preserve the final trailing newline. -- Accessing ``last`` on the loop context no longer causes the iterator - to be consumed into a list. -- Python requirement changed: 2.6, 2.7 or >= 3.3 are required now, - supported by same source code, using the "six" compatibility - library. -- Allow ``contextfunction`` and other decorators to be applied to - ``__call__``. -- Added support for changing from newline to different signs in the - ``wordwrap`` filter. -- Added support for ignoring memcache errors silently. -- Added support for keeping the trailing newline in templates. -- Added finer grained support for stripping whitespace on the left - side of blocks. -- Added ``map``, ``select``, ``reject``, ``selectattr`` and - ``rejectattr`` filters. -- Added support for ``loop.depth`` to figure out how deep inside a - recursive loop the code is. -- Disabled py_compile for pypy and python 3. - - -Version 2.6 ------------ - -Released 2011-07-24, codename Convolution - -- Internal attributes now raise an internal attribute error now - instead of returning an undefined. This fixes problems when passing - undefined objects to Python semantics expecting APIs. -- Traceback support now works properly for PyPy. (Tested with 1.4) -- Implemented operator intercepting for sandboxed environments. This - allows application developers to disable builtin operators for - better security. (For instance limit the mathematical operators to - actual integers instead of longs) -- Groupby filter now supports dotted notation for grouping by - attributes of attributes. -- Scoped blocks now properly treat toplevel assignments and imports. - Previously an import suddenly "disappeared" in a scoped block. -- Automatically detect newer Python interpreter versions before - loading code from bytecode caches to prevent segfaults on invalid - opcodes. The segfault in earlier Jinja versions here was not a - Jinja bug but a limitation in the underlying Python interpreter. If - you notice Jinja segfaulting in earlier versions after an upgrade - of the Python interpreter you don't have to upgrade, it's enough to - flush the bytecode cache. This just no longer makes this necessary, - Jinja will automatically detect these cases now. -- The sum filter can now sum up values by attribute. This is a - backwards incompatible change. The argument to the filter previously - was the optional starting index which defaults to zero. This now - became the second argument to the function because it's rarely used. -- Like sum, sort now also makes it possible to order items by - attribute. -- Like sum and sort, join now also is able to join attributes of - objects as string. -- The internal eval context now has a reference to the environment. -- Added a mapping test to see if an object is a dict or an object with - a similar interface. - - -Version 2.5.5 -------------- - -Released 2010-10-18 - -- Built documentation is no longer part of release. - - -Version 2.5.4 -------------- - -Released 2010-10-17 - -- Fixed extensions not loading properly with overlays. -- Work around a bug in cpython for the debugger that causes segfaults - on 64bit big-endian architectures. - - -Version 2.5.3 -------------- - -Released 2010-10-17 - -- Fixed an operator precedence error introduced in 2.5.2. Statements - like "-foo.bar" had their implicit parentheses applied around the - first part of the expression ("(-foo).bar") instead of the more - correct "-(foo.bar)". - - -Version 2.5.2 -------------- - -Released 2010-08-18 - -- Improved setup.py script to better work with assumptions people - might still have from it (``--with-speedups``). -- Fixed a packaging error that excluded the new debug support. - - -Version 2.5.1 -------------- - -Released 2010-08-17 - -- StopIteration exceptions raised by functions called from templates - are now intercepted and converted to undefineds. This solves a lot - of debugging grief. (StopIteration is used internally to abort - template execution) -- Improved performance of macro calls slightly. -- Babel extraction can now properly extract newstyle gettext calls. -- Using the variable ``num`` in newstyle gettext for something else - than the pluralize count will no longer raise a :exc:`KeyError`. -- Removed builtin markup class and switched to markupsafe. For - backwards compatibility the pure Python implementation still exists - but is pulled from markupsafe by the Jinja developers. The debug - support went into a separate feature called "debugsupport" and is - disabled by default because it is only relevant for Python 2.4 -- Fixed an issue with unary operators having the wrong precedence. - - -Version 2.5 ------------ - -Released 2010-05-29, codename Incoherence - -- Improved the sort filter (should have worked like this for a long - time) by adding support for case insensitive searches. -- Fixed a bug for getattribute constant folding. -- Support for newstyle gettext translations which result in a nicer - in-template user interface and more consistent catalogs. -- It's now possible to register extensions after an environment was - created. - - -Version 2.4.1 -------------- - -Released 2010-04-20 - -- Fixed an error reporting bug for undefined. - - -Version 2.4 ------------ - -Released 2010-04-13, codename Correlation - -- The environment template loading functions now transparently pass - through a template object if it was passed to it. This makes it - possible to import or extend from a template object that was passed - to the template. -- Added a ``ModuleLoader`` that can load templates from - precompiled sources. The environment now features a method to - compile the templates from a configured loader into a zip file or - folder. -- The _speedups C extension now supports Python 3. -- Added support for autoescaping toggling sections and support for - evaluation contexts. -- Extensions have a priority now. - - -Version 2.3.1 -------------- - -Released 2010-02-19 - -- Fixed an error reporting bug on all python versions -- Fixed an error reporting bug on Python 2.4 - - -Version 2.3 ------------ - -Released 2010-02-10, codename 3000 Pythons - -- Fixes issue with code generator that causes unbound variables to be - generated if set was used in if-blocks and other small identifier - problems. -- Include tags are now able to select between multiple templates and - take the first that exists, if a list of templates is given. -- Fixed a problem with having call blocks in outer scopes that have an - argument that is also used as local variable in an inner frame - :issue:`360`. -- Greatly improved error message reporting :pr:`339` -- Implicit tuple expressions can no longer be totally empty. This - change makes ``{% if %}`` a syntax error now. :issue:`364` -- Added support for translator comments if extracted via babel. -- Added with-statement extension. -- Experimental Python 3 support. - - -Version 2.2.1 -------------- - -Released 2009-09-14 - -- Fixes some smaller problems for Jinja on Jython. - - -Version 2.2 ------------ - -Released 2009-09-13, codename Kong - -- Include statements can now be marked with ``ignore missing`` to skip - non existing templates. -- Priority of ``not`` raised. It's now possible to write ``not foo in - bar`` as an alias to ``foo not in bar`` like in python. Previously - the grammar required parentheses (``not (foo in bar)``) which was - odd. -- Fixed a bug that caused syntax errors when defining macros or using - the ``{% call %}`` tag inside loops. -- Fixed a bug in the parser that made ``{{ foo[1, 2] }}`` impossible. -- Made it possible to refer to names from outer scopes in included - templates that were unused in the callers frame :issue:`327` -- Fixed a bug that caused internal errors if names where used as - iteration variable and regular variable *after* the loop if that - variable was unused *before* the loop. :pr:`331` -- Added support for optional ``scoped`` modifier to blocks. -- Added support for line-comments. -- Added the ``meta`` module. -- Renamed (undocumented) attribute "overlay" to "overlayed" on the - environment because it was clashing with a method of the same name. -- Speedup extension is now disabled by default. - - -Version 2.1.1 -------------- - -Released 2008-12-25 - -- Fixed a translation error caused by looping over empty recursive - loops. - - -Version 2.1 ------------ - -Released 2008-11-23, codename Yasuzō - -- Fixed a bug with nested loops and the special loop variable. Before - the change an inner loop overwrote the loop variable from the outer - one after iteration. -- Fixed a bug with the i18n extension that caused the explicit - pluralization block to look up the wrong variable. -- Fixed a limitation in the lexer that made ``{{ foo.0.0 }}`` - impossible. -- Index based subscribing of variables with a constant value returns - an undefined object now instead of raising an index error. This was - a bug caused by eager optimizing. -- The i18n extension looks up ``foo.ugettext`` now followed by - ``foo.gettext`` if an translations object is installed. This makes - dealing with custom translations classes easier. -- Fixed a confusing behavior with conditional extending. loops were - partially executed under some conditions even though they were not - part of a visible area. -- Added ``sort`` filter that works like ``dictsort`` but for arbitrary - sequences. -- Fixed a bug with empty statements in macros. -- Implemented a bytecode cache system. -- The template context is now weakref-able -- Inclusions and imports "with context" forward all variables now, not - only the initial context. -- Added a cycle helper called ``cycler``. -- Added a joining helper called ``joiner``. -- Added a ``compile_expression`` method to the environment that allows - compiling of Jinja expressions into callable Python objects. -- Fixed an escaping bug in urlize - - -Version 2.0 ------------ - -Released 2008-07-17, codename Jinjavitus - -- The subscribing of objects (looking up attributes and items) changed - from slightly. It's now possible to give attributes or items a - higher priority by either using dot-notation lookup or the bracket - syntax. This also changed the AST slightly. ``Subscript`` is gone - and was replaced with ``Getitem`` and ``Getattr``. -- Added support for preprocessing and token stream filtering for - extensions. This would allow extensions to allow simplified gettext - calls in template data and something similar. -- Added ``TemplateStream.dump``. -- Added missing support for implicit string literal concatenation. - ``{{ "foo" "bar" }}`` is equivalent to ``{{ "foobar" }}`` -- ``else`` is optional for conditional expressions. If not given it - evaluates to ``false``. -- Improved error reporting for undefined values by providing a - position. -- ``filesizeformat`` filter uses decimal prefixes now per default and - can be set to binary mode with the second parameter. -- Fixed bug in finalizer - - -Version 2.0rc1 --------------- - -Released 2008-06-09 - -- First release of Jinja 2. |