Skip to main content

Flake8 plugin to reuse the same lint configuration across multiple Python projects

Project description

https://img.shields.io/pypi/v/flake8-nitpick.svg Updates

Flake8 plugin to reuse the same lint configuration across multiple Python projects.

A “nitpick code style” is a TOML file with settings that should be present in config files from other tools. E.g.:

Quick setup

Simply install the package (in a virtualenv or globally, wherever) and run flake8:

$ pip install -U flake8-nitpick
$ flake8

You will see warnings if your project configuration is different than the default style file.

Configure your own style file

Change your project config on pyproject.toml, and configure your own style like this:

[tool.nitpick]
style = "https://raw.githubusercontent.com/andreoliwa/flake8-nitpick/master/nitpick-style.toml"

You can set style with any local file or URL. E.g.: you can use the raw URL of a GitHub Gist.

Default search order for a style file

  1. A file or URL configured in the pyproject.toml file, [tool.nitpick] section, style key, as described above.

  2. Any nitpick-style.toml file found in the current directory (the one in which flake8 runs from) or above.

  3. If no style is found, then the default style file from GitHub is used.

Style file syntax

A style file contains basically the configuration options you want to enforce in all your projects.

They are just the config to the tool, prefixed with the name of the config file.

E.g.: To configure the black formatter with a line length of 120, you use this in your pyproject.toml:

[tool.black]
line-length = 120

To enforce that all your projects use this same line length, add this to your nitpick-style.toml file:

["pyproject.toml".tool.black]
line-length = 120

It’s the same exact section/key, just prefixed with the config file name ("pyproject.toml".)

The same works for setup.cfg. To configure mypy to ignore missing imports in your project:

[mypy]
ignore_missing_imports = true

To enforce all your projects to ignore missing imports, add this to your nitpick-style.toml file:

["setup.cfg".mypy]
ignore_missing_imports = true

Supported by

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