Skip to main content

Yet Another Linter Aggregator

Project description

build coveralls codecov codacy codeclimate sonarcloud issue_time

YALA combines many linters to improve the quality of your code. Other projects may come to your mind, but does anyone have all the features below?

Works with latest linters
Yala uses linters’ outputs and doesn’t break on API changes.
Same defaults
No changes to linters’ default configuration.
Easy to configure
Set any command-line option for any linter (even pylint!) in one INI file: setup.cfg.
Language-agnostic
Add any linter to any language.
Extensible
Just a few lines do add your preferred linter.
Fast
Run linters in parallel and sort output by filename and line number.

Current Status

For now, there are some Python linters available: isort, Pylint, Pycodestyle, Pydocstyle, Pyflakes and Radon (cyclomatic complexity and maintainability index).

Install

Tested with Python >= 3.5.

sudo pip3 install --upgrade yala

If you are willing to hack yala’s code, run the command below in this README’s folder:

sudo pip3 install -e .[dev]

Usage

Just call yala followed by the files and/or folders to lint.

Configuration

Besides the configuration of each linter, as in their docs, you can specify other options in setup.cfg.

It’s possible to define command line arguments for linters in setup.cfg, which is particularly useful for pylint, a linter that ignores this file and requires you to write an extra one only for itself.

The default configuration file is yala/setup.cfg that you can copy and customize.

You can have this file in upper directories and override it in lower directories if needed.

Linters’ options

For example, to disable a specific pylint warning and output grades C and lower for Radon Maintainability Index (default is D or worse), add the following to setup.cfg:

[yala]
pylint args = --disable=TODO
radon mi args = --min C

Besides pylint and radon mi, you can define CLI options for isort, pycodestyle, pydocstyle, pyflakes, pylint and radon cc (the names are exactly as they are called in command line).

Choosing linters

Default linters are: isort, pycodestyle, pydocstyle, pylint, radon (cc/mi). Optionals are: pyflakes and mypy (you need to install them manually).

You can customize the linters in setup.cfg by either:

[yala]
linters = isort, pycodestyle

or

[yala]
linters =
  isort
  pycodestyle

Or even a mix of both: multiple linters in multiple lines.

Hacking: Adding a linter

Check the file yala/linters.py and feel free to ask for help.

Project details


Release history Release notifications

This version
History Node

1.6.0

History Node

1.5.0

History Node

1.4.0

History Node

1.3.3

History Node

1.3.2

History Node

1.3.1

History Node

1.3.0

History Node

1.2.0

History Node

1.1.1

History Node

1.1.0

History Node

1.0.3

History Node

1.0.2

History Node

1.0.1

History Node

1.0.0

History Node

1.0.0rc3

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
yala-1.6.0-py3-none-any.whl (10.7 kB) Copy SHA256 hash SHA256 Wheel 3.5 May 21, 2018
yala-1.6.0.tar.gz (11.1 kB) Copy SHA256 hash SHA256 Source None May 21, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page