Skip to main content

Multilint (for Python)

Actions Test Workflow Widget PyPI Version Pdoc Documentation

A utility tying together multiple linting and other code quality tools

Intro

Multilint allows running several code quality tools under the same interface. This is convenient as it saves time on writing multiple linter / formatter / checker invocations every time in a project.

Installation

Since there is an existing project called multilint, this Multilint can be installed as pymultilint:

$ pip3 install pymultilint

Usage

Multilint exposes a CLI entry point:

$ multilint [paths ...]

It can optionally take a set of starting paths. There are no CLI options, as Multilint strives to have all of its configuration codified (see Configurability).

Alternatively, Multilint is also usable via its API - either the main method, or the Multilint class.

Supported Tools

Currently, Multilint integrates the following code quality tools:

  • Autoflake - removes unused imports and unused variables as identified by Pyflakes
  • Isort - sorts imports according to specified orders
  • Black - the self-proclaimed "uncompromising code formatter" - formats Python source with an opinionated style
  • Mypy - static type checker for Python
  • Pylint - general best practices linter
  • Pydocstyle - in-source documentation best practices linter
  • Pyupgrade - upgrades Python syntax to the latest for the specified version

Configurability

Additionally, for tools that do not currently support configuration via pyproject.toml(PEP-621), Multilint exposes a configuration interface for them. This allows for centralized codification of configuration of all code quality tools being used in a project.

Example relevant sections from a pyproject.toml:

[tool.autoflake]
recursive = true
in_place = true
ignore_init_module_imports = true
remove_all_unused_imports = true
remove_unused_variables = true
verbose = true
srcs_paths = ["somepackage"]

[tool.mypy]
src_paths = ["someotherpackage"]

[tool.multilint]
tool_order = [
  "autoflake",
  "isort",
  "pyupgrade",
  "black",
  "mypy",
  "pylint",
  "pydocstyle"
]
src_paths = ["."]

At the time of writing of this README (2020-01-31), neither Autoflake nor Mypy support configuration via pyproject.toml. While support for each may or may not be added at some point in the future, with multilint configuring these tools is possible today.

Currently, the only two supported configuration option for Multilint are:

  • tool_order, which defines the execution order of supported tools, and
  • src_paths, which specifies the source paths (can be files and directories) for Multilint to operate on.

Each integrated tool additionally supports src_dirs as an override, in case it is desired to target a specific tool at a different set of files / directories.

Extending Multilint

Support for more tools may be added by subclassing the ToolRunner class and overriding the .run(...) method.

There are some utilities provided, such as:

  • A logger that masquerades as a TextIO object to allow capturing tool output from within and wrapping it with preferred logging
  • A dictionary for tool configuration that is automatically available in the ToolRunner class, as long as the tool is registered in

Documentation about adding support for more tools to Multilint may be added in the future.

Metadata

Release files for pymultilint 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymultilint 1.1.0
File Size Uploaded
pymultilint-1.1.0.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pymultilint 1.1.0
File Interpreter ABI Platform
pymultilint-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.2 kB

Release files / pymultilint-1.1.0.tar.gz

Download URL pymultilint-1.1.0.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1414fdc861fc7e0e3a22d0491c61b0af427bb5d99d5921b21fa8fea6bf77ff37
BLAKE2b-256 checksum
How to use checksums
af1d7889ff20466a373d9934de560f924d38eb1d60132182b60095cbab0ed876
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Linux/5.15.0-1038-azure

Release files / pymultilint-1.1.0-py3-none-any.whl

Download URL pymultilint-1.1.0-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7ee30214a98b7eb359b184b49938e15f56500b89f6b730637572940285bc20c1
BLAKE2b-256 checksum
How to use checksums
dee6acd617bc9c6b8faf9fd4825900f6d1559456c3b1c3b1d5a86c9b53b941ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Linux/5.15.0-1038-azure

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.17

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page