PEP 715: Disabling bdist_egg distribution uploads on PyPI (#3161)
Signed-off-by: William Woodruff <william@yossarian.net> Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
This commit is contained in:
parent
c3d9f8a3ae
commit
78f1d5fbaa
|
@ -595,6 +595,7 @@ pep-0711.rst @njsmith
|
||||||
pep-0712.rst @ericvsmith
|
pep-0712.rst @ericvsmith
|
||||||
pep-0713.rst @ambv
|
pep-0713.rst @ambv
|
||||||
pep-0714.rst @dstufft
|
pep-0714.rst @dstufft
|
||||||
|
pep-0715.rst @dstufft
|
||||||
# ...
|
# ...
|
||||||
# pep-0754.txt
|
# pep-0754.txt
|
||||||
# ...
|
# ...
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
PEP: 715
|
||||||
|
Title: Disabling bdist_egg distribution uploads on PyPI
|
||||||
|
Author: William Woodruff <william@yossarian.net>
|
||||||
|
Sponsor: Donald Stufft <donald@stufft.io>
|
||||||
|
PEP-Delegate: Donald Stufft <donald@stufft.io>
|
||||||
|
Status: Draft
|
||||||
|
Type: Process
|
||||||
|
Topic: Packaging
|
||||||
|
Content-Type: text/x-rst
|
||||||
|
Created: 06-Jun-2023
|
||||||
|
Post-History:
|
||||||
|
Resolution:
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
This PEP recommends deprecating and then disabling new uploads of the
|
||||||
|
``bdist_egg`` distribution type on PyPI. In a parallel move, this PEP recommends
|
||||||
|
deprecating and then disabling new uploads of distribution filenames that have
|
||||||
|
the ``.egg`` suffix.
|
||||||
|
|
||||||
|
It does not recommend removing or otherwise affecting any previously
|
||||||
|
uploaded ``bdist_egg`` distributions or files with the ``.egg`` suffix.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
=========
|
||||||
|
|
||||||
|
Previous Work
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The groundwork for this proposal was established with :pep:`527`, which
|
||||||
|
proposed deprecating and eventually removing upload support for a handful
|
||||||
|
of un(der)used file extensions and distribution types.
|
||||||
|
|
||||||
|
In particular, :pep:`527` proposed the removal of the ``bdist_dumb``,
|
||||||
|
``bdist_rpm``, ``bdist_dmg``, ``bdist_msi``, and ``bdist_wininst`` distribution
|
||||||
|
types, as well as the ``.tar``, ``.tar.bz2``, ``.tar.xz``, ``.tar.Z``,
|
||||||
|
``.tgz``, and ``.tbz`` file extensions on distribution filenames.
|
||||||
|
|
||||||
|
:pep:`527` was fully enacted with
|
||||||
|
`PR #7529 <https://github.com/pypi/warehouse/pull/7529>`_ to Warehouse,
|
||||||
|
which was merged on 13 April 2020.
|
||||||
|
|
||||||
|
The ``bdist_egg`` format
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The ``bdist_egg`` filetype identifies distributions in the
|
||||||
|
:term:`egg format <packaging:Egg>`. The
|
||||||
|
egg format was introduced by setuptools in 2004 and is roughly equivalent
|
||||||
|
in functionality to the
|
||||||
|
:term:`wheel format <packaging:Wheel>`
|
||||||
|
first introduced by :pep:`427` in 2012
|
||||||
|
as :ref:`the standardized format <packaging:binary-distribution-format>`
|
||||||
|
for :term:`packaging:Built Distributions`.
|
||||||
|
|
||||||
|
Despite its longevity, the egg format has had
|
||||||
|
`limited adoption on PyPI <https://github.com/pypi/warehouse/issues/10653>`_.
|
||||||
|
Some observations from that issue:
|
||||||
|
|
||||||
|
* In the month of May 2023, ``bdist_egg`` uploads accounted for 0.2% of all
|
||||||
|
distribution uploads to PyPI;
|
||||||
|
* ``pip`` deprecated its ``--egg`` option in 2016;
|
||||||
|
* ``setuptools`` has considered egg support deprecated since 2019;
|
||||||
|
* ``build`` only supports the ``sdist`` and ``bdist_wheel`` filetypes.
|
||||||
|
|
||||||
|
Given the above, this PEP proposes the removal of the ``bdist_egg`` format
|
||||||
|
under the same justifications presented in :pep:`527`, namely:
|
||||||
|
|
||||||
|
* Egg distributions are of of limited use to the broader ecosystem and
|
||||||
|
therefore represent a non-reciprocal maintenance burden;
|
||||||
|
* Having an additional built distribution format
|
||||||
|
is confusing to end users, who may
|
||||||
|
mistakenly pick it over the wheel format;
|
||||||
|
|
||||||
|
This PEP *additionally* offers an argument for removal rooted in
|
||||||
|
standardization and duplication: the egg format is not standardized by any
|
||||||
|
PEP or other community standard, and overlaps heavily with its standardized
|
||||||
|
and well-supported alternative (wheel).
|
||||||
|
|
||||||
|
The ``.egg`` file extension
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
The ``.egg`` file extension is used exclusively for distributions of the
|
||||||
|
``bdist_egg`` format. As such, it serves no purpose in a scenario where
|
||||||
|
PyPI disables new distribution uploads for ``bdist_egg`` distributions.
|
||||||
|
|
||||||
|
Removal Process
|
||||||
|
===============
|
||||||
|
|
||||||
|
This PEP does **NOT** propose removing any existing files from PyPI, only
|
||||||
|
disallowing new ones from being uploaded.
|
||||||
|
|
||||||
|
PyPI will provide a deprecation period of one month. At the beginning
|
||||||
|
of the deprecation period, maintainers of projects that have uploaded one or
|
||||||
|
more egg distributions since 1 Jan 2023 will receive a one-time email informing
|
||||||
|
them of the upcoming end of support for egg distribution uploads.
|
||||||
|
|
||||||
|
During the deprecation period, users will continue to be allowed to upload egg
|
||||||
|
distributions to new and existing projects. Uploading an egg distribution
|
||||||
|
during this period will also send all maintainers of the project
|
||||||
|
a similar email as above, reminding them of the upcoming end of support.
|
||||||
|
|
||||||
|
After the deprecation period, support for uploading egg distributions will
|
||||||
|
cease to exist on PyPI.
|
||||||
|
|
||||||
|
Prior Art
|
||||||
|
---------
|
||||||
|
|
||||||
|
The removal process above was based on that of :pep:`527`, with the following
|
||||||
|
changes:
|
||||||
|
|
||||||
|
* All projects will be continue to be allowed to upload eggs
|
||||||
|
during the deprecation period, not just those that have done so previously.
|
||||||
|
* Uploading an egg during the deprecation period will also trigger an email
|
||||||
|
to maintainers, in addition to the one-time email at the beginning.
|
||||||
|
|
||||||
|
Backwards Compatibility
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Limited Impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
As noted in the rationale section, this PEP is expected to have no impact
|
||||||
|
on the overwhelming majority of PyPI users and projects, and there has been
|
||||||
|
`substantial community coordination <https://github.com/pypi/warehouse/issues/10653>`_
|
||||||
|
over the past 1 1/2 years to minimize the impact on the few last use cases.
|
||||||
|
|
||||||
|
Hosted Files
|
||||||
|
------------
|
||||||
|
|
||||||
|
This PEP does **NOT** propose the removal of any egg distributions that have
|
||||||
|
already been uploaded to PyPI. All previously uploaded egg distributions will
|
||||||
|
remain downloadable, ensuring that existing users will continue to be able
|
||||||
|
to download them.
|
||||||
|
|
||||||
|
Deprecation Period
|
||||||
|
------------------
|
||||||
|
|
||||||
|
This PEP uses the removal process documented above, which specifies
|
||||||
|
a deprecation period of 1 month for projects that have previously uploaded
|
||||||
|
egg distributions to PyPI.
|
||||||
|
|
||||||
|
After the end of the deprecation period, support for uploading new egg
|
||||||
|
distributions will cease to exist on PyPI.
|
||||||
|
|
||||||
|
Security Implications
|
||||||
|
=====================
|
||||||
|
|
||||||
|
This PEP does not identify any positive or negative security implications
|
||||||
|
associated with removing upload support for egg distributions.
|
||||||
|
|
||||||
|
How To Teach This
|
||||||
|
=================
|
||||||
|
|
||||||
|
As part of the removal process, PyPI will send emails to all maintainers of
|
||||||
|
projects that have previously uploaded egg distributions in 2023.
|
||||||
|
|
||||||
|
Additionally, PyPI will write a post on the
|
||||||
|
`PyPI blog <https://blog.pypi.org/>`_ that publicly announces the deprecation
|
||||||
|
period's start and end.
|
||||||
|
|
||||||
|
Copyright
|
||||||
|
=========
|
||||||
|
|
||||||
|
This document is placed in the public domain or under the
|
||||||
|
CC0-1.0-Universal license, whichever is more permissive.
|
Loading…
Reference in New Issue