変更点—Jinjaドキュメント

提供:Dev Guides
Jinja/docs/3.0.x/changes
移動先:案内検索

変更点

バージョン3.0.2

2021年10月4日リリース

  • ネストされたループ内の割り当てが引き続きその外部で参照される原因となっていたループスコープのバグを修正しました。 :issue: `1427`
  • compile_templatesをフィルター名とインポート名に対して決定論的にします。 :issue: `1452、1453`
  • Undefinedin演算子の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のNativeEnvironmentUndefinedが返されるのではなく、未定義の変数で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`
  • mapgroupbyなどの属性を取得するフィルターは、デフォルトとして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_contextevalcontextfunctionおよび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`
  • 新しいbooleanfalsetrueinteger、およびfloatテストを追加します。 :pr: `824`
  • 環境のfinalize関数は、式の出力(定数または非定数)にのみ適用され、静的テンプレートデータには適用されません。 :issue: `63`
  • FileSystemLoaderへの複数のパスを提供する場合、テンプレートはディレクトリと同じ名前を持つことができます。 :issue: `821`
  • テンプレート:'foo' if bar式でelse句を省略すると、環境のundefinedクラスに関係なく、常に Undefined が返されます。 else句を省略することは有効なショートカットであり、 StrictUndefined を使用するときにエラーが発生することはありません。 :issue: `710`:pr:` 1079`
  • ジェネレーターをループするときのloop制御変数(lengthrevindex0など)の動作を修正しました。 :issue: `459、751、794`:pr:` 993`
  • 非同期サポートは、初期インポートが遅くなるのを避けるために、環境で初めて有効になったときにのみロードされます。 :issue: `765`
  • 非同期環境では、|mapフィルターは必要に応じてフィルター呼び出しを待機します。 :pr: `913`
  • loop属性にアクセスするforループでは、lengthrevindexnextitem、または [ 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およびModuleLoaderos.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に渡すと(extendsimportincludeなど)、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`
  • すべての比較演算子のテストを追加しました:eqneltlegtge: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.6

2017年4月3日リリース

  • 高速解決モードでのカスタムコンテキストの動作を修正しました:issue: `675`


バージョン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 contextwithout contextのデフォルトです。
  • withおよびautoescapeタグが組み込まれました。
  • より良い自動エスケープをより簡単に構成するのに役立つ新しいselect_autoescape関数が追加されました。
  • 非同期ジェネレーターの属性にアクセスしたときのサンドボックスのランタイムエラーを修正しました。


バージョン2.8.1

2016年12月29日リリース

  • urlencodefor_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エラーをサイレントに無視するためのサポートが追加されました。
  • テンプレートの末尾の改行を保持するためのサポートが追加されました。
  • ブロックの左側の空白を削除するためのより細かいサポートが追加されました。
  • mapselectrejectselectattrrejectattrフィルターを追加しました。
  • 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 barfoo 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の最初のリリース。