pre-commit の Add trailing commas と isort の自動修正箇所が被りハマった話
pre-commitを使う機会があり、その中で、 Add trailing commas
と isort
の自動修正が被り、commitできなかった話です。。。
書かないこと
- pre-commitとはなにか
- Add trailing commasとはなにか
- isortとはなにか
などのどんなものかは書きません🙏
現象
・・・ # 自動修正される箇所 from .base import classA, classB, classC, classD, classE, classF ・・・
commit 実行 ↓ まず、Add trailing commas側で以下のように自動修正 整形され、最後に「,」がつく ↓ ・・・ from .base import ( classA, classB, classC, classD, classE, classF, ) ・・・ ↓ 次に、isort側で以下のように自動修正 ↓ ・・・ from .base import (classA, classB, classC, classD, classE, classF) ・・・
最後の「,」がなくなってしまうため、自動修正された変更をステージングにあげて、再commitしても、Add trailing commasでまた自動修正が発生、isortでも自動修正してしまい、commitができなくなってしまった。。。
対応内容
isortの設定ファイルを追加
isortのリポジトリを確認したところ、設定ファイルを追加し、フォーマットをあわせることにより、解決できそうとわかりました
- 設定ファイル「.isort.cfg」を追加
- そこに以下を追加
自動修正箇所のフォーマット
をadd trailing commasと同じフォーマットにする設定を追加
.isort.cfg の内容
[settings] multi_line_output=5
seed-isort-configライブラリを追加
しかし、「.isort.cfg」の格納場所が、 ホームディレクトリ
or 環境変数に追加
する必要があるため、リポジトリ直下に配置が可能になるseed-isort-configを追加しました(ただし、ライブラリ本来の目的とは違うかもですが・・・)。
あと、.isort.cfgに include_trailing_comma : add trailing commasを使っているかの設定?
を追加
# [seed-isort-config](https://github.com/asottile/seed-isort-config)をインストール (env) $ pip install seed-isort-config # リポジトリ直下に、.isort.cfgを配置 (env) $ cd <リポジトリルート> (env) $ ls -la ・・・ -rw-r--r-- 1 user staff 135 4 27 22:52 .isort.cfg ・・・
.isort.cfg の内容
[settings] multi_line_output=5 include_trailing_comma=True known_third_party = xxx, yyy, zzz
これでいったん解決しました。