Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Run multiple python linters easily

Project Description


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.1 (2018-03-08)

  • Fix crash when setup.cfg doesn’t exist.

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.

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(8.3 kB) Copy SHA256 Hash SHA256
Wheel 3.6 Mar 8, 2018
(5.9 kB) Copy SHA256 Hash SHA256
Source None Mar 8, 2018

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers