変更ログ

24.8.0

安定版スタイル

  • # fmt: offが閉じ括弧または閉じ角括弧の前に使用されている場合のクラッシュを修正しました。(#4363)

パッケージング

  • パッケージングメタデータの更新:ドキュメントが明示的にリンクされ、問題トラッカーもリンクされるようになりました。これにより、BlackのPyPIリストが改善されました。(#4345)

パーサー

  • Blackが別の複数行文字列を含む複数行f文字列を解析できなかった回帰を修正しました(#4339)

  • Blackがf文字列内のエスケープされた単一引用符を解析できなかった回帰を修正しました(#4401)

  • バックスラッシュを含む空行をBlackが正しく解析できなかったバグを修正しました(#4343)

  • Blackのトークナイザーがf文字列内の\{を適切に処理できなかったバグを修正しました(#4422)

  • f文字列内の特定のトークンに関するトークナイザーの行番号の誤りを修正しました(#4423)

パフォーマンス

  • .gitignoreに大規模なディレクトリがリストされている場合のパフォーマンスを向上させました(#4415)

Blackd

  • Dockerコンテナのblackd(およびすべてのエクストラインストール)を修正しました(#4357)

24.4.2

これは、24.4.1で導入された新しいf文字列パーサーの2つの回帰を修正するためのバグ修正リリースです。

パーサー

  • 特定の複雑なf文字列が解析に失敗した回帰を修正しました(#4332)

パフォーマンス

  • 特定の複雑な文字列リテラルにおけるパフォーマンスの低下を修正しました(#4331)

24.4.1

ハイライト

  • PEP 701で導入された新しいPython 3.12 f文字列構文のサポートを追加しました(#3822)

安定版スタイル

  • 改行を含むインデントされたダミー関数が関係するクラッシュを修正しました(#4318)

パーサー

  • PEP 696によってPython 3.13に追加された新しい構文機能である型パラメーターのデフォルト値のサポートを追加しました(#4327)

統合

  • git archiveがスキップされても、GitHub Actionが動作するようになりました(#4313)

24.4.0

安定版スタイル

  • AST等価性チェックによって発生した予期しないクラッシュを修正しました(#4290)

プレビュースタイル

  • caseブロック内のifガードは、行が長すぎる場合に括弧で囲まれるようになりました。(#4269)

  • 括弧内の場合を除き、複数行文字列を新しい行に移動しないようにしました(#4289)

統合

  • GitHub Action psf/blackに新しいオプションuse_pyprojectを追加しました。これにより、pyproject.tomlからBlackのバージョンを読み取ります。(#4294)

24.3.0

ハイライト

このリリースはマイルストーンです。Blackの最初のCVEセキュリティ脆弱性を修正しました。信頼できない入力でBlackを実行する場合、または習慣的にdocstringに数千個の先頭にタブ文字を配置する場合は、CVE-2024-21503を修正するために、すぐにアップグレードすることを強くお勧めします。

このリリースでは、BlackのAST安全チェックのバグも修正されました。これにより、BlackはPython 3.12以降で有効な特定のf文字列に対して不正確な変更を行うことができました。

安定版スタイル

  • クラッシュの原因となる可能性のある区切り記号と共にコメントを移動しないようにしました(#4248)

  • 文字列に対するより安全でない変更を検出するために、AST安全チェックを強化しました。以前のバージョンのBlackは、同じ引用符の種類を持つ入れ子になった文字列を含む特定の特殊なf文字列の内容を誤ってフォーマットしていました。 теперь Blackは、新しいf文字列構文のサポートが実装されるまで、そのような文字列でクラッシュします。(#4270)

  • 最後のコード行を超える行範囲が期待どおりに機能しなかったバグを修正しました(#4273)

パフォーマンス

  • 大量の先頭タブ文字を含むdocstringのパフォーマンスの低下を修正しました。これによりCVE-2024-21503が修正されました。(#4278)

ドキュメント

  • --check--quietと共に使用された場合の動作について記述しました(#4236)

24.2.0

安定版スタイル

  • 冗長な括弧と共にコメントが誤って削除されたバグを修正しました(#4218)

プレビュースタイル

  • 未解決のクラッシュと提案されたフォーマット調整のため、hug_parens_with_braces_and_square_brackets機能を不安定なスタイルに移動しました(#4198)

  • 基本式が三項演算子における**のフォーマットに矛盾を引き起こしたバグを修正しました(#4154)

  • 行制限に達しているdocstringに改行を追加する前に、改行があるかどうかを確認するようにしました(#4185)

  • caseステートメントifガード内の冗長な括弧を削除しました(#4214).

設定

  • シンボリックリンクが存在する場合に、Blackが入力ファイルを無視する問題を修正しました(#4222)

  • プロジェクトルートと設定の検出時に、tool.blackセクションがないpyproject.tomlBlackが無視するようになりました。Blackは引き続きバージョン管理をプロジェクトルートの指標として使用するため、これは主にモノレポ設定のユーザーの動作を変更すると予想されます(望ましい)。以前の動作を維持する場合は、以前に検出されたpyproject.tomlに空の[tool.black]を追加するだけです(#4204)

出力

  • 等価性チェックの実行時にastモジュールによって生成されたSyntaxWarningまたはDeprecationWarningをBlackが非表示にするようになりました(#4189)

統合

  • JSONSchemaを追加し、validate-pyprojectエントリーポイントを提供しました(#4181)

24.1.1

パス長の厳格な制限のある特定のファイルシステムでBlackを使用できなくしたバグを修正するバグ修正リリースです。

プレビュースタイル

  • 型付きパラメーターに末尾のコンマを一貫して追加しました(#4164)

設定

  • 長いパスをサポートしないファイルシステムでのクラッシュを修正するために、キャッシュファイル名の長さを短くしました(#4176)

24.1.0

ハイライト

このリリースでは、新しい2024安定版スタイル(#4106)が導入され、以下の変更が安定化されました。

  • if-else式に括弧を追加しました(#2278)

  • ...のみで構成されるダミーのクラスと関数の実装をよりコンパクトにフォーマットしました(#3796)

  • 代入文が長すぎる場合、右辺で分割することを優先するようになりました(#3368)

  • Unicodeエスケープシーケンスの16進コードを小文字に標準化しました(#2916)

  • ほとんどのブロックの先頭にある空の最初の行を許可しました(#3967, #4061)

  • 長い型アノテーションを括弧で囲むようにしました(#3899)

  • モジュールdocstring後に改行を強制します(#3932#4028

  • 戻り値の型における不正なマジック末尾カンマ処理を修正しました(#3916

  • クラスdocstringの前にある空行を削除しました(#3692

  • 単一のwith文で複数のコンテキストマネージャーを組み合わせる場合、括弧で囲みます(#3489

  • べき乗演算における行長計算のバグを修正しました(#3942

  • 最後のエントリの後にコメントがある場合でも、コレクションリテラルに末尾カンマを追加します(#3393

  • --skip-magic-trailing-commaまたは-Cを使用する場合、要素が2つ以上ある添字式から末尾カンマが削除されます(#3209

  • いくつかのケースでスタブに余分な空行を追加しました(#3564#3862

  • raw文字列をdocstringとして受け入れます(#3947

  • caseブロック内の長い行を分割します(#4024

  • 添字内のwalrus演算子からスペースを削除するのをやめました(#3823

  • 特定の非同期ステートメントのフォーマットが間違っていたのを修正しました(#3609

  • # fmt: skipを他のコメントと組み合わせられるようにしました(#3959

--previewスタイルにはすでにいくつかの改良が加えられており、2025年の安定版スタイルに予定されています。それらを試して、フィードバックを共有してください。過去には、プレビュースタイルには安定化できなかった機能が含まれていました。今年は、既知の問題のある機能のために、別個の--unstableスタイルを追加しています。これで、--previewスタイルには、実際に来年の安定版スタイルに含めることを期待している機能のみが含まれるようになりました。

安定版スタイル

このリリースでは、安定版スタイルに移行された機能にいくつかのバグ修正が行われました。

  • 条件式を括弧で囲む際のコメント処理を修正しました(#4134

  • 添字内の括弧で囲まれたwalrusに、他の二項演算子と同様にスペースが追加されないバグを修正しました(#4109

  • 非同期関数内のdocstringの前にある空行を削除しました(#4132

  • すべてのブロックの先頭に空行を許可する変更において、docstringの直前を除くという点を考慮していなかったケースに対処しました(#4130

  • スタブの場合、本体を持つネストされたクラスの後に空行を強制するロジックを修正しました(#4141

プレビュースタイル

  • 既知の問題があり、安定版スタイルへの移行を妨げるプレビュー機能を網羅した--unstableスタイルを追加しました。--enable-unstable-featureフラグも追加しました。たとえば、--enable-unstable-feature hug_parens_with_braces_and_square_bracketsを使用すると、後のBlackリリースで機能が不安定にダウングレードされた場合でも、2024年を通してこのプレビュー機能を適用できます(#4096

  • モジュールdocstringのフォーマットを、クラスおよび関数docstringと同じにしました(#4095

  • 辞書内でwalrusを使用した場合のクラッシュを修正しました(#4155

  • 長い辞書をラップする場合の不要な括弧を修正しました(#4135

  • # fmt: skipコメントの前にあるスペースの正規化を停止しました(#4146

設定

  • pyproject.tomlの設定に無効なキーが含まれている場合、警告を出力します(#4165

  • シンボリックリンクの処理を修正し、ルート外のシンボリックリンクを適切に無視するようになりました(#4161

  • 偽陽性のキャッシュヒットにつながっていたキャッシュmtimeロジックを修正しました(#4128

  • 廃止された--experimental-string-processingフラグを削除しました。この機能は現在、--preview --enable-unstable-feature string_processingで有効にできます。(#4096

統合

  • Blackのpre-commit統合を特定のgitフックでのみ実行するように変更したのを元に戻しました(#3940)。古いバージョンのpre-commitとの互換性を向上させるためです(#4137

23.12.1

パッケージング

  • デフォルトでdエクストラからの依存関係が含まれていたバグを修正しました(#4108

23.12.0

ハイライト

2024年が近づいてきました。つまり、Blackの安定版スタイルの新しいエディションが登場する時期です!このリリースと同時に、2024年安定版スタイルのドラフトを示すアルファリリース24.1a1をリリースします。これは1月のリリースで最終決定されます。ぜひお試しいただき、フィードバックを共有してください

このリリース(23.12.0)では、依然として2023年スタイルが生成されます。--previewモードの変更のほとんど(すべてではありません)は、2024年安定版スタイルになります。

安定版スタイル

  • --line-rangesオプションと共に使用した場合、# fmt: offが指定された行範囲内になくても自動的にインデントが解除されるバグを修正しました。(#4084

  • 括弧で囲まれたコンテキストマネージャーの機能検出を修正しました(#4104

プレビュースタイル

  • 連鎖代入を分割する際、改行の前により多くの等号を使用するようになりました(#4010

  • モジュールレベルのスタンドアロン改ページ文字は削除されなくなりました(#4021

  • すぐにネストされたタプル、リスト、辞書の追加のケースで、インデントが少なくなるようになりました(#4012

  • docstringの直前を除き、すべてのブロックの先頭に空行を許可するようになりました(#4060

  • 短い--line-lengthを使用する場合のプレビューモードでのクラッシュを修正しました(#4086

  • 関数やクラス定義でない場合、省略記号のみからなるスイートは、独自の行に保持されます(#4066)(#4103

設定

  • --line-rangesは、--safeモードでBlackの内部安定性チェックをスキップするようになりました。これにより、多くのフォーマットされていない同じコンテンツの行があるまれな入力でのクラッシュが回避されます。(#4034

パッケージング

  • mypyを1.7.1にアップグレードしました(#4049)(#4069

  • CPython 3.12で、より高速なコンパイル済みホイールが利用できるようになりました(#4070

統合

  • 3.12 CIを有効にしました(#4035

  • Dockerイメージを並列でビルドします(#4054

  • 3.12でDockerイメージをビルドします(#4055

23.11.0

ハイライト

  • 新しい--line-rangesコマンドラインオプションを使用して、行範囲のフォーマットをサポートしました(#4020

安定版スタイル

  • docstringのように見えるバイト文字列のフォーマット時のクラッシュを修正しました(#4003

  • docstring内で改行の前にバックスラッシュが続く空白文字によってクラッシュが発生する問題を修正しました(#4008

  • 複雑なブロック内のスタンドアロンコメントによってBlackがクラッシュする問題を修正しました(#4016

  • await (a ** b)のようなコードのフォーマット時のクラッシュを修正しました(#3994

  • 先頭のf文字列をdocstringとして扱わなくなりました。これはPythonの動作と一致し、クラッシュを修正します(#4019

プレビュースタイル

  • 関数の唯一の引数である複数行の辞書とリストのインデントを少なくしました(#3964

  • 関数の唯一の引数である複数行のアンパックされた辞書とリストのインデントも少なくしました(#3992

  • f文字列デバッグ式では、最終文字列に表示される引用符の種類が保持されるようになりました(#4005

  • 長いcaseブロックが複数行に分割されないバグを修正しました。caseブロックで一般的な末尾カンマルールも有効にしました(#4024

  • モジュールレベルのdocstringと最初の関数またはクラス定義の間に2つの空行を必要とするようにしました(#4028

  • 同じ行にある他のコメントとの単一行フォーマットスキップをサポートしました(#3959

設定

  • シンボリックリンクを解決する前に、強制除外ロジックを一貫して適用するようになりました(#4015

  • --includeにおける絶対パス名の照合のバグを修正しました(#3976

パフォーマンス

  • macOSのarm64でのmypycビルドを修正しました(#4017

統合

  • Blackのpre-commit統合は、コードフォーマッタに適したgitフックでのみ実行されるようになりました(#3940

23.10.1

ハイライト

  • GitHub Actionsの特殊なケースに対する修正をリリースしました(#3957

プレビュースタイル

  • インラインコメントを含む暗黙的な複数行文字列のマージを修正しました(#3956

  • コメントまたは複合ステートメントの前に、ブロックオープン後の最初の空行を許可しました(#3967

パッケージング

  • Dockerfileをhatch + Blackのコンパイルに変更しました(#3965

統合

  • summaryパラメータを使用して、GitHubワークフローのサマリー出力を抑制できるようになりました。(#3958

  • Blackチェックが失敗した場合のアクションの失敗を修正しました(#3957

ドキュメント

  • WindowsドキュメントCIが壊れていることが分かっています。https://github.com/psf/black/issues/3968

23.10.0

安定版スタイル

  • 括弧で囲まれた文字列の中からコメントが削除されるバグを修正しました(#3909

プレビュースタイル

  • べき乗演算子を含む長い行が、行長の前に分割されるバグを修正しました(#3942

  • 長い型ヒントは、複数行に分割された場合、括弧で囲まれ、適切にインデントされるようになりました(#3899

  • 戻り値の型で、マジックな末尾のカンマが尊重されるようになりました。(#3916

  • モジュールレベルのdocstringの後に1行の空行を必須にしました。(#3932

  • 生の三重引用符で囲まれた文字列をdocstringとして扱います(#3947

設定

  • BLACK_CACHE_DIRが設定されている場合のキャッシュのバージョン管理ロジックを修正しました(#3937

パーサー

  • matchステートメント内でtypeという名前の属性が受け入れられなかったバグを修正しました(#3950

  • ラムダ式やその他の特殊な式を含むPEP 695型エイリアスのサポートを追加しました(#3949

出力

  • Blackは、Python 2コードのフォーマットを試行するための特別なエラーを出力しなくなりました(#3933

  • 詳細モードでは、内部エラー時にBlackはより一貫してスタックトレースを出力するようになりました(#3938

統合

  • ジョブサマリーに表示されるアクション出力は、Markdownでラップされるようになりました(#3914

23.9.1

様々な問題により、以前のリリース(23.9.0)には、Blackを大幅に高速化するコンパイル済みmypycホイールが含まれていませんでした。これらの問題は修正され、このリリースには再びコンパイル済みホイールが含まれるはずです。

mypycのバグのため、Python 3.12のホイールはありません。mypycのバグが修正され次第、将来のリリースで3.12のホイールを提供します。

パッケージング

  • mypyを1.5.1にアップグレードしました(#3864

パフォーマンス

  • BlackのキャッシュでNamedTupleではなく生のタプルを格納することで、パフォーマンスが向上し、キャッシュのサイズが小さくなりました(#3877

23.9.0

プレビュースタイル

  • ダミー実装のフォーマットをより簡潔にしました(#3796

  • スタブファイルでは、本体を持つステートメント(例:if sys.version_info > (3, x):)と、同じレベルの関数定義の間に空行を追加します(#3862

  • 添字内のwalrus演算子からスペースが削除されるバグを修正しました(#3823

設定

  • Blackは、シンボリックリンクを解決する前に、除外と無視のロジックを適用するようになりました(#3846

パフォーマンス

  • ノートブックセルにマジックが含まれていない場合は、IPythonのインポートを回避します(#3782

  • mtimeとsizeのフォールバックとしてファイルハッシュを比較することで、キャッシングを改善しました(#3821

Blackd

  • blackdにおける1文字の入力に関する問題を修正しました(#3558

統合

  • Blackに公式のpre-commitミラーができました。.pre-commit-config.yaml内のhttps://github.com/psf/blackhttps://github.com/psf/black-pre-commit-mirrorに変更すると、Blackの速度が約2倍になります(#3828

  • ENV_PATHで指定された.black.envフォルダは、GitHub Actionsの完了時に削除されるようになりました(#3759

23.7.0

ハイライト

  • Python 3.7のランタイムサポートが削除されました。3.7コードのフォーマットは、今後さらに通知があるまでサポートされます(#3765

安定版スタイル

  • PEP 604ユニオンを使用した戻り値の型注釈に不正な末尾のカンマが追加されるバグを修正しました(#3735

  • いくつかの状況下でスタブファイルのコメントが削除または誤って処理されるバグとクラッシュを修正しました(#3745

  • 括弧内のtype: ignoreのような複数行のマジックコメントでのクラッシュを修正しました(#3740

  • Blackが型コメントの末尾の空白を削除した場合のAST検証のエラーを修正しました(#3773

プレビュースタイル

  • 関数引数として使用される暗黙的に連結された文字列は、括弧で囲まれなくなりました(#3640

  • クラス定義とそのdocstringの間の空行を削除しました(#3692

設定

  • Black--workers引数は、BLACK_NUM_WORKERS環境変数で指定できるようになりました(#3743

  • .pytest_cache.ruff_cache、および.vscodeは、デフォルトで除外されるようになりました(#3691

  • --stdin-filenameを実行し、検出されたpyproject.tomlが現在の作業ディレクトリにない場合、Blackpyproject.tomlの設定を尊重しなくなっていたバグを修正しました(#3719

  • pyproject.tomlexcludeextend-excludeに無効なデータ型があると、Blackは間違ったことを黙って行うのではなく、エラーを返すようになりました(#3764

パッケージング

  • mypycを0.991から1.3にアップグレードしました(#3697

  • LANG=CでのPython 3.6でのエラーを軽減したClickのパッチを削除しました(#3768

パーサー

  • Python 3.12で新しいPEP 695構文のサポートを追加しました(#3703

パフォーマンス

  • キャッシュがいっぱいになっている場合のBlackの速度を大幅に向上させました(#3751

  • 必要のない場合にIPythonのインポートを回避します(#3748

出力

  • 内部的にaware UTC日時を使用し、Python 3.12での非推奨警告を回避します(#3728

  • 詳細ログを、ソース検出のためのBlackのロジックと完全に一致するように変更しました(#3749

Blackd

  • blackdの引数パーサーは、ヘルプテキストにオプションのデフォルト値を表示するようになりました(#3712

統合

  • Blackは、PYTHONWARNDEFAULTENCODING = 1でテストされるようになりました(#3763

  • ジョブサマリーにBlackの出力を表示するようにGitHub Actionsを更新しました(#3688

ドキュメント

  • リポジトリのルートにCITATION.cffファイルを追加し、このソフトウェアの引用方法に関するメタデータを含めました(#3723

  • 開発者向けリファレンスにおけるクラス例外に関するドキュメントを、最新のコードベースと一致するように更新しました(#3755)。

23.3.0

ハイライト

このリリースでは、BlackのGitHubアクションにおける長年の曖昧な動作を修正しました。この動作では、アクションのバージョンが実行されるBlackのバージョンを決定していませんでした(問題点 #3382)。さらに、インポートに関する小さなバグ修正と、プレビュースタイルのいくつかの改善が含まれています。

プレビュースタイルblack --previewで試して、フィードバックをお寄せください。プレビュースタイルのすべての変更は、2024年1月にBlackの安定版スタイルの一部になる予定です。

安定版スタイル

  • # fmt: skip# fmt: offを含むインポート行には、別のインポート行の直後にある場合、余分な空行が追加されなくなりました(#3610)。

プレビュースタイル

  • 最後のエントリの後にコメントがある場合でも、コレクションリテラルに末尾カンマを追加します(#3393

  • async defasync for、およびasync with文は、非同期バージョンと比較して、一貫してフォーマットされるようになりました。(#3609

  • 2つのコンテキストマネージャーを含むwith文は、一貫して括弧で囲まれるようになりました(#3589)。

  • 文字列分割子が東アジア文字幅を尊重するようになりました(#3445)。

  • 長い文字列リテラルは、スペースの前だけでなく、東アジアのカンマとピリオド( U+3001 全角カンマ、 U+3002 全角ピリオド、および U+FF0C 半角カンマ)の後でも分割できるようになりました(#3445)。

  • スタブでは、...以外の本体を持つネストされたクラスの後に、1つの空行を強制します(#3564)。

  • 行分割動作を変更することにより、複数行文字列の処理を改善しました(#1879)。

パーサー

  • 無効な型コメントを含むファイルのフォーマットをサポートしました(#3594)。

統合

  • バージョン入力が指定されていない場合、GitHubアクションがアクションのバージョンと同等のBlackのバージョンを使用するように更新しました(#3543)。

  • vimのautoloadスクリプトでPythonバイナリパスが見つからない問題を修正しました(#3508)。

ドキュメント

  • セキュリティ上の問題に対しては、最新のリリースのみがサポートされていることを記述しました。脆弱性はTideliftを通じて報告する必要があります(#3612)。

23.1.0

ハイライト

これは2023年の最初のリリースであり、安定性ポリシーに従って、空行の処理の改善、いくつかのコンテキストにおける冗長な括弧の削除、暗黙的に連結された文字列をより適切に強調表示する出力など、安定版スタイルに多くの改善が加えられています。

プレビュースタイルにも多くの変更があります。black --previewを試して、来年以降の安定版スタイルの設定に役立つフィードバックをお寄せください。

スタイルの変更に加えて、Blackは現在、pyproject.tomlファイルからサポートされているPythonバージョンを自動的に推測するため、Blackのターゲットバージョンを個別に設定する必要がなくなりました。

安定版スタイル

  • 昨年のプレビュースタイルのほとんどの機能を取り入れた2023年安定版スタイルを導入しました(#3418)。具体的な変更点

    • スティッキーな先頭のコメントを持つクラスと関数の前に空行を強制します(#3302)(22.12.0)

    • 空ファイルと空白のみのファイルを、改行がない場合は空ファイルとして、改行がある場合は単一の改行文字として再フォーマットします(#3348)(22.12.0)

    • 関数引数として使用される暗黙的に連結された文字列は、現在括弧で囲まれています(#3307)(22.12.0)

    • 行の先頭にあるネストされていない括弧内の末尾のカンマを正しく処理します(#3370)(22.12.0)

    • --skip-string-normalization / -Sは、期待どおりにdocstringプレフィックスが正規化されないようにします(#3168)(22.8.0以降)

    • --skip-magic-trailing-commaまたは-Cを使用する場合、要素が2つ以上ある添字式から末尾のカンマが削除されます(#3209)(22.8.0)

    • リスト、セット、またはタプル内の暗黙的に連結された文字列は、現在括弧で囲まれています(#3162)(22.8.0)

    • コメントが独自の行にある暗黙的に連結された文字列の中央にある場合の文字列のマージ/分割の問題を修正しました(#3227)(22.8.0)

    • 行の長さの制限に違反する可能性がある場合、docstringの引用符は移動されなくなりました(#3044#3430)(22.6.0)

    • 戻り値の注釈の周りの括弧が管理されるようになりました(#2990)(22.6.0)

    • 待機オブジェクトの周りの不要な括弧を削除しました(#2991)(22.6.0)

    • with文で不要な括弧を削除しました(#2926)(22.6.0)

    • コードブロックオープンの後の末尾の改行を削除しました(#3035)(22.6.0)

    • コードセルセパレータ#%%は、# %%に標準化されました(#2919)(22.3.0)

    • except文から不要な括弧を削除しました(#2939)(22.3.0)

    • forループでのタプルアンパックから不要な括弧を削除しました(#2945)(22.3.0)

    • 単一要素の添字でマジック末尾カンマを回避します(#2942)(22.3.0)

  • # fmt: off# fmt: onの間にコロン行がマークされている場合のクラッシュを修正しました(#3439)。

プレビュースタイル

  • 文字列リテラル内のUnicodeエスケープシーケンスの16進数コードをフォーマットします(#2916)。

  • if-else式に括弧を追加しました(#2278)

  • 多くの文字列を含む大きな式のパフォーマンスを向上させました(#3467)。

  • assert + 括弧付き文字列を使用したプレビュースタイルでのクラッシュを修正しました(#3415)。

  • 関数戻り値の注釈とexcept句で使用されるwalrus演算子を使用したプレビュースタイルでのクラッシュを修正しました(#3423)。

  • 混合された暗黙的に連結された通常のf文字列が空の範囲で始まる、プレビュー高度な文字列処理でのクラッシュを修正しました(#3463)。

  • スタンドアロンのコメントが辞書の値の前に配置されている、プレビュー高度な文字列処理でのクラッシュを修正しました(#3469)。

  • デコレータに# fmt: skipが適用されている場合、またはデコレータの間にスタンドアロンのコメントがある場合に、余分な空行が追加される問題を修正しました(#3470)。

  • 行が長すぎる場合でも、docstringの閉じ引用符を別行に配置しなくなりました(#3430)。

  • 辞書リテラル内の長い値は現在括弧で囲まれています。それに対応して、辞書リテラル内の短い値の周りの不要な括弧は削除されました。長い文字列ラムダ値は現在括弧で囲まれています(#3440)。

  • docstringに関連するエッジケースを含む、プレビュースタイルの2つのクラッシュを修正しました(#3451)。

  • 改善された文字列処理から文字列型注釈を除外しました。戻り値の型注釈が文字列化され、複数行にまたがる場合のクラッシュを修正しました(#3462)。

  • Python 3.9以降をターゲットとする場合、複数のコンテキストマネージャーを括弧で囲みます(#3489)。

  • with文またはタプルで使用されるwalrus演算子を含む、プレビュースタイルのいくつかのクラッシュを修正しました(#3473)。

  • 無効なコードを生成したf文字列式での無効な引用符エスケープのバグを修正しました。異なる引用符を持つ暗黙的に連結されたf文字列は、式で使用される引用符を変更することで、マージまたは引用符正規化できるようになりました。(#3509)。

  • Blackがmypycでコンパイルされている場合のawait (yield)でのクラッシュを修正しました(#3533)。

設定

  • Blackは現在、pyproject.tomlで指定されたプロジェクトメタデータから--target-versionを推測しようとします(#3219)。

パッケージング

  • mypycを0.971から0.991にアップグレードしました。これにより、mypycで処理されたBlackをarmv7でビルドできるようになりました(#3380)。

    • これにより、コンパイルされたBlackをCPythonのデバッグビルドで使用している間のクラッシュも修正されました。

  • 3.11アルファリリースでのtomli要件の具体的なサポートを削除し、最終版ではないPythonリリースでは要件がインストールされないバグを回避しました(#3448)。

  • Black は、packaging バージョン 22.0 以降に依存するようになりました。これは、プロジェクトメタデータの一部を解析する必要がある新しい機能のためです (#3219)。

出力

  • black --help を複数回呼び出しても、ヘルプの内容は毎回同じになります (#3516)。

  • 詳細ログに、pyproject.toml の設定変数の値が表示されるようになりました (#3392)。

  • プロジェクトルートへの不正確な相対パスを使用することで発生していた、詳細出力におけるシンボリックリンク検出メッセージの誤りを修正しました (#3385)。

統合

  • すべての依存関係が 3.11 をサポートするようになったため、3.11 CI を通常のフローに移動しました (#3446)。

  • Docker: 最新の Black アルファリリースに追従するために、新しい latest_prerelease タグの自動化を追加しました (#3465)。

ドキュメント

  • vim-plug のインストール手順を拡張し、より明確なオプションを提供しました (#3468)。

22.12.0

プレビュースタイル

  • 先頭に付いたコメントが継続している場合、クラスと関数の前に空行を強制的に挿入するようになりました (#3302)。

  • 空ファイルと空白のみのファイルは、改行がない場合は空ファイルとして、改行がある場合は改行文字1つとして再フォーマットされるようになりました (#3348)。

  • 暗黙的に連結された文字列を関数引数として使用する場合、括弧で囲むようになりました (#3307)。

  • 代入文では、左辺が1行に収まる場合、右辺を分割することを優先するようになりました (#3368)。

  • 行の先頭にある入れ子になっていない括弧内の末尾のカンマを正しく処理するようになりました (#3370)。

設定

  • .gitignore の場所とターゲットファイルへの相対パスを考慮することで、誤って適用されていた .gitignore ルールを修正しました (#3338)。

  • 複数のソースディレクトリが指定されている場合に .gitignore の存在を誤って無視していた問題を修正しました (#3336)。

パーサー

  • 関数引数として渡されるジェネレーター式内の walrus 演算子 (例: any(match := my_re.match(text) for text in texts)) の構文解析をサポートしました (#3327)。

統合

  • Vim プラグイン: let g:black_use_virtualenv = 0 を使用して、Black のシステムインストールをオプションで許可するようになりました (#3309)。

22.10.0

ハイライト

  • Python 3.6 のランタイムサポートを削除しました。3.6 コードのフォーマットは、今後さらに通知があるまでサポートされます。

安定版スタイル

  • # fmt: on# fmt: off と異なるブロックレベルで使用されている場合のクラッシュを修正しました (#3281)。

プレビュースタイル

  • 括弧で囲まれた長い文字列キーを持つ一部の辞書をフォーマットする場合のクラッシュを修正しました (#3262)。

設定

  • .ipynb_checkpoints ディレクトリがデフォルトで除外されるようになりました (#3293)。

  • ソースコードの最初の行をフォーマット時に無視するための --skip-source-first-line / -x オプションを追加しました (#3299)。

パッケージング

  • PyInstaller で作成された実行ファイルは、macOS で複数のファイルを一度にフォーマットする場合でもクラッシュしなくなりました。macOS 用のネイティブ x86-64 実行ファイルが再び利用可能になりました (#3275)。

  • ビルドバックエンドとして Hatchling を使用するようになりました。PyPI から Black のホイールをインストールするユーザーには影響ありません (#3233)。

  • CPython 3.11 用に、より高速にコンパイルされたホイールが利用可能になりました (#3276)。

Blackd

  • Windows スタイル (CRLF) の改行が保持されるようになりました (#3257)。

統合

  • Vim プラグイン: g:black_preview フラグを使用して、プレビュースタイルを有効/無効にできるようになりました (#3246)。

  • jupyter オプションを使用して、Jupyter Notebook ファイルのフォーマットをサポートするように GitHub Action を更新しました (#3282)。

  • Black のバージョンにバージョン指定子 (例: <23) の使用をサポートするように GitHub Action を更新しました (#3265)。

22.8.0

ハイライト

  • blackd を除いて、Python 3.11 がサポートされるようになりました (公開時点では aiohttp が 3.11 をサポートしていないため) (#3234)。

  • これは、Python 3.6 で Black を実行できる最後のリリースです (3.6 コードのフォーマットは、今後さらに通知があるまでサポートされます)。

  • 以前は Black でフォーマットされていなかったコードに影響を与える変更を、まれなケースで行う可能性があることを示すように、安定性ポリシーを言い換えました (#3155)。

安定版スタイル

  • 式またはコードブロックの途中で # fmt: on/off を使用する場合の無限ループを修正しました (#3158)。

  • コロン (:) 行での # fmt: skip の処理が不正確だった問題を修正しました (#3148)。

  • べき乗演算子の周りのスペースを削除した行でコメントが削除されることがなくなりました (#2874)。

プレビュースタイル

  • 1文字の閉じ括弧を持つdocstringのクォートを独自の行に移動することがなくなりました。これは、バージョン 22.6.0 で導入されたバグでした (#3166)。

  • --skip-string-normalization / -S は、期待通りにdocstringプレフィックスが正規化されないようにするようになりました (#3168)。

  • --skip-magic-trailing-commaまたは-Cを使用する場合、要素が2つ以上ある添字式から末尾カンマが削除されます(#3209

  • リスト、セット、またはタプル内の暗黙的に連結された文字列は、括弧で囲むようになりました (#3162)。

  • 独自の行に暗黙的に連結された文字列の途中にコメントがある場合の文字列のマージ/分割の問題を修正しました (#3227)。

Blackd

  • blackd は、X-Preview ヘッダーを使用してプレビュースタイルを有効にすることができるようになりました (#3217)。

設定

  • Black は、デバッグ f 文字列の存在を使用してターゲットバージョンを検出するようになりました (#3215)。

  • --stdin-filename を含む場合のプロジェクトルートの誤検出とソースの詳細ログを修正しました (#3216)。

  • コマンドラインで指定されたソースディレクトリ内の直下の .gitignore ファイルも尊重するようになりました。以前は、プロジェクトルートと自動的に検出されたディレクトリ内の .gitignore ファイルのみが尊重されていました (#3237)。

ドキュメント

  • IntelliJ IDE で BlackConnect を使用することを推奨しました (#3150)。

統合

  • Vim プラグイン: メッセージに Black: プレフィックスを追加し、Black から送信されたものであることが明確になるようにしました (#3194)。

  • Docker: /opt/venv インストールに変更し、PATH に追加してルート以外のユーザーでも使用できるようにしました (#3202)。

出力

  • 非推奨の asyncio.get_event_loop() から、DeprecationWarning を削除するイベントループの作成に変更しました (#3164)。

  • 内部 blib2to3 ライブラリからのログを削除しました。これは、キャッシュの失敗に関するエラーログを定期的に出力しますが、無視できます (#3193)。

パーサー

  • 型コメントは、AST 同等性チェックに一貫して含まれるようになりました。そのため、意図しない削除はエラーとして報告されます。ただし、標準ライブラリの制限により、PyPy 3.7 で実行する場合は型コメントを追跡できません (#2874)。

パフォーマンス

  • 単一ファイルのフォーマット時のBlackの起動時間を15~30%短縮しました(#3211

22.6.0

スタイル

  • #fmt: skip# fmt:skipコメント(スペースがないことに注意)を含む不安定なフォーマットを修正しました(#2970

スタイルのプレビュー

  • docstringの引用符は、行長の制限に違反する場合には移動されなくなりました(#3044

  • returnアノテーションの周りの括弧が適切に処理されるようになりました(#2990

  • awaitされたオブジェクトの不要な括弧を削除しました(#2991

  • with文の不要な括弧を削除しました(#2926

  • コードブロック開始後の末尾の改行を削除しました(#3035

統合

  • GitプロジェクトへのBlackの導入を容易にするため、scripts/migrate-black.pyスクリプトを追加しました(#3038

出力

  • --versionフラグの一部として、Pythonのバージョンと実装を出力するようになりました(#2997

パッケージング

  • Python 3.11ビルドでtomllibが利用できない場合、tomllibの代わりにtomliを使用するようになりました(#2987

パーサー

  • PEP 654構文(例:except *ExceptionGroup:)がサポートされるようになりました(#3016

  • PEP 646構文(例:Array[Batch, *Shape]またはdef fn(*args: *T) -> None)がサポートされるようになりました(#3071

Vimプラグイン

  • strtobool関数を修正しました。true/on/false/offを正しく解析していませんでした(#3025

22.3.0

スタイルのプレビュー

  • コードセルのセパレータ#%%# %%に標準化されました(#2919

  • except文から不要な括弧を削除しました(#2939

  • forループのタプルアンパッキングから不要な括弧を削除しました(#2945

  • 単一要素の添字におけるマジック末尾カンマを回避しました(#2942

設定

  • デフォルトで__pypackages__ディレクトリをフォーマットしなくなりました(#2836

  • --required-versionを使用して安定版を指定できるようになりました(#2832)。

  • ユーザーにホームディレクトリがない場合のクラッシュを回避しました(#2814

  • md5が利用できない場合のクラッシュを回避しました(#2905

  • Windowsでのディレクトリジャンクションの処理を修正しました(#2904

ドキュメント

  • pylintの設定ドキュメントを更新しました(#2931

統合

  • Vim/Neovimでプラグインを無効にするテストを移動しました。これにより、読み込み速度が向上します(#2896

出力

  • 詳細モードでは、Blackがユーザーレベルの設定を使用している場合にログを出力するようになりました(#2861

パッケージング

  • Click 8.1.0で動作するようにBlackを修正しました(#2966

  • Python 3.11以降では、tomliの代わりに標準ライブラリのtomllibを使用するようになりました(#2903

  • 非推奨の内部開発ツールであるblack-primerを削除し、別のリポジトリにコピーしました(#2924

パーサー

  • Blackは、for文とasync for文のターゲットにおける星印付き式(例:for item in *items_1, *items_2: pass)を解析できるようになりました(#2879)。

22.1.0

ついに、Blackはベータ版ではなくなりました!これは最初の非ベータ版リリースであり、新しい安定性ポリシーの対象となる最初のリリースです。

ハイライト

  • **Python 2のサポートを削除しました**(#2740

  • --previewフラグを導入しました(#2752

スタイル

  • --experimental-string-processingを非推奨とし、その機能を--previewの下に移動しました(#2789

  • スタブでは、クラス属性とメソッドの間に少なくとも1つの空行が存在する場合、空行を1つ残すようになりました(#2736

  • Blackは、文字列プレフィックスの順序を正規化するようになりました(#2297

  • 両方のオペランドが単純な場合、べき乗演算子の周りのスペースを削除するようになりました(#2726

  • マジック末尾カンマの存在下で、一部のケースで不安定なフォーマットを引き起こすバグを回避しました(#2807

  • 10進数の浮動小数点数と整数リテラルに対する属性アクセスに括弧を使用するようになりました(#2799

  • 16進数、2進数、8進数、複素数リテラルに対する属性アクセスに空白を追加しなくなりました(#2799

  • トップレベルのif文内のスタブの空行を同じように処理するようになりました(#2820

  • セミコロンと算術式における不安定なフォーマットを修正しました(#2817

  • マジック末尾カンマ周辺の不安定なフォーマットを修正しました(#2572

パーサー

  • case {"key": 1 | 2 as password}のような、as式を含むマッピングケースを修正しました(#2686

  • case 1 as a, 2 as bのような、複数のトップレベルas式を含むケースを修正しました(#2716

  • case Foo(bar=baz as quux)のような、キーワード引数を持つas式を含む呼び出しパターンを修正しました(#2749

  • returnyield構成要素のタプルアンパッキングは、3.8以降を意味するようになりました(#2700

  • アノテーション付き代入における括弧なしのタプル(例:values: Tuple[int, ...] = 1, 2, 3)は、3.8以降を意味するようになりました(#2708

  • 末尾の改行または括弧内のコメントがある場合の、スタンドアロンのmatch()またはcase()の処理を修正しました(#2760

  • from __future__ import annotations文は、Python 3.7以降を意味するようになりました(#2690

パフォーマンス

  • 新しいバックトラッキングパーサーの速度を全体で約4倍向上させました(--target-versionが3.10以上に設定されている場合に有効になります)。(#2728

  • Blackは、全体的な速度を2倍向上させるためにmypycを使用してコンパイルされるようになりました。64ビットWindows、macOS、Linux(muslを除く)がサポートされています。(#1009#2431

設定

  • pyproject.tomlで、単独のキャリッジリターン改行を許容しなくなりました(#2408

  • Jupyter Notebookでカスタムマジックを持つセルをフォーマットするための設定オプション(python-cell-magics)を追加しました(#2744

  • 環境変数BLACK_CACHE_DIRを使用して、すべてのプラットフォームでカスタムキャッシュディレクトリを設定できるようになりました(#2739)。

  • Python 3.10以降をデフォルトで有効化し、--target-version=py310を指定する必要性を排除しました。(#2758)

  • SRCまたは--codeのいずれかの指定を必須とし、両者の同時指定を排他としました。(#2804)

出力

  • 不正な正規表現に対するエラーメッセージを改善しました。(#2678)

  • AST安全チェック中の構文解析エラー発生時に、根本原因となるSyntaxErrorを埋め込むことでエラーメッセージを改善しました。(#2693)

  • 明るいテーマのターミナルで読みづらいことから、diffヘッダーの色を白で表示しないように変更しました。(#2691)

  • 最終的な統計情報にテキストの色付けを追加しました。(#2712)

  • 詳細モードでは、プロジェクトルートの検出方法とフォーマット対象パスも表示するようになりました。(#2526)

パッケージング

  • 依存関係の上限バージョンバウンドをすべて削除しました。(#2718)

  • Python 3.10以降では、typing-extensionsを必須依存関係から削除しました。(#2772)

  • clickの下限バージョンを8.0.0に設定しました。(#2791)

統合

  • コンテナ化された実行をサポートするようにGitHubアクションを更新しました。(#2748)

ドキュメント

  • pipインストール手順のプロトコルをhttps://に変更しました。(#2761)

  • レスポンシブデザインとモバイルサポートを強化するため、HTMLテーマを主にFuroに変更しました。(#2793)

  • black-primerツールの非推奨化を行いました。(#2809)

  • Pythonサポートポリシーを記述しました。(#2819)

21.12b0

Black

  • f文字列式の範囲の決定を修正しました。(#2654)

  • 複数行ステートメントにおけるEOFに関するエラーメッセージのフォーマットのバグを修正しました。(#2343)

  • ブロック内の関数とクラスの周囲のスペースを一貫性のあるものにしました。(#2472)

Jupyter Notebookサポート

  • セルマジックは、Pythonの既知のセルマジックである場合のみ処理されるようになりました。以前はすべてのセルマジックがトークン化されていたため、%%writefileなどでのインデントエラーが発生する可能性がありました。(#2630)

  • Jupyter Notebookでの環境変数への代入を修正しました。(#2642)

Python 3.10サポート

  • 3.10専用の構文が検出された場合、--target-version py310の使用をユーザーに促すようにしました。(#2668)

  • match a, b:match a, *b:のように、開かれたシーケンスを対象とするmatchステートメントを修正しました。(#2639) (#2659)

  • match re.match()のように、match/caseソフトキーワードを複数回含むmatch/caseステートメントを修正しました。(#2661)

  • インラインボディを持つcaseステートメントを修正しました。(#2665)

  • matchの対象内にあるスター付き式(starred expression)のスタイルを修正しました。(#2667)

  • matchステートメント内の不正な構文におけるパーサーエラーの位置を修正しました。(#2649)

  • ProcessPoolExecutorがないプラットフォームでのPython 3.10サポートを修正しました。(#2631)

  • --target-version py310の下でmatchを使用するコードの構文解析パフォーマンスを最大約50%向上させました。(#2670)

パッケージング

  • regexへの依存関係を削除しました。(#2644) (#2663)

21.11b1

Black

  • Patternクラスの使用を修正するために、regexの最小バージョンを2021.4.4に上げました。(#2621)

21.11b0

Black

  • Python 2専用の構文検出を改善することで、より多くのケースでPython 2の非推奨化について警告するようになりました。(#2592)

  • 実験的なPyPyサポートを追加しました。(#2559)

  • matchステートメントへの部分的なサポートを追加しました。実験的な機能であるため、--target-version py310が明示的に指定されている場合のみ有効になります。(#2586)

  • 括弧付きのwith文へのサポートを追加しました。(#2586)

  • Blackの実行に関するPython 3.10のサポートを宣言しました。(#2562)

統合

  • 非推奨になったdistutilsのインポートを削除することで、Python 3.10でのvimプラグインの問題を修正しました。(#2610)

  • vimプラグインは、pyproject.tomlからskip_magic_trailing_commaを解析するようになりました。(#2613)

21.10b0

Black

  • ベータ版ではないリリースに適用される安定性ポリシーについて記述しました。(#2529)

  • 新しい--workersパラメーターを追加しました。(#2514)

  • ラムダ式における位置限定引数の機能検出を修正しました。(#2532)

  • 3.10互換性のために、typed-astの最小バージョンを1.4.3に上げました。(#2519)

  • ループ引数は削除されているにもかかわらず、依然として渡されていたPython 3.10の互換性の問題を修正しました。(#2580)

  • Python 2のフォーマットサポートの非推奨化を行いました。(#2523)

Blackd

  • aiohttp-corsへの依存関係を削除しました。(#2500)

  • 必要なaiohttpのバージョンを3.7.4に上げました。(#2509)

Black-Primer

  • –projectsへのprimerサポートとテストを追加しました。(#2555)

  • 個々の失敗の後でprimerサマリーを出力するようになりました。(#2570)

統合

  • vimプラグインでtarget_versionを渡せるようにしました。(#1319)

  • Dockerファイルにビルドツールをインストールし、マルチステージビルドを使用してイメージサイズを小さくしました。(#2582)

21.9b0

パッケージング

  • 自己完結型バイナリでモジュールが不足していた問題を修正しました。(#2466)

  • インストール時に使用されていたtomlエクストラが不足していた問題を修正しました。(#2475)

21.8b0

Black

  • Jupyter Notebookファイルのフォーマットサポートを追加しました。(#2357)

  • appdirs依存関係からplatformdirsに移行しました。(#2375)

  • .gitignoreが無効な場合、よりユーザーフレンドリーなエラーを表示するようになりました。(#2414)

  • f文字列式に誤って追加されたバックスラッシュに対するフェールセーフを強化し、引用符の正規化中に発生する可能性のあるより多くのエッジケースを処理できるようにしました。(#2437)

  • 末尾のカンマを追加することで、関数の戻り値の型アノテーションの型をタプルに変更しないようにしました。(#2384)

  • 集合リテラル、集合内包表記、インデックスにおいて、括弧なしのwalrus演算子に対する構文解析サポートを追加しました。(#2447).

  • ビルド時の依存関係であるsetuptools-scmのバージョンを固定しました。(#2457)

  • Python 3.10で問題が発生するため、typing-extensionsバージョン3.10.0.1を除外しました。(#2460)

Blackd

  • インストール済みパッケージをスキャンするツールとの互換性を高めるため、sys.exit(-1)raise ImportErrorに置き換えました。(#2440)

統合

  • 提供されているpre-commitフックは、default_language_versionを上書きしないようにlanguage_versionを指定しなくなりました。(#2430)

21.7b0

Black

  • spec v0.5.0より上位のTOML機能を使用する設定ファイルがサポートされるようになりました。(#2301)

  • STDINを介してblackにパイプされたコードに対するprimerサポートとテストを追加しました。(#2315)

  • FORCE_OPTIONAL_PARENTHESES機能が有効になっている場合の内部エラーを修正しました。(#2332)

  • 空のstdinを受け入れるようになりました。(#2346)

  • AST安全チェック中の構文解析エラー発生時に、より有益なエラーメッセージを表示するようになりました。(#2304)

Docker

  • Dockerイメージの最新のblackリリースをフォローするための新しいlatest_releaseタグの自動化を追加しました。(#2374)

統合

  • vim プラグインは、pyproject.toml の検索範囲を現在の作業ディレクトリから、現在のバッファを含むディレクトリに変更しました。(#1871

  • vim プラグインは、pyproject.toml 内の正しい文字列正規化オプションを読み取るようになりました。(#1869

  • vim プラグインは、pyproject.toml にブール値が含まれている場合でも、Black のクラッシュを引き起こさなくなりました。(#1869

21.6b0

Black

  • fmt: skip とインデントによるエラーを修正しました。(#2281

  • 文字列を分割するかどうかを判断する際に、+= 代入を考慮するようになりました。(#2312

  • 文字列演算子がある場合の最大文字列長の計算を修正しました。(#2292

  • --code フラグを使用する場合のオプションの使用を修正しました。(#2259

  • Black がライブラリとして使用されている場合、uvloop.install() を呼び出さなくなりました。(#2303

  • 特定のバージョンの実行を要求するための --required-version オプションを追加しました。(#2300

  • 文字列グループに疑似 f-文字列が含まれている場合の、カスタムブレークポイントインデックスの誤りを修正しました。(#2311

  • docstring で `R` プレフィックスが小文字になる回帰を修正しました。(#2285

  • --experimental-string-processing が使用されている場合の、名前付きエスケープ(\N{...})の処理を修正しました。(#2319

統合

  • 公式 Black アクションは、使用するバージョンを選択できるようになり、主要な 3 つの OS をサポートするようになりました。(#1940

21.5b2

Black

  • 空の docstring にスペースが挿入されなくなりました。(#2249

  • Windows で非 ASCII 文字を含む .gitignore ファイルの処理を修正しました。(#2229

  • ルートの `root/.gitignore` ファイルだけでなく、すべてのレベルで `.gitignore` ファイルを尊重するようになりました(`git` と同様に `.gitignore` ルールを適用します)。(#2225

  • LANG=C が使用されている場合の Python 3.6 での Click 8.0 との互換性を復元しました。(#2227

  • Python 環境内にある場合に追加の uvloop インストールとインポートサポートを追加しました。(#2258

  • 対応する括弧が見つからない場合の `--experimental-string-processing` のクラッシュを修正しました。(#2283

  • 文字列演算子で始まる行を確実に分割するようになりました。(#2286

  • Black が f 式を識別するために使用する正規表現を修正しました。(#2287

Blackd

  • `aiohttp-cors` 依存関係の下限を追加しました。0.4.0 以上のみサポートされます。(#2231

パッケージング

  • GitHub リリースパイプラインの一部として、自己完結型の x86_64 MacOS バイナリをリリースするようになりました。(#2198

  • 常に最新の Python でバイナリをビルドするようになりました。(#2260

ドキュメント

  • FAQ ページにマジックコメントに関する説明を追加しました。(#2272

  • --experimental-string-processing は、今後デフォルトで有効になります。(#2273

  • codespell で検出されたタイプミスを修正しました。(#2228

  • Vim プラグインのインストール手順を修正しました。(#2235

  • 新しいよくある質問(FAQ)ページを追加しました。(#2247

  • Windows での適切なビルドを妨げていたエンコーディングとシンボリックリンクの問題を修正しました。(#2262

21.5b1

Black

  • src/black/__init__.py を複数のファイルにリファクタリングしました。(#2206

ドキュメント

  • master ブランチの参照をすべて main ブランチに置き換えました。ソースコードにもいくつかの変更が加えられました。(#2210

  • ドキュメントを大幅に再構成して、より理解しやすくなりました。RTD の安定版ドキュメントをご覧ください。(#2174

21.5b0

Black

  • --stdin-filename.pyi で終わる場合、--pyi モードを設定するようになりました。(#2169

  • 引数なしで呼び出されている PEP 614 以前のデコレータを持つ Python 3.9 以降のターゲットバージョン検出を停止しました。(#2182

Black-Primer

  • フォーマットの変更を抑制するために、black-primer に --no-diff を追加しました。(#2187

21.4b2

Black

  • ユーザー設定ディレクトリにアクセスできない場合のクラッシュを修正しました。(#2158

  • Black が AST を変更する可能性のある状況を明確化しました。(#2159

  • コマンドラインまたは `pyproject.toml` で `exclude` を指定することで、`.gitignore` ルールを上書きできるようにしました。(#2170

パッケージング

  • Black と共に `primer.json`(`black-primer` でデフォルトで使用)をインストールするようになりました。(#2154

21.4b1

Black

  • 「\ 」で終わる docstring でのクラッシュを修正しました。(#2142

  • docstring から特殊な空白文字が削除された場合のクラッシュを修正しました。(#2120

  • キャッシュファイル名に --skip-magic-trailing-comma--experimental-string-processing フラグを反映させました。この修正がないと、これらのフラグの変更は、キャッシュが既に作成されている場合に有効になりません。(#2131

  • assert/return 文を含む代入式から、必要な括弧を削除しなくなりました。(#2143

パッケージング

  • 無効な .gitignore 除外処理を解決するために、pathspec を >= 0.8.1 に上げました。

21.4b0

Black

  • Black が挿入したオプションの末尾のカンマと、既存の「マジック」末尾のカンマを見るオプションの括弧の組み合わせによって作成された、まれではあるものの煩わしいフォーマットの不安定性を修正しました。これにより、#1629 とその多くの重複する問題が修正されました。(#2126

  • Black は、1 行の docstring を先頭と末尾のスペースを削除して処理し、必要に応じてパディングスペースを追加して「"""」を分割するようになりました。(#1740

  • Black は、コメントの先頭の改行しないスペースを削除するようになりました。(#2092

  • Black は、複数行の docstring の引用符を正規化する際に、--skip-string-normalization を尊重するようになりました。(#1637

  • Black は、型スタブのフォーマット時に、非関数コードとデコレータの間のすべての空行を削除しなくなりました。現在、Black は 1 つの空行を強制します。(#1646

  • Black は、if/while 文で、括弧で囲まれた代入式の後に誤ったスペースを追加しなくなりました。(#1655

  • --skip-magic-trailing-comma / -C を追加しました。これにより、行を分割する理由として末尾のカンマを使用しないようにします。(#1824

  • POSIX で PWD=/ の場合のクラッシュを修正しました。(#1631

  • --diff を使用した場合の「閉じたファイルに対する I/O 操作」を修正しました。(#1664

  • 複数のファイルでカラー付きの diff 出力が混在するのを防ぎました。(#1673

  • Python 3.9 での PEP 614 の緩やかなデコレータ構文のサポートを追加しました。(#1711

  • 注釈付き代入における、括弧なしのタプルと yield 式の構文解析サポートを追加しました。(#1835

  • --extend-exclude 引数を追加しました(PR #2005

  • pathlib を使用しないことでキャッシュの速度を向上させました。(#1950

  • ファイルが改行で終わっていない場合、--diff が正しくそれを示すようになりました (#1662)

  • --stdin-filename 引数を追加しました。これにより、標準入力でも --force-exclude ルールが尊重されるようになります (#1780)

  • fmt: skip で終わる行は、フォーマットされなくなります (#1800)

  • PR #2053: Black は、Python 3.8 以降では typed-ast に依存しなくなりました。

  • PR #2053: Python 2 のサポートはオプションになりました。サポートを維持するには、python3 -m pip install black[python2] を使用してインストールしてください。

  • venv ディレクトリがデフォルトで除外されるようになりました (#1683)

  • Python 2 のdocstringをフォーマットする際、「Black が生成したコードがソースコードと等価ではありません」という問題を修正しました (#2037)

パッケージング

  • 独立したネイティブな *Black* バイナリが、GitHub Releases を通じてリリースされるようになりました (#1743)

20.8b1

パッケージング

  • Black は 7.0 より前のバージョンでは動作しなくなったため、Click 7.1.2 以降に明示的に依存するようにしました。

20.8b0

Black

  • 明示的な末尾カンマのサポートを再実装しました。これにより、ネストされた構造を含む任意の括弧のペア内で一貫して動作するようになりました (#1288 および重複)

  • Black は、周囲のコードをインデントし直す際に、docstring もインデントし直すようになりました (#1053)

  • Black は、カラー付きの差分を表示するようになりました (#1266)

  • Black は、'py3' タグ付きホイールを使用してパッケージ化されるようになりました (#1388)

  • Black は、Python 3.8 コード(例:return 文におけるスター式)をサポートするようになりました (#1121)

  • Black は、コミュニティで受け入れられている意味を持つため、大文字のR文字列プレフィックスを正規化しなくなりました (#1244)

  • Black は、指定された設定ファイルが存在しない場合、終了コード 2 を返すようになりました (#1361)

  • Black は、AWS Lambda で動作するようになりました (#1141)

  • --force-exclude 引数を追加しました (#1032)

  • 非推奨になった --py36 オプションを削除しました (#1236)

  • EOF が検出された場合の --diff 出力を修正しました (#526)

  • デコレータ周辺の # fmt: off の処理を修正しました (#560)

  • 一部の # type: ignore コメントにおける不安定なフォーマットを修正しました (#1113)

  • ブラケットの整理後にインデックスが続く場合の無効な削除を修正しました (#1575)

  • black-primer を導入しました。これは、Black の既存のオープンソースユーザーに対して回帰テストを実行できる CI ツールです (#1402)

  • Hypothesis と Hypothersmith に基づいたプロパティベースのファジングをテストスイートに導入しました (#1566)

  • 実験的な(デフォルトでは無効)長い文字列の折り返しを実装しました (#1132)。これは --experimental-string-processing フラグの下に隠されており、開発中です。これは文書化されていない、サポートされていない機能であり、これを使用するとインターネットポイントを失います (#1609)

Vim プラグイン

  • グローバルパッケージよりも virtualenv パッケージを優先するようになりました (#1383)

19.10b0

  • PEP 572 代入式へのサポートを追加しました (#711)

  • PEP 570 位置のみの引数へのサポートを追加しました (#943)

  • 非同期ジェネレータへのサポートを追加しました (#593)

  • 明示的な末尾カンマを内部に配置することで、コレクションの事前分割をサポートしました (#826)

  • black -c をコマンドラインから渡されたコードをフォーマットする方法として追加しました (#761)

  • –safe は Python 2 コードでも動作するようになりました (#840)

  • Python 2 特有のコードの文法選択を修正しました (#765)

  • 関数定義と呼び出し箇所における末尾カンマの機能検出を修正しました (#763)

  • # fmt: off/# fmt: on コメントペアが同じコードブロック内に複数回配置されている場合でも、正しく動作するようになりました (#1005)

  • 61 個以上のコアを持つ Windows マシンで *Black* がクラッシュしなくなりました (#838)

  • バックスラッシュで始まるスタンドアロンコメントで *Black* がクラッシュしなくなりました (#767)

  • コメントを含む fromimport ブロックで *Black* がクラッシュしなくなりました (#829)

  • 一部のプラットフォーム構成で Python 3.7 で *Black* がクラッシュしなくなりました (#494)

  • from-import 内のコメントで *Black* が失敗しなくなりました (#671)

  • ファイルがバックスラッシュで始まる場合でも *Black* が失敗しなくなりました (#922)

  • 通常のコメントと型コメントがマージされなくなりました (#1027)

  • 型コメントを含む長い行が分割されなくなりました (#997)

  • yield 式周りの不要な括弧を削除しました (#834)

  • アンパッキング代入における長いタプルに括弧を追加しました (#832)

  • 単項演算子が付加されている場合、複雑なべき乗に括弧を追加しました (#646)

  • 行の長さのターゲットが 1 の場合に *Black* が一部のコードをフォーマットしてしまうバグを修正しました (#762)

  • f-string 部分式で文字列の境界に引用符が追加されなくなりました (#863)

  • *Black* が単一の式に括弧を付ける場合、コメントは括弧の後ではなく、ラップされた式に移動されるようになりました (#872)

  • blackd は、レスポンスヘッダーに *Black* のバージョンを返すようになりました (#1013)

  • blackd は、X-Diff ヘッダーが提供されている場合、ソースコードのフォーマット差分を出力できるようになりました (#969)

19.3b0

  • *Black* でフォーマットされたコードがターゲットとする Python バージョンを制御するための新しいオプション --target-version を追加しました (#618)

  • --py36 は非推奨になりました(代わりに --target-version=py36 を使用してください)(#724)

  • *Black* は、数値リテラルから _ セパレータを正規化しなくなりました (#696)

  • 長い del 文は、複数行に分割されるようになりました (#698)

  • 型コメントが関数シグネチャで変更されなくなりました。

  • 深くネストされたデータ構造のフォーマットのパフォーマンスを向上させました (#509)

  • *Black* は、Windows で複数のファイルを並列に正しくフォーマットするようになりました (#632)

  • *Black* は、キャッシュファイルをアトミックに作成するようになりました。これにより、並列パイプライン(xargs -P8 など)で使用できるようになりました (#673)

  • *Black* は、タブでフォーマットされたファイルのコメントを正しくインデントするようになりました (#262)

  • blackd は、CORS をサポートするようになりました (#622)

18.9b0

  • 数値リテラルは *Black* によってフォーマットされるようになりました (#452, #461, #464, #469)

    • Python 3.6 以降のコードでは、数値リテラルが _ セパレータを含むように正規化されます。

    • 上記の動作を無効にし、数値アンダースコアを入力時のままにするために --skip-numeric-underscore-normalization を追加しました。

    • 数値リテラルに _ が含まれるコードは、Python 3.6 以降として認識されます。

    • 数値リテラルのほとんどの文字は小文字になります(例:1e100x01

    • 16 進数の数字は大文字になります(例:0xBADC0DE

  • blackd を追加しました。詳細については、ドキュメント を参照してください (#349)

  • 隣接する文字列リテラルは、複数行に正しく分割されるようになりました (#463)

  • 1行に収まらない単一インポートに、末尾のカンマが追加されるようになりました(#250

  • --checkがファイルに対して成功した場合、キャッシュが作成されるようになりました。これにより、適切にフォーマットされた変更されていないファイルの連続したチェックが高速化されます(#448

  • ファイルの先頭の空白が削除されるようになりました(#399

  • pweaveSpyder IDEの特殊コメントの改変を修正しました(#532

  • 大きなタプルをアンパックする場合の不安定なフォーマットを修正しました(#267

  • 名前変更を含む__future__インポートの解析を修正しました(#389

  • # fmt: offのスコープを、yieldやその他のノードの直前にある場合に修正しました(#385

  • デフォルト引数を持つラムダ式のフォーマットを修正しました(#468

  • async for文を修正しました。Blackはこれらを別々の行に分割しなくなりました(#372

  • 注記:Vimプラグインは,=をデフォルトのコードとして登録しなくなりました。これは悪いアイデアであることが判明したためです(#415

18.6b4

  • ホットフィックス:複数のコメントが# fmt: offの直前にある場合にフリーズしないようにしました(#371

18.6b3

  • 型スタブファイル(.pyi)に、定数の後に空行が追加されるようになりました(#340

  • # fmt: off# fmt: onがはるかに信頼できるものになりました。

    • これらは、括弧のペア内でも機能するようになりました(#329

    • これらは、関数/クラスの境界を越えて正しく機能するようになりました(#335

    • インデントブロックが空行または位置合わせされていないコメントで始まる場合でも機能するようになりました(#334

  • 無効な環境でClickが失敗しないようにしました。Clickは正しいのですが、Pythonソースコードを扱う際に非ASCIIファイルパスにアクセスする必要性は低いでしょう(#277

  • 補間された式内に引用符が含まれるf文字列の不適切なフォーマットを修正しました(#322

  • ファイル内に長いリストリテラルがある場合の不要な遅延を修正しました。

  • 非常に多くの兄弟ノードを持つASTノードでの不要な遅延を修正しました。

  • 文字列の正規化中にバックスラッシュが消失する問題を修正しました。

  • プロジェクトディレクトリの外部を指すシンボリックリンクが原因でクラッシュする問題を修正しました(#338

18.6b2

  • --configを追加しました(#65

  • --helpに相当する-hを追加しました(#316

  • -Sが使用された場合の、変更されていないファイルのキャッシングの不適切な動作を修正しました。

  • 文字列アンパック時の余分なスペースを修正しました(#305

  • 空の三重引用符で囲まれた文字列のフォーマットを修正しました(#313

  • コメントがない行でのコメント配置計算における不要な遅延を修正しました。

18.6b1

  • ホットフィックス:stdoutにユーザー向けの情報を出力しないようにしました(#299

  • ホットフィックス:戻りコードがゼロ以外の場合にケーキの絵文字を出力しないようにしました(#300

18.6b0

  • --include--excludeを追加しました(#270

  • --skip-string-normalizationを追加しました(#118

  • --verboseを追加しました(#283

  • --diffのヘッダー出力は、統一diff仕様に準拠するようになりました。

  • 不要な括弧で囲まれた、長い単純な代入を修正しました(#273

  • 1行に複数行文字列が含まれる場合の不要な括弧を修正しました(#232

  • 古いバージョンのClickを使用した場合に、stdinの処理が正しく動作しない問題を修正しました(#276

  • Blackは、ファイルをその場でフォーマットする場合、改行コードを保持するようになりました(#258

18.5b1

  • --pyiを追加しました(#249

  • --py36を追加しました(#249

  • Python構文のピクルキャッシュは、フォーマットキャッシュと共に保存されるようになりました。これにより、site-packagesがユーザー書き込み可能ではない環境でもBlackが機能するようになります(#192

  • Blackは、クラスレベルのdocstring(および/またはフィールド)と最初のメソッドの後に、PEP 257に従って空行を強制するようになりました。

  • 非常に長い式で改行が省略されたトレーラーにスタンドアロンのコメントが存在する場合に、無効なコードが生成される問題を修正しました(#237

  • # fmt: offセクション内の省略可能な括弧が削除される問題を修正しました(#224

  • 非常に長いインポートで星印が省略可能な括弧で誤って囲まれた場合に、無効なコードが生成される問題を修正しました(#234

  • 非常に長い式で改行が省略されたトレーラーでインラインコメントが移動された場合の不安定なフォーマットを修正しました(#238

  • クラスのdocstringまたはフィールドがない場合、クラス宣言と最初のメソッドの間に余分な空行が追加される問題を修正しました(#219

  • 関数シグネチャと内部関数または内部クラスの間に余分な空行が追加される問題を修正しました(#196

18.5b0

  • 呼び出しチェーンは、fluent interfaceスタイルに従ってフォーマットされるようになりました(#67

  • データ構造リテラル(タプル、リスト、辞書、セット)は、1行に収まらない場合、インポートのように常に展開されるようになりました(#152

  • スライスはPEP 8に従ってフォーマットされるようになりました(#178

  • 代入文とreturn文の右辺でも括弧が自動的に管理されるようになりました(#140

  • 数学演算子は、複数行式の区切りにそれぞれの優先順位を使用するようになりました(#148

  • 括弧と単一の演算子のみを含む式では、省略可能な括弧が省略されるようになりました(#177

  • クラス定義内の空の括弧が削除されるようになりました(#145#180

  • 文字列プレフィックスは小文字に標準化され、uはPython 3.6以降のコードと、unicode_literalsfuture importを使用したPython 2.7以降のコードでのみ削除されるようになりました(#188#198#199

  • 型スタブファイル(.pyi)は、PEP 484と整合性のあるスタイルでフォーマットされるようになりました(#207#210

  • 多くのファイルを再フォーマットする場合の進捗状況が、段階的に報告されるようになりました。

  • インデント解除された閉じ括弧の後に、トレーラー(括弧付きの内容)が不要に独自の行に展開される問題を修正しました(#119

  • インポートに余分な末尾のカンマが残される問題を修正しました(#185

  • 複数の削除可能な括弧のペアが使用された場合の、非決定的なフォーマットを修正しました(#183

  • 長い代入で複数行文字列が不要に省略可能な括弧で囲まれる問題を修正しました(#215

  • 名前が1つだけの長いfrom-importを分割しない問題を修正しました。

  • アンパックを使用した関数呼び出しも調べることで、Python 3.6以降のファイル検出を修正しました。これにより、星印付きの関数シグネチャと星印付きの関数呼び出しの両方で末尾のカンマが使用されている場合の非決定的なフォーマットが修正されましたが、前者は1行に再フォーマットされます。

  • 省略可能な括弧を処理する際のクラッシュを修正しました(#193

  • 分割の目的で「is」、「is not」、「in」、「not in」が演算子として考慮されない問題を修正しました。

  • 壊れたシンボリックリンクが発生した際のクラッシュを修正しました。

18.4a4

  • --checkではキャッシュを作成しないようにしました(#175

18.4a3

  • 「キャッシュ」を追加しました。既に再フォーマットされており、ディスク上で変更されていないファイルは、再度再フォーマットされません(#109

  • --check--diffは、相互に排他的ではなくなりました(#149

  • 二重星を含む星印式の処理を一般化しました。これにより、乗算が式を末尾のカンマに対して「安全でない」ものにする問題が修正されました(#132

  • Blackは、制御フロー文の後に空行を配置することを強制しなくなりました(#90

  • Black は、isort の「Mode 3 + 末尾のカンマ」のようなインポートを分割するようになりました(#127

  • スタンドアロンのコメントがブロックを閉じている場合のコメントのインデントを修正しました(#16#32

  • クラス、def、またはデコレータの直前にあるスタンドアロンのコメントに余分な空行が追加されるのを修正しました(#56#154

  • --diff が完全なパスを表示しないのを修正しました(#130

  • 関数呼び出しにおける星印と二重星印の後の複雑な式の解析を修正しました(#2

  • ラムダ引数内のカンマでの不正な分割を修正しました(#133

  • 三項演算子の分割が不足しているのを修正しました(#141

18.4a2

  • 位置合わせされていないスタンドアロンコメントの解析を修正しました(#99#112

  • 辞書リテラル内の辞書アンパッキングの位置を修正しました(#111

  • Vim プラグインが Windows でも動作するようになりました。

  • 文字列内で不要なエスケープされた引用符に遭遇した場合の不安定なフォーマットを修正しました(#120

18.4a1

  • --quiet を追加しました(#78

  • 自動的な括弧の管理を追加しました(#4

  • pre-commit 統合を追加しました(#103#104

  • 複数のファイルを使用する --check のレポートを修正しました(#101#102

  • raw 文字列からバックスラッシュエスケープを削除するのを修正しました(#100#105

18.4a0

  • --diff を追加しました(#87

  • カンマのような場合を除き、すべてのデリミタの前に改行を追加して、PEP 8 により準拠するようにしました(#73

  • 文字列リテラルをほぼすべて二重引用符で標準化しました(#75

  • ネストされた括弧付き式内のスタンドアロンコメントの処理を修正しました。Black は、非常に長い行を生成したり、すべてのスタンドアロンコメントを式の最後に配置したりしなくなりました(#22

  • 18.3a4 の回帰を修正:末尾に空白のある空行でクラッシュしなくなりました(#80

  • 18.3a4 の回帰を修正:末尾のコメントとして # yapf: disable を使用すると、Black がファイルの残りの部分を生成しなくなる問題を修正しました(#95

  • 多くのファイルをフォーマット中に CTRL+C を押すと、Black は asyncio 関連の例外の大量発生でクラッシュしなくなりました。

  • モジュールレベルでは最大 2 つの空行のみ、関数内では単一の空行のみを許可するようになりました(#74

18.3a4

  • # fmt: off# fmt: on が実装されました(#5

  • フォーマットされたファイル内の非推奨の Python 2 の print 文と exec 文の自動検出を追加しました(#49

  • 型付き関数引数のデフォルト値の複雑な式に適切なスペースを使用するようになりました(#60

  • –check を使用した場合にのみ、終了コード 1 を返すようにしました(#50

  • 角括弧インデックス付けから末尾のカンマを単独で削除しなくなりました(#59

  • 前の因子が算術演算子でない場合、空白を省略しなくなりました(#55

  • それが最初の引数の場合、キーワード引数アンパッキングで余分なスペースを省略するようになりました(#46

  • Sphinx auto-attribute コメント で余分なスペースを省略するようになりました(#68

18.3a3

  • 括弧付き式以外の単一の空行を削除しなくなりました(#19

  • 標準入力から標準入力へのフォーマットをパイプで接続する機能を追加しました(#25

  • async を名前として従来どおりに使用したコードのフォーマット機能を復元しました(#20#42

  • NumPy スタイルの配列インデックス付けの処理をさらに改善しました(#33、再)

18.3a2

  • PEP 8 の最近の変更 に従って、二項演算子の位置を行末ではなく行頭に変更しました(#21

  • 分割中に空の括弧のペアを無視するようになりました。これにより、非常に奇妙に見えるフォーマットが回避されます(#34#35

  • 呼び出しに引数が1つしかない場合、末尾のカンマを削除します。

  • 最上位の関数がコメントで区切られていた場合、上位の関数の後に4つの空行を入れません。

  • インポート時の改行の不安定なフォーマットを修正しました。

  • それが単純なステートメントだった場合、post scriptum スタンドアロンコメントが最後のステートメントに誤って折り畳まれるのを修正しました(#18#28

  • NumPy スタイルの配列インデックス付けにおけるスペースの欠落を修正しました(#33

  • 星印ベースの一項式の後にある余分なスペースを修正しました(#31

18.3a1

  • --check を追加しました。

  • 関数シグネチャと呼び出しで末尾のカンマを安全な場合にのみ配置するようになりました。ファイルが Python 3.6 以上の場合、常に安全です。それ以外の場合は、シグネチャまたは呼び出しで *args または **kwargs が使用されていない場合にのみ安全です。(#8

  • 相対インポートにおけるドットの間隔の誤りを修正しました(#6#13

  • for ループ内の展開された変数に関するカンマの後での不正な分割を修正しました(#23

  • 括弧で囲まれた集合式内の余分なスペースを修正しました(#7

  • 開き括弧の後とデフォルト引数内の余分なスペースを修正しました(#14#17

  • 被演算子が複雑な式である場合の一項演算子の後の余分なスペースを修正しました(#15

18.3a0

  • 最初の公開バージョン、Happy 🍰 Day 2018!

  • アルファ品質

  • 日付バージョン(参照:https://calver.org/