February 24th, 2017

Rene Dudfield: setup.cfg – a solution to python config file soup? A howto guide.

Programing, Python, by admin.
Sick of config file soup cluttering up your repo? Me too. However there is a way to at least clean it up for many python tools.

Some of the tools you might use and the config files they support…

  • flake8 – .flake8, setup.cfg, tox.ini, and config/flake8 on Windows
  • pytest – pytest.ini, tox.ini, setup.cfg
  • coverage.py – .coveragerc, setup.cfg, tox.ini
  • mypy – setup.cfg, mypy.ini
  • tox – tox.ini

 Can mypy use setup.cfg as well?

OK, you’ve convinced me.Guido

With that mypy now also supports setup.cfg, and we can all remove many more config files.

The rules for precedence are easy:

  1. read --config-file option – if it’s incorrect, exit
  2. read [tool].ini – if correct, stop
  3. read setup.cfg

 

How to config with setup.cfg?

Here’s a list to the configuration documentation for setup.cfg.

What does a setup.cfg look like now?

Here’s an example setup.cfg for you with various tools configured. (note these are nonsensical example configs, not what I suggest you use!)

## http://coverage.readthedocs.io/en/latest/config.html
#[coverage:run]
#timid = True

## http://pytest.org/latest/customize.html#adding-default-options
# [tool:pytest]
# addopts=-v –cov pygameweb pygameweb/ tests/

## http://mypy.readthedocs.io/en/latest/config_file.html
#[mypy]
#python_version = 2.7

#[flake8]
#max-line-length = 120
#max-complexity = 10
#exclude = build,dist,docs/conf.py,somepackage/migrations,*.egg-info

## Run with: pylint –rcfile=setup.cfg somepackage
#[pylint]
#disable = C0103,C0111
#ignore = migrations
#ignore-docstrings = yes
#output-format = colorized

Back Top

Leave a Reply