flake8-plugin-utils
The package provides base classes and utils for flake8 plugin writing
Decision gist · record as of 2026-08-14
Yes, if you are writing a flake8 plugin. The package significantly reduces boilerplate and provides a clean API for plugin development. Dormant maintenance is acceptable here because the API is stable and unlikely to need frequent updates; flake8's plugin interface changes rarely. No known vulnerabilities. Low install friction and permissive license add no friction.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low install friction with no runtime dependencies.
- Maintenance is dormant—last release was 2023-06-26 and no commits since 2024-01-01—but the package is stable and widely used (961264 monthly downloads).
License · maintenance · safety
MIT (permissive) — MIT license (permissive) places no restrictions on use, modification, or distribution in proprietary or open-source projects.
last release 2023-06-26 (1145 days) · last repo commit 2024-01-01 · 18 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 961,264 downloads/mo, #4,634 on PyPI
Alternatives
Verify before relying
from flake8_plugin_utils import Error, Visitor, Plugin
class MyError(Error):
code = 'X100'
message = 'my error'
class MyVisitor(Visitor):
def visit_ClassDef(self, node):
self.error_from_node(MyError, node)
class MyPlugin(Plugin):
name = 'MyPlugin'
version = '0.1.0'
visitors = [MyVisitor]- Whether dormant maintenance status poses a risk for future Python or flake8 compatibility changes
- Whether the package is actively maintained despite no recent commits
What it is and what it does
flake8-plugin-utils is a framework for building flake8 linter plugins. It provides base classes (Error, Visitor, Plugin) that abstract away boilerplate code needed to integrate with flake8's plugin system, letting you focus on the AST traversal logic. The package includes testing utilities (assert_error, assert_not_error) to validate your plugin rules, configuration support for parameterizing plugin behavior, and helper functions for common AST operations like checking node equivalence and identifying literal values.
The package is designed for developers writing custom flake8 checkers. You define error types, implement visitor methods to detect violations, and the framework handles registration with flake8 and option parsing. It supports type-safe configuration through generics and includes utilities for comparing AST nodes, which is useful when your rules need to detect duplicate or equivalent code patterns.
Use it for
- Build a custom flake8 plugin to enforce project-specific code style or naming conventions
- Create a linter plugin that detects anti-patterns or problematic code structures in your codebase
- Write a flake8 plugin that checks for security issues or compliance violations in Python code
- Test your flake8 plugin rules with pytest using the built-in assert_error and assert_not_error helpers
- Develop a plugin that requires configuration options, using the config system to parameterize checks
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are writing a flake8 plugin.
The package significantly reduces boilerplate and provides a clean API for plugin development. Dormant maintenance is acceptable here because the API is stable and unlikely to need frequent updates; flake8's plugin interface changes rarely. No known vulnerabilities. Low install friction and permissive license add no friction.
Install
flake8-plugin-utils on PyPI
Before you install
Low install friction with no runtime dependencies. Maintenance is dormant—last release was 2023-06-26 and no commits since 2024-01-01—but the package is stable and widely used (961264 monthly downloads).
License in practice
MIT license (permissive) places no restrictions on use, modification, or distribution in proprietary or open-source projects.
Quickstart
from flake8_plugin_utils import Error, Visitor, Plugin
class MyError(Error):
code = 'X100'
message = 'my error'
class MyVisitor(Visitor):
def visit_ClassDef(self, node):
self.error_from_node(MyError, node)
class MyPlugin(Plugin):
name = 'MyPlugin'
version = '0.1.0'
visitors = [MyVisitor]
Verify before relying
- Whether dormant maintenance status poses a risk for future Python or flake8 compatibility changes
- Whether the package is actively maintained despite no recent commits
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.6,<4.0 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Dormant 1,145 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 961,264 / month, #4,634 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: flake8_plugin_utils-1.3.3-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “flake8 plugin development”
- flake8-plugin-utilsProvides base classes and utilities for writing flake8 plugins,…
- flake8-helperProvides utility functions and base classes to simplify building…
- flake8_simplifyA flake8 plugin that detects and flags opportunities to simplify…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.
Install it if you work with CloudFormation templates.
See also flake8-polyfill · flake8-return · flake8-print · sensai-utils · flake8-class-attributes-order · flake8-annotations · openrewrite · flake8-pytest-style · pep8-naming · izulu