ChinoDuino(Chino × Arduino)

自発性のないプログラマーがArduinoと出会って悪戦苦闘する様を綴っていく⇒今はいろいろ(^^;

pre-commit の Add trailing commas と isort の自動修正箇所が被りハマった話

pre-commitを使う機会があり、その中で、 Add trailing commasisort の自動修正が被り、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

これでいったん解決しました。