yesqa
Automatically remove unnecessary `# noqa` comments.
Decision gist · record as of 2026-08-14
Yes. yesqa solves a real maintenance problem—noqa comment drift—with low install friction, active maintenance, permissive licensing, and no known vulnerabilities. It's most valuable in teams or projects that use flake8 and want to keep suppression comments honest over time.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.8 or later; flake8 must be installed (included as a runtime dependency).
- Low friction: pure Python wheel with only two runtime dependencies (flake8 and tokenize-rt).
- Actively maintained as of July 2026 with consistent commit history.
License · maintenance · safety
MIT (permissive) — MIT license (permissive) places no restrictions on use, modification, or distribution in commercial or private projects.
last release 2023-06-10 (1161 days) · last repo commit 2026-07-15 · 264 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 132,383 downloads/mo, #11,554 on PyPI
Alternatives
Verify before relying
pip install yesqa
# Run on a Python file
yesqa your_file.py
# Or use as a pre-commit hook by adding to .pre-commit-config.yaml:
# - repo: https://github.com/asottile/yesqa
# rev: v1.5.0
# hooks:
# - id: yesqa- Whether yesqa correctly handles all flake8 plugin combinations when additional_dependencies are specified.
- Performance characteristics on very large codebases or projects with many noqa comments.
What it is and what it does
yesqa is a maintenance tool that scans Python code for `# noqa` comments and removes those that are no longer needed. It integrates with flake8 to determine which suppressions are actually suppressing violations; if a comment no longer matches any active violation, it gets removed. This is useful when your linting configuration changes (e.g., you increase max line length), when code is refactored and violations disappear, or when noqa comments were added by mistake.
The tool works as a standalone command-line utility or as a pre-commit hook, making it easy to enforce clean suppression comments across a team or CI pipeline. It depends on flake8 for violation detection and tokenize-rt for safe comment manipulation, and supports both CPython and PyPy on modern Python versions.
Use it for
- Clean up noqa comments after raising your flake8 line-length limit or disabling certain checks.
- Remove stale suppressions when refactoring code that previously violated linting rules.
- Enforce hygiene in pre-commit hooks to prevent accumulation of dead noqa comments over time.
- Audit a codebase to find noqa comments that were added by mistake and no longer serve a purpose.
- Integrate into CI to automatically flag or remove unnecessary suppressions during code review.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
yesqa solves a real maintenance problem—noqa comment drift—with low install friction, active maintenance, permissive licensing, and no known vulnerabilities. It's most valuable in teams or projects that use flake8 and want to keep suppression comments honest over time.
Install
yesqa on PyPI
Before you install
Low friction: pure Python wheel with only two runtime dependencies (flake8 and tokenize-rt). Actively maintained as of July 2026 with consistent commit history.
Requires Python 3.8 or later; flake8 must be installed (included as a runtime dependency).
License in practice
MIT license (permissive) places no restrictions on use, modification, or distribution in commercial or private projects.
Quickstart
pip install yesqa
# Run on a Python file
yesqa your_file.py
# Or use as a pre-commit hook by adding to .pre-commit-config.yaml:
# - repo: https://github.com/asottile/yesqa
# rev: v1.5.0
# hooks:
# - id: yesqa
Verify before relying
- Whether yesqa correctly handles all flake8 plugin combinations when additional_dependencies are specified.
- Performance characteristics on very large codebases or projects with many noqa comments.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagesflake8tokenize-rt |
| Maintenance | Actively maintained 1,161 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 132,383 / month, #11,554 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 :: OnlyProgramming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPy |
Evidence: yesqa-1.5.0-py2.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 › “remove unnecessary noqa comments”
- yesqayesqa automatically removes unnecessary `# noqa` comments from Python…
- flake8-noqaA flake8 plugin that validates the formatting and necessity of `#…
- htmlmin2Minifies HTML by removing unnecessary whitespace and comments while…
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-noqa · autoflake · deadcode · eradicate · pyupgrade · cppclean · nb-clean · pep8 · pip-autoremove · refurb