Spec-Zone.ru › Jinja 3.0

Изменения

Версия 3.0.1

Не выпущена

  • Обновить зависимость MarkupSafe до >= 2.0.

Версия 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
  • Исправить зависание при отображении отладки трассировки на 32-битных системах Python. #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
END_OF_DOCUMENT_MARKER

Версия 2.10.1

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

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

Версия 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
  • Незначительно уменьшен размер памяти путём сокращения объёма нашего файла базы данных Юникода, который используется для сопоставления идентификаторов на 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.
  • Поддержка операторов задания вверху в ситуациях extend.
  • Восстановлено поведение Cycler для пользователей Python 3.
  • Вычитание теперь следует тому же поведению, что и другие операторы, для неопределённых значений.
  • map и аналогичные функции теперь выдают более подробные сообщения об ошибках, если вы забыли указать параметр в кавычках.
  • Зависимость от MarkupSafe 0.23 или выше.
  • Улучшен фильтр truncate для лучшего усечения, в случае если строка усечена едва заметно.
  • Изменена логика автоматической обработки эскейпа макросов, основанная на информации о реальном автоэскейпе во время вызова, а не во время определения макроса.
  • Переведён модифицированный вариант фильтра tojson из Flask в Jinja и подключен к новой системе управления политиками.
  • Наборы блоков теперь по умолчанию отмечаются как safe.
  • На Python 2 теперь можно отключить аскифицирование 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. Это решает различные проблемы утечки информации, которые могут возникнуть с строками форматирования.

Версия 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 и context_class путём добавления двух новых атрибутов в среду (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

  • Загрузчик префиксов неправильно передавал локальные переменные во внутренние загрузчики. Теперь это исправлено.
  • Проблема безопасности: Изменена папка по умолчанию для кэша файловой системы на пользовательскую и защищена на чтение и запись в системах 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 теперь может суммировать значения по атрибуту. Это изменение несовместимо со старыми версиями. Аргумент фильтра ранее был необязательным начальным индексом, который по умолчанию равен нулю. Теперь он стал вторым аргументом функции, потому что он редко используется.
  • Как и sum, sort теперь также позволяет упорядочивать элементы по атрибуту.
  • Как и sum и sort, join теперь также может соединять атрибуты объектов в строку.
  • Внутренний контекст eval теперь имеет ссылку на среду.
  • Добавлен тест сопоставления, чтобы проверить, является ли объект словарем или объектом с подобным интерфейсом.

Версия 2.5.5

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

  • Сгенерированная документация больше не входит в выпуск.

Версия 2.5.4

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

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

Версия 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 теперь может правильно извлекать вызовы gettext в новом стиле.
  • Использование переменной num в gettext нового стиля для чего-то кроме счётчика множественного числа больше не будет поднимать KeyError.
  • Удалён встроенный класс markup и переключён на markupsafe. Для обратной совместимости чистая реализация на Python всё ещё существует, но взята из markupsafe разработчиками Jinja. Поддержка отладки вошла в отдельную функцию под названием «debugsupport» и отключена по умолчанию, так как она актуальна только для Python 2.4
  • Исправлена ошибка с унарными операторами, имеющими неправильный приоритет.

Версия 2.5

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

  • Улучшен фильтр sort (должен был работать так с давних времён) путём добавления поддержки поиска без учёта регистра.
  • Исправлена ошибка для getattribute constant folding.
  • Поддержка переводов 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

  • Исправлена проблема с генератором кода, которая приводила к генерации несвязанных переменных, если в блоках if использовался set, а также исправлены другие мелкие проблемы с идентификаторами.
  • Теги include теперь могут выбирать между несколькими шаблонами и брать первый существующий, если задан список шаблонов.
  • Исправлена проблема с блоками вызова во внешних областях видимости, имеющими аргумент, который также используется как локальная переменная во внутренней области видимости #360.
  • Значительно улучшено сообщение об ошибке #339
  • Неявные кортежи больше не могут быть совершенно пустыми. Это изменение делает {% if %} синтаксической ошибкой. #364
  • Добавлена поддержка комментариев переводчика, если они извлечены с помощью babel.
  • Добавлен расширение with-statement.
  • Экспериментальная поддержка 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” в среде, поскольку оно конфликтовало с методом с таким же именем.
  • Расширение Speedup теперь по умолчанию отключено.

Версия 2.1.1

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

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

Версия 2.1

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

  • Исправлена ошибка с вложенными циклами и специальной переменной цикла. Ранее внутренний цикл перезаписывал переменную цикла из внешнего цикла после итерации.
  • Исправлена ошибка с расширением i18n, которая приводила к поиску неправильной переменной в явном блоке множественного числа.
  • Исправлено ограничение в лексическом анализаторе, которое делало {{ foo.0.0 }} невозможным.
  • Индексированное обращение к переменным с постоянным значением теперь возвращает неопределённый объект вместо возбуждения ошибки индекса. Это была ошибка, вызванная ранней оптимизацией.
  • Расширение i18n теперь ищет foo.ugettext за которым следует foo.gettext, если установлен объект перевода. Это упрощает работу с настраиваемыми классами переводов.
  • Исправлено запутанное поведение с условным расширением. Циклы частично выполнялись в некоторых условиях, даже если они не были частью видимой области.
  • Добавлен фильтр sort, который работает как dictsort, но для произвольных последовательностей.
  • Исправлена ошибка с пустыми операторами в макросах.
  • Реализована система кэширования байткода.
  • Контекст шаблона теперь может быть слабым ссылкой (weakref-able).
  • Включения и импорты «с контекстом» теперь передают все переменные, а не только начальный контекст.
  • Добавлен вспомогательный цикл, называемый 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.0.x/changes/

Spec-Zone.ru

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