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. It is 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 maintainers attempt contact by email at up to three known addresses and wait roughly six weeks for a reply. 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 maintainers 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 maintainers’ 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.

These protections are also why PEP 541 is not a tool against supply-chain risk. It resolves ownership disputes; it does not take down malicious or typosquatted packages, which PyPI handles through separate removal policies.

How to file a request

Requests go to the pypi/support issue tracker, opened with the “PEP 541 Request” label. The issue should 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. Sensitive details move to a private channel after the public issue is filed.

The PyPI administrators triage these requests and 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 maintainers to investigate on the candidate’s behalf.

Learn More

Last updated on