Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 715 – Deaktivierung von bdist_egg Distribution Uploads auf PyPI

Autor:
William Woodruff <william at yossarian.net>
Sponsor:
Donald Stufft <donald at stufft.io>
PEP-Delegate:
Donald Stufft <donald at stufft.io>
Discussions-To:
Discourse thread
Status:
Final
Typ:
Standards Track
Thema:
Packaging
Erstellt:
06. Jun 2023
Post-History:
09. Jun 2023
Resolution:
24. Jun 2023

Inhaltsverzeichnis

Zusammenfassung

Diese PEP empfiehlt die Deprecations und anschließende Deaktivierung neuer Uploads des bdist_egg Distributionstyps auf PyPI. Parallel dazu empfiehlt diese PEP die Deprecations und anschließende Deaktivierung neuer Uploads von Distributionsdateinamen mit der .egg Endung.

Nach dieser PEP wird PyPI nur noch neue Uploads der Distributionstypen sdist und bdist_wheel akzeptieren, die Dateien mit den Endungen .tar.gz/.zip bzw. .whl entsprechen.

Diese PEP empfiehlt nicht, bereits hochgeladene bdist_egg Distributionen oder Dateien mit der .egg Endung zu entfernen oder anderweitig zu beeinflussen.

Begründung

Vorangegangene Arbeiten

Die Grundlage für diesen Vorschlag wurde mit PEP 527 geschaffen, die die Deprecations und eventualle Entfernung der Upload-Unterstützung für eine Handvoll nicht (unter)genutzter Dateiendungen und Distributionstypen vorschlug.

Insbesondere schlug PEP 527 die Entfernung der Distributionstypen bdist_dumb, bdist_rpm, bdist_dmg, bdist_msi und bdist_wininst vor, sowie der Dateiendungen .tar, .tar.bz2, .tar.xz, .tar.Z, .tgz und .tbz in Distributionsdateinamen.

PEP 527 wurde vollständig mit PR #7529 zu Warehouse umgesetzt, der am 13. April 2020 zusammengeführt wurde.

Das bdist_egg Format

Der bdist_egg Dateityp identifiziert Distributionen im Egg-Format. Das Egg-Format wurde 2004 von setuptools eingeführt und ist funktional ungefähr gleichwertig mit dem Wheel-Format, das erstmals 2012 mit PEP 427 als standardisiertes Format für Build-Distributionen eingeführt wurde.

Trotz seiner Langlebigkeit hat das Egg-Format eine begrenzte Verbreitung auf PyPI erfahren. Einige Beobachtungen aus diesem Issue:

  • Im Monat Mai 2023 machten bdist_egg Uploads 0,2 % aller Distribution-Uploads auf PyPI aus;
  • pip hat seine --egg Option 2016 deprecated;
  • setuptools betrachtet die Egg-Unterstützung seit 2019 als deprecated;
  • build unterstützt nur die Dateitypen sdist und bdist_wheel.

Angesichts dessen schlägt diese PEP die Entfernung des bdist_egg Formats unter den gleichen Begründungen wie in PEP 527 vor, nämlich:

  • Egg-Distributionen sind für das breitere Ökosystem von begrenztem Nutzen und stellen daher eine nicht-reziproke Wartungsbelastung dar;
  • Ein zusätzliches Build-Distributionsformat ist für Endbenutzer verwirrend, die es fälschlicherweise dem Wheel-Format vorziehen könnten;

Diese PEP bietet *zusätzlich* ein Argument für die Entfernung, das auf Standardisierung und Duplizierung basiert: Das Egg-Format ist nicht durch eine PEP oder einen anderen Community-Standard standardisiert und überschneidet sich stark mit seiner standardisierten und gut unterstützten Alternative (Wheel).

Die .egg Dateiendung

Die Dateiendung .egg wird ausschließlich für Distributionen des bdist_egg Formats verwendet. Daher dient sie keinem Zweck in einem Szenario, in dem PyPI neue Distribution-Uploads für bdist_egg Distributionen deaktiviert.

Entfernungsprozess

Diese PEP schlägt NICHT vor, bereits auf PyPI hochgeladene Dateien zu entfernen, sondern nur, neue Uploads zu verbieten.

PyPI wird eine Deprecationsperiode von einem Monat anbieten. Zu Beginn der Deprecationsperiode erhalten Maintainer von Projekten, die seit dem 1. Januar 2023 ein oder mehrere Egg-Distributionen hochgeladen haben, eine einmalige E-Mail, die sie über das bevorstehende Ende der Unterstützung für Egg-Distribution-Uploads informiert.

Während der Deprecationsperiode dürfen Benutzer weiterhin Egg-Distributionen für neue und bestehende Projekte hochladen. Das Hochladen einer Egg-Distribution während dieser Zeit sendet auch allen Maintainern des Projekts eine ähnliche E-Mail wie oben, die sie an das bevorstehende Ende der Unterstützung erinnert.

Nach Ablauf der Deprecationsperiode wird die Unterstützung für das Hochladen von Egg-Distributionen auf PyPI eingestellt.

Vorhandene Lösungen

Der obige Entfernungsprozess basiert auf dem von PEP 527, mit folgenden Änderungen:

  • Alle Projekte dürfen während der Deprecationsperiode weiterhin Eggs hochladen, nicht nur diejenigen, die dies zuvor getan haben.
  • Das Hochladen eines Eggs während der Deprecationsperiode löst zusätzlich zur einmaligen E-Mail zu Beginn eine E-Mail an die Maintainer aus.

Abwärtskompatibilität

Begrenzte Auswirkungen

Wie im Abschnitt zur Begründung erwähnt, wird erwartet, dass diese PEP keine Auswirkungen auf die überwiegende Mehrheit der PyPI-Benutzer und -Projekte haben wird, und es gab umfangreiche Koordination in der Community in den letzten 1,5 Jahren, um die Auswirkungen auf die wenigen letzten Anwendungsfälle zu minimieren.

Gehostete Dateien

Diese PEP schlägt NICHT die Entfernung von bereits auf PyPI hochgeladenen Egg-Distributionen vor. Alle zuvor hochgeladenen Egg-Distributionen bleiben herunterladbar, um sicherzustellen, dass bestehende Benutzer sie weiterhin herunterladen können.

Deprecationsperiode

Diese PEP verwendet den oben dokumentierten Entfernungsprozess, der eine Deprecationsperiode von 1 Monat für Projekte vorsieht, die zuvor Egg-Distributionen auf PyPI hochgeladen haben.

Nach Ablauf der Deprecationsperiode wird die Unterstützung für das Hochladen neuer Egg-Distributionen auf PyPI eingestellt.

Sicherheitsimplikationen

Diese PEP identifiziert keine positiven oder negativen Sicherheitsauswirkungen im Zusammenhang mit der Entfernung der Upload-Unterstützung für Egg-Distributionen.

Wie man das lehrt

Als Teil des Entfernungsprozesses wird PyPI E-Mails an alle Maintainer von Projekten senden, die im Jahr 2023 zuvor Egg-Distributionen hochgeladen haben.

Zusätzlich wird PyPI einen Beitrag auf dem PyPI-Blog veröffentlichen, der den Beginn und das Ende der Deprecationsperiode öffentlich bekannt gibt.


Quelle: https://github.com/python/peps/blob/main/peps/pep-0715.rst

Zuletzt geändert: 2025-02-01 08:55:40 GMT