このツールは、貼り付けた内容に対して、ほとんどのPythonプロジェクトが既に合意しているフォーマッタであるBlackを実行します。選んだ行の長さと引用符の扱いに従います。ファイルが解析できない場合はどの行かを伝え、すでに整形済みであればそれも何かをしたふりをせずに伝えます。
Pythonの整形には、それを実行する必要はありません。コードは構文木に解析され、完全にメモリ上でその木から書き直されます - ファイルに書き込まれることも、インポートされることも、実行されることも一切ありません。貼り付けた内容を実行するフォーマッタがあれば、それはテキストボックス付きのリモートシェルにほかなりません。
BlackはASTを保持する変換です。出て行くコードは入ってきたコードと同じプログラムです。この性質こそが、フォーマッタを信頼できる唯一の理由であり、このツールのどの部分にも言語モデルが関与していない理由です。コードの整理を頼まれたモデルは、作業の最中にたまたま行を書き換えてしまうことがあり、動作しているコードへの無言の変更は、フォーマッタが決して許容できない唯一の失敗です。
CIが問うのと同じ質問です。このファイルは変更されるのか? チェックモードは元のコードをそのまま返し、Blackが再整形するかどうか、そして何行になるかを報告します。ローカルで再現できないファイルでパイプラインが失敗する理由を手早く知る方法です。
最後の要素の後ろのカンマは、呼び出しやコレクションを 1 行に 1 要素のまま保つよう Black に伝えます。result = compute(alpha, beta,) は 4 行になり、alpha, と beta, がそれぞれ別の行に置かれます。マジック末尾カンマを無視にチェックを入れると、同じ入力は行の長さに収まる限り result = compute(alpha, beta) になります。行列のように手で揃えたブロックを守るには、その上の行に # fmt: off、下に # fmt: on を書きます。Black はその間を書いたとおりに残します。行末の # fmt: skip はその 1 行だけを守ります。どれも Black 自身のコメントなので、プロジェクトの CI が Black を実行するときにも効きます。
サーバーに送られ、メモリ上で整形され、同じレスポンスで返されます。ディスクへの書き込み、キャッシュ、ログへの記録は一切なく、利用記録に残るのはサイズや選んだオプション、変更された行数といった件数のみで、コードそのものは決して残りません。
いいえ。Blackが変えるのはレイアウトで、動作ではありません。ただし空白を動かすだけではありません。冗長な括弧を外し(x = (1) は x = 1 に)、数値の接頭辞と指数を小文字にし(0XABCDEF は 0xABCDEF、1E5 は 1e5 に)、呼び出しを複数行に分けるときは末尾にカンマを足し、連続する空行を減らし、docstring 内側の空白を削ります(""" Doc. """ は """Doc.""" に)。最後の変更は __doc__ の文字列を変えるため、コードが自分の docstring を読む場合にだけ影響します。
選んだ行の長さで、すでに整形済みだったからです。このツールは黙ってコピーを返すのではなく「すでに整形済みです」と伝えます。
いいえ。import の並び替えはisortの仕事であり、Blackの仕事ではありません。両者は意見が分かれることが十分に多く、ここで並び替えてしまえばあなたを驚かせることになります。
どのフォーマッタにもできません - 解析できないファイルには書き直すべき構造がありません。行、列、そして周辺のコードが得られるので、修正して再度試すことができます。
Blackは一つのよく知られた違いを除いてPEP 8に準拠しています。デフォルトの行の長さは79ではなく88です。より厳格な数値が必要なら、行の長さの選択で79を選んでください。
1回あたり最大400,000文字です。整形は10秒で打ち切られますが、そこまでかかるのは非常に大きいか繰り返しの多いファイルだけです。1つのIPアドレスにつき10分間に30回まで整形できます。
このページはBlackで整形しており、幅の広い画面ではページ上部のヘッダーにバージョンが表示されます。Blackはプロジェクト設定をpyproject.tomlの[tool.black]セクションから、オプションの長い名前で読み込みます。選んだ「行長」にはline-length = 88、「クォートを維持」にチェックしたならskip-string-normalization = true、「マジック末尾カンマを無視」にはskip-magic-trailing-comma = true、「ターゲット」で固定したバージョンにはtarget-version = ["py311"]と書きます。エディターのプラグインやpre-commitのフックも同じファイルを読みます。整形は black . 、CIでは black --check --diff . を実行します。何も変更せず、再整形が必要なファイルがあれば終了コード1で終わります。各暦年の最初のリリースで安定スタイルが変わることがあるため、このページと同じBlackのバージョンに固定してください。
ほぼ同じですが、バイト単位で一致するわけではありません。RuffのフォーマッターはBlackをそのまま置き換えられるよう設計されており、Ruffのドキュメントによると、DjangoやZulipのようにBlackで整形済みの大規模プロジェクトでは99.9%を超える行が同一になります。Blackを通したことのないコードでは、特に行末コメントで差が大きくなり、意図的な相違点はドキュメントに一覧があります。既定の行長も88で、[tool.ruff]のline-lengthで設定します。[tool.ruff.format]のquote-style = "preserve"が「クォートを維持」に、skip-magic-trailing-comma = trueが「マジック末尾カンマを無視」に相当します。CIで ruff format --check を実行しているなら、このページではなくRuffでファイルを確認してください。