Skip to main content

Utility tying multiple code quality tools together

Project description

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 multilint

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.

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

pymultilint-0.3.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymultilint-0.3.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file pymultilint-0.3.0.tar.gz.

File metadata

  • Download URL: pymultilint-0.3.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.7 CPython/3.9.6 Darwin/20.6.0

File hashes

Hashes for pymultilint-0.3.0.tar.gz
Algorithm Hash digest
SHA256 37542e49a3f0c4b8d66c43a321fc8ca1ef38259650584b01591021881c592471
MD5 a51cecc11abd605d5766b737d42fcd83
BLAKE2b-256 62503da13b61b8050f8ac137509345b0c92459642204286fdfd887417b19c715

See more details on using hashes here.

File details

Details for the file pymultilint-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pymultilint-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.7 CPython/3.9.6 Darwin/20.6.0

File hashes

Hashes for pymultilint-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38a178363bb297e2fc759a5648c351f2ec6d25e1914e7526f9e646464a1df66d
MD5 af3a277ba329e18baa0145d82c2ecdce
BLAKE2b-256 9810111cd6f11f61f9ce879a95d70744e3907882be88cb1f67c0531e677be0f7

See more details on using hashes here.

Supported by

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