It's a Flake8 wrapper to make it cool.
- Lint md, rst, ipynb, and more.
- Shareable and remote configs.
- Legacy-friendly: ability to get report only about new errors.
- Caching for much better performance.
- Use only specified plugins, not everything installed.
- Make output beautiful.
- pyproject.toml support.
- Check that all required plugins are installed.
- Syntax highlighting in messages and code snippets.
- PyLint integration.
- Remove unused noqa.
- Powerful GitLab support.
- Codes management:
- Manage codes per plugin.
- Enable and disable plugins and codes by wildcard.
- Show codes for installed plugins.
- Show all messages and codes for a plugin.
- Allow codes intersection for different plugins.
FlakeHell supports all flake8 plugins, formatters, and configs. However, FlakeHell has it's own beautiful way to configure enabled plugins and codes. So, options like --ignore
and --select
unsupported. You can have flake8 and FlakeHell in one project if you want but enabled plugins should be explicitly specified.
python3 -m pip install --user flakehell
First of all, let's create pyproject.toml
config:
[tool.flakehell]
# optionally inherit from remote config (or local if you want)
base = "https://raw.githubusercontent.com/life4/flakehell/master/pyproject.toml"
# specify any flake8 options. For example, exclude "example.py":
exclude = ["example.py"]
# make output nice
format = "grouped"
# 80 chars aren't enough in 21 century
max_line_length = 90
# show line of source code in output
show_source = true
# list of plugins and rules for them
[tool.flakehell.plugins]
# include everything in pyflakes except F401
pyflakes = ["+*", "-F401"]
# enable only codes from S100 to S199
flake8-bandit = ["-*", "+S1??"]
# enable everything that starts from `flake8-`
"flake8-*" = ["+*"]
# explicitly disable plugin
flake8-docstrings = ["-*"]
Show plugins that aren't installed yet:
flakehell missed
Show installed plugins, used plugins, specified rules, codes prefixes:
flakehell plugins
Show codes and messages for a specific plugin:
flakehell codes pyflakes
Run flake8 against the code:
flakehell lint
This command accepts all the same arguments as Flake8.
Read flakehell.readthedocs.io for more information.
Contributions are welcome! A few ideas what you can contribute:
- Improve documentation.
- Add more tests.
- Improve performance.
- Found a bug? Fix it!
- Made an article about FlakeHell? Great! Let's add it into the
README.md
. - Don't have time to code? No worries! Just tell your friends and subscribers about the project. More users -> more contributors -> more cool features.
A convenient way to run tests is using DepHell:
curl -L dephell.org/install | python3
dephell venv create --env=pytest
dephell deps install --env=pytest
dephell venv run --env=pytest
Bug-tracker is disabled by-design to shift contributions from words to actions. Please, help us make the project better and don't stalk maintainers in social networks and on the street.
Thank you ❤️
The FlakeHell mascot (Flaky) is created by @illustrator.way and licensed under the CC BY-SA 4.0 license.