PEP 2026 – Kalenderbasierte Versionierung für Python
- Autor:
- Hugo van Kemenade
- Discussions-To:
- Discourse thread
- Status:
- Abgelehnt
- Typ:
- Prozess
- Erstellt:
- 11. Juni 2024
- Python-Version:
- 3.26
- Post-History:
- 14. Juni 2024
- Resolution:
- Discourse-Nachricht
Zusammenfassung
Dieser PEP schlägt eine Aktualisierung des Versionierungsschemas für Python vor, um das Kalenderjahr einzubeziehen.
Calendar Versioning (CalVer) macht alles einfacher, in Kalenderzeit zu übersetzen, anstatt Versionen zu zählen und nachzuschlagen, wann sie veröffentlicht werden (oder wurden).
- Der Support-Lebenszyklus ist klar, sodass leicht ersichtlich ist, wann eine Version erstmals veröffentlicht wurde.
- Veralterungen sind für Betreuer und Benutzer einfacher zu verwalten.
- Es ist einfacher zu ermitteln, wann eine Version ihr End-of-Life (EOL) erreicht.
- Es hilft Menschen, insbesondere neuen Lernenden, zu verstehen, wie alt ihre Installation ist.
- Es ist einfacher zu begründen, welche Python-Versionen für Bibliotheken und Anwendungen unterstützt werden sollen.
Beginnend mit dem, was Python 3.15 gewesen wäre, lautet die Version 3.JJ.micro, wobei JJ das Jahr der Erstveröffentlichung ist.
- Python 3.26 wird 2026 anstelle von Python 3.15 veröffentlicht. EOL ist fünf Jahre nach der Erstveröffentlichung, daher erreicht Python 3.26 EOL im Jahr 2031.
- Python 3.27 wird 2027 veröffentlicht, und so weiter.
Motivation und Begründung
Im Jahr 2019 haben wir mit PEP 602 einen jährlichen Veröffentlichungszyklus eingeführt, der die Tür für kalenderbasierte Versionierung öffnete.
Die Einführung eines jährlichen Veröffentlichungskalenders ermöglicht einen natürlichen Übergang zur kalenderbasierten Versionierung, z. B. indem Python 3.9 als „Python 3.20“ bezeichnet wird, da es im Oktober '20 veröffentlicht wird, und so weiter („Python 3.23“ wäre das, das im Oktober '23 veröffentlicht wird).Obwohl die einfache Umstellung auf kalenderbasierte Versionierung als Vorteil eines jährlichen Veröffentlichungszyklus angesehen werden kann, plädiert dieser PEP weder für noch gegen eine Änderung der Art und Weise, wie Python versioniert wird. Sollte der jährliche Veröffentlichungszyklus übernommen werden, wird die Versionsfrage in einem separaten PEP behandelt.
Dies ist dieser PEP.
Aktuelles Schema
Aus den Allgemeinen Python-FAQ: Wie funktioniert das Versionsnummerierungsschema von Python?
Python-Versionen werden als „A.B.C“ oder „A.B“ nummeriert.
- A ist die Hauptversionsnummer – sie wird nur für wirklich größere Änderungen an der Sprache erhöht.
- B ist die Nebenversionsnummer – sie wird für weniger weltbewegende Änderungen erhöht.
- C ist die Mikroversionsnummer – sie wird für jede Fehlerkorrekturveröffentlichung erhöht.
Python ist älter als SemVer
Semantic Versioning (SemVer) ist ein beliebtes Schema, das die Absicht einer Veröffentlichung kommunizieren soll (obwohl es nicht immer erfolgreich ist).
Gegeben eine Versionsnummer MAJOR.MINOR.PATCH, erhöhen Sie die
- MAJOR-Version, wenn Sie inkompatible API-Änderungen vornehmen.
- MINOR-Version, wenn Sie Funktionalität rückwärtskompatibel hinzufügen.
- PATCH-Version, wenn Sie rückwärtskompatible Fehlerbehebungen vornehmen.
Leute gehen oft davon aus, dass Python SemVer folgt und beschweren sich über brachliegende Änderungen in Funktions- Veröffentlichungen. Aber Python ist SemVer um mindestens 15 Jahre voraus: die SemVer-Spezifikation wurde im Jahr 2009 eingeführt und das maßgeschneiderte Python-Schema wurde 1994 in die Quellcodeverwaltung aufgenommen für die Veröffentlichung 1.0.
Wenn Python SemVer annehmen würde, würde das bedeuten, dass jedes Jahr eine neue Hauptversion veröffentlicht wird, wenn wir Veralterungen entfernen.
Anstelle von SemVer haben jedoch einige Projekte ein anderes Versionsschema übernommen, das auf dem Kalender basiert.
Kalenderbasierte Versionierung
Mit Calendar Versioning (CalVer) integrieren Sie ein Element des Datums in die Versionsnummer. Zum Beispiel verwenden Ubuntu und Black das Jahr und den Monat – Ubuntu 24.04 kam im April 2024 heraus; pip und PyCharm verwenden nur das Jahr.
| Ubuntu | Black | pip | PyCharm |
|---|---|---|---|
| JJ.0M.micro | JJ.MM.micro | JJ.minor.micro | JJJJ.minor.micro |
23.04
23.10
24.04
24.10
|
23.12.1
24.1.0
24.1.1
24.2.0
|
23.3
23.3.1
23.3.2
24.0
|
2023.3.5
2024.1
2024.1.1
2024.1.2
|
Und hier sind einige Programmiersprachenstandards, die alle eine Form des Jahres verwenden.
| Ada | Algol | C | C++ | Fortran | ECMAScript
auch bekannt als JavaScript
|
|---|---|---|---|---|---|
| JJ / JJJJ | JJ | JJ | JJ | JJ / JJJJ | JJJJ |
83
95
2012
2022
|
58
60
68
|
89
99
11
23
|
98
03
11
23
|
66
90
2003
2023
|
2020
2021
2022
2023
|
Jährlicher Veröffentlichungsrhythmus
Seit 2019 veröffentlichen wir jedes Jahr eine neue Version.
- 3.15.0 wird 2026 veröffentlicht.
- 3.16.0 wird 2027 veröffentlicht.
- 3.17.0 wird 2028 veröffentlicht.
- 3.18.0 wird 2029 veröffentlicht.
- 3.19.0 wird 2030 veröffentlicht.
Das ist eine Art kalenderbasiert, nur dass es um 11 Jahre versetzt ist.
CalVer für Python
Die einfachste CalVer-Option wäre, bei der Hauptversion 3 zu bleiben und das Jahr in der Nebenversion zu kodieren.
- 3.26.0 wird 2026 veröffentlicht.
- 3.27.0 wird 2027 veröffentlicht.
- 3.28.0 wird 2028 veröffentlicht.
- 3.29.0 wird 2029 veröffentlicht.
- 3.30.0 wird 2030 veröffentlicht.
Zum Beispiel wird 3.26 im Jahr 2026 veröffentlicht. Das macht offensichtlich, wann eine Veröffentlichung zum ersten Mal herauskam.
Klarheit bei der Entfernung von Veralterungen
Warnungen für Veralterungen erwähnen oft die Version, in der sie entfernt werden. Zum Beispiel:
DeprecationWarning: „ctypes.SetPointerType“ ist veraltet und soll in Python 3.15 entfernt werden.
Sobald man jedoch CalVer kennt, ist aus der Warnung sofort ersichtlich, wie viel Zeit man zum Handeln hat.
DeprecationWarning: „ctypes.SetPointerType“ ist veraltet und soll in Python 3.26 entfernt werden.
Klarheit des Support-Lebenszyklus
Momentan ist es etwas knifflig zu ermitteln, wann eine Veröffentlichung ihr End-of-Life hat. Zuerst muss man nachschauen, wann sie ursprünglich veröffentlicht wurde, und dann 5 Jahre hinzufügen.
„Wann wird Python 3.11 EOL sein?“„Nun, mal sehen… PEP 664 ist der 3.11 Veröffentlichungsplan, er besagt, dass 3.11 2022 veröffentlicht wurde, EOL nach 5 Jahren, also 2022 + 5 = 2027.“
Aber wenn das Jahr der Erstveröffentlichung direkt in der Version steht, ist es viel einfacher.
„Wann wird Python 3.26 EOL sein?“„26 + 5 = [20]31“
Klarheit des Installationsalters
Mit dem Jahr in der Version ist es einfacher zu ermitteln, wie alt die Installation ist. Zum Beispiel ist es mit dem aktuellen Schema, wenn Sie 2035 Python 3.15 verwenden, nicht sofort ersichtlich, dass es 2026 erstmals veröffentlicht wurde (und seit 2031 EOL ist).
Mit Kenntnis von CalVer ist es klar, wenn Sie 2035 Python 3.26 verwenden, dass es vor neun Jahren zum ersten Mal veröffentlicht wurde und es wahrscheinlich Zeit für ein Upgrade ist.
Dies kann dazu beitragen, Leute zum Wechsel zu unterstützten Versionen zu bewegen, die noch unter Sicherheitsunterstützung stehen, und neuen Benutzern helfen, die möglicherweise ältere Installationen haben.
Klarheit der Versionsunterstützung
CalVer macht es einfacher, darüber nachzudenken, welche Python-Versionen unterstützt werden sollen.
Zum Beispiel setzt die Festlegung Ihrer minimalen kompatiblen Python-Version auf 3.19 im Jahr 2031 ohne CalVer eine aggressive Annahme hinsichtlich der Versionsübernahme und -unterstützung.
Mit CalVer ist dies jedoch offensichtlicher, wenn die Mindestversion 3.30 im Jahr 2031 festgelegt wird. Für breitere Unterstützung bevorzugen Sie vielleicht die Festlegung auf 3.26.
Ähnlich müssen Bibliothekspfleger, die alle CPython-Upstream-Versionen unterstützen, gegen fünf Versionen (oder sechs einschließlich der Vorabversion) testen.
Zum Beispiel wären im Jahr 2030 die unterstützten Versionen ohne CalVer
- 3.15, 3.16, 3.17, 3.18, 3.19
Mit CalVer wären sie
- 3.26, 3.27, 3.28, 3.29, 3.30
Ein Betreuer kann auf einen Blick sehen, welche Versionen aktuell sind und getestet werden müssen.
Non-goals
Wie beim aktuellen Schema wird nur die Mikroversion für Fehlerbehebungs- und Sicherheitsveröffentlichungen erhöht, ohne Änderung an Haupt- und Nebenversion. Zum Beispiel:
| Aktuelles Schema | Vorgeschlagen 3.JJ.micro | |
|---|---|---|
| Erstveröffentlichung (Okt '26) | 3.15.0 | 3.26.0 |
| 1. Fehlerbehebungsversion (Dez '26) | 3.15.1 | 3.26.1 |
| 2. Fehlerbehebungsversion (Feb '27) | 3.15.2 | 3.26.2 |
| … | … | … |
| Letzte Sicherheitsveröffentlichung (Okt '31) | 3.15.17 | 3.26.17 |
Keine Änderung an PEP 602 (Jährlicher Veröffentlichungszyklus für Python).
- Keine Änderung an den 17 Monaten zur Entwicklung einer neuen Funktion: Alphas, Betas und Release Candidates.
- Keine Änderung an der Support-Dauer: zwei Jahre voller Support und drei Jahre Sicherheitsupdates.
- Keine Änderung am jährlichen Oktober-Veröffentlichungsrhythmus.
Spezifikation
Python-Versionen werden als 3.JJ.micro nummeriert, wobei
- 3 die Hauptversionsnummer ist – sie ist immer 3.
- JJ die Nebenversionsnummer ist – es ist die kurze Jahreszahl:
{year} - 2000. - micro die Mikroversionsnummer ist – sie wird für jede Fehlerbehebungs- oder Sicherheitsveröffentlichung erhöht.
Wir behalten die Hauptversion 3 bei. Python 3 ist die Marke; es wird kein Python 4 geben.
Im Jahr 2100 ist die Nebenversion 2100-2000 = 100, daher wird die Version 3.100.0 sein.
Python 3.14 wird die letzte Version vor dieser Änderung sein, die 2025 veröffentlicht wird. Python 3.26 wird die erste Version nach dieser Änderung sein, die 2026 veröffentlicht wird. Es wird kein Python 3.15 bis 3.25 einschließlich geben.
Sicherheitsimplikationen
Keine bekannt. Keine Änderung an den Zeitdauern oder Zeitpunkten der Fehlerbehebungs- und Sicherheitsphasen.
Wie man dies lehrt
Wir werden dies auf Blogs, in den Versionshinweisen zu 3.14, in der Dokumentation und durch Outreach an die Community bekannt geben.
Diese Änderung zielt auf die Version nach 3.14 ab: anstelle von 3.15 wird es 3.26 sein. Dieser PEP wurde im Juni 2024 vorgeschlagen. Die Entwicklung für die Version 3.15/3.26 beginnt im Mai 2025, mit dem ersten Alpha im Oktober 2025 und der Erstveröffentlichung im Oktober 2026. Wir können die Dokumentation bereits während des 3.14-Zyklus aktualisieren. Dies gibt ausreichend Vorlaufzeit.
Wir können Vorschau-Builds erstellen, die nur die Version für frühe Tests ändern.
Wir könnten einen Befehl python3.15 als Teil von Python 3.26 ausliefern, der sofort fehlschlägt und dem Benutzer mitteilt, stattdessen python3.26 zu verwenden.
Abgelehnte Ideen
JJ.0
Zum Beispiel würde Python 26.0 im Jahr 2026 veröffentlicht werden.
Es gibt nicht viel Interesse an Python Version 4. Wir wollen nicht 2 zu 3 wiederholen, und 4 weckt inzwischen hohe Erwartungen. Wir wollen keine „weltbewegenden Änderungen“.
Vielleicht könnte Python 4 für etwas Großes wie die Entfernung des GIL (PEP 703) reserviert werden, aber der Steering Council hat klargestellt, dass die Rollout von Free-Threading schrittweise erfolgen muss. Werden wir ewig bei Version 3 bleiben?
Eine andere Option wäre, die Jahreszahl in die Hauptversion zu setzen und zu 26.0 zu springen. Das könnte bedeuten, dass wir all die 4.0-Altlasten überspringen könnten.
Ökosystemänderungen
Würde die Änderung der Hauptversion auf zweistellige Ziffern Code brechen?
Ja, jede neuartige Änderung der Version tut dies unweigerlich, da die Leute Annahmen treffen, wie z. B. dass die Hauptversion immer 3 ist oder dass die Versionsbestandteile immer einstellige Zahlen sind. Zum Beispiel:
| Versionsänderung | Beispiel | Erwartet | Aktuell |
|---|---|---|---|
| 2.7.9 → 2.7.10 | 'this is Python {}'.format(sys.version[:5])
|
2.7.10 | 2.7.1 |
| 3.9 → 3.10 | ".%s-%s" % (get_platform(), sys.version[0:3])
|
3.10 | 3.1 |
| 3 → 4 | if sys.version_info[1] >= 9:
|
4.0 | 0 |
| 3 → 26 | if sys.version[0] == '3':
|
26 | 2 |
Die letzte hier ist am relevantesten für die JJ.0-Versionierung. Daher ist das 3.JJ-Schema das sicherste und erfordert die wenigsten Änderungen, da sich die *Form* der Version nicht ändert: es ist immer noch eine 3 gefolgt von zwei Ziffern.
Tipp
Verwenden Sie Ruffs YTT-Regeln oder das Flake8-Plugin flake8-2020, um Probleme wie diese zu finden.
python3-Befehl
PEP 394 (Der „python“-Befehl unter Unix-ähnlichen Systemen) beschreibt Empfehlungen für die Befehle python, python2 und python3. python kann auf entweder python2 oder python3 abgebildet werden. Diese müssten überarbeitet werden, wenn sich die Hauptversion ändert und jährlich zu variieren beginnt.
Vier Jahre nach dem Ende von Python 2.7 könnten wir empfehlen, dass python nur auf die neueste Python 3+-Version abgebildet wird. Aber worauf würde python3 abgebildet werden, wenn Python 26.0 verfügbar ist? Dies würde zusätzliche Komplexität und Kosten verursachen.
CPython-Änderungen
Zusätzlich zu Änderungen am python3-Befehl gibt es mindestens vier Stellen in CPython, die davon ausgehen, dass die Hauptversion 3 ist und aktualisiert werden müssten:
Ablehnung von JJ.0
Die Vorteile der kalenderbasierten Versionierung sind im Vergleich zu den kombinierten Kosten für die JJ.0-Versionierung nicht so groß. Daher wird die JJ.0-Versionierung abgelehnt.
JJ.MM
Zum Beispiel würde Python 26.10 im Oktober 2026 veröffentlicht.
Aufbauend auf der JJ.0-Versionierung könnten wir auch den Veröffentlichungsmonat als Nebenversion einbeziehen, ähnlich wie bei Ubuntu und Black. Dies würde klarstellen, *wann* im Jahr die Version veröffentlicht wurde, und auch, *wann* im Jahr sie ihr End-of-Life erreicht.
Jedoch wird die JJ.MM-Versionierung aus vielen der gleichen Gründe wie die JJ.0-Versionierung abgelehnt.
3.JJJJ
Zum Beispiel würde Python 3.2026 im Jahr 2026 veröffentlicht.
Es ist klarer, dass die Nebenversion eine Jahreszahl ist, wenn eine vierstellige verwendet wird, und vermeidet Verwechslungen mit Ubuntu-Versionen, die JJ.MM verwenden.
PY_VERSION_HEX
CPython's C API PY_VERSION_HEX Makro verwendet derzeit acht Bits, um die Nebenversion zu kodieren, und ermöglicht eine maximale Nebenversion von 255. Um eine vierstellige Jahreszahl zu speichern, müsste es auf 11 Bits erweitert werden, um 2047 oder besser gesagt 12 Bits für 4095 unterzubringen.
Dies erscheint machbar, da es für numerische Vergleiche gedacht ist, wie z. B. #if PY_VERSION_HEX >= .... In den Top 8.000 PyPI-Projekten wurde nur ein Fall von Bit-Shifting gefunden (hexversion >> 16 != PY_VERSION_HEX >> 16).
Jedoch wird 3.JJJJ abgelehnt, da eine Änderung von zwei auf vier Ziffern dennoch mehr Arbeit erfordern und mehr Code brechen würde als eine einfachere 3.JJ-Versionierung.
Editionen
Zum Beispiel würde Python 3.15 (2026 Edition) im Jahr 2026 veröffentlicht.
Die Programmiersprache Rust verwendet „Editions“, um Breaking Changes einzuführen. Die Anwendung dessen auf Python würde große Änderungen an PEP 387 (Richtlinie zur Abwärtskompatibilität) erfordern und liegt außerhalb des Rahmens dieses PEP.
Wir könnten den Veröffentlichungen eine Jahresbezeichnung zuweisen, wie z. B. „Python 3.15 (2026 Edition)“, aber dies wird abgelehnt, da wir *zwei* Zahlen verfolgen müssten.
SemVer übernehmen und 4 überspringen
Zum Beispiel würde Python 5.0 im Jahr 2026 veröffentlicht, 6.0 im Jahr 2027 und so weiter.
Wir könnten die problematische 4.0 komplett überspringen und SemVer übernehmen. Da Veralterungen in jeder Feature-Veröffentlichung entfernt werden, würden wir jedes Jahr einen neuen Hauptversionssprung erhalten.
Dies wird abgelehnt, da wir nicht den Vorteil der kalenderbasierten Versionierung erhalten würden und eine Abkehr von 3.x ebenfalls Code brechen würde.
Änderung während des 3.14-Zyklus
Die Veröffentlichung von Python 3.14 muss fortgesetzt werden, da: π.
Abwärtskompatibilität
Diese Versionsänderung ist die sicherste der in Betracht gezogenen CalVer-Optionen (siehe abgelehnte Ideen): Wir behalten die 3 als Hauptversion bei, und die Nebenversion ist immer noch zweistellig. Die Nebenversion wird schließlich auf dreistellige Ziffern umgestellt, aber dies ist vorhersehbar, liegt noch weit in der Zukunft und kann geplant werden.
Wir behalten die python3-Ausführungsdatei bei.
Versionszuordnung
Die Versionen 3.15 bis einschließlich 3.25 werden übersprungen. Geplante Features, Veralterungen und Entfernungen für diese werden auf die neuen Versionsnummern umgemappt.
Zum Beispiel wird eine Veralterung, die ursprünglich für die Entfernung in 3.16 geplant war, stattdessen in 3.27 entfernt.
| Alte Version | Neue Version | Erstveröffentlichung |
|---|---|---|
| 3.14 | 3.14 (keine Änderung) | 2025 |
| 3.15 | 3.26 | 2026 |
| 3.16 | 3.27 | 2027 |
| 3.17 | 3.28 | 2028 |
| 3.18 | 3.29 | 2029 |
| 3.19 | 3.30 | 2030 |
| 3.20 | 3.31 | 2031 |
| 3.21 | 3.32 | 2032 |
| 3.22 | 3.33 | 2033 |
| 3.23 | 3.34 | 2034 |
| 3.24 | 3.35 | 2035 |
| 3.25 | 3.36 | 2036 |
Abwärtskompatibilität
Zukünftige Änderung des Rhythmus
Dieser PEP schlägt keine Änderung des jährlichen Veröffentlichungszyklus gemäß PEP 602 vor, der viele gute Gründe für jährliche Veröffentlichungen (z. B. kleinere Veröffentlichungen mit einem vorhersehbaren Veröffentlichungskalender und Synchronisation mit externen Redundanten) darlegt. Wie unwahrscheinlich es auch sein mag, falls wir uns entscheiden, den Rhythmus in Zukunft zu ändern, CalVer schließt dies nicht aus.
Weniger häufig
Wenn wir zu weniger als einer Veröffentlichung pro Jahr übergehen, funktioniert das vorgeschlagene CalVer-Schema weiterhin; es hilft sogar den Leuten zu wissen, in welchem Jahr sie die Veröffentlichung erwarten können. Wenn wir zum Beispiel jedes zweite Jahr ab 2036 veröffentlichen
- 3.36.0 wird 2036 veröffentlicht.
- 3.38.0 wird 2038 veröffentlicht.
- und so weiter
Ökosystemänderungen hängen teilweise davon ab, wie der hypothetische PEP zur Rhythmusänderung PEP 387 (Richtlinie zur Abwärtskompatibilität) aktualisiert. Wenn er beispielsweise vorschreibt, dass die Veralterungsfrist mindestens eine Feature-Veröffentlichung und nicht die aktuellen zwei betragen muss (um die Mindestdauer von zwei Jahren einzuhalten), bietet CalVer gegenüber dem Status quo den Vorteil, dass keine Änderungen an geplanten Entfernungsterminen erforderlich sind (außer Anpassung solcher, die in Nicht-Veröffentlichungsjahren liegen).
Häufiger
Wenn wir zu mehr als einer Veröffentlichung pro Jahr übergehen, hier sind einige Optionen. Wenn wir zum Beispiel ab 2036 im April und Oktober veröffentlichen, könnten die nächsten vier Veröffentlichungen sein:
| Schema | Anmerkungen | 2036 a | 2036 b | 2037 a | 2037 b |
|---|---|---|---|---|---|
| JJ.MM.micro | Jahr als Hauptversion, Monat als Nebenversion | 36.04.0 | 36.10.0 | 37.04.0 | 37.10.0 |
| JJ.x.micro | Jahr als Hauptversion, fortlaufende Nummer als Nebenversion | 36.1.0 | 36.2.0 | 37.1.0 | 37.2.0 |
| 3.JJMM.micro | Jahr und Monat als Nebenversion kombinieren | 3.3604.0 | 3.3610.0 | 3.3704.0 | 3.3710.0 |
| 3.JJx.micro | Jahr und fortlaufende Nummer als Nebenversion kombinieren | 3.360.0 | 3.361.0 | 3.370.0 | 3.371.0 |
| 3.JJ.MM.micro | Zusätzliches Monatssegment hinzufügen | 3.36.04.0 | 3.36.10.0 | 3.37.04.0 | 3.37.10.0 |
| 3.major.micro | Kein CalVer mehr: Nebenversion erhöhen | 3.36.0 | 3.37.0 | 3.38.0 | 3.39.0 |
| 3.50.0 | 3.51.0 | 3.52.0 | 3.53.0 | ||
| 3.100.0 | 3.101.0 | 3.102.0 | 3.103.0 | ||
| 4.major.micro | Kein CalVer mehr: Hauptversion erhöhen | 4.0.0 | 4.1.0 | 4.2.0 | 4.3.0 |
| 5.major.micro | 5.0.0 | 5.1.0 | 5.2.0 | 5.3.0 |
Die JJ-Optionen würden die Behebung von Problemen im Zusammenhang mit den Plattformkompatibilitätstags, dem python3-Befehl und Code erfordern, der davon ausgeht, dass die Version immer mit 3 beginnt.
Die Optionen, die die Hauptversion 3 beibehalten, aber die Nebenversion auf drei oder vier Ziffern ändern, müssten auch Code adressieren, der davon ausgeht, dass die Version immer zweistellig ist.
Die Option, ein zusätzliches Monatssegment hinzuzufügen, ist die größte Änderung, da der Code mit einer Vier-Teile-Version anstelle von drei umgehen müsste.
Die Optionen, CalVer fallen zu lassen, wären die konservativsten und würden es ermöglichen, Haupt- und Nebenversionen frei zu wählen.
Kein CalVer mehr
Die Übernahme von CalVer schließt nicht aus, sich in Zukunft von CalVer zu trennen, z. B. zurück zum ursprünglichen Schema, zu SemVer oder einem anderen Schema. Einige Optionen sind in der obigen Tabelle aufgeführt. Wenn man klarstellen möchte, dass die Nebenversion nicht mehr das Jahr ist, kann sie auf eine höhere runde Zahl (z. B. 3.50 oder 3.100) erhöht oder die Hauptversion erhöht werden (z. B. auf 4.0 oder 5.0). Zusätzlich könnte ein Versions-Epoch in Betracht gezogen werden.
Fußnoten
Der Autor schlug kalenderbasierte Versionierung auf dem Python Language Summit 2024 vor; dieser PEP ist das Ergebnis von Diskussionen dort und während der PyCon US.
Lesen Sie die Folien und den Blogbeitrag des Summit-Vortrags.
Danksagungen
Vielen Dank an Seth Michael Larson für die Notizen zur Language Summit Q&A und den Blogbeitrag, und an alle, die beim Summit und der PyCon US Feedback gegeben haben.
Vielen Dank an Łukasz Langa und Alex Waygood für die Überprüfung eines Entwurfs dieses PEP.
Urheberrecht
Dieses Dokument wird in die Public Domain oder unter die CC0-1.0-Universal-Lizenz gestellt, je nachdem, welche Lizenz permissiver ist.
Quelle: https://github.com/python/peps/blob/main/peps/pep-2026.rst
Zuletzt geändert: 2025-02-07 12:07:24 GMT