変更点—Jinjaドキュメント
変更点
バージョン3.0.2
2021年10月4日リリース
- ネストされたループ内の割り当てが引き続きその外部で参照される原因となっていたループスコープのバグを修正しました。 :issue: `1427`
compile_templates
をフィルター名とインポート名に対して決定論的にします。 :issue: `1452、1453`Undefined
がin
演算子のStrictUndefined
のように動作する原因となった意図しない変更を元に戻します。 :issue: `1448`- インポートされたマクロは、非同期環境の現在のテンプレートグローバルにアクセスできます。 :issue: `1494`
PackageLoader
には、現在のディレクトリ(。)パスセグメントは含まれません。 これにより、zipインポートのルートからテンプレートをロードできます。 :issue: `1467`
バージョン3.0.1
2021年5月18日リリース
- MarkupSafeの依存関係を> = 2.0に更新します。 :pr: `1418`
- タイプチェックがユーザープロジェクトのインポートを理解できるように、トップレベルの名前をエクスポート済みとしてマークします。 :issue: `1426`
- Python3.6.0で利用できなかったいくつかのタイプを修正します。 :issue: `1433`
- 不要な
autoescape
およびwith_
拡張機能の非推奨警告は、より関連性の高いコンテキストを示しています。 :issue: `1429` - 引数なしで非推奨の
jinja2.Markup
の呼び出しを修正しました。 代わりにmarkupsafe.Markup
を使用してください。 :issue: `1438` - 非同期テンプレートに対してsync
render
を呼び出すと、Python> = 3.7でasyncio.run
が使用されます。 これにより、Python3.10で導入された非推奨が修正されます。 :issue: `1443`
バージョン3.0.0
2021年5月11日リリース
- Python2.7および3.5のサポートを終了します。
- MarkupSafeの依存関係を> = 1.1にバンプします。
- Babelのオプションの依存関係を> = 2.1にバンプします。
- 非推奨とマークされたコードを削除します。
- タイプヒントを追加します。 :pr: `1412`
- PEP 451 APIを使用して、 PackageLoader でテンプレートをロードします。 :issue: `1168`
- インポートされたマクロが現在のテンプレートのグローバルにアクセスできなくなるバグを修正します。 :issue: `688`
+%}
を使用してtrim_blocks
を無視する機能を追加します。 :issue: `1036`- カスタム非同期のみのフィルターが一定の入力で失敗する原因となっていたバグを修正します。 :issue: `1279`
- Python3.10の
NativeEnvironment
でUndefined
が返されるのではなく、未定義の変数でUndefinedErrorが誤ってスローされる問題を修正しました。 :issue: `1335` - ブロックは
required
としてマークできます。 それらはある時点でオーバーライドされる必要がありますが、必ずしも直接の子によってオーバーライドされるとは限りません。 :issue: `1147` autoescape
およびwith
拡張機能は非推奨であり、コンパイラーに組み込まれています。 :issue: `1203`urlize
フィルターは、mailto:
リンクを認識し、extra_schemes
(またはenv.policies["urlize.extra_schemes"]
)を使用して他のスキームを認識します。 末尾の文字を無視するのではなく、URL内の括弧のバランスをとろうとします。 一般的な解析は、より効率的になり、より多くのケースに一致するように更新されました。 スキームのないURLは、http://
ではなくhttps://
としてリンクされます。 :issue: `522、827、1172` 、:pr:` 1195`map
やgroupby
などの属性を取得するフィルターは、デフォルトとしてfalseまたは空の値を使用できます。 :issue: `1331`- ブロックまたはループに設定された変数がカスタムコンテキスト関数でアクセスされないバグを修正しました。 :issue: `768`
- スコープブロックが特別なループ変数にアクセスする原因となっていたバグを修正します。 :issue: `1088`
- テンプレートがすでにロードされている場合でも、
Environment.get_template(globals=...)
を呼び出すときに、テンプレートグローバルを更新します。 :issue: `295` - 実行されていないifステートメントおよび条件式で未定義のフィルターに対してエラーを発生させないでください。 :issue: `842`
is filter
およびis test
テストを追加して、名前が登録済みのフィルターまたはテストであるかどうかをテストします。 これにより、使用する前に、テンプレートでフィルターが使用可能かどうかを確認できます。 テスト機能は、@pass_environment
、@pass_eval_context
、または@pass_context
で装飾できます。 :issue: `842` 、:pr:` 1248`- i18n拡張機能で
pgettext
およびnpgettext
(メッセージコンテキスト)をサポートします。 :issue: `441` |indent
フィルターのwidth
引数は、インデントする文字列にすることができます。 :pr: `1167`- パーサーは、16進数、8進数、および2進数の整数リテラルを理解します。 :issue: `1170`
Undefined.__contains__
(in
)は、TypeError
の代わりにUndefinedError
を発生させます。 :issue: `1198`Undefined
は、非同期環境で反復可能です。 :issue: `1294`NativeEnvironment
は非同期モードをサポートします。 :issue: `1362`- テンプレートレンダリングでは、
\n
、\r\n
、および\r
のみが改行として扱われます。 他の文字は変更されません。 :issue: `769、952、1313` |groupby
フィルターは、オプションのdefault
引数を取ります。 :issue: `1359`- 関数とフィルターのデコレーターの名前が変更され、統合されました。 古い名前は廃止されました。 :issue: `1381`
pass_context
は、contextfunction
およびcontextfilter
を置き換えます。pass_eval_context
はevalcontextfunction
およびevalcontextfilter
を置き換えますpass_environment
は、environmentfunction
およびenvironmentfilter
を置き換えます。
- 非同期サポートでは、Jinjaが自分自身にパッチを適用する必要がなくなりました。
Environment(enable_async=True)
で引き続き有効にする必要があります。 :issue: `1390` Context.resolve
のオーバーライドは非推奨であり、代わりにresolve_or_missing
をオーバーライドします。 :issue: `1380`
バージョン2.11.3
2021年1月31日リリース
- 正規表現のバックトラックを減らすことにより、
urlize
フィルターの速度を改善します。 電子メールの照合には、ドメイン部分の先頭に単語文字が必要であり、TLDでは単語文字のみが必要です。 :pr: `1343`
バージョン2.11.2
2020年4月13日リリース
Mock
などの__getattr__
を持つ呼び出し可能オブジェクトが contextfunction()として扱われる原因となっていたバグを修正します。 :issue: `1145`wordcount
フィルターを更新して、入力をsoft_str()
でラップすることにより、 Undefined メソッドをトリガーします。 :pr: `1160`- Python32ビットでトレースバックを表示するときのハングを修正しました。 :issue: `1162`
- アクセス時に
AttributeError
を発生させるオブジェクトに未定義のエラーを表示しても、再帰エラーは発生しません。 :issue: `1177` - 2.10から PackageLoader への変更を元に戻し、setuptoolsとpkg_resourcesへの依存関係を削除し、名前空間パッケージの限定的なサポートを追加しました。 この変更により、Pytestの使用時に問題が発生しました。 Python2と PEP 451 を同時にサポートするのは難しいため、変更は3.0まで元に戻されます。 :pr: `1182`
- 改行が削除されたときのエラーメッセージの行番号を修正しました。 :pr: `1178`
- テンプレートの特別な
namespace()
割り当てオブジェクトは、非同期環境で機能します。 :issue: `1180` lstrip_blocks
が有効になっている場合に、行の途中のタグの前に空白が削除される問題を修正しました。 :issue: `1138`- NativeEnvironment は、レンダリング中に中間文字列を評価しません。 これにより、式の値を変更する可能性のある早期評価が防止されます。 :issue: `1186`
バージョン2.11.1
2020-01-30リリース
- 非同期テンプレートで属性(
{{ data.items[1:] }}
)の後にキーを検索できなかったバグを修正しました。 :issue: `1141`
バージョン2.11.0
2020-01-27リリース
- Python 2.6、3.3、および3.4のサポートを終了します。 これは、Python2.7および3.5をサポートする最後のバージョンになります。
- 未定義のオブジェクトでgetitemとgetattrをサポートするために、新しい
ChainableUndefined
クラスが追加されました。 :issue: `977` lstrip_blocks
が無効になっている場合は、{%+
構文(NOP動作あり)を許可します。 :issue: `748`map
フィルターにdefault
パラメーターを追加しました。 :issue: `557`- meta.find_undeclared_variables()から環境グローバルを除外します。 :issue: `931`
- 浮動小数点リテラルは、2.56e-3のように科学的記数法で書くことができます。 :issue: `912` 、:pr:` 922`
- intおよびfloatリテラルは、12_345のように、読みやすくするために「_」区切り文字で記述できます。 :pr: `923`
LRUCache.setdefault
でデッドロックを引き起こすバグを修正しました。 :pr: `1000`trim
フィルターは、オプションの文字列を使用してトリミングします。 :pr: `828`- 新しい
jinja2.ext.debug
拡張機能は、{% debug %}
タグを追加して、現在のコンテキストと使用可能なフィルターおよびテストをすばやくダンプします。 :issue: `174` 、:pr:` 798、983` - 大量の空白を含む字句解析テンプレートははるかに高速です。 :issue: `857` 、:pr:` 858`
- 比較を囲む括弧は保持されるため、
{{ 2 * (3 < 5) }}
は「False」ではなく「2」を出力します。 :issue: `755` 、:pr:` 938` - 新しい
boolean
、false
、true
、integer
、およびfloat
テストを追加します。 :pr: `824` - 環境の
finalize
関数は、式の出力(定数または非定数)にのみ適用され、静的テンプレートデータには適用されません。 :issue: `63` FileSystemLoader
への複数のパスを提供する場合、テンプレートはディレクトリと同じ名前を持つことができます。 :issue: `821`テンプレート:'foo' if bar
式でelse
句を省略すると、環境のundefined
クラスに関係なく、常に Undefined が返されます。else
句を省略することは有効なショートカットであり、 StrictUndefined を使用するときにエラーが発生することはありません。 :issue: `710` 、:pr:` 1079`- ジェネレーターをループするときの
loop
制御変数(length
やrevindex0
など)の動作を修正しました。 :issue: `459、751、794` 、:pr:` 993` - 非同期サポートは、初期インポートが遅くなるのを避けるために、環境で初めて有効になったときにのみロードされます。 :issue: `765`
- 非同期環境では、
|map
フィルターは必要に応じてフィルター呼び出しを待機します。 :pr: `913` loop
属性にアクセスするforループでは、length
、revindex
、nextitem
、または [ X154X]にアクセスします。 これにより、groupby
の結果が損なわれる可能性が低くなります。 :issue: `555` 、:pr:` 1101`- 非同期環境では、
loop
属性length
およびrevindex
は非同期イテレーターで機能します。 :pr: `1101` - 非同期環境では、必要に応じて属性/プロパティアクセスからの値が待機されます。 :pr: `1101`
PackageLoader
はsetuptoolsやpkg_resourcesに依存しません。 :issue: `970`PackageLoader
は、 PEP 420 名前空間パッケージのサポートが制限されています。 :issue: `1097`FileSystemLoader
およびModuleLoader
でos.PathLike
オブジェクトをサポートします。 :issue: `870`- NativeTemplate は、式間の引用符を正しく処理します。
"'テンプレート:A', 'テンプレート:B'"
は、文字列'1, 2'
ではなく、タプル('1', '2')
としてレンダリングされます。 :issue: `1020` - NativeTemplate を作成すると、デフォルトの Environment ではなく、 NativeEnvironment が直接作成されます。 :issue: `1091`
LRUCache.copy()
を呼び出した後、コピーのキューメソッドは正しいキューを指します。 :issue: `843`- テンプレートをコンパイルすると、デフォルトでシステムエンコーディングが使用されるのではなく、常にUTF-8が書き込まれます。 :issue: `889`
|wordwrap
フィルターは、短い中間行を作成するのではなく、既存の改行を個別に折り返す個別の段落として扱います。 :issue: `175`break_on_hyphens
パラメーターを|wordwrap
フィルターに追加します。 :issue: `550`- コンテキスト関数として装飾されたCythonでコンパイルされた関数には、コンテキストが渡されます。 :pr: `1108`
- 定数の連鎖比較がコンパイル時に評価される場合、結果は、最後の比較だけでなく、比較が
False
を返す場合、False
を返すPythonの動作に従います。 :issue: `1102` - テンプレートの例外のトレースバックは、Python> = 3.7の正しい行番号とソースを示しています。 :issue: `1104`
- Python 3のテンプレート構文エラーのトレースバックでは、内部コンパイラフレームが表示されなくなりました。 :issue: `763`
- 拡張機能が現在のコンテキストと
loop
などのローカル変数を取得するために使用できるDerivedContextReference
ノードを追加します。 :issue: `860` - コンパイル中の定数畳み込みは、以前は見落とされていた一部のノードタイプに適用されます。 :issue: `733`
TemplateSyntaxError.source
は、含まれているテンプレートから発生したときに空ではありません。 :issue: `457`Undefined
の値をget_template
に渡すと(extends
、import
、include
など)、UndefinedError
が発生します。 ]一貫して。select_template
は、空の文字列ではなく、試行リストに未定義のメッセージを表示します。 :issue: `1037`TemplateSyntaxError
は漬けることができます。 :pr: `1117`
バージョン2.10.3
2019-10-04リリース
setup.py
のBabelエントリポイントでインストールを妨げていたタイプミスを修正しました。
バージョン2.10.2
2019-10-04リリース
- Python3.7の非推奨の警告を修正しました。
- サンドボックス環境で
range
を使用すると、メモリの使用を回避するためにPython2でxrange
が使用されます。 :issue: `933` - Python 3.7のデバッグビルドを使用するときにコアダンプを回避するには、Python3.7のより優れたトレースバックサポートを使用します。 :issue: `1050`
バージョン2.10.1
2019年4月6日リリース
SandboxedEnvironment
は、信頼できないフォーマット文字列によるコードの実行を防ぐために、str.format_map
を安全に処理します。 サンドボックスはすでにstr.format
を処理しました。
バージョン2.10
2017年11月8日リリース
OverlayScope
と呼ばれる新しい拡張ノードを追加しました。これを使用して、派生コンテキストからすべての変数を検索する最適化されていないスコープを作成できます。- in演算子のように機能する
in
テストを追加しました。reject
およびselect
と組み合わせて使用できます。 - ループコンテキストに
previtem
およびnextitem
を追加し、ループ内の前/次のアイテムへのアクセスを提供します。 そのようなアイテムが存在しない場合、値は未定義です。 - ループコンテキストに
changed(*values)
を追加し、最後の反復以降(またはメソッドの最後の呼び出し以降)に値が変更されたかどうかを簡単に確認できるようにしました。 set
タグを使用して属性を割り当てることができる特別なオブジェクトを作成するnamespace
関数を追加しました。 これは、スコープ間でデータを伝送するために使用できます。 ループ本体からループの後に続くコードまで。trimmed
修飾子を{% trans %}
に追加して、改行と周囲の空白を削除しました。 また、すべてのtrans
ブロックでこれを有効にする新しいポリシーを追加しました。random
フィルターが誤って定数畳み込まれなくなり、テンプレートがレンダリングされるたびに新しいランダムな選択肢が生成されます。 :pr: `478`unique
フィルターを追加しました。 :pr: `469`min
およびmax
フィルターを追加しました。 :pr: `475`- すべての比較演算子のテストを追加しました:
eq
、ne
、lt
、le
、gt
、ge
。 :pr: `665` import
ステートメントを末尾のコンマで終了することはできません。 :pr: `617` 、:pr:` 618`indent
フィルターは、デフォルトでは空白行をインデントしません。 :pr: `685`dictsort
フィルターにreverse
引数を追加します。 :pr: `692`- テンプレートを文字列ではなくネイティブPythonタイプにレンダリングする
NativeEnvironment
を追加します。 :pr: `708` - ブロック
set
タグにフィルターサポートを追加しました。 :pr: `489` tojson
フィルターは、文書化された動作に一致するように出力を安全としてマークします。 :pr: `718`- トレースバックのデバッグローカルを取得すると、テンプレートコンテキストが変更される可能性があるバグを解決しました。
{% elif ... %}
ブロックが多いと、「インデントのレベルが多すぎる」というエラーが発生するバグを修正しました。 これらのブロックは、else: if ..:
:issue: `759` ではなくネイティブelif ..:
にコンパイルされるようになりました。
バージョン2.9.5
2017年1月28日リリース
- 内部
_GroupTuple
の元のreprを復元しました。これは、ansibleで問題が発生し、意図しない変更であったためです。 :issue: `654` - 古い
resolve
メソッドをオーバーライドするカスタムコンテキストのサポートが追加されました。これは、リグレッションを引き起こす可能性があることを人々が見つけるのが困難だったためです。 - forループのelseブロックのバッファを正しく使用してください。 これにより、2.xで無効な構文エラーが発生し、Python 3 :issue: `669` で完全に間違った動作が発生しました。
{% extends %}
タグが非同期環境で使用できなかった問題を解決します。 :issue: `668`- Python 3で識別子の照合に使用するUnicodeデータベースダンプを減らすことで、メモリフットプリントをわずかに減らします:issue: `666`
- 非同期コンパイルモードのマクロで自動エスケープが機能しない問題を修正しました。 :issue: `671`
バージョン2.9.4
2017年1月10日リリース
- 文字列リテラルに関するいくつかの警告を解決しました。 :issue: `646`
- 以前の見落としのために行われなかったバイトコードキャッシュバージョンをインクリメントします。
- フィルタリングされたループの不正なコード生成とスコープを修正しました。 :issue: `649`
- 既知の拡張ブロックの後のトップレベルの出力サイレンシングが、ブロックがifステートメントに含まれている場合に無効なコードを生成する可能性がある問題を解決しました。 :issue: `651`
truncate.leeway
をデフォルトで構成可能にして、古いテンプレートとの互換性を向上させました。
バージョン2.9.3
2017年1月8日リリース
- マクロでのブロックの使用を以前に可能だった範囲に復元しました。 Python 3では、ブロックの内容の代わりにジェネレーターreprをレンダリングします。 :issue: `645`
- 変数が外部スコープからも読み取られる場合に、内部スコープで変数を割り当てるための一貫した動作を設定します。 これにより、すべての状況で意図した動作が設定されますが、外部スコープへの限定的な割り当てが可能であった古い動作は復元されません。 詳細および説明については、:issue: `641` を参照してください。
block scoped
が新しいスコープルールを利用しない問題を解決しました。 よりエキゾチックなケースでは、ローカルスコープでオーバーライドされた変数がブロックになりません。with
ステートメントのコード生成を、新しいスコープ規則に一致するように変更します。 これにより、エッジケースで発生する可能性の低いいくつかのバグが解決されます。 これにより、拡張機能で使用できる新しい内部With
ノードも導入されます。
バージョン2.9.2
2017年1月8日リリース
- forループがターゲットとソースイテレータに同じ変数を使用できなくなる原因となっていたリグレッションを修正しました。 :issue: `640`
- これまで知られていなかったマクロの動作のサポートを追加します。 以前は、状況によっては、呼び出し元の引数をマクロに明示的に提供することが可能でした。 ひどくバグがあり、意図しないものですが、これはコピーが貼り付けられる一般的なケースであることがわかりました。 最も一般的なケースとの下位互換性を完全に壊さないために、明示的なデフォルトが指定されている場合、呼び出し元に明示的なキーワード引数を提供できるようになりました。 :issue: `642`
バージョン2.9.1
2017年1月7日リリース
- マクロの呼び出しブロックスコープによるリグレッションを解決しました。 外部マクロと同じ識別子を使用するネストされた呼び出し元ブロックは、間違った変数を誤って参照する可能性があります。
バージョン2.9
2017年1月7日リリース、コードネームの派生
- 環境内のキャッシュキー定義を変更します。 これにより、2.8で導入されたパフォーマンスの低下が修正されます。
- サポートされているPythonバージョン(Python 3.5以降)で
generator_stop
のサポートが追加されました - 数学演算の演算子の優先順位が予期されたものではないという長年の問題を修正しました。
- 新しい非同期モードによるPython3.6非同期イテレータのサポートが追加されました。
- フィルタのデフォルトなどのポリシーを追加しました。
- Urlizeはデフォルトで「relnoopener」を設定するようになりました。
- 2.xの古いスタイルのクラスの属性フォールバックをサポートします。
- 拡張状況でトップレベルのsetステートメントをサポートします。
- Python3ユーザー向けのCyclerの動作を復元しました。
- 減算は、未定義の値に対する他の演算子と同じ動作に従うようになりました。
map
とその仲間は、パラメーターを引用するのを忘れた場合に、より良いエラーメッセージを表示するようになりました。- MarkupSafe0.23以降に依存します。
truncate
フィルターを改善して、文字列がほとんど切り捨てられない場合の切り捨てをサポートするようにしました。- マクロ自動エスケープのロジックを、マクロ定義時ではなく、呼び出し時のランタイム自動エスケープ情報に基づくように変更します。
tojson
フィルターの修正バージョンをFlaskからJinjaに移植し、新しいポリシーフレームワークに接続しました。- ブロックセットは、デフォルトで
safe
とマークされるようになりました。 - Python 2では、
compiler.ascii_str
ポリシーを使用してASCII文字列の関連付けを無効にできるようになりました。 - テストは、最初の引数として任意の式を受け入れるのではなく、制限された式を受け入れるようになりました。 これは、余分な括弧なしで1つの式で複数のテストを適切に使用できることを意味します。 特に、期待どおりに
foo is divisibleby 2 or foo is divisibleby 3
を記述できるようになりました。 - テンプレートの設計者と開発者が期待するものとより一貫性があるように、スコープシステムを大幅に変更しました。 異なるインクルードコンストラクトとインポートコンストラクトの間に魔法の違いはもうありません。 コンテキストは常に同じ方法で伝播されるようになりました。 残っている唯一の違いは、
with context
とwithout context
のデフォルトです。 with
およびautoescape
タグが組み込まれました。- より良い自動エスケープをより簡単に構成するのに役立つ新しい
select_autoescape
関数が追加されました。 - 非同期ジェネレーターの属性にアクセスしたときのサンドボックスのランタイムエラーを修正しました。
バージョン2.8.1
2016年12月29日リリース
urlencode
のfor_qs
フラグを修正しました。int
を文字列以外の値に適用したときのリグレッションが修正されました。- セキュリティ:サンドボックスモードが使用されている場合、フォーマット式はJinjaと同じルールでサンドボックス化されるようになりました。 これにより、フォーマット文字列で発生する可能性のあるさまざまな情報漏えいの問題が解決されます。
バージョン2.8
2015年7月26日リリース、コードネームの置き換え
- urlize関数に
target
パラメーターを追加しました。 followsymlinks
のサポートがファイルシステムローダーに追加されました。- 切り捨てフィルターが長さをカウントするようになりました。
- フィルターの選択に役立つequaltoフィルターを追加しました。
- ロード名の代わりに使用可能な場合は絶対ファイル名を使用するようにキャッシュキーを変更しました。
- 一部のイテレータのループ長の計算を修正しました。
- 人々がデフォルトのエンコーディングを破ったときに機能するように、JinjaがPython2で文字列をネイティブ文字列に強制する方法を変更しました。
- 失敗をロガーに記録する未定義のオブジェクトを返す
make_logging_undefined
を追加しました。 - キャッシュされたデータのアンマーシャリングが失敗した場合、テンプレートが再ロードされます。
- ブロック
set
タグを実装しました。 - デフォルトのキャッシュサイズは、50から400に増加しました。
- すべてのPythonバージョンで長整数を受け入れるように
is number
テストを修正しました。 is number
を変更して、数値として10進数を受け入れるようにしました。- デフォルト引数の後にデフォルト以外の引数が続くチェックを追加しました。 この変更により、
{% macro m(x, y=1, z) %}
は構文エラーになります。 このコードの以前の動作はとにかく壊れていました(デフォルト値がy
に適用される結果になりました)。 - 環境に2つの新しい属性(
code_generator_class
およびcontext_class
)を追加することにより、jinja2.compiler.CodeGenerator
およびjinja2.runtime.Context
のカスタムサブクラスを使用する機能を追加します。 :pr: `404` - 環境のfinalizeコールバックでcontext / environment / evalctxデコレータ関数のサポートが追加されました。
- urlencodeのクエリ文字列を適切にエスケープします。 以前は、スラッシュはその場所でエスケープされていませんでした。
- 'base'パラメーターを 'int'フィルターに追加します。
バージョン2.7.3
2014年6月6日リリース
- セキュリティの問題:キャッシュフォルダのセキュリティ修正を修正しました。 この修正はRedHatによって提供されました。
バージョン2.7.2
2014年1月10日リリース
- プレフィックスローダーは、ローカルを内部ローダーに適切に転送していませんでした。 これは修正されました。
- セキュリティの問題:ファイルシステムキャッシュのデフォルトフォルダをユーザー固有に変更し、UNIXシステムで読み取りと書き込みを保護しました。 詳細については、 Debianバグ734747 を参照してください。
バージョン2.7.1
2013年8月7日リリース
call_filter
が環境およびコンテキストフィルターで正しく機能しないバグを修正しました。- バイトコードキャッシュに対するPython3サポートの欠如を修正しました。
- これによりユーザーの既存のテンプレートが壊れたため、含まれているテンプレートでブロックを定義するためのサポートが元に戻りました。
- PythonがPython3の警告とともに実行されている場合、未定義とノードのハッシュに関するいくつかの警告を修正しました。
- 未定義のオブジェクトを適切にハッシュするためのサポートが追加されました。
- タイトルフィルターがすでに大文字の文字列で機能しないバグを修正しました。
バージョン2.7
2013年5月20日リリース、コードネーム翻訳
- 選択ローダーとプレフィックスローダーは、アドバタイズされたモジュールローダーと組み合わせて機能するために、ソースルックアップとテンプレートルックアップを別々にディスパッチするようになりました。
- filesizeformatを修正しました。
- バベル抽出用の非サイレントオプションを追加しました。
- サポートされているエンコーディングとしてのみutf-8でURLセーフな使用法の値を自動的に引用する
urlencode
フィルターが追加されました。 アプリケーションがこのエンコーディングを変更したい場合は、フィルターをオーバーライドできます。 keep-trailing-newline
構成を環境とテンプレートに追加して、オプションで最後の末尾の改行を保持します。- ループコンテキストで
last
にアクセスしても、イテレータがリストに消費されなくなりました。 - Pythonの要件が変更されました:「6」互換性ライブラリを使用して、同じソースコードでサポートされている2.6、2.7、または> = 3.3が必要になりました。
contextfunction
およびその他のデコレータを__call__
に適用できるようにします。wordwrap
フィルターで改行から別の記号に変更するためのサポートが追加されました。- memcacheエラーをサイレントに無視するためのサポートが追加されました。
- テンプレートの末尾の改行を保持するためのサポートが追加されました。
- ブロックの左側の空白を削除するためのより細かいサポートが追加されました。
map
、select
、reject
、selectattr
、rejectattr
フィルターを追加しました。loop.depth
のサポートを追加して、コードが再帰ループ内でどれだけ深いかを把握します。- pypyとpython3のpy_compileを無効にしました。
バージョン2.6
2011年7月24日リリース、コードネームConvolution
- 内部属性は、未定義を返す代わりに、内部属性エラーを発生させるようになりました。 これにより、APIを期待するPythonセマンティクスに未定義のオブジェクトを渡す際の問題が修正されます。
- トレースバックのサポートがPyPyで正しく機能するようになりました。 (1.4でテスト済み)
- サンドボックス環境のオペレーターインターセプトを実装しました。 これにより、アプリケーション開発者は組み込みの演算子を無効にしてセキュリティを向上させることができます。 (たとえば、数学演算子をlongではなく実際の整数に制限します)
- Groupbyフィルターは、属性の属性でグループ化するためのドット表記をサポートするようになりました。
- スコープブロックは、トップレベルの割り当てとインポートを適切に処理するようになりました。 以前は、スコープブロックでインポートが突然「消えた」。
- 無効なオペコードでのsegfaultを防ぐために、バイトコードキャッシュからコードをロードする前に、新しいPythonインタープリターバージョンを自動的に検出します。 ここでの以前のJinjaバージョンのセグメンテーション違反は、Jinjaのバグではなく、基盤となるPythonインタープリターの制限でした。 Pythonインタープリターをアップグレードした後、以前のバージョンでJinjaのセグフォールトに気付いた場合は、アップグレードする必要はありません。バイトコードキャッシュをフラッシュするだけで十分です。 これにより、これが不要になり、Jinjaがこれらのケースを自動的に検出するようになりました。
- 合計フィルターは、属性ごとに値を合計できるようになりました。 これは後方互換性のない変更です。 以前のフィルターへの引数は、デフォルトでゼロになるオプションの開始インデックスでした。 これはめったに使用されないため、関数の2番目の引数になりました。
- 合計と同様に、並べ替えでも属性でアイテムを並べ替えることができるようになりました。
- sumやsortと同様に、joinもオブジェクトの属性を文字列として結合できるようになりました。
- 内部評価コンテキストに環境への参照が含まれるようになりました。
- オブジェクトがdictであるか、同様のインターフェイスを持つオブジェクトであるかを確認するためのマッピングテストを追加しました。
バージョン2.5.5
2010年10月18日リリース
- ビルドされたドキュメントはリリースの一部ではなくなりました。
バージョン2.5.4
2010年10月17日リリース
- オーバーレイで拡張機能が正しく読み込まれない問題を修正しました。
- 64ビットのビッグエンディアンアーキテクチャでsegfaultを引き起こすデバッガーのcpythonのバグを回避します。
バージョン2.5.3
2010年10月17日リリース
- 2.5.2で導入された演算子優先順位エラーを修正しました。 「-foo.bar」のようなステートメントでは、より正確な「-(foo.bar)」ではなく、式の最初の部分(「(-foo).bar」)の周りに暗黙の括弧が適用されていました。
バージョン2.5.2
2010年8月18日リリース
- setup.pyスクリプトが改善され、人々がまだそこから持っている可能性のある仮定をより適切に処理できるようになりました(
--with-speedups
)。 - 新しいデバッグサポートを除外したパッケージエラーを修正しました。
バージョン2.5.1
2010年8月17日リリース
- テンプレートから呼び出された関数によって発生したStopIteration例外がインターセプトされ、未定義に変換されるようになりました。 これにより、多くのデバッグの苦痛が解決されます。 (StopIterationは、テンプレートの実行を中止するために内部的に使用されます)
- マクロ呼び出しのパフォーマンスがわずかに向上しました。
- Babel抽出で、新しいスタイルのgettext呼び出しを適切に抽出できるようになりました。
- 複数化カウント以外の目的で新しいスタイルのgettextで変数
num
を使用しても、KeyError
は発生しなくなりました。 - 組み込みのマークアップクラスを削除し、markupsafeに切り替えました。 下位互換性のために、純粋なPython実装はまだ存在しますが、Jinja開発者によってmarkupsafeから取得されます。 デバッグサポートは「debugsupport」と呼ばれる別の機能に組み込まれ、Python 2.4にのみ関連するため、デフォルトで無効になっています。
- 単項演算子の優先順位が間違っている問題を修正しました。
バージョン2.5
2010年5月29日リリース、コードネームIncoherence
- 大文字と小文字を区別しない検索のサポートを追加することにより、並べ替えフィルターを改善しました(長い間このように機能するはずでした)。
- getattribute定数畳み込みのバグを修正しました。
- 新しいスタイルのgettext翻訳のサポートにより、テンプレート内のユーザーインターフェイスが改善され、カタログの一貫性が向上します。
- 環境の作成後に拡張機能を登録できるようになりました。
バージョン2.4.1
2010年4月20日リリース
- undefinedのエラー報告バグを修正しました。
バージョン2.4
2010年4月13日リリース、コードネーム相関
- 環境テンプレートの読み込み関数は、テンプレートオブジェクトに渡された場合、透過的に通過するようになりました。 これにより、テンプレートに渡されたテンプレートオブジェクトからインポートまたは拡張することができます。
- プリコンパイルされたソースからテンプレートをロードできる
ModuleLoader
を追加しました。 この環境には、構成済みのローダーからzipファイルまたはフォルダーにテンプレートをコンパイルするメソッドが含まれるようになりました。 - _speedupsC拡張機能がPython3をサポートするようになりました。
- 切り替えセクションの自動エスケープのサポートと評価コンテキストのサポートが追加されました。
- 現在、拡張機能が優先されています。
バージョン2.3.1
2010年2月19日リリース
- すべてのPythonバージョンでのエラー報告のバグを修正しました
- Python2.4のエラー報告のバグを修正しました
バージョン2.3
2010年2月10日リリース、コードネーム3000 Python
- セットがif-blocksおよびその他の小さな識別子の問題で使用された場合にバインドされていない変数が生成されるコードジェネレーターの問題を修正します。
- テンプレートのリストが指定されている場合、インクルードタグは複数のテンプレートから選択し、存在する最初のテンプレートを取得できるようになりました。
- 内部フレーム:issue: `360` でローカル変数としても使用される引数を持つ外部スコープに呼び出しブロックがある問題を修正しました。
- 大幅に改善されたエラーメッセージレポート:pr: `339`
- 暗黙のタプル式を完全に空にすることはできなくなりました。 この変更により、
{% if %}
は構文エラーになります。 :issue: `364` - babelを介して抽出された場合の翻訳者コメントのサポートが追加されました。
- with-statement拡張機能が追加されました。
- 実験的なPython3のサポート。
バージョン2.2.1
2009年9月14日リリース
- JythonのJinjaのいくつかの小さな問題を修正します。
バージョン2.2
2009年9月13日リリース、コードネームKong
- インクルードステートメントに
ignore missing
のマークを付けて、存在しないテンプレートをスキップできるようになりました。 not
の優先度が上がりました。 Pythonのように、not foo in bar
をfoo not in bar
のエイリアスとして書き込むことができるようになりました。 以前は、文法に括弧(not (foo in bar)
)が必要でしたが、これは奇妙でした。- マクロを定義するとき、またはループ内で
{% call %}
タグを使用するときに構文エラーが発生するバグを修正しました。 {{ foo[1, 2] }}
を不可能にするパーサーのバグを修正しました。- 呼び出し元フレームで使用されなかった、含まれているテンプレートの外部スコープからの名前を参照できるようになりました:issue: `327`
- 名前が反復変数および通常変数後ループとして使用され、その変数が未使用前ループである場合に、内部エラーが発生するバグを修正しました。 :pr: `331`
- オプションの
scoped
修飾子のサポートがブロックに追加されました。 - 行コメントのサポートが追加されました。
meta
モジュールを追加しました。- 同じ名前のメソッドと衝突していたため、環境上で(文書化されていない)属性「overlay」の名前を「overlayed」に変更しました。
- スピードアップ拡張機能はデフォルトで無効になっています。
バージョン2.1.1
2008年12月25日リリース
- 空の再帰ループをループすることによって引き起こされる変換エラーを修正しました。
バージョン2.1
2008年11月23日リリース、コードネーム安蔵
- ネストされたループと特別なループ変数のバグを修正しました。 変更前は、反復後に内側のループが外側のループ変数からループ変数を上書きしていました。
- 明示的な複数化ブロックが間違った変数を検索する原因となっていたi18n拡張機能のバグを修正しました。
テンプレート:Foo.0.0
を不可能にするレクサーの制限を修正しました。- 定数値を持つ変数のインデックスベースのサブスクライブは、インデックスエラーを発生させる代わりに、未定義のオブジェクトを返すようになりました。 これは、熱心な最適化によって引き起こされたバグでした。
- 翻訳オブジェクトがインストールされている場合、i18n拡張機能は
foo.ugettext
を検索し、続いてfoo.gettext
を検索します。 これにより、カスタム翻訳クラスの処理が容易になります。 - 条件付き拡張での紛らわしい動作を修正しました。 ループは、表示領域の一部ではありませんが、一部の条件下で部分的に実行されました。
dictsort
と同様に機能するが、任意のシーケンス用のsort
フィルターを追加しました。- マクロの空のステートメントのバグを修正しました。
- バイトコードキャッシュシステムを実装しました。
- テンプレートコンテキストがweakref可能になりました
- 「コンテキスト付き」のインクルードとインポートは、初期コンテキストだけでなく、すべての変数を転送するようになりました。
cycler
と呼ばれるサイクルヘルパーを追加しました。joiner
という参加ヘルパーを追加しました。- Jinja式を呼び出し可能なPythonオブジェクトにコンパイルできるようにする
compile_expression
メソッドを環境に追加しました。 - urlizeのエスケープバグを修正しました
バージョン2.0
2008年7月17日リリース、コードネームJinjavitus
- オブジェクトのサブスクライブ(属性とアイテムの検索)がわずかに変更されました。 ドット表記ルックアップまたはブラケット構文を使用して、属性またはアイテムに高い優先度を与えることができるようになりました。 これもASTをわずかに変更しました。
Subscript
はなくなり、Getitem
およびGetattr
に置き換えられました。 - 拡張機能の前処理とトークンストリームフィルタリングのサポートが追加されました。 これにより、拡張機能でテンプレートデータなどの簡略化されたgettext呼び出しが可能になります。
TemplateStream.dump
を追加しました。- 暗黙の文字列リテラル連結の不足しているサポートが追加されました。
テンプレート:"foo" "bar"
はテンプレート:"foobar"
と同等です else
は、条件式ではオプションです。 指定しない場合、false
と評価されます。- 位置を指定することにより、未定義の値のエラーレポートが改善されました。
filesizeformat
フィルターは、デフォルトで10進プレフィックスを使用するようになり、2番目のパラメーターを使用してバイナリモードに設定できます。- ファイナライザーのバグを修正しました
バージョン2.0rc1
2008年6月9日リリース
- Jinja2の最初のリリース。