Code Monkey home page Code Monkey logo

multilint's Introduction

multilint

https://github.com/adamchainz/multilint/workflows/CI/badge.svg?branch=master

Unmaintained: I'm no longer maintaining this package because it's for Python 2 compatibility and all other projects I've used it on are now Python 3 only. If you want to continue maintenance please contact me.


Run multiple python linters easily.

Installation and Usage

Install with pip:

python -m pip install multilint

Run with:

multilint

Python 3.5 to 3.8 supported.

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:

  • Black, to autoformat code
  • 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

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

Note: previously multilint supported running setup.py check if you passed a setup.py file. This was removed as the command is deprecated. You should instead use twine check as per the python packaging documentation.

Usage With tox

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

[tox]
envlist =
    py{35,36,37,38},
    py38-codestyle

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

[testenv:py38-codestyle]
commands = multilint

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.