skip to navigation
skip to content

multilint 2.2.0

Run multiple python linters easily


Run multiple python linters easily.

Installation and Usage

Install with pip:

pip install multilint

Run with:


How It Works

I like to keep my projects tidy with a standard set of linters. Running them all turned out to be easier with a wrapper script, which I ended up copy-pasting between them all. This project stops me needing to copy/paste, centralizing running all these neat tools.

In order, it will check if these linters are installed, and if so, run them:

  • flake8, to check code quality
  • isort, in ‘diff’ mode to show where imports aren’t sorted
  • modernize, in ‘diff’ mode to show where python 2/3 compatibility with six is missing
  • python check, to check your is well configured. This will require docutils, and also Pygments if your long_description uses any code highlighting.

If any of them fail, multilint stops and dies with a non-zero exit code. Otherwise it succeeds!

You need to configure the paths that will be linted (by default, only is linted). Put a section in your setup.cfg like:

paths = my_package

Usage With tox

I normally run my tests with tox. An example tox.ini to use multilint to do your linting on both Python 2.7 and 3.5 would look like:

envlist =

deps = -rrequirements.txt
commands = pytest

commands = multilint

commands = multilint

Then just put multilint, plus the linters you want it to run (e.g. flake8) in your requirements.txt.



  • New notes here

2.2.0 (2017-09-19)

  • Add --skip argument which can be used to skip particular linters even though they’re installed.

2.1.0 (2017-06-02)

  • Use entry_points in instead of scripts
  • Support python -m multilint

2.0.2 (2016-12-06)

  • Don’t invoke python check if there is no

2.0.1 (2016-10-20)

  • Remove default for paths in setup.cfg.
  • Check that paths exist before running the linters.

2.0.0 (2016-09-24)

  • Use the config header tool:multilint in setup.cfg, rather than multilint, to avoid clashing with any potential commands. Your setup.cfg will need updating.

1.0.2 (2016-07-26)

  • Work with flake8 3.0+ which changed the way its main function worked.

1.0.1 (2016-07-16)

  • Fix modernize running on Python 2.
  • Run isort in the same Python process rather than with subprocess
  • Properly gate flake8 and isort so that they run only if they are installed.

1.0.0 (2016-06-19)

  • First release on PyPI.
File Type Py Version Uploaded on Size
multilint-2.2.0-py2.py3-none-any.whl (md5, pgp) Python Wheel 2.7 2017-09-19 7KB
multilint-2.2.0.tar.gz (md5, pgp) Source 2017-09-19 5KB