変更ログ¶
24.8.0¶
安定版スタイル¶
# fmt: off
が閉じ括弧または閉じ角括弧の前に使用されている場合のクラッシュを修正しました。(#4363)
パッケージング¶
パッケージングメタデータの更新:ドキュメントが明示的にリンクされ、問題トラッカーもリンクされるようになりました。これにより、BlackのPyPIリストが改善されました。(#4345)
パーサー¶
パフォーマンス¶
.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)
プレビュースタイル¶
統合¶
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文字列に対して不正確な変更を行うことができました。
安定版スタイル¶
パフォーマンス¶
大量の先頭タブ文字を含むdocstringのパフォーマンスの低下を修正しました。これによりCVE-2024-21503が修正されました。(#4278)
ドキュメント¶
--check
が--quiet
と共に使用された場合の動作について記述しました(#4236)
24.2.0¶
安定版スタイル¶
冗長な括弧と共にコメントが誤って削除されたバグを修正しました(#4218)
プレビュースタイル¶
設定¶
出力¶
等価性チェックの実行時に
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)
長い型アノテーションを括弧で囲むようにしました(#3899)
戻り値の型における不正なマジック末尾カンマ処理を修正しました(#3916)
クラスdocstringの前にある空行を削除しました(#3692)
単一の
with
文で複数のコンテキストマネージャーを組み合わせる場合、括弧で囲みます(#3489)べき乗演算における行長計算のバグを修正しました(#3942)
最後のエントリの後にコメントがある場合でも、コレクションリテラルに末尾カンマを追加します(#3393)
--skip-magic-trailing-comma
または-C
を使用する場合、要素が2つ以上ある添字式から末尾カンマが削除されます(#3209)raw文字列をdocstringとして受け入れます(#3947)
caseブロック内の長い行を分割します(#4024)
添字内のwalrus演算子からスペースを削除するのをやめました(#3823)
特定の非同期ステートメントのフォーマットが間違っていたのを修正しました(#3609)
# fmt: skip
を他のコメントと組み合わせられるようにしました(#3959)
--preview
スタイルにはすでにいくつかの改良が加えられており、2025年の安定版スタイルに予定されています。それらを試して、フィードバックを共有してください。過去には、プレビュースタイルには安定化できなかった機能が含まれていました。今年は、既知の問題のある機能のために、別個の--unstable
スタイルを追加しています。これで、--preview
スタイルには、実際に来年の安定版スタイルに含めることを期待している機能のみが含まれるようになりました。
安定版スタイル¶
このリリースでは、安定版スタイルに移行された機能にいくつかのバグ修正が行われました。
プレビュースタイル¶
既知の問題があり、安定版スタイルへの移行を妨げるプレビュー機能を網羅した
--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)
設定¶
統合¶
23.12.1¶
パッケージング¶
デフォルトで
d
エクストラからの依存関係が含まれていたバグを修正しました(#4108)
23.12.0¶
ハイライト¶
2024年が近づいてきました。つまり、Blackの安定版スタイルの新しいエディションが登場する時期です!このリリースと同時に、2024年安定版スタイルのドラフトを示すアルファリリース24.1a1をリリースします。これは1月のリリースで最終決定されます。ぜひお試しいただき、フィードバックを共有してください。
このリリース(23.12.0)では、依然として2023年スタイルが生成されます。--preview
モードの変更のほとんど(すべてではありません)は、2024年安定版スタイルになります。
安定版スタイル¶
プレビュースタイル¶
設定¶
--line-ranges
は、--safe
モードでBlackの内部安定性チェックをスキップするようになりました。これにより、多くのフォーマットされていない同じコンテンツの行があるまれな入力でのクラッシュが回避されます。(#4034)
パッケージング¶
統合¶
23.11.0¶
ハイライト¶
新しい
--line-ranges
コマンドラインオプションを使用して、行範囲のフォーマットをサポートしました(#4020)
安定版スタイル¶
プレビュースタイル¶
関数の唯一の引数である複数行の辞書とリストのインデントを少なくしました(#3964)
関数の唯一の引数である複数行のアンパックされた辞書とリストのインデントも少なくしました(#3992)
f文字列デバッグ式では、最終文字列に表示される引用符の種類が保持されるようになりました(#4005)
長い
case
ブロックが複数行に分割されないバグを修正しました。case
ブロックで一般的な末尾カンマルールも有効にしました(#4024)モジュールレベルのdocstringと最初の関数またはクラス定義の間に2つの空行を必要とするようにしました(#4028)
同じ行にある他のコメントとの単一行フォーマットスキップをサポートしました(#3959)
設定¶
パフォーマンス¶
macOSのarm64でのmypycビルドを修正しました(#4017)
統合¶
Blackのpre-commit統合は、コードフォーマッタに適したgitフックでのみ実行されるようになりました(#3940)
23.10.1¶
ハイライト¶
GitHub Actionsの特殊なケースに対する修正をリリースしました(#3957)
プレビュースタイル¶
パッケージング¶
Dockerfileをhatch + Blackのコンパイルに変更しました(#3965)
統合¶
ドキュメント¶
WindowsドキュメントCIが壊れていることが分かっています。https://github.com/psf/black/issues/3968
23.10.0¶
安定版スタイル¶
括弧で囲まれた文字列の中からコメントが削除されるバグを修正しました(#3909)
プレビュースタイル¶
設定¶
BLACK_CACHE_DIR
が設定されている場合のキャッシュのバージョン管理ロジックを修正しました(#3937)
パーサー¶
出力¶
統合¶
ジョブサマリーに表示されるアクション出力は、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¶
プレビュースタイル¶
設定¶
Blackは、シンボリックリンクを解決する前に、除外と無視のロジックを適用するようになりました(#3846)
パフォーマンス¶
Blackd¶
blackd
における1文字の入力に関する問題を修正しました(#3558)
統合¶
Blackに公式のpre-commitミラーができました。
.pre-commit-config.yaml
内のhttps://github.com/psf/black
をhttps://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)
安定版スタイル¶
プレビュースタイル¶
設定¶
Blackの
--workers
引数は、BLACK_NUM_WORKERS
環境変数で指定できるようになりました(#3743).pytest_cache
、.ruff_cache
、および.vscode
は、デフォルトで除外されるようになりました(#3691)--stdin-filename
を実行し、検出されたpyproject.toml
が現在の作業ディレクトリにない場合、Blackはpyproject.toml
の設定を尊重しなくなっていたバグを修正しました(#3719)pyproject.toml
でexclude
とextend-exclude
に無効なデータ型があると、Blackは間違ったことを黙って行うのではなく、エラーを返すようになりました(#3764)
パッケージング¶
パーサー¶
Python 3.12で新しいPEP 695構文のサポートを追加しました(#3703)
パフォーマンス¶
出力¶
Blackd¶
blackd
の引数パーサーは、ヘルプテキストにオプションのデフォルト値を表示するようになりました(#3712)
統合¶
Blackは、
PYTHONWARNDEFAULTENCODING = 1
でテストされるようになりました(#3763)ジョブサマリーにBlackの出力を表示するようにGitHub Actionsを更新しました(#3688)
ドキュメント¶
23.3.0¶
ハイライト¶
このリリースでは、BlackのGitHubアクションにおける長年の曖昧な動作を修正しました。この動作では、アクションのバージョンが実行されるBlackのバージョンを決定していませんでした(問題点 #3382)。さらに、インポートに関する小さなバグ修正と、プレビュースタイルのいくつかの改善が含まれています。
プレビュースタイルをblack --preview
で試して、フィードバックをお寄せください。プレビュースタイルのすべての変更は、2024年1月にBlackの安定版スタイルの一部になる予定です。
安定版スタイル¶
# fmt: skip
と# fmt: off
を含むインポート行には、別のインポート行の直後にある場合、余分な空行が追加されなくなりました(#3610)。
プレビュースタイル¶
最後のエントリの後にコメントがある場合でも、コレクションリテラルに末尾カンマを追加します(#3393)
async def
、async for
、およびasync with
文は、非同期バージョンと比較して、一貫してフォーマットされるようになりました。(#3609)2つのコンテキストマネージャーを含む
with
文は、一貫して括弧で囲まれるようになりました(#3589)。長い文字列リテラルは、スペースの前だけでなく、東アジアのカンマとピリオド(
、
U+3001 全角カンマ、。
U+3002 全角ピリオド、および,
U+FF0C 半角カンマ)の後でも分割できるようになりました(#3445)。スタブでは、
...
以外の本体を持つネストされたクラスの後に、1つの空行を強制します(#3564)。行分割動作を変更することにより、複数行文字列の処理を改善しました(#1879)。
パーサー¶
無効な型コメントを含むファイルのフォーマットをサポートしました(#3594)。
統合¶
ドキュメント¶
セキュリティ上の問題に対しては、最新のリリースのみがサポートされていることを記述しました。脆弱性は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)。
出力¶
統合¶
ドキュメント¶
vim-plug
のインストール手順を拡張し、より明確なオプションを提供しました (#3468)。
22.12.0¶
プレビュースタイル¶
設定¶
パーサー¶
関数引数として渡されるジェネレーター式内の 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)。
設定¶
パッケージング¶
Blackd¶
Windows スタイル (CRLF) の改行が保持されるようになりました (#3257)。
統合¶
22.8.0¶
ハイライト¶
安定版スタイル¶
プレビュースタイル¶
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)。
設定¶
ドキュメント¶
IntelliJ IDE で BlackConnect を使用することを推奨しました (#3150)。
統合¶
出力¶
パーサー¶
型コメントは、AST 同等性チェックに一貫して含まれるようになりました。そのため、意図しない削除はエラーとして報告されます。ただし、標準ライブラリの制限により、PyPy 3.7 で実行する場合は型コメントを追跡できません (#2874)。
パフォーマンス¶
単一ファイルのフォーマット時のBlackの起動時間を15~30%短縮しました(#3211)
22.6.0¶
スタイル¶
#fmt: skip
と# fmt:skip
コメント(スペースがないことに注意)を含む不安定なフォーマットを修正しました(#2970)
スタイルのプレビュー¶
統合¶
GitプロジェクトへのBlackの導入を容易にするため、
scripts/migrate-black.py
スクリプトを追加しました(#3038)
出力¶
--version
フラグの一部として、Pythonのバージョンと実装を出力するようになりました(#2997)
パッケージング¶
Python 3.11ビルドで
tomllib
が利用できない場合、tomllib
の代わりにtomli
を使用するようになりました(#2987)
パーサー¶
Vimプラグイン¶
strtobool
関数を修正しました。true/on/false/offを正しく解析していませんでした(#3025)
22.3.0¶
スタイルのプレビュー¶
設定¶
ドキュメント¶
pylintの設定ドキュメントを更新しました(#2931)
統合¶
Vim/Neovimでプラグインを無効にするテストを移動しました。これにより、読み込み速度が向上します(#2896)
出力¶
詳細モードでは、Blackがユーザーレベルの設定を使用している場合にログを出力するようになりました(#2861)
パッケージング¶
パーサー¶
Blackは、
for
文とasync for
文のターゲットにおける星印付き式(例:for item in *items_1, *items_2: pass
)を解析できるようになりました(#2879)。
22.1.0¶
ついに、Blackはベータ版ではなくなりました!これは最初の非ベータ版リリースであり、新しい安定性ポリシーの対象となる最初のリリースです。
ハイライト¶
スタイル¶
--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)return
とyield
構成要素のタプルアンパッキングは、3.8以降を意味するようになりました(#2700)アノテーション付き代入における括弧なしのタプル(例:
values: Tuple[int, ...] = 1, 2, 3
)は、3.8以降を意味するようになりました(#2708)末尾の改行または括弧内のコメントがある場合の、スタンドアロンの
match()
またはcase()
の処理を修正しました(#2760)from __future__ import annotations
文は、Python 3.7以降を意味するようになりました(#2690)
パフォーマンス¶
設定¶
pyproject.tomlで、単独のキャリッジリターン改行を許容しなくなりました(#2408)
Jupyter Notebookでカスタムマジックを持つセルをフォーマットするための設定オプション(
python-cell-magics
)を追加しました(#2744)環境変数
BLACK_CACHE_DIR
を使用して、すべてのプラットフォームでカスタムキャッシュディレクトリを設定できるようになりました(#2739)。Python 3.10以降をデフォルトで有効化し、
--target-version=py310
を指定する必要性を排除しました。(#2758)SRC
または--code
のいずれかの指定を必須とし、両者の同時指定を排他としました。(#2804)
出力¶
パッケージング¶
統合¶
コンテナ化された実行をサポートするようにGitHubアクションを更新しました。(#2748)
ドキュメント¶
21.12b0¶
Black¶
f文字列式の範囲の決定を修正しました。(#2654)
複数行ステートメントにおけるEOFに関するエラーメッセージのフォーマットのバグを修正しました。(#2343)
ブロック内の関数とクラスの周囲のスペースを一貫性のあるものにしました。(#2472)
Jupyter Notebookサポート¶
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)
パッケージング¶
21.11b1¶
Black¶
Patternクラスの使用を修正するために、regexの最小バージョンを2021.4.4に上げました。(#2621)
21.11b0¶
Black¶
統合¶
21.10b0¶
Black¶
Blackd¶
Black-Primer¶
統合¶
21.9b0¶
パッケージング¶
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¶
Docker¶
Dockerイメージの最新のblackリリースをフォローするための新しい
latest_release
タグの自動化を追加しました。(#2374)
統合¶
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)
パッケージング¶
ドキュメント¶
21.5b1¶
Black¶
src/black/__init__.py
を複数のファイルにリファクタリングしました。(#2206)
ドキュメント¶
master
ブランチの参照をすべてmain
ブランチに置き換えました。ソースコードにもいくつかの変更が加えられました。(#2210)ドキュメントを大幅に再構成して、より理解しやすくなりました。RTD の安定版ドキュメントをご覧ください。(#2174)
21.5b0¶
Black¶
Black-Primer¶
フォーマットの変更を抑制するために、black-primer に
--no-diff
を追加しました。(#2187)
21.4b2¶
Black¶
パッケージング¶
Black と共に `primer.json`(`black-primer` でデフォルトで使用)をインストールするようになりました。(#2154)
21.4b1¶
Black¶
パッケージング¶
無効な .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)
コメントを含む
from
…import
ブロックで *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 以降として認識されます。数値リテラルのほとんどの文字は小文字になります(例:
1e10
、0x01
)16 進数の数字は大文字になります(例:
0xBADC0DE
)
隣接する文字列リテラルは、複数行に正しく分割されるようになりました (#463)
1行に収まらない単一インポートに、末尾のカンマが追加されるようになりました(#250)
--check
がファイルに対して成功した場合、キャッシュが作成されるようになりました。これにより、適切にフォーマットされた変更されていないファイルの連続したチェックが高速化されます(#448)ファイルの先頭の空白が削除されるようになりました(#399)
pweaveとSpyder 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
がはるかに信頼できるものになりました。無効な環境でClickが失敗しないようにしました。Clickは正しいのですが、Pythonソースコードを扱う際に非ASCIIファイルパスにアクセスする必要性は低いでしょう(#277)
補間された式内に引用符が含まれるf文字列の不適切なフォーマットを修正しました(#322)
ファイル内に長いリストリテラルがある場合の不要な遅延を修正しました。
非常に多くの兄弟ノードを持つASTノードでの不要な遅延を修正しました。
文字列の正規化中にバックスラッシュが消失する問題を修正しました。
プロジェクトディレクトリの外部を指すシンボリックリンクが原因でクラッシュする問題を修正しました(#338)
18.6b2¶
18.6b1¶
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)
文字列プレフィックスは小文字に標準化され、
u
はPython 3.6以降のコードと、unicode_literals
future 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)
クラス、def、またはデコレータの直前にあるスタンドアロンのコメントに余分な空行が追加されるのを修正しました(#56、#154)
--diff
が完全なパスを表示しないのを修正しました(#130)関数呼び出しにおける星印と二重星印の後の複雑な式の解析を修正しました(#2)
ラムダ引数内のカンマでの不正な分割を修正しました(#133)
三項演算子の分割が不足しているのを修正しました(#141)
18.4a2¶
18.4a1¶
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¶
18.3a2¶
PEP 8 の最近の変更 に従って、二項演算子の位置を行末ではなく行頭に変更しました(#21)
分割中に空の括弧のペアを無視するようになりました。これにより、非常に奇妙に見えるフォーマットが回避されます(#34、#35)
呼び出しに引数が1つしかない場合、末尾のカンマを削除します。
最上位の関数がコメントで区切られていた場合、上位の関数の後に4つの空行を入れません。
インポート時の改行の不安定なフォーマットを修正しました。
それが単純なステートメントだった場合、post scriptum スタンドアロンコメントが最後のステートメントに誤って折り畳まれるのを修正しました(#18、#28)
NumPy スタイルの配列インデックス付けにおけるスペースの欠落を修正しました(#33)
星印ベースの一項式の後にある余分なスペースを修正しました(#31)
18.3a1¶
18.3a0¶
最初の公開バージョン、Happy 🍰 Day 2018!
アルファ品質
日付バージョン(参照:https://calver.org/)