Entwicklerwerkzeuge

PEP 440 VersionsprüfungPython-Versionen nachvollziehbar prüfen

Eine Version je Zeile: Schreibweise normalisieren, Reihenfolge prüfen oder Bedingungen mit Komma verknüpfen.

PEP 440 Versionsprüfung

Versionen (eine je Zeile)

Prüfbericht

Eingabe hinzufügen oder ein Beispiel laden.

Die Eingabe wird in diesem Browser verarbeitet und nicht an einen Server gesendet.

Optionen

Kommas bedeuten UND. Leere Bedingungen setzen keine Grenzen. Unterstützt: ~= == != <= >= < > ===; .* nur bei Release-Präfixen mit == oder !=.

Höchstens 1.000 nichtleere Zeilen; 256 UTF-16-Einheiten je Zeile, 2.048 je Bedingung, 100.000 insgesamt. Die Eingabe bleibt erhalten.

Aktuelle Kandidaten werden geprüft…

Die PEP 440 Versionsprüfung hilft, wenn eine neuere Veröffentlichung trotzdem nicht in den gewünschten Versionsbereich fällt. Gültige Schreibweise, Rangfolge und Eignung als Kandidat sind unterschiedliche Ergebnisse, die hier getrennt sichtbar bleiben.

Wer Versionen vergleichen möchte, sollte 1.0 und 1.0.0 nicht als verschiedene Rangstufen behandeln. Epoch, Entwicklungsstände und lokale Kennungen folgen eigenen Regeln; alphabetisches Sortieren oder ein npm-Rechner reicht dafür nicht aus.

Warum eine PEP 440 Versionsprüfung?

Original und Normalform nebeneinander

Die PEP 440 Versionsprüfung zeigt zu v01.1 die Normalform 1.1, ohne die Eingabe zu überschreiben. Aufgeklappte Zeilen zeigen Epoch, Release, pre, post, dev und local. So lässt sich erkennen, ob lediglich die Schreibweise oder tatsächlich eine Komponente anders ist.

Unterschiedliche Schreibweisen werden in einheitliche Segmentkarten überführt; die ursprünglichen Karten bleiben erhalten.

Die Auswahl von Vorabversionen erklären

Die automatische Auswahl betrachtet zunächst alle Kandidaten, die sämtliche Bedingungen erfüllen. Gibt es eine passende Nicht-Vorabversion, erhält sie Vorrang. Andernfalls können passende Vorabversionen zum Zug kommen. Eine zusätzliche stabile Version kann deshalb andere Zeilen beeinflussen.

Zwei Filter zeigen zurückgestellte Vorabversionen neben einem stabilen Treffer und ihre Zulassung ohne stabilen Treffer.

Drei entscheidende Einstellungen

01

Den Modus passend zur Frage wählen

Normalisieren prüft Schreibweisen ohne Bereichsfilter. Sortieren verwendet die Python-Rangfolge und erhält bei Gleichstand die Eingabereihenfolge. Der Abgleich lässt die Liste unverändert und trennt eine verletzte Bedingung von einem Ausschluss durch die Vorabversionsregel.

02

Automatik mit der vollständigen Liste testen

Entfernen Sie einen passenden stabilen Kandidaten und beobachten Sie den Rückgriff auf Vorabversionen. Einschließen ändert keine numerische Grenze: 1.0rc1 liegt weiterhin vor 1.0 und erfüllt >=1.0 nicht.

03

Nur aktuelle Ergebnisse exportieren

Die Automatik wartet 350 ms. Ausgeschaltet stehen Prüfen und Strg/Cmd+Enter zur Verfügung. Änderungen sperren alte Exporte sofort. Beispiel und Leeren zeigen zunächst eine Vorschau; nach dem Anwenden stellt Rückgängig Eingabe und Bericht wieder her.

Schreibweise, Rang und Bedingungen

Versionsnummern nachvollziehbar normalisieren

v-Präfixe, führende Nullen, Bezeichnungen wie alpha oder preview sowie lokale Trennzeichen werden vereinheitlicht. Die Anzahl der Release-Komponenten bleibt erhalten: 1.0.0 wird angezeigt wie eingegeben, obwohl es beim Vergleich denselben Rang wie 1.0 hat.

Auch große Komponenten exakt sortieren

Zuerst zählt die Epoch, danach folgen Release-Zahlen und die Regeln für dev, alpha, beta, rc, finale und post-Veröffentlichungen. Lokale Zahlen werden numerisch verglichen. Auch Komponenten oberhalb der sicheren JavaScript-Ganzzahlgrenze werden nicht gerundet.

Bedingungen als Schnittmenge prüfen

Unterstützt werden ~=, ==, !=, <=, >=, <, > und ===. Das Komma bedeutet UND. Bei == und != sind Release-Präfixe wie 1.4.* möglich. Der Bericht nennt weiterhin die ursprüngliche physische Zeile, selbst wenn Leerzeilen übersprungen wurden.

Fehlerzeilen erhalten

Eine ungültige Version betrifft ihre Zeile; eine ungültige Bedingung verhindert die gesamte Berechnung. Beim Sortieren stehen ungültige Einträge hinten. Die Ansicht wächst in Schritten von 50, der JSON-Bericht enthält immer sämtliche verarbeiteten Zeilen samt Fehlercodes.

Geltungsbereich und Grenzen

Keine Paketverwaltung
Paketnamen, Extras, Umgebungsmarker, requirements-Dateien, URLs und Lockdateien gehören nicht in die Felder. Es gibt keine PyPI-Abfrage, Installation, Abhängigkeitsauflösung, Projektänderung oder Berechnung einer nächsten Versionsnummer. Ein Treffer belegt keine API-Kompatibilität.
Python-Bedingungen statt fremder Kurzformen
Caret, bloße Tilde, ODER-Gruppen und Bindestrichbereiche werden abgelehnt. Für kompatible Veröffentlichungen gilt beispielsweise ~=1.4. Eine leere Bedingung setzt keine Versionsgrenze; die Vorabversionsregel bleibt wirksam. Leere Kommaabschnitte werden ignoriert.
Lokale Kennungen hängen vom Operator ab
Lokale Kennungen beeinflussen die Rangfolge. Öffentliches == und != ignoriert die lokale Kennung eines Kandidaten, eine ausdrücklich lokale Gleichheit berücksichtigt sie. Geordnete und kompatible Bedingungen dürfen keine lokale Kennung enthalten: >=1.0+linux ist ungültig.
Begrenzte Bedeutung von ===
Dieser Operator vergleicht die normalisierte Schreibweise ohne Gleichsetzung durch angehängte Nullen. Kandidaten müssen trotzdem gültige PEP-Versionen sein. Auch bei ===legacy bleibt legacy eine Fehlerzeile; die Unterstützung alter Installationsformate wird nicht nachgebildet.
Automatik bezieht sich auf diese Kandidaten
Entwicklungsversionen gelten als Vorabversionen. Eine positive Bedingung mit ausdrücklicher Vorabversion kann sie zulassen. Sonst entscheidet das Vorhandensein passender Nicht-Vorabversionen über den Rückgriff. Installierte Pakete oder andere Indexeinträge werden nicht berücksichtigt.
Begrenzte Eingabe ohne stilles Abschneiden
Zulässig sind 1.000 nichtleere Zeilen, 256 UTF-16-Einheiten je Zeile, 2.048 je Bedingung und 100.000 in der Liste. Das sind Werkzeuggrenzen. Leerzeilen werden übersprungen, Duplikate bleiben erhalten. Weder Normalisieren noch Sortieren schreibt die Quelle um.

Fragen zur PEP 440 Versionsprüfung

Was bedeutet ~= bei einer Python-Abhängigkeit?

Der Operator kombiniert eine Untergrenze mit einem Release-Präfix. ~=1.4 erlaubt ab 1.4 die Reihe 1.*, während ~=1.4.0 in 1.4.* bleibt. ~=1 ist mit nur einer Komponente ungültig. Die Entscheidung über Vorabversionen erfolgt zusätzlich.

Warum passt eine Vorabversion allein, aber nicht in einer Liste?

Die automatische Filterung kann Vorabversionen verwenden, wenn keine passende Nicht-Vorabversion vorhanden ist. Ein hinzugefügter finaler oder post-Kandidat kann diese Entscheidung ändern. Einschließen zeigt alle numerisch passenden Kandidaten, Ausschließen verhindert auch den automatischen Rückgriff.

Wie werden öffentliche und lokale Versionen geordnet?

Bei identischer öffentlicher Version folgt die lokale Variante dahinter: 1.0 < 1.0+abc. Numerische lokale Komponenten folgen auf Textkomponenten. Gleiche normalisierte Werte behalten ihre Eingabereihenfolge. Anders als SemVer-Buildmetadaten beeinflusst local also den Rang.

Darf eine Bedingung eine lokale Kennung enthalten?

Bei == und != ist das erlaubt, etwa ==1.0+linux.1. Bei >= oder ~= ist es ungültig. Ein öffentliches ==1.0 kann dagegen 1.0+linux.1 akzeptieren, weil es keinen bestimmten lokalen Build verlangt.

Wie vergleicht man Versionsnummern in Python?

packaging.version.Version bietet die PEP-konforme Rangfolge. Die Browserimplementierung wird gegen packaging 26.0 geprüft. Ein Zeichenkettenvergleich ordnet beispielsweise 1.10 und 1.9 falsch; eine andere Versionsnorm deckt Epoch und post nicht unbedingt ab.

Kann .* auf pre oder post folgen?

Nein. ==1.0.* ist ein gültiger Release-Präfix, ==1.0rc1.* und ==1.0.post1.* sind ungültig. Für solche Zusätze sind genaue Gleichheit oder normale Grenzen nötig. Ein Präfix hebt die Vorabversionsregel nicht auf.

Unerwartetes Versionsergebnis?

Die tatsächlichen Kandidaten untersuchen

Nutzen Sie die PEP 440 Versionsprüfung mit der vollständigen Liste aus Ihrer Untersuchung. Prüfen Sie Fehlerzeilen und die Auswahlregel, bevor Sie den aktuellen Bericht mit Originalwerten und Bedingungen speichern.