PEP 715: Disabling bdist_egg distribution uploads on PyPI

Draft PEP: PEP 715 – Disabling bdist_egg distribution uploads on PyPI |

Other context:

To summarize the rationale and motivation:

  • Egg distributions make up a tiny fraction of the overall number of distributions uploaded to PyPI (under 0.2%), and have been deprecated by other components of the packaging ecosystem (pip, setuptools, etc.) for years;
  • Egg distributions are effectively a non-standard legacy alternative to the other built distribution format that PyPI supports (wheels), meaning that its continued presence represents a source of potential user confusion about which format is better defined and encouraged by the broader ecosystem.

To summarize the proposed changes:

  • I propose that we consider bdist_egg and .egg deprecated on PyPI and enable a 1-month deprecation period, similar to what was done with PEP 527;
  • After the deprecation period, PyPI should cease to accept uploads of egg distributions;
  • Existing distributions are not affected, meaning that PyPI will continue to serve any egg distributions uploaded before and during the deprecation period.

The PEP also enumerates some methods for communicating this change, including emailing every maintainer of every project that has uploaded an egg distribution since January 1 2023, emailing every maintainer whose project uploads an egg during the deprecation period, and posting a notice to the PyPI blog.


Looking at the files currently on PyPI, I see the following extensions:

{'.bz2', '.tgz', '.exe', '.tar.gz', '.msi', '.egg', '.rpm', '.ZIP', '.deb', '.whl', '.dmg', '.zip'}

Of these, I believe the only ones that will still be accepted after PEP 715 is implemented would be .tar.gz, .zip and .whl (the uppercase .ZIP is a single file from 2015, presumably incorrectly named). Is that correct? And would it be worth documenting that explicitly somewhere?

I believe the only ones that will still be accepted after PEP 715 is implemented would be .tar.gz , .zip and .whl (the uppercase .ZIP is a single file from 2015, presumably incorrectly named). Is that correct?

That’s my understanding as well!

I can make that explicit in this PEP, if you think that makes sense – PEP 527 does something similar with the filetypes/extensions that it deprecated.

Beyond that, maybe it makes sense to update the PyPUG documentation around support? The current section on uploading to PyPI is somewhat sparse (and doesn’t mention which filetypes are supported at all): Packaging and distributing projects — Python Packaging User Guide

1 Like

I’m +1 on this PEP, I think it’s long been time for PyPI to drop support for the egg format unless someone comes forward with a compelling use case to delay it.


I’m a +1 on this PEP as well.

Given that this has been sitting with no additional comments in the past week, what’s the next steps here?

I’d say submit it for approval.


Just a process question: why does the PEP have a post-history on 9-Aug-2023, i.e., in the future?

1 Like

Presumably just a typo (should have been 9 Jun, as that’s the post the link points to). I’m sure it would be appreciated if you submit a PR fixing it.

A PR was filed and merged. :slight_smile:


Thanks for fixing my typo @jeanas!

Since I’m a PEP noob: is there anything I need to do to send this for acceptance beyond opening the steering council issue (as mentioned in PEP 1)?

@dstufft is listed as the PEP-Delegate here, so there’s no need to get the Steering Council involved. If you feel it is ready for resolution, and he agrees, then simply let him know and he’ll go ahead, do a final review and approve it, and you can then update the PEP accordingly—though it might be best to wait another 12 hours for any last objections/comments, so the discussion thread is open for an even two weeks.


Just over two weeks have passed, so I’m hereby requesting @dstufft’s approval.

1 Like

An easy PEP to review!

I hereby declare PEP 715 as accepted.


Tying things together: PyPI has merged the first part of PEP 715’s specified behavior, meaning that the deprecation period has begun (and will end on 2023-08-01).

The announcement blog post is here: Deprecation of bdist_egg uploads to PyPI - The Python Package Index