😽

blackとisortの設定がコンフリクトした時の対処法

2021/02/27に公開

はじめに

Pythonのフォーマッターの内、blackisortを使っていたのですが、この2つの設定がコンフリクトした結果、CIが通らなくなるという不具合が発生したので、その対処法を書き残しておきます。

環境

  • Python 3.8.7
  • black 20.8b1
  • isort 5.7.0

発生した問題

例えば以下のようなコードがあったとします。

from third_party import (
    lib4,
    lib5,
    lib333333333333,
    lib222222222222222,
    lib11111111111111111,
)

このコードにisortでフォーマッターをかけると

from third_party import (lib4, lib5, lib333333333333, lib222222222222222,
                         lib11111111111111111)

ここからblackでフォーマットをかけると

from third_party import (
    lib4,
    lib5,
    lib333333333333,
    lib222222222222222,
    lib11111111111111111,
)

このように使用するフォーマッターによってコードの形が変わってしまいます。

上記の状態のままCIでblackisortの両方でチェックをかけると、どちらかのフォーマッターでエラー判定になってしまい、結果CIが通らなくなってしまいました。

対処法

setup.cfgというファイルを作り、以下の内容を記載します。

[isort]
profile=black

これでisortのフォーマットの設定がblackの設定に準拠するようになりました。

さいごに

意外と日本語の記事でピッタリした内容の資料が見当たらなかったので、自分で書き残してみました。
参考になれば幸いです。

参考

Discussion