PEP 715 – 在 PyPI 上禁用 bdist_egg 分发上传
- 作者:
- William Woodruff <william at yossarian.net>
- 赞助者:
- Donald Stufft <donald at stufft.io>
- PEP 代表:
- Donald Stufft <donald at stufft.io>
- 讨论邮件列表:
- Discourse 帖子
- 状态:
- 最终
- 类型:
- 标准跟踪
- 主题:
- 打包
- 创建日期:
- 2023年6月6日
- 历史记录:
- 2023年6月9日
- 决议:
- Discourse 消息
摘要
本 PEP 建议弃用,然后禁用在 PyPI 上上传新的 bdist_egg
分发类型。同时,本 PEP 建议弃用,然后禁用上传具有 .egg
后缀的文件名。
在实施本 PEP 后,PyPI 将仅接受 sdist
和 bdist_wheel
类型的新的上传,分别对应于具有 .tar.gz
/.zip
和 .whl
后缀的文件。
本 PEP 不建议删除或以其他方式影响任何先前上传的 bdist_egg
分发或具有 .egg
后缀的文件。
基本原理
先前的工作
本提案的基础是 PEP 527 建立的,该提案建议弃用并最终删除对少量未(被)使用文件扩展名和分发类型的上传支持。
特别是,PEP 527 提议删除 bdist_dumb
、bdist_rpm
、bdist_dmg
、bdist_msi
和 bdist_wininst
分发类型,以及 .tar
、.tar.bz2
、.tar.xz
、.tar.Z
、.tgz
和 .tbz
分发文件名中的文件扩展名。
PEP 527 已通过 PR #7529 完全在 Warehouse 中实施,该 PR 于 2020 年 4 月 13 日合并。
bdist_egg
格式
bdist_egg
文件类型标识 egg 格式 中的分发。egg 格式由 setuptools 于 2004 年引入,其功能大致等同于 wheel 格式,后者于 2012 年由 PEP 427 引入,作为 标准化格式 用于 构建的分发。
尽管 egg 格式存在时间较长,但在 PyPI 上的 采用率有限。该问题中的一些观察结果
- 在 2023 年 5 月,
bdist_egg
上传占 PyPI 所有分发上传的 0.2%; pip
于 2016 年弃用了其--egg
选项;setuptools
自 2019 年起就将 egg 支持视为已弃用;build
仅支持sdist
和bdist_wheel
文件类型。
鉴于以上情况,本 PEP 提议在 PEP 527 中提出的相同理由下删除 bdist_egg
格式,即
- egg 分发对更广泛的生态系统用途有限,因此代表了一种非互惠的维护负担;
- 拥有额外的构建分发格式会让最终用户感到困惑,他们可能会错误地选择它而不是 wheel 格式;
本 PEP 此外还提供了一个基于标准化和重复的删除理由:egg 格式未由任何 PEP 或其他社区标准标准化,并且与标准化且得到良好支持的替代方案(wheel)高度重叠。
.egg
文件扩展名
.egg
文件扩展名专门用于 bdist_egg
格式的分发。因此,在 PyPI 禁用对 bdist_egg
分发的新的分发上传的情况下,它没有任何作用。
移除流程
本 PEP **不**建议从 PyPI 中删除任何现有文件,只禁止上传新的文件。
PyPI 将提供为期一个月的弃用期限。在弃用期限开始时,自 2023 年 1 月 1 日以来上传过一个或多个 egg 分发的项目的维护者将收到一封一次性电子邮件,通知他们即将停止支持 egg 分发上传。
在弃用期限内,用户将继续被允许将 egg 分发上传到新的和现有的项目中。在此期间上传 egg 分发也将向项目的全部维护者发送与上述类似的电子邮件,提醒他们即将停止支持。
弃用期限结束后,PyPI 将不再支持上传 egg 分发。
先例
以上移除流程基于 PEP 527 中的流程,并进行了以下更改
- 在弃用期限内,所有项目都将继续被允许上传 egg,而不仅仅是以前上传过的项目。
- 在弃用期限内上传 egg 也会触发发送电子邮件给维护者,除了在开始时发送的一次性电子邮件。
向后兼容性
影响有限
如基本原理部分所述,预计本 PEP 对绝大多数 PyPI 用户和项目不会产生任何影响,并且在过去 1 年半的时间里,社区已经进行了大量的协调,以最大程度地减少对最后几个用例的影响。
托管文件
本 PEP **不**建议删除已上传到 PyPI 的任何 egg 分发。所有先前上传的 egg 分发都将保持可下载状态,以确保现有用户能够继续下载它们。
弃用期限
本 PEP 使用上面记录的移除流程,该流程为先前已将 egg 分发上传到 PyPI 的项目指定了 1 个月的弃用期限。
弃用期限结束后,PyPI 将不再支持上传新的 egg 分发。
安全隐患
本 PEP 未发现与删除 egg 分发上传支持相关的任何正面或负面安全影响。
如何讲解
作为移除流程的一部分,PyPI 将向 2023 年以前上传过 egg 分发的所有项目的维护者发送电子邮件。
此外,PyPI 将在 PyPI 博客 上发布一篇帖子,公开宣布弃用期限的开始和结束。
版权
本文件置于公有领域或根据 CC0-1.0-Universal 许可证使用,以两者中许可范围更广者为准。
来源:https://github.com/python/peps/blob/main/peps/pep-0715.rst
最后修改时间:2023-09-09 17:39:29 GMT