[Python]blackとisortで自動フォーマット

python

こんにちは、コウキです。

今回はPythonのフォーマッターについてです。
Pythonのフォーマッターは色々ありますが、blackとisortの組み合わせが使ってみて最強だったのでこの2つを紹介します。

blackの最大のメリットは色々な書き方ができなくなることです。
改行位置、スペースの数など完全に固定されます。これによって、コードを書く人による差がなくなるので、レビューで無駄な言い争いがなくなります。
一人の場合でも適当に書いててもきれいにしてくれるのでかなりおすすめです。

isortはblackが対応していないimport文のソートや重複削除などを行うために使います。
こちらもかなり便利なので入れておきましょう!

blackの使い方

まずはblackをインストールします。

pip install black

そのままでも使えますが設定を変更しておきます。
blackは文字列の''""に変換しますが、今回は設定でこれを無効にしています。ここは好みで変えてください。

pyproject.toml

[tool.black]
line-length = 120
target-version = ['py310']  # Pythonのバージョン
include = '\.py$'  # 対象ファイル
skip-string-normalization = true  # ''を""に変換しない設定(好みで変えてください)

# フォーマットしないファイル
exclude = '''
(
      \.eggs
    | \.git
    | \.hg
    | \.mypy_cache
    | \.tox
    | venv
    | \.idea
    | \.vscode
    | _build
    | buck-out
    | build
    | dist
    | migrations
)
'''

blackの実行は以下のコマンドで行います。
これですべてのファイルがフォーマットされます。

black .

blackのフォーマットに沿っているかをチェックするには次のコマンドを実行します。
これはCIなどで使うと便利です。

black . --check

isortの使い方

isortをインストールします。

pip install isort

isortの設定をpyproject.tomlに追加します。

pyproject.toml

[tool.black]
...

[tool.isort]
profile = "black"
line_length = 120
skip_glob = "*/migrations/*.py"

isortの実行は次のコマンドで行います。

isort .

isortでフォーマットされているかチェックするには以下のコマンドを使います。
こちらもCIなどに組み込むと良いと思います。

isort . --check-only

Pycharmでファイル保存時にisortとblackを実行する

Pycharmでisortとblackを自動実行する設定をするにはFile Watchersという機能を使います。これは有料版のみ使えるみたいです。

Preferences > Tools > File Watchersを開きます。そこで+ボタンを押して、<custom>を選んでください。そうすると新規登録画面が開きます。

blackの設定

File type Python
Scope Current File
Program $PyInterpreterDirectory$/black
Arguments $FilePath$
Advanced Options すべてチェックを外す

isortの設定

File type Python
Scope Current File
Program $PyInterpreterDirectory$/isort
Arguments $FilePath$
Advanced Options すべてチェックを外す

これでファイル保存したときに自動でフォーマッターが実行されるようになります。

VSCodeでも同じような設定があるので、VSCodeを使っている人は調べてみてください。

おわりに

今回はblackとisortについて紹介しました。
これを入れると開発が捗ること間違いなしなのでぜひ入れておきましょう!

コメント

タイトルとURLをコピーしました