wemake-python-styleguide
The strictest and most opinionated python linter ever
What it is and what it does
wemake-python-styleguide is a flake8 plugin that adds a comprehensive set of strict, opinionated linting rules on top of flake8's baseline checks. It focuses on three goals: reducing code complexity and improving maintainability, enforcing a single obvious way to write Python code, and protecting developers from common errors and best-practice violations. The plugin detects bugs, complex code patterns, and style violations that standard flake8 or ruff alone may miss, and is designed to work alongside ruff for formatting and mypy for type checking rather than replace them.
You run it as part of your normal flake8 workflow by selecting the WPS rule prefix. It requires a setup.cfg configuration file and supports modern Python versions (3.10 through 3.14). The package is actively maintained, has no known security vulnerabilities, and is used by thousands of developers monthly. It's particularly useful in teams where code consistency and maintainability are priorities, and can be integrated into CI/CD pipelines including GitHub Actions.
Use it for:
- Enforce consistent code style across a team by catching complexity and anti-patterns that ruff or mypy don't address
- Reduce code review friction by automatically flagging violations before human review, ensuring familiar patterns throughout the codebase
- Train LLMs or junior developers on idiomatic Python by using the linter as a teaching tool for best practices
- Detect potential bugs and maintainability issues in legacy codebases before they become problems
- Integrate into CI/CD pipelines (including GitHub Actions) to gate commits on strict style compliance
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A flake8 plugin that enforces strict, opinionated Python code style rules to detect complexity, bugs, and violations beyond standard linting, complementing tools like ruff and mypy.
Yes. The package is actively maintained, has no security vulnerabilities, low install friction, and permissive licensing. Install it if your team values strict code consistency and wants to catch complexity and bugs beyond what ruff or mypy provide. Skip it if you prefer minimal linting rules or find opinionated enforcement restrictive—rules can be disabled selectively, but the philosophy is strict by design.
Install
wemake-python-styleguide on PyPI
pip
pip install wemake-python-styleguideuv
uv add wemake-python-styleguidepoetry
poetry add wemake-python-styleguideInstalling wemake-python-styleguide
Before you install
Low friction install with only three runtime dependencies (attrs, flake8, pygments). Actively maintained with a release 14 days ago and ongoing commits; 2890 GitHub stars indicate established community adoption.
License in practice
MIT license permits commercial and private use with minimal restrictions, making it suitable for most projects without legal concerns.
Quickstart
pip install wemake-python-styleguide
# Create setup.cfg with configuration, then:
flake8 your_module.py --select=WPS
Requires Python 3.10 or later and a setup.cfg configuration file to function properly.
Verify before relying
- How many distinct rule violations the plugin detects (the fact sheet mentions error codes exist in docs but not the count)
- Whether the setup.cfg configuration requirement is a significant adoption barrier for new users
- Performance impact on large codebases compared to ruff or standard flake8
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4.0,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — attrs, flake8, pygments |
| Maintenance | actively maintained — 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 319,116/month — #7,648 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: wemake_python_styleguide-1.7.1-py3-none-any.whl
Keywords: flake8, flake8-plugin, flake8-formatter, linter, wemake.services, styleguide, code quality, pycqa
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
flake8-broken-lineA flake8 plugin that detects and forbids…
permissive · top 15,000 on PyPI
hackingHacking is a set of flake8 plugins that enforce…
permissive · top 15,000 on PyPI
flake8-executableA Flake8 plugin that detects and reports…
copyleft · top 15,000 on PyPI
flake8-htmlA flake8 plugin that converts code style…
permissive · top 15,000 on PyPI
flake8-djangoA flake8 plugin that detects Django-specific…
copyleft · top 15,000 on PyPI
flake8Flake8 is a command-line tool that combines…
permissive · top 1,000 on PyPI
flake8-pytest-styleA flake8 plugin that detects and reports style…
unclear · top 15,000 on PyPI
dlintDlint is a flake8 plugin that adds…
permissive · top 15,000 on PyPI
flake8_simplifyA flake8 plugin that detects and flags…
permissive · top 15,000 on PyPI
flake8-copyrightA flake8 plugin that enforces the presence of…
unclear · top 15,000 on PyPI