flake8-pep585
flake8 plugin to enforce new-style type hints (PEP 585)
Decision gist · record as of 2026-08-14
Yes, if you are actively maintaining code on Python 3.9+ and want to enforce PEP 585 compliance. The plugin is straightforward to set up and has no runtime overhead. However, note that the project is abandoned (last release February 2023) and may not be updated for future flake8 or Python releases, so verify compatibility with your current toolchain before relying on it long-term.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires flake8 to be installed separately.
- Only enforces PEP 585 rules on Python 3.7–3.9; behavior on 3.7–3.8 depends on presence of `from __future__ import annotations`.
- Low install friction; no runtime dependencies.
License · maintenance · safety
MPL-2.0 (copyleft) — Licensed under MPL-2.0 (copyleft). You may use and modify the plugin freely, but any modifications must be distributed under the same license if shared.
last release 2023-02-26 (1265 days) · last repo commit 2023-02-28 · 23 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 98,711 downloads/mo, #13,063 on PyPI
Alternatives
Verify before relying
pip install flake8-pep585
# Then run flake8 on your code:
flake8 your_project/
# Or configure via setup.cfg:
# [flake8]
# pep585-activation = always- Whether the plugin correctly handles all PEP 585 replacements or if there are edge cases not covered.
- Whether the abandoned status means the plugin may break with future Python or flake8 releases.
What it is and what it does
flake8-pep585 is a linter plugin that integrates with flake8 to catch deprecated type imports from the `typing` module. PEP 585 introduced the ability to use standard library classes directly for type annotations—for example, `list[int]` instead of `typing.List[int]`, or `collections.abc.Callable` instead of `typing.Callable`. The plugin scans your code for these deprecated imports and reports them with specific error codes and suggestions for the modern equivalent.
The plugin works on Python 3.7 through 3.9 and can be configured to always enforce the rules, automatically detect them (based on the presence of `from __future__ import annotations`), or never enforce them. You can also whitelist specific symbols if you have a reason to keep using the older imports. Since it has no runtime dependencies beyond flake8 itself, installation is straightforward.
Use it for
- Modernize a codebase to use PEP 585 type hints when upgrading to Python 3.9+.
- Enforce team standards in CI/CD pipelines to prevent deprecated typing imports in new code.
- Discover and fix deprecated type imports that IDEs' auto-import features may have suggested.
- Gradually migrate a project to modern type annotations without manual code review.
- Validate that a project is ready for future Python versions where old typing imports may be removed.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are actively maintaining code on Python 3.9+ and want to enforce PEP 585 compliance.
The plugin is straightforward to set up and has no runtime overhead. However, note that the project is abandoned (last release February 2023) and may not be updated for future flake8 or Python releases, so verify compatibility with your current toolchain before relying on it long-term.
Install
flake8-pep585 on PyPI
Before you install
Low install friction; no runtime dependencies. Maintenance is abandoned—last release was 2023-02-26, over a year ago. The repository is not archived, but no active development is expected.
Requires flake8 to be installed separately. Only enforces PEP 585 rules on Python 3.7–3.9; behavior on 3.7–3.8 depends on presence of `from __future__ import annotations`.
License in practice
Licensed under MPL-2.0 (copyleft). You may use and modify the plugin freely, but any modifications must be distributed under the same license if shared.
Quickstart
pip install flake8-pep585
# Then run flake8 on your code:
flake8 your_project/
# Or configure via setup.cfg:
# [flake8]
# pep585-activation = always
Verify before relying
- Whether the plugin correctly handles all PEP 585 replacements or if there are edge cases not covered.
- Whether the abandoned status means the plugin may break with future Python or flake8 releases.
Package facts
| License | MPL-2.0 copyleft |
| Python support | Supports the current Python release >=3.7,<4.0 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Abandoned 1,265 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 98,711 / month, #13,063 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI ApprovedProgramming Language :: Python :: 3Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: flake8_pep585-0.1.7-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 pep 585 plugin”
- flake8-pep585A flake8 plugin that detects and flags deprecated type imports from…
- pep8-namingA flake8 plugin that checks Python code for compliance with PEP 8…
- flake8-pep3101A flake8 plugin that detects and flags old-style string formatting…
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-deprecated · flake8-requirements · flake8-annotations · flake8-typing-imports · flake8-tidy-imports · flake8-import-order · eval-type-backport · typeapi · flake8-type-checking · flake8-pep3101