By language · Python
Abandoned Python projects looking for a new maintainer
A 2026 field guide to finding, evaluating, and adopting an abandoned Python package. Covers the PEP 541 transfer process, PyPI development_status signals, and the standard handoff vocabulary.
Published July 13, 2026 · ~3 min read
The short version
- The Python ecosystem has two parallel signals: the GitHub
adopt-metopic and the PyPIdevelopment_status = 7 (Inactive)classifier. - For an official transfer of a package name on PyPI, use the PEP 541 process — never just re-publish under a new name.
- The standard signal vocabulary is: GitHub
adopt-metopic +looking-for-maintainerbadge + a pinned "Seeking new maintainer" issue. - Bus factor 1 is the default for solo Python projects; a 12-month silence + unanswered issues + bus factor 1 = adoption candidate.
How to find abandoned Python projects
The fastest way is to use the BreakPoint feed filtered to Python. Median time from drop to first PR is 23 days, so the feed is fresh. Three other signals to layer on top:
- GitHub topic search:
https://github.com/topics/adopt-me?l=python— direct, real-time, no API needed. - PyPI classifier: any package with
development_status = 7 (Inactive)in its setup.py / pyproject.toml is officially inactive. The classifiers are machine-readable, so you can scrape them with pypi.org's JSON API. - Libraries.io + deps.dev: for transitive-dependency views (which packages depend on the candidate). A package with 50+ direct dependents is a much bigger commitment than one with 5.
The PEP 541 transfer process
PEP 541 is the only legitimate way to take over a PyPI package name when the original maintainer is unreachable. It requires all three criteria to hold:
- The owner is unreachable (no response to issues, email, or PyPI contact form for 60+ days).
- The package has had no release in 12+ months.
- The owner has had no PyPI activity in 12+ months (no uploads, no comments, no account actions).
If all three hold, file a request at pypa/pypi-support. The PyPI admin team will evaluate. The process takes weeks to months. Don't fork and re-publish under a new name — the original name is the one users depend on, and PyPI will help you get it if you ask.
If you maintain: how to signal "looking for a maintainer"
See the maintainer handoff guide for the full 5-step playbook. The Python-specific bits: add the adopt-me GitHub topic, add the shields.io looking-for-maintainer badge to the README, pin a "Seeking new maintainer" issue, and drop the project on BreakPoint. The development_status = 7 (Inactive) classifier is the ecosystem-level signal but it's a one-way door — once you set it, you can't easily unset. Use it after you've actually stopped maintaining, not as a "looking for help" signal.
Frequently asked questions
How do I find abandoned Python projects?
Three places: the BreakPoint feed filtered to Python, the GitHub adopt-me topic, and PyPI packages with development_status = 7.
What's the PEP 541 process?
The formal PyPI process for transferring a package name to a new maintainer when the original is unreachable. File at pypa/pypi-support. Takes weeks to months.
How do I signal my Python project is looking for a maintainer?
GitHub adopt-me topic + looking-for-maintainer badge + a pinned issue. The PyPI development_status = 7 classifier is a one-way door, use it after you stop.
Related reading
Adopter guide
How to take over an abandoned open source project
The 6-step playbook that applies to every language, including the cross-language contact-and-fork workflow.
Find a Python project
The BreakPoint feed — fresh adoptions, filtered to your stack
Median drop-to-first-PR is 23 days. The right Python project is here.