rcmdnk's blog

Cadbury Flake 4 Bars (Pack of 5, Total 20 Bars) by Cadbury

Pythonのコーディングスタイルガイドツールの1つに Flake8 がありますが、そのユーザー設定ファイルの無効化の変更が4.0から入っていたことに 今更気づきました。

Flake8の設定ファイル

Flake8では、特定のエラーを無視したい場合などに

flake8
1
2
[flake8]
ignore = E501

などと設定ファイルを作っておいて読み込むと E501(Line too long) のエラーをチェックしないようにしてくれます。

設定ファイルは--configオプションで指定するとそのファイルを読み込んでくれます。 もしくは.flake8setup.cfgtox.iniといったファイルをプロジェクトディレクトリーのトップに置いておくと それを読み込んでくれます1

以前はその設定の前に、 Windows(それ以外)では~/.flake8(~/.config/flake8)という場所にこの設定ファイルを置いておくとユーザー設定として flake8の実行時にまずそれを読み込まれるようになっていました。

これが昨年10月頃にリリースされた4.0.0からこのユーザー設定が読み込まれないようになりました。

Due to constant confusion by users, user-level Flake8 configuration files are no longer supported. Files will not be searched for in the user’s home directory (e.g., ~/.flake8) nor in the XDG config directory (e.g., ~/.config/flake8). (See also #1404).

共同で開発しているリポジトリー内をリポジトリー内にある設定ファイルでチェックしたい場合に、 ユーザーの設定がプラスされて思ったとおりにならないような事態を無くしたいといった感じで、 flake8を使うならちゃんと設定ファイルを用意するような体制で使ってください、といった感じです。

設定ファイルを使うには

これまでのようにユーザー設定を使いたい場合には

$ flake8 --config=~/.config/flake8

のように設定ファイルを指定すればよいわけですが、毎回面倒なので

alias flake8 = 'flake8 --config=~/.config/flake8'

とかもしくは直接パラメーターを

alias flake8 = 'flake8 --ignore=E501'

のような感じでaliasを用意しておけばコマンドラインからflake8と呼ぶ場合には自分の設定を使うことはできます。

ただ、エディター上で動かしたりGitのpre-commitで使ったりしようと思うとこれらが無効なところでやってる場合もあるので それぞれで設定したり色々と面倒かもしれません。

また、これをしてしまうとリポジトリーで用意してある設定が無視されてしまうので良くないです。

なので、ホームディレクトリー以下、という限定にはなりますが、 ~/.flake8というファイルをLinuxなんかでも使うようにして、 ホームディレクトリー以下だとこのファイルが読み込まれるようにするのが一番良いかな、と思ってます。

これだと、リポジトリー用にファイルが用意されていればそのディレクトリー以下ではそのファイルが使われるようになります。

エディターなどでちょっと書いたりする時にちゃんと設定されていると楽だな、と思うのと、 dotfilesとしてまとめて管理することもできるのでそれで良いかな、と。

ちょっとこの上のディレクトリーを見つけるまで見に行く状態が意図的なのか仕方なくしているのか、 もしくはなんらか定義して区切るようにするように将来的になるのか、ちょっとわからないですが とりあえず今(4.0.1)ではこれで使えます。

情報が読み取りづらかった

OSSですしちゃんと追ってれば分かったことではあるんですが、 現在のconfigurationに関するドキュメントのところを見ると ~/.flake8~/.config/flake8に関する記述が削除された状態になっています。

Configuring Flake8 — flake8 4.0.1 documentation

また、 Release Notes and Historyも Read the Docs上だと各リリースを見に行かないといけない状態なので、ぱっと~/.configがどうなったか、 とかを探すのがちょっと面倒です。

実際ちょっと見つけるのに手間取って、 確かに公式のどこを探しても~/.config/flake8を読むとはもう書かれてないな、と思いつつ、 外部のドキュメントだと、結構最近のものまで全部~/.config/flake8を作れば良い、と言ってるものしか無かったり、読めなかったのは単にtypoだった、とか言う話だけだったりして自分の環境は何がおかしいのかしばらく悩みました。

おなじような状態の人が居て、Issueを上げてましたが、

In the future, please search closed and open issues before creating new ones that are duplicates.

と言われてしまっていました。 ちょっとこのIssueをたてた人に同情する感はあって、 configurationのところにも注意書きしておいてくれるとうれしいな、とは思ったりしました。

逆に広く使われてるものなので3rd partyな文章がたくさんあって、 古いものが目立ってしまってるケースなので、 やはり大元のドキュメントをきちんと見に行くことが大事だな、と思いました。

Sponsored Links
  1. 公式にはそう書いてありますが、実際には今いるディレクトリーよりも上にあれば、の状態です。なのでホームディレクトリーに.flake8を置いておけば大概の場合それが読み込まれることになります。より下層にあるいずれかのファイルが優先されます。

Sponsored Links

« Homebrew-fileでBrewfile変更後にGitHubにpushしたりアクションを起こせるようにした