Skip to main content

Run multiple python linters easily

Project description

multilint

https://img.shields.io/pypi/v/multilint.svg https://img.shields.io/travis/adamchainz/multilint.svg

Run multiple python linters easily.

Installation and Usage

Install with pip:

pip install multilint

Run with:

multilint

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 setup.py check, to check your setup.py 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 setup.py is linted). Put a section in your setup.cfg like:

[tool:multilint]
paths = my_package
        tests
        setup.py

You can also pass the paths as arguments to multilint, which will override the settings, like:

multilint path/my_file.py path/folder1

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:

[tox]
envlist =
    py{27,35},
    py{27,35}-codestyle

[testenv]
deps = -rrequirements.txt
commands = pytest

[testenv:py27-codestyle]
commands = multilint

[testenv:py35-codestyle]
commands = multilint

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

History

Pending Release

  • Nothing right now

2.4.0 (2018-09-30)

  • Support positional arguments for paths.

2.3.0 (2018-04-28)

  • Fix for modernize 0.6.1+

  • Run modernize on the multilint codebase itself, so it now requires six

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 setup.py instead of scripts

  • Support python -m multilint

2.0.2 (2016-12-06)

  • Don’t invoke python setup.py check if there is no setup.py.

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 setup.py 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.

Project details


Download files

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

Source Distribution

multilint-2.4.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

multilint-2.4.0-py2.py3-none-any.whl (6.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file multilint-2.4.0.tar.gz.

File metadata

  • Download URL: multilint-2.4.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for multilint-2.4.0.tar.gz
Algorithm Hash digest
SHA256 75dc18154d9c47aef32f6f9b0fe95ea82b2c486960118cda4b4418385488f40d
MD5 db9f1a5d22e165d8893e921e4b5fef34
BLAKE2b-256 5ce6e66fac651e37b51dd9680280c4778e32b7965ca92f2dc6d8cd632d37de09

See more details on using hashes here.

File details

Details for the file multilint-2.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for multilint-2.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f1a36263fcd7a08de8e5828a268e984accd34c7b91e98f4fde85de54e9c30a7e
MD5 07e43f021f0859985ea08e13fe6065bc
BLAKE2b-256 a0981781c120ff1ad1b40ae27d08309427d2a8feda7f01d1d5b7fcae58578ee1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page