The strictest and most opinionated python linter ever!
2,898
stars
3,135
commits
Python
primary language
Sep 10, 2026
updated
Welcome to the strictest and most opinionated Python linter ever.
The best tool to teach your LLM how to write idiomatic and simple Python code!
wemake-python-styleguide is actually a flake8
plugin, the only one you will need as your ruff companion.
Fully compatible with ALL rules and format conventions from ruff.
pip install wemake-python-styleguide
You will also need to create a setup.cfg file with the configuration.
We highly recommend to also use:
wemake-python-styleguide works natively with AI tools,
it is great for improving agents' code quality.
Skills:
/wps to run better Python code that passes wemake-python-styleguideMCPs:
Additional contexts for LLMs:
See full AI docs.
flake8 your_module.py --select=WPS
This app is still just good old flake8!
And it won't change your existing workflow.
See "Usage" section in the docs for examples and integrations.
We also support GitHub Actions as first class-citizens. Try it out!
Can (and should!) be used with ruff:
ruff check && ruff format
flake8 . --select=WPS
See example ruff configuration in our pyproject.toml.
Strict linting offers the following benefits to developers and companies:
The ultimate goal of this project is
to make all people write exactly the same Python code.
| flake8 | pylint | black | mypy | ruff | wemake-python-styleguide | |
|---|---|---|---|---|---|---|
| Formats code? | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
| Finds style issues? | 🤔 | ✅ | 🤔 | ❌ | ✅ | ❌ |
| Finds bugs? | 🤔 | ✅ | ❌ | ✅ | ✅ | ✅ |
| Finds complex code? | ❌ | 🤔 | ❌ | ❌ | ❌ | ✅ |
| Has a lot of strict rules? | ❌ | 🤔 | ❌ | ❌ | ✅ | ✅ |
| Has a lot of plugins? | ✅ | ❌ | ❌ | 🤔 | ❌ | ✅ |
We have several primary objectives:
You can find all error codes and plugins in the docs.
We are not planning to do the following things:
mypy together with our linterruff format for thatWe in wemake.services make all our tools open-source by default, so the community can benefit from them. If you use our tools and they make your life easier and brings business value, you can return us a favor by supporting the work we do.
If you use our linter - it means that your code is awesome.
You can be proud of it!
And you should share your accomplishment with others
by including a badge in your README file. It looks like this:
[](https://github.com/wemake-services/wemake-python-styleguide)
.. image:: https://img.shields.io/badge/style-wemake-000000.svg
:target: https://github.com/wemake-services/wemake-python-styleguide
We warmly welcome all contributions!
See "Contributing" section in the documentation if you want to contribute.
You can start with issues that need some help right now.
(top 30 of 218)
1,148 commits
874 commits
487 commits
81 commits
Hacker News (1)
Python
99.6%
The strictest and most opinionated python linter ever!
2,898
stars
3,135
commits
Python
primary language
Sep 10, 2026
updated
Welcome to the strictest and most opinionated Python linter ever.
The best tool to teach your LLM how to write idiomatic and simple Python code!
wemake-python-styleguide is actually a flake8
plugin, the only one you will need as your ruff companion.
Fully compatible with ALL rules and format conventions from ruff.
pip install wemake-python-styleguide
You will also need to create a setup.cfg file with the configuration.
We highly recommend to also use:
wemake-python-styleguide works natively with AI tools,
it is great for improving agents' code quality.
Skills:
/wps to run better Python code that passes wemake-python-styleguideMCPs:
Additional contexts for LLMs:
See full AI docs.
flake8 your_module.py --select=WPS
This app is still just good old flake8!
And it won't change your existing workflow.
See "Usage" section in the docs for examples and integrations.
We also support GitHub Actions as first class-citizens. Try it out!
Can (and should!) be used with ruff:
ruff check && ruff format
flake8 . --select=WPS
See example ruff configuration in our pyproject.toml.
Strict linting offers the following benefits to developers and companies:
The ultimate goal of this project is
to make all people write exactly the same Python code.
| flake8 | pylint | black | mypy | ruff | wemake-python-styleguide | |
|---|---|---|---|---|---|---|
| Formats code? | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
| Finds style issues? | 🤔 | ✅ | 🤔 | ❌ | ✅ | ❌ |
| Finds bugs? | 🤔 | ✅ | ❌ | ✅ | ✅ | ✅ |
| Finds complex code? | ❌ | 🤔 | ❌ | ❌ | ❌ | ✅ |
| Has a lot of strict rules? | ❌ | 🤔 | ❌ | ❌ | ✅ | ✅ |
| Has a lot of plugins? | ✅ | ❌ | ❌ | 🤔 | ❌ | ✅ |
We have several primary objectives:
You can find all error codes and plugins in the docs.
We are not planning to do the following things:
mypy together with our linterruff format for thatWe in wemake.services make all our tools open-source by default, so the community can benefit from them. If you use our tools and they make your life easier and brings business value, you can return us a favor by supporting the work we do.
If you use our linter - it means that your code is awesome.
You can be proud of it!
And you should share your accomplishment with others
by including a badge in your README file. It looks like this:
[](https://github.com/wemake-services/wemake-python-styleguide)
.. image:: https://img.shields.io/badge/style-wemake-000000.svg
:target: https://github.com/wemake-services/wemake-python-styleguide
We warmly welcome all contributions!
See "Contributing" section in the documentation if you want to contribute.
You can start with issues that need some help right now.
Hacker News (1)
(top 30 of 218)
1,148 commits
874 commits
487 commits
81 commits
Python
99.6%