Skip to content

What is PEP 541 (Package Index Name Retention)?

You pick a name for your project, run uv publish, and PyPI rejects it: the name is already taken by a package that last shipped in 2016 and whose author has vanished. PEP 541 is the process for claiming that name.

PEP 541 (“Package Index Name Retention”) defines when and how PyPI transfers an existing project name to someone new, and when it removes a project outright. Transfers are a last resort, reserved for names whose owners cannot be reached, with strict conditions that protect any maintainer who is still around.

How PyPI decides a project is abandoned

A name is eligible for transfer only when all three conditions hold:

  • The owner is not reachable.
  • No releases have been published in the past twelve months.
  • There is no recent activity from the owner on the project’s home page, or no home page is listed.

Before declaring an owner unreachable, the PyPI administrators attempt contact at least three times, through the email address on the owner’s PyPI profile, the email in the project’s Author field, and any addresses in the project’s documentation or home page. The attempts stop after six weeks. Any other project is considered active and off-limits.

Claiming a name to continue the project

If a candidate wants to take over the name and keep maintaining the existing project, every one of these must be true:

  • The project meets the abandonment criteria above.
  • The candidate can show their own failed attempts to contact the owner.
  • The candidate can show improvements made on their own fork of the project.
  • The candidate can explain why publishing the fork under a different name is not an acceptable workaround.
  • The PyPI administrators have no additional reservations.

Claiming a name for a different project

Taking an abandoned name for a different project is harder. The candidate must satisfy the contact and fork-justification requirements above, plus two more:

  • The replacement project already exists and meets notability requirements (PEP 541 leaves “notability” to the administrators’ judgment).
  • Download statistics show the existing package is no longer in real use.

The extra bar reflects the cost of breaking installs: reusing a name points an established identifier at unrelated code, so the evidence that nobody depends on the old package has to be stronger.

How owners are protected

Two rules in PEP 541 close off the most damaging failure modes.

A name is never reassigned against the wishes of a reachable owner. If the maintainer answers the contact attempts and declines, the request stops there, regardless of how stale the project looks.

A project is never removed from PyPI solely because it was abandoned. Files already uploaded stay available, because removing them would break every environment and lockfile that pins the old version. A transfer changes who controls future releases of the name; it does not erase history.

When PyPI removes a project

Abandonment never triggers removal, but PEP 541 does define a separate class of invalid projects that PyPI takes down: malware, spam, illegal content, name squatting, copyright or trademark violations, code that uses obfuscation to hide what it does, Terms of Use or Code of Conduct violations, and projects abusing the index for purposes it was not built for. Typosquats and credential stealers uploaded through a supply-chain attack fall under these rules, and PyPI’s malware reporting and quarantine tooling feeds into them.

Removal is a different request from a transfer. The same PEP 541 label covers both, and the pypi/support tracker has a separate template for reporting a mass name squatter.

How to file a request

Do three things before opening an issue, per PyPI’s name retention guide: email the current owner and open an issue on the project’s repository if one exists, confirm which set of criteria your situation meets, and search the pypi/support tracker for an existing request on the same name.

Then open a new issue with the “Name retention related request (PEP 541)” template. It applies the PEP 541 label and a title of the form PEP 541 Request: PROJECT_NAME, and asks for the project link and your PyPI username. In the body, lay out the evidence each criterion calls for: the attempts to reach the owner, the fork or replacement project, and the download data when reusing a name.

Expect a first response in about a week. PyPI’s support specialist reported in January 2026 that the backlog, once sixteen months deep, was current as of December 2025 with an average first triage time of one week, after resolving about 500 PEP 541 issues in 2025. The queue still holds hundreds of open requests (321 in September 2026), so the six-week contact window plus triage means a transfer takes months, not days.

The PyPI administrators have the final say, including the discretion to grant or refuse a transfer when the standard requirements do not cleanly apply. PyPI is run by a small team within the Python Software Foundation, so a well-documented request that does the evidence-gathering up front moves faster than one that asks the administrators to investigate on the candidate’s behalf.

Last updated on