Spec-Zone.ru › Jinja 3.1

Изменения

Версия 3.1.3

Не выпущена

  • Исправлена ошибка компилятора при проверке, являются ли необходимые блоки в родительских шаблонах пустыми. #1858

Версия 3.1.2

Выпущена 2022-04-28

  • Добавлены параметры к Environment.overlay для соответствия __init__. #1645
  • Обработка состояния гонки в FileSystemBytecodeCache. #1654

Версия 3.1.1

Выпущена 2022-03-25

  • Имя файла шаблона в Windows использует основной разделитель пути. #1637

Версия 3.1.0

Выпущена 2022-03-24

  • Отказ от поддержки Python 3.6. #1534
  • Удаление ранее устаревшего кода. #1544

    • WithExtension и AutoEscapeExtension теперь встроенные.
    • contextfilter и contextfunction заменены на pass_context. evalcontextfilter и evalcontextfunction заменены на pass_eval_context. environmentfilter и environmentfunction заменены на pass_environment.
    • Markup и escape следует импортировать из MarkupSafe.
    • Скомпилированные шаблоны из очень старых версий Jinja могут потребовать повторной компиляции.
    • Устаревший режим разрешения для подклассов Context больше не поддерживается. Вместо resolve переопределите resolve_or_missing.
    • unicode_urlencode переименовано в url_quote.
  • Добавлена поддержка встроенных типов в макросах. #1510
  • Тег {% trans %} может использовать pgettext и npgettext, передавая строку контекста как первый токен в теге, например, {% trans "title" %}. #1430
  • Обновление допустимых символов идентификатора от Python 3.6 до 3.7. #1571
  • Фильтры и тесты, помеченные @async_variant, подлежат сериализации. #1612
  • Добавление фильтра items. #1561
  • Подписи ([0], и т. д.) могут использоваться после фильтров, тестов и вызовов, когда среда находится в асинхронном режиме. #1573
  • Фильтр groupby по умолчанию не чувствителен к регистру, соответствуя другим фильтрам сравнения. Добавлен параметр case_sensitive, чтобы управлять этим. #1463
  • Сегменты пути относительно диска Windows в именах шаблонов больше не приведут к FileSystemLoader и PackageLoader загружающимся из путей относительно диска. #1621

Версия 3.0.3

Выпущена 2021-11-09

  • Исправление переписывания трассировки для Python 3.10 и 3.11. #1535
  • Исправление того, как нативная среда обрабатывает ведущие и хвостовые пробелы при разборе значений в Python 3.10. #1537
  • Улучшение асинхронной производительности путем исключения проверок для общих типов. #1514
  • Откат изменения поведения hash(Node). Узлы снова хешируются по идентификатору #1521
  • PackageLoader работает, когда пакет является единственным файлом модуля. #1512

Версия 3.0.2

Выпущена 2021-10-04

  • Исправление ошибки области видимости цикла, которая приводила к тому, что назначения в вложенных циклах по-прежнему ссылались вне его. #1427
  • Делает compile_templates детерминированным для имен фильтров и импорта. #1452, #1453
  • Откат непреднамеренного изменения, которое привело к тому, что Undefined действовал как StrictUndefined для оператора in. #1448
  • Импортированные макросы имеют доступ к текущим глобальным переменным шаблона в асинхронных средах. #1494
  • PackageLoader не будет включать сегмент пути текущей директории (.). Это позволяет загружать шаблоны из корня импорта zip. #1467

Версия 3.0.1

Выпущена 2021-05-18

  • Обновление зависимости MarkupSafe до >= 2.0. #1418
  • Помечаем имена верхнего уровня как экспортируемые, чтобы проверка типов понимала импорты в пользовательских проектах. #1426
  • Исправление некоторых типов, которых не было в Python 3.6.0. #1433
  • Предупреждение об устаревании для неиспользуемых расширений autoescape и with_ отображает более релевантный контекст. #1429
  • Исправлен вызов устаревшего jinja2.Markup без аргумента. Используйте markupsafe.Markup вместо этого. #1438
  • Вызов синхронного render для асинхронного шаблона использует asyncio.run в Python >= 3.7. Это исправляет устаревание, которое вводит Python 3.10. #1443
END_OF_DOCUMENT_MARKER

Версия 3.0.0

Выпущено 2021-05-11

  • Отказ от поддержки Python 2.7 и 3.5.
  • Обновление зависимости MarkupSafe до >=1.1.
  • Обновление необязательной зависимости Babel до >=2.1.
  • Удаление помеченного устаревшим кода.
  • Добавление подсказок типов. #1412
  • Использование API PEP 451 для загрузки шаблонов с помощью PackageLoader. #1168
  • Исправление ошибки, которая приводила к тому, что импортированные макросы не имели доступа к глобальным переменным текущего шаблона. #688
  • Добавление возможности игнорировать trim_blocks с помощью +%}. #1036
  • Исправление ошибки, которая приводила к сбоям пользовательских фильтров, ориентированных только на асинхронность, при постоянном входном значении. #1279
  • Исправление ошибки UndefinedError, которая неправильно выбрасывалась при неопределённой переменной вместо возвращения Undefined в NativeEnvironment в Python 3.10. #1335
  • Блоки могут быть помечены как required. Они должны быть переопределены в какой-то момент, но не обязательно непосредственным потомком. #1147
  • Устаревание расширений autoescape и with, они встроенны в компилятор. #1203
  • Фильтр urlize распознаёт mailto: ссылки и принимает extra_schemes (или env.policies["urlize.extra_schemes"]) для распознавания других схем. Он пытается сбалансировать скобки внутри URL, вместо игнорирования конечных символов. Разбор в целом был обновлён для большей эффективности и соответствия большему количеству случаев. URL без схемы связываются как https:// вместо http://. #522, #827, #1172, #1195
  • Фильтры, получающие атрибуты, такие как map и groupby, могут использовать значение false или пустое значение в качестве значения по умолчанию. #1331
  • Исправление ошибки, которая препятствовала доступу к переменным, установленным в блоках или циклах, в пользовательских функциях контекста. #768
  • Исправление ошибки, которая позволяла вложенным блокам обращаться к специальным переменным цикла. #1088
  • Обновление глобальных переменных шаблона при вызове Environment.get_template(globals=...), даже если шаблон уже был загружен. #295
  • Не генерировать ошибку для неопределённых фильтров в невыполненных операторах if и условных выражениях. #842
  • Добавление is filter и is test тестов для проверки, является ли имя зарегистрированным фильтром или тестом. Это позволяет проверить, доступен ли фильтр в шаблоне, прежде чем использовать его. Функции тестирования могут быть декорированы @pass_environment, @pass_eval_context, или @pass_context. #842, #1248
  • Поддержка pgettext и npgettext (контексты сообщений) в расширении i18n. #441
  • Аргумент width фильтра |indent может быть строкой для отступа. #1167
  • Парсер понимает шестнадцатеричные, восьмеричные и двоичные целочисленные литералы. #1170
  • Undefined.__contains__ (in) вызывает UndefinedError вместо TypeError. #1198
  • Undefined является итерируемым в асинхронной среде. #1294
  • NativeEnvironment поддерживает асинхронный режим. #1362
  • Рендеринг шаблонов обрабатывает только \n, \r\n и \r как символы новой строки. Другие символы остаются неизменными. #769, #952, #1313
  • |groupby фильтр принимает необязательный аргумент default. #1359
  • Функции и фильтры декорирования были переименованы и объединены. Старые имена устарели. #1381

    • pass_context заменяет contextfunction и contextfilter.
    • pass_eval_context заменяет evalcontextfunction и evalcontextfilter
    • pass_environment заменяет environmentfunction и environmentfilter.
  • Поддержка асинхронности больше не требует от Jinja исправления самого себя. Она все равно должна быть включена с помощью Environment(enable_async=True). #1390
  • Переопределение Context.resolve устарело, используйте переопределение resolve_or_missing вместо этого. #1380

Версия 2.11.3

Выпущено 2021-01-31

  • Улучшение скорости фильтра urlize путём сокращения обратной трассировки регулярных выражений. Сопоставление электронной почты требует символа слова в начале части домена, и только символов слова в TLD. #1343

Версия 2.11.2

Выпущено 2020-04-13

  • Исправление ошибки, которая приводила к тому, что вызываемые объекты с __getattr__, такие как Mock обрабатывались как contextfunction(). #1145
  • Обновление фильтра wordcount для вызова методов Undefined путём обертывания входных данных в soft_str(). #1160
  • Исправление зависания при отображении отладочных трассировок в Python 32-бит. #1162
  • Отображение ошибки неопределённости для объекта, который вызывает AttributeError при доступе, не приводит к рекурсивной ошибке. #1177
  • Откат изменений в PackageLoader с версии 2.10, которые удалили зависимость от setuptools и pkg_resources, и добавили ограниченную поддержку пакетов с именованными пространствами. Эти изменения вызвали проблемы при использовании Pytest. В связи с трудностями поддержки Python 2 и PEP 451 одновременно, изменения отменены до версии 3.0. #1182
  • Исправление номеров строк в сообщениях об ошибках при удалении символов новой строки. #1178
  • Специальный объект присваивания namespace() в шаблонах работает в асинхронных средах. #1180
  • Исправление удаления пробелов перед тегами посередине строк при включении lstrip_blocks. #1138
  • NativeEnvironment не вычисляет промежуточные строки во время рендеринга. Это предотвращает раннее вычисление, которое может изменить значение выражения. #1186

Версия 2.11.1

Выпущено 2020-01-30

  • Исправление ошибки, которая препятствовала поиску ключа после атрибута ({{ data.items[1:] }}) в асинхронном шаблоне. #1141
END_OF_DOCUMENT_MARKER

Версия 2.11.0

Выпущено 2020-01-27

  • Прекращено поддержка Python 2.6, 3.3 и 3.4. Это будет последняя версия, поддерживающая Python 2.7 и 3.5.
  • Добавлен новый ChainableUndefined класс для поддержки getitem и getattr на неопределенном объекте. #977
  • Разрешена синтаксис {%+ (с поведением NOP), когда lstrip_blocks отключен. #748
  • Добавлен параметр default для фильтра map. #557
  • Исключить глобальные переменные среды из meta.find_undeclared_variables(). #931
  • Числа с плавающей точкой могут быть записаны в научной нотации, например 2.56e-3. #912, #922
  • Целочисленные и с плавающей точкой литералы могут быть записаны с разделителем «_» для лучшей читаемости, например 12_345. #923
  • Исправлена ошибка, приводящая к тупиковым ситуациям в LRUCache.setdefault. #1000
  • Фильтр trim принимает необязательную строку символов для обрезки. #828
  • Новый jinja2.ext.debug расширение добавляет тег {% debug %} для быстрого вывода текущего контекста и доступных фильтров и тестов. #174, #798, #983
  • Лексический анализ шаблонов с большим количеством пробелов происходит намного быстрее. #857, #858
  • Скобки вокруг сравнений сохраняются, поэтому {{ 2 * (3 < 5) }} выводит “2” вместо “False”. #755, #938
  • Добавлены новые boolean, false, true, integer и float тесты. #824
  • Функция finalize среды применяется только к результату выражений (константные или нет), а не к статическим данным шаблона. #63
  • При предоставлении нескольких путей к FileSystemLoader, шаблон может иметь то же имя, что и каталог. #821
  • Всегда возвращает Undefined при опускании else в выражении {{ 'foo' if bar }}, независимо от класса среды undefined. Пропуск else — это допустимый ярлык и не должен вызывать ошибку при использовании StrictUndefined. #710, #1079
  • Исправлено поведение управляющих переменных loop, таких как length и revindex0, при циклировании по генератору. #459, #751, #794, #993
  • Поддержка асинхронного режима загружается только в первый раз, когда среда её включает, чтобы избежать медленного начального импорта. #765
  • В асинхронных средах, фильтр |map будет ожидать вызова фильтра при необходимости. #913
  • В циклах for, которые обращаются к loop атрибутам, итератор не перемещается вперед до текущей итерации, если не обращаются к length, revindex, nextitem, или last. Это уменьшает вероятность нарушения результатов groupby. #555, #1101
  • В асинхронных средах атрибуты loop length и revindex работают для асинхронных итераторов. #1101
  • В асинхронных средах значения из доступа к атрибуту/свойству будут ожидать, если нужно. #1101
  • PackageLoader не зависит от setuptools или pkg_resources. #970
  • PackageLoader имеет ограниченную поддержку пространств имён пакетов PEP 420. #1097
  • Поддержка объектов os.PathLike в FileSystemLoader и ModuleLoader. #870
  • NativeTemplate правильно обрабатывает кавычки между выражениями. "'{{ a }}', '{{ b }}'" отображается как кортеж ('1', '2'), а не строка '1, 2'. #1020
  • Создание NativeTemplate напрямую создаёт NativeEnvironment, а не по умолчанию Environment. #1091
  • После вызова LRUCache.copy(), методы очереди копии указывают на правильную очередь. #843
  • Компиляция шаблонов всегда записывает UTF-8, а не по умолчанию кодировку системы. #889
  • |wordwrap фильтр рассматривает существующие переводы строк как отдельные абзацы, которые должны быть обернуты индивидуально, а не создание коротких промежуточных строк. #175
  • Добавлен параметр break_on_hyphens к фильтру |wordwrap. #550
  • Функции Cython, помеченные как функции контекста, будут переданы контекст. #1108
  • При оценке цепочки сравнений констант во время компиляции, результат следует поведению Python, возвращая False, если любое сравнение возвращает False, а не только последнее. #1102
  • Сведения о трассировке исключений в шаблонах показывают правильные номера строк и исходный код для Python >= 3.7. #1104
  • Сведения о трассировке синтаксических ошибок шаблона в Python 3 больше не показывают внутренние кадровые сведения компилятора. #763
  • Добавлен узел DerivedContextReference, который может быть использован расширениями для получения текущего контекста и локальных переменных, таких как loop. #860
  • Складывание констант во время компиляции применяется к некоторым типам узлов, которые ранее игнорировались. #733
  • TemplateSyntaxError.source не пустая при поднятии из включенного шаблона. #457
  • Передача значения Undefined в get_template (например, через extends, import, или include), вызывает исключение UndefinedError последовательно. select_template будет отображать сообщение об отсутствии определения в списке попыток, а не пустую строку. #1037
  • TemplateSyntaxError может быть сериализован. #1117

Версия 2.10.3

Выпущено 2019-10-04

  • Исправлена опечатка в точке входа Babel в setup.py, которая препятствовала установке.

Версия 2.10.2

Выпущено 2019-10-04

  • Исправлены предупреждения об устаревании Python 3.7.
  • Использование range в защищённой среде использует xrange в Python 2 для предотвращения использования памяти. #933
  • Используется улучшенная поддержка трассировки Python 3.7, чтобы избежать сброса ядра при использовании отладочных сборок Python 3.7. #1050

Версия 2.10.1

Выпущено 2019-04-06

  • SandboxedEnvironment безопасно обрабатывает str.format_map для предотвращения выполнения кода через недоверенные строки форматирования. Sandbox уже обрабатывал str.format.
END_OF_DOCUMENT_MARKER

Версия 2.10

Выпущено 2017-11-08

  • Добавлен новый узел расширения, называемый OverlayScope, который можно использовать для создания неоптимизированного пространства имен, которое будет искать все переменные из производного контекста.
  • Добавлен in тест, который работает как оператор in. Это можно использовать в сочетании с reject и select.
  • Добавлены previtem и nextitem для циклов, предоставляя доступ к предыдущему/следующему элементу в цикле. Если такого элемента нет, значение равно undefined.
  • Добавлен changed(*values) для циклов, предоставляющий простой способ проверки, изменилось ли значение с последней итерации (или, точнее, с последнего вызова метода)
  • Добавлена функция namespace, которая создает специальный объект, позволяющий назначать атрибуты с помощью тега set. Это можно использовать для передачи данных через области видимости, например, из тела цикла в код, который следует за циклом.
  • Добавлен модификатор trimmed к {% trans %} для удаления переносов строк и окружающих пробелов. Также добавлена новая политика для включения этого для всех блоков trans.
  • Фильтр random больше не является ошибочно константным и будет производить новый случайный выбор каждый раз, когда шаблон рендерится. #478
  • Добавлен фильтр unique. #469
  • Добавлены фильтры min и max. #475
  • Добавлены тесты для всех операторов сравнения: eq, ne, lt, le, gt, ge. #665
  • Заявление import не может заканчиваться запятой. #617, #618
  • Фильтр indent по умолчанию не будет добавлять отступы к пустым строкам. #685
  • Добавлен аргумент reverse для фильтра dictsort. #692
  • Добавлен NativeEnvironment, который преобразует шаблоны в базовые типы Python вместо строк. #708
  • Добавлена поддержка фильтров к тегу set . #489
  • Фильтр tojson помечает вывод как безопасный для соответствия документированному поведению. #718
  • Исправлена ошибка, когда получение локальных данных отладки для отслеживания ошибок могло изменить контекст шаблона.
  • Исправлена ошибка, когда много блоков {% elif ... %} приводило к ошибке «слишком много уровней отступа». Эти блоки теперь компилируются в базовые elif ..: вместо else: if ..:. #759

Версия 2.9.6

Выпущено 2017-04-03

  • Исправлено поведение пользовательского контекста в режиме быстрого разрешения #675

Версия 2.9.5

Выпущено 2017-01-28

  • Восстановлено исходное представление внутреннего _GroupTuple , поскольку это вызвало проблемы с ansible, и это было непреднамеренное изменение. #654
  • Добавлена поддержка пользовательских контекстов, которые переопределяют старый метод resolve, так как людям было трудно заметить, что это может привести к регрессии.
  • Правильно используется буфер для блока else циклов for. Это приводило к ошибкам синтаксиса в 2.x и совершенно неверному поведению в Python 3 #669
  • Решена проблема, из-за которой тег {% extends %} не мог использоваться в асинхронных средах. #668
  • Незначительно уменьшен объем памяти за счет уменьшения объема базы данных Unicode, используемой для соответствия идентификаторов в Python 3 #666
  • Исправлено, что автоэскейпинг не работал для макросов в режиме асинхронной компиляции. #671

Версия 2.9.4

Выпущено 2017-01-10

  • Устранены некоторые предупреждения для строковых литералов. #646
  • Увеличен номер версии кэша байткода, что не было сделано ранее из-за упущения.
  • Исправлена генерация и обработка скопов для отфильтрованных циклов. #649
  • Решена проблема, из-за которой отключение вывода на верхнем уровне после известных блоков extend могло генерировать неверный код, когда блоки содержались в операторах if. #651
  • Делаем truncate.leeway настраиваемым по умолчанию, чтобы улучшить совместимость со старыми шаблонами.

Версия 2.9.3

Выпущено 2017-01-08

  • Восстановлено использование блоков в макросах в той мере, в какой это было возможно ранее. В Python 3 это отображало представление генератора вместо содержимого блока. #645
  • Установлено согласованное поведение для присваивания переменных во внутренних областях видимости, когда переменная также считывается из внешней области видимости. Теперь это поведение устанавливается во всех ситуациях, но это не восстанавливает старое поведение, где были возможны ограниченные присваивания во внешние области видимости. Для получения дополнительной информации и обсуждения см. #641
  • Решена проблема, из-за которой block scoped не использовал новые правила области видимости. В некоторых более экзотических случаях переменная, переопределённая в локальной области видимости, не попадала в блок.
  • Изменена генерация кода оператора with в соответствии с новыми правилами области видимости. Это решает некоторые маловероятные ошибки в крайних случаях. Это также вводит новый внутренний узел With, который может использоваться расширениями.

Версия 2.9.2

Выпущено 2017-01-08

  • Исправлена регрессия, которая не позволяла циклам for использовать одну и ту же переменную как для целевого итератора, так и для источника. #640
  • Добавлена поддержка ранее неизвестного поведения макросов. В некоторых обстоятельствах было возможно явно указать аргумент вызывающей функции для макросов. Хотя это было плохо реализовано и непреднамеренно, оказалось, что это распространённый случай, который копируется. Чтобы не полностью нарушить обратную совместимость с наиболее распространёнными случаями, теперь можно явно указать ключевой аргумент вызывающей функции, если ему задано явное значение по умолчанию. #642

Версия 2.9.1

Выпущено 2017-01-07

  • Устранена регрессия с охватом блоков вызовов для макросов. Вложенные блоки вызывающей функции, которые использовали те же идентификаторы, что и внешние макросы, могли неправильно ссылаться на неправильную переменную.

Версия 2.9

Выпущено 2017-01-07, кодовое имя Derivation

  • Изменено определение ключа кэша в среде. Это исправляет регрессию производительности, введённую в 2.8.
  • Добавлена поддержка generator_stop на поддерживаемых версиях Python (Python 3.5 и выше)
  • Исправлена давняя проблема с приоритетом операций математических операторов, которые не соответствовали ожиданиям.
  • Добавлена поддержка асинхронных итераторов Python 3.6 через новый асинхронный режим.
  • Добавлены политики для значений по умолчанию фильтров и подобных вещей.
  • Urlize теперь по умолчанию устанавливает «rel noopener».
  • Поддержка отката атрибутов для классов старого стиля в 2.x.
  • Поддержка операторов set на верхнем уровне в ситуациях extend.
  • Восстановлено поведение Cycler для пользователей Python 3.
  • Вычитание теперь следует тому же поведению, что и другие операторы, для неопределённых значений.
  • map и аналогичные функции теперь выдадут более подробные сообщения об ошибках, если вы забыли указать параметр.
  • Зависимость от MarkupSafe 0.23 или выше.
  • Улучшен фильтр truncate для лучшего усечения, если строка почти не усечена.
  • Изменён логика автоэскейпинга макросов, которая теперь основана на информации о времени выполнения автоэскейпинга при вызове, а не на времени определения макроса.
  • Портирована модифицированная версия фильтра tojson из Flask в Jinja и подключена к новой системе политик.
  • Наборы блоков по умолчанию отмечаются как safe.
  • В Python 2 теперь можно отключить ASCII-преобразование ASCII-строк с помощью политики compiler.ascii_str.
  • Тесты теперь не принимают произвольное выражение в качестве первого аргумента, а ограниченное. Это означает, что теперь вы можете правильно использовать несколько тестов в одном выражении без дополнительных скобок. В частности, теперь вы можете написать foo is divisibleby 2 or foo is divisibleby 3 так, как ожидалось.
  • Значительно изменена система областей видимости для большей согласованности с ожиданиями разработчиков шаблонов. Теперь нет магической разницы между различными конструкциями include и import. Контекст теперь всегда передаётся одинаково. Единственными оставшимися различиями являются значения по умолчанию для with context и without context.
  • Теги with и autoescape теперь являются встроенными.
  • Добавлена новая функция select_autoescape, которая помогает проще настроить автоэскейпинг.
  • Исправлена ошибка времени выполнения в песочнице при доступе к атрибутам асинхронных генераторов.

Версия 2.8.1

Выпущено 2016-12-29

  • Исправлен флаг for_qs для urlencode.
  • Исправлена регрессия при применении int к значениям, отличным от строк.
  • БЕЗОПАСНОСТЬ: если используется режим песочницы, выражения формата теперь находятся в песочнице с теми же правилами, что и в Jinja. Это решает различные проблемы утечки информации, которые могут возникнуть со строками формата.
END_OF_DOCUMENT_MARKER

Версия 2.8

Выпущено 2015-07-26, кодовое имя Replacement

  • Добавлен параметр target к функции urlize.
  • Добавлена поддержка followsymlinks для загрузчика файловой системы.
  • Фильтр truncate теперь считает длину.
  • Добавлен фильтр equalto, который помогает с фильтрами select.
  • Изменены ключи кэша на использование абсолютных путей к файлам, если доступны, вместо имен загрузок.
  • Исправлен расчет длины цикла для некоторых итераторов.
  • Изменён способ, которым Jinja требует, чтобы строки были строками с нативным кодированием в Python 2, чтобы работать, когда люди нарушают своё значение по умолчанию для кодирования.
  • Добавлен make_logging_undefined, который возвращает неопределённый объект, записывающий неудачи в логгер.
  • Если размарширование кэшированных данных завершается неудачей, шаблон теперь будет перезагружен.
  • Реализован тэг блока set.
  • Размер кэша по умолчанию увеличен до 400 с низких 50.
  • Исправлен тест is number для поддержки длинных целых чисел во всех версиях Python.
  • Изменён is number для поддержки Decimal как числа.
  • Добавлена проверка на аргументы по умолчанию, за которыми следуют необязательные аргументы. Это изменение делает {% macro m(x, y=1, z) %} синтаксической ошибкой. Предыдущее поведение для этого кода было сломано (приводя к применению значения по умолчанию к y).
  • Добавлена возможность использования пользовательских подклассов jinja2.compiler.CodeGenerator и jinja2.runtime.Context, добавив два новых атрибута в среду (code_generator_class и context_class). #404
  • Добавлена поддержка функций-декораторов context/environment/evalctx для обратного вызова finalize среды.
  • Правильно экранировать строки запроса для urlencode. Раньше слэши не экранировались в этом месте.
  • Добавлен параметр «base» к фильтру «int».

Версия 2.7.3

Выпущено 2014-06-06

  • Проблема безопасности: Исправлена проблема безопасности для папки кэша. Эта исправление предоставлено RedHat.

Версия 2.7.2

Выпущено 2014-01-10

  • Загрузчик префиксов не правильно передавал locals в внутренние загрузчики. Теперь это исправлено.
  • Проблема безопасности: Изменена папка по умолчанию для кэша файловой системы на папку, специфичную для пользователя, и защищённую для чтения и записи в системах UNIX. См. Debian bug 734747 для получения дополнительной информации.

Версия 2.7.1

Выпущено 2013-08-07

  • Исправлена ошибка с call_filter , которая не работала должным образом с фильтрами среды и контекста.
  • Исправлен недостаток поддержки Python 3 для кэшей байткода.
  • Отменена поддержка определения блоков во включённых шаблонах, так как это сломало существующие шаблоны для пользователей.
  • Исправлены некоторые предупреждения с хэшированием неопределённых и узлов, если Python запущен с предупреждениями для Python 3.
  • Добавлена поддержка правильного хэширования неопределённых объектов.
  • Исправлена ошибка с фильтром title, который не работал с уже заглавными строками.

Версия 2.7

Выпущено 2013-05-20, кодовое имя Translation

  • Загрузчики выбора и префиксов теперь отдельно обрабатывают поиск исходников и шаблонов, чтобы работать в сочетании с загрузчиками модулей, как рекламируется.
  • Исправлен filesizeformat.
  • Добавлен не-безмолчный параметр для извлечения babel.
  • Добавлен фильтр urlencode, который автоматически приводит значения к строковому виду для безопасного использования в URL с utf-8 как единственной поддерживаемой кодировкой. Если приложения хотят изменить эту кодировку, они могут переопределить фильтр.
  • Добавлена конфигурация keep-trailing-newline для сред и шаблонов, чтобы выборочно сохранить заключительный символ новой строки.
  • Доступ к last в контексте цикла больше не приводит к тому, что итератор потребляется в список.
  • Изменились требования к Python: теперь требуются 2.6, 2.7 или >= 3.3, поддерживаемые одним исходным кодом, используя библиотеку совместимости «six».
  • Разрешить contextfunction и другие декораторы применяться к __call__.
  • Добавлена поддержка изменения знаков с новой строки на другие в фильтре wordwrap.
  • Добавлена поддержка безмолвного игнорирования ошибок memcache.
  • Добавлена поддержка сохранения заключительной новой строки в шаблонах.
  • Добавлена более точная поддержка удаления пробелов слева в блоках.
  • Добавлены фильтры map, select, reject, selectattr и rejectattr.
  • Добавлена поддержка loop.depth для определения того, насколько глубоко в рекурсивном цикле находится код.
  • Отключён py_compile для pypy и python 3.

Версия 2.6

Выпущено 2011-07-24, кодовое имя Convolution

  • Внутренние атрибуты теперь генерируют ошибку атрибута, а не возвращают неопределённый объект. Это исправляет проблемы при передаче неопределённых объектов в семантику Python, ожидающую API.
  • Поддержка отладки теперь работает правильно для PyPy. (Тестировано с 1.4)
  • Реализовано перехват операторов для защищённых сред. Это позволяет разработчикам приложений отключать встроенные операторы для лучшей безопасности. (Например, ограничить математические операторы действительными целыми числами вместо длинных)
  • Фильтр groupby теперь поддерживает обозначение точек для группировки по атрибутам атрибутов.
  • Ограниченные блоки теперь правильно обрабатывают присваивания и импорты верхнего уровня. Раньше импорт неожиданно "исчезал" в ограниченном блоке.
  • Автоматически обнаруживаются более новые версии интерпретатора Python перед загрузкой кода из кэшей байткода для предотвращения сегфолтов при неверных кодах операций. Сегфолт в ранних версиях Jinja здесь не был ошибкой Jinja, но ограничением в базовом интерпретаторе Python. Если вы заметите сегфолт Jinja в ранних версиях после обновления интерпретатора Python, вам не нужно обновлять, достаточно очистить кэш байткода. Этого больше не требуется, Jinja теперь автоматически обнаруживает эти случаи.
  • Фильтр sum теперь может суммировать значения по атрибуту. Это изменение несовместимо со старыми версиями. Аргумент фильтра ранее был необязательным начальным индексом по умолчанию 0. Теперь это второй аргумент функции, так как он редко используется.
  • Как и sum, sort теперь также позволяет упорядочивать элементы по атрибуту.
  • Как и sum и sort, join теперь также может соединять атрибуты объектов в строку.
  • Внутренний контекст eval теперь имеет ссылку на среду.
  • Добавлен тест сопоставления, чтобы определить, является ли объект словарем или объектом с похожим интерфейсом.

Версия 2.5.5

Выпущено 2010-10-18

  • Документация, созданная с помощью сборки, больше не входит в выпуск.

Версия 2.5.4

Выпущено 2010-10-17

  • Исправлены расширения, которые не загружались должным образом с наложением.
  • Обход ошибки в cpython для отладчика, которая вызывает сегфолты на 64-битных архитектурах большого порядка байтов.

Версия 2.5.3

Выпущено 2010-10-17

  • Исправлена ошибка приоритета оператора, введённая в 2.5.2. Утверждения, подобные «-foo.bar», применяли неявные скобки вокруг первой части выражения («(-foo).bar») вместо более правильного «-(foo.bar»).

Версия 2.5.2

Выпущено 2010-08-18

  • Улучшен скрипт setup.py для лучшей работы с предположениями, которые люди могут иметь от него (--with-speedups).
  • Исправлена ошибка упаковки, которая исключала новую поддержку отладки.

Версия 2.5.1

Выпущено 2010-08-17

  • Исключения StopIteration, генерируемые функциями, вызываемыми из шаблонов, теперь перехватываются и преобразуются в неопределённые. Это решает множество проблем с отладкой. (StopIteration используется внутри для прерывания выполнения шаблона)
  • Незначительное улучшение производительности вызовов макросов.
  • Извлечение Babel теперь может правильно извлекать вызовы newstyle gettext.
  • Использование переменной num в newstyle gettext для чего-то, кроме счётчика множественного числа, больше не будет вызывать KeyError.
  • Удален встроенный класс markup и переключено на markupsafe. Для обратной совместимости чистая реализация на Python всё ещё существует, но взята из markupsafe разработчиками Jinja. Поддержка отладки перешла в отдельный функционал под названием «debugsupport» и отключена по умолчанию, так как она актуальна только для Python 2.4
  • Исправлена проблема с неправильным приоритетом унарных операторов.

Версия 2.5

Выпущено 2010-05-29, кодовое имя Incoherence

  • Улучшен фильтр sort (должен был работать так с давних пор) путем добавления поддержки поиска без учёта регистра.
  • Исправлена ошибка для getattribute постоянной сворачивания.
  • Поддержка newstyle gettext переводов, что приводит к более приятному пользовательскому интерфейсу в шаблонах и более согласованным каталогам.
  • Теперь возможно регистрировать расширения после создания среды.

Версия 2.4.1

Выпущено 2010-04-20

  • Исправлена ошибка сообщения об ошибках для неопределённых.

Версия 2.4

Выпущено 2010-04-13, кодовое имя Correlation

  • Функции загрузки шаблонов среды теперь прозрачно передают объект шаблона, если он был передан. Это позволяет импортировать или расширять шаблон, который был передан шаблону.
  • Добавлен ModuleLoader, который может загружать шаблоны из предварительно скомпилированных источников. Среда теперь имеет метод для компиляции шаблонов из настроенного загрузчика в zip-файл или папку.
  • Расширение _speedups C теперь поддерживает Python 3.
  • Добавлена поддержка автоматического переключения автоэкранирования для разделов и поддержки контекстов оценки.
  • У расширений теперь есть приоритет.

Версия 2.3.1

Выпущено 2010-02-19

  • Исправлена ошибка сообщения об ошибках во всех версиях Python
  • Исправлена ошибка сообщения об ошибках в Python 2.4
END_OF_DOCUMENT_MARKER

Версия 2.3

Выпущена 2010-02-10, кодовое название 3000 Pythons

  • Исправлена проблема с генератором кода, которая приводила к генерации несвязанных переменных, если использовался оператор `set` в блоках `if`, а также исправлены другие мелкие проблемы с идентификаторами.
  • Теги `include` теперь могут выбирать между несколькими шаблонами и брать первый существующий, если задан список шаблонов.
  • Исправлена проблема с блоками вызовов во внешних областях видимости, имеющих аргумент, который также используется как локальная переменная во внутреннем фрейме #360.
  • Значительно улучшена система сообщений об ошибках #339
  • Неявные кортежи больше не могут быть полностью пустыми. Это изменение делает {% if %} синтаксической ошибкой теперь. #364
  • Добавлена поддержка комментариев для переводчиков, если они извлекаются с помощью `babel`.
  • Добавлена поддержка оператора `with`.
  • Экспериментальная поддержка Python 3.

Версия 2.2.1

Выпущена 2009-09-14

  • Исправлены некоторые мелкие проблемы для Jinja на Jython.

Версия 2.2

Выпущена 2009-09-13, кодовое название Kong

  • Инструкции `include` теперь можно пометить с помощью ignore missing, чтобы пропустить несуществующие шаблоны.
  • Приоритет not повышен. Теперь можно записать not foo in bar как псевдоним для foo not in bar, как в Python. Ранее грамматика требовала скобки (not (foo in bar)), что было нелогично.
  • Исправлена ошибка, которая приводила к синтаксическим ошибкам при определении макросов или использовании тега {% call %} внутри циклов.
  • Исправлена ошибка в парсере, которая делала {{ foo[1, 2] }} невозможной.
  • Разрешена ссылка на имена из внешних областей видимости во включённых шаблонах, которые не использовались во фрейме вызывающего шаблона #327
  • Исправлена ошибка, которая приводила к внутренним ошибкам, если имена использовались как переменные итерации и обычные переменные *после* цикла, если эта переменная не использовалась *до* цикла. #331
  • Добавлена поддержка необязательного модификатора scoped для блоков.
  • Добавлена поддержка комментариев в строках.
  • Добавлен модуль meta.
  • Переименовано (недокументированное) свойство «overlay» в «overlayed» в среде, так как оно вступало в конфликт с методом с тем же именем.
  • Расширение ускорения по умолчанию отключено.

Версия 2.1.1

Выпущена 2008-12-25

  • Исправлена ошибка перевода, вызванная циклом по пустым рекурсивным циклам.

Версия 2.1

Выпущена 2008-11-23, кодовое название Yasuzō

  • Исправлена ошибка с вложенными циклами и специальной переменной цикла. Раньше внутренний цикл перезаписывал переменную цикла внешнего цикла после итерации.
  • Исправлена ошибка в расширении i18n, которая приводила к поиску неправильной переменной для блока явного множественного числа.
  • Исправлено ограничение в лексическом анализатор, которое делало {{ foo.0.0 }} невозможным.
  • Индексированное обращение к переменным с константным значением теперь возвращает неопределённый объект вместо повышения ошибки индекса. Это была ошибка, вызванная ранней оптимизацией.
  • Расширение i18n теперь ищет foo.ugettext за которым следует foo.gettext, если установлен объект перевода. Это упрощает работу с пользовательскими классами перевода.
  • Исправлено запутанное поведение с условным расширением. Циклы частично выполнялись в некоторых условиях, даже если они не входили в видимую область.
  • Добавлен фильтр sort, который работает как dictsort, но для произвольных последовательностей.
  • Исправлена ошибка с пустыми операторами в макросах.
  • Реализована система кеширования байт-кода.
  • Контекст шаблона теперь может быть weakref-совместимым.
  • Включения и импорты «с контекстом» теперь передают все переменные, а не только начальный контекст.
  • Добавлен помощник для циклов, называемый cycler.
  • Добавлен помощник для объединения, называемый joiner.
  • Добавлен метод compile_expression к среде, который позволяет компилировать выражения Jinja в вызываемые объекты Python.
  • Исправлена ошибка экранирования в urlize

Версия 2.0

Выпущена 2008-07-17, кодовое название Jinjavitus

  • Обращение к объектам (поиск атрибутов и элементов) изменилось незначительно. Теперь можно задать более высокий приоритет атрибутам или элементам, используя либо нотацию с точкой, либо синтаксис в квадратных скобках. Это также незначительно изменило AST. Subscript исчез и был заменён на Getitem и Getattr.
  • Добавлена поддержка предварительной обработки и фильтрации потока токенов для расширений. Это позволило расширениям упростить вызовы gettext в данных шаблонов и подобные функции.
  • Добавлен TemplateStream.dump.
  • Добавлена недостающая поддержка неявного конкатенации строковых литералов. {{ "foo" "bar" }} эквивалентно {{ "foobar" }}
  • else является необязательным для условных выражений. Если оно не задано, оно вычисляется как false.
  • Улучшено сообщение об ошибке для неопределённых значений путём указания позиции.
  • Фильтр filesizeformat теперь использует десятичные префиксы по умолчанию и может быть переключён в двоичный режим со вторым параметром.
  • Исправлена ошибка в финализаторе

Версия 2.0rc1

Выпущена 2008-06-09

  • Первый выпуск Jinja 2.

© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://jinja.palletsprojects.com/en/3.1.x/changes/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API