56330
# 環境

  * Python 3.7
  * tox 3.13

# 背景

以下のツールを利用して、Pythonのパッケージを作成しています。

  * [yapf](https://github.com/google/yapf)：Formatter
  * [isort](https://github.com/timothycrosley/isort)：Formatter
  * [Pylint](https://www.pylint.org/)：Lintter
  * [flake8](http://flake8.pycqa.org)：Lintter
  * [tox](https://tox.readthedocs.io/en/latest/)

上記のツールの設定情報は、可能な限り1つのファイルにまとめて記載したいです。  
Pylintとflake8の設定情報が互いに依存しているためです。例えば、「flake8では1行の文字数をチェックするから、pylintでは1行の文字数をチェックしない」などです。

## Formatter, Lintterの設定

[toxパッケージのtox.ini](https://github.com/tox-
dev/tox/blob/master/tox.ini)には、flake8の設定情報が記載されています。

```

    [flake8]
    max-complexity = 22
    max-line-length = 99
    ignore = E203, W503, C901, E402, B011
    
```

私はこれに倣って、`tox.ini`にFormatter, Lintterの設定情報を記載しようとしました。  
しかし、yapfだけは`tox.ini`に記載した設定情報を読み込めません。コマンドライン引数で設定ファイルを指定できず、デフォルトでは`tox.ini`を読み込まないためです。  
`setup.cfg`に記載した設定情報は読み込めます。  
<https://github.com/google/yapf#id7>

また、pandasでは[setup.cfg](https://github.com/pandas-
dev/pandas/blob/master/setup.cfg)にflake8, yapfの設定情報が記載されていました。  
※tox.iniは存在しない

以上のことから私は、Formatter, Linterの設定情報は`setup.cfg`に書いた方が良いと思いました。

# 質問

Formatter, Linterの設定は、`setup.cfg`か`tox.ini`どちらに記載すればよいですか？

また、`setup.cfg`と`tox.ini`はどう使い分ければよいですか？
CC BY-SA 4.0
2019-07-01T17:43:29.130
56302
2019-07-03T01:21:56.247
2019-07-03T01:13:55.983
19524
19524
question
python setuptools tox
setup.cfgとtox.iniの使い分け
`setup.cfg` を参照するか `tox.ini` を参照するか、あるいは別のファイル `.pylintrc` や `pytest.ini`
を参照するかは、各ライブラリによって任されています。

このため、それぞれのライブラリの組み合わせ次第では、「どちらを使えば良いか」ではなく「両方使う必要がある」かもしれません。

今後は `pyproject.toml` に集約されていくのかもしれませんが、
[flake8](https://pypi.org/project/flake8/) 等の一部のライブラリは現状 `pyproject.toml`
未対応ですし、逆に [towncrier](https://pypi.org/project/towncrier/) などの一部のライブラリは最新版では
`pyproject.toml` しか参照しないものもあります。

仕方がないので、今は過渡期だとあきらめて、自分が便利そうだと思うファイルに書くのがよさそうです。
CC BY-SA 4.0
2019-07-02T14:39:10.940
56330
2019-07-03T01:21:56.247
2019-07-03T01:21:56.247
2238
806
56302
answer