Zum Inhalt

Versionsrichtlinie

Zunächst einmal sind wir uns darüber im Klaren, dass der Übergang von Pydantic V1 zu V2 für einige Benutzer schmerzhaft war und sein wird. Wir bedauern diesen Schmerz :bete:, es war ein unglücklicher, aber notwendiger Schritt, um Designfehler von V1 zu korrigieren.

Es wird keine weitere bahnbrechende Veränderung dieser Größenordnung geben!

Pydantic V1

Die aktive Entwicklung von V1 wurde bereits eingestellt, kritische Fehlerbehebungen und Sicherheitslücken werden jedoch ein Jahr nach der Veröffentlichung von V2 (30. Juni 2024) in V1 behoben.

Pydantic V2

Wir werden in Nebenversionen von V2 absichtlich keine wichtigen Änderungen vornehmen.

Als veraltet markierte Methoden werden erst mit der nächsten Hauptversion, V3, entfernt.

Natürlich werden einige scheinbar sichere Änderungen und Fehlerbehebungen unweigerlich den Code einiger Benutzer beschädigen – obligatorischer Link zu XKCD.

Die folgenden Änderungen gelten NICHT als Breaking Changes und können in Nebenversionen auftreten:

  • Ändern des Ref-Formats, wie es im JSON-Schema verwendet wird.
  • Ändern der msg-, ctx- und loc-Felder von ValidationError-Fehlern. Der Typ ändert sich nicht. Wenn Sie Fehlermeldungen programmgesteuert analysieren, sollten Sie den Typ verwenden.
  • Hinzufügen neuer Schlüssel zu ValidationError-Fehlern – z. B. beabsichtigen wir, bei der JSON-Validierung Zeilennummer und Spaltennummer zu Fehlern hinzuzufügen, sobald wir auf einen neuen JSON-Parser migrieren.
  • Neue ValidationError-Fehler werden hinzugefügt.
  • Wechselnde Vertretung auch öffentlicher Klassen.

In allen Fällen streben wir danach, die Abwanderung zu minimieren und tun dies nur, wenn dies durch die Verbesserung der Qualität von Pydantic für die Benutzer gerechtfertigt ist.

Pydantic V3 und höher

Wir gehen davon aus, dass wir in Zukunft etwa einmal pro Jahr neue Hauptversionen herausbringen werden, obwohl, wie oben erwähnt, alle damit verbundenen Breaking Changes im Vergleich zum Übergang von V1 auf V2 trivial zu beheben sein dürften.

Experimentelle Funktionen

Bei Pydantic sind wir gerne schnell und innovativ! Zu diesem Zweck führen wir möglicherweise experimentelle Funktionen in Nebenversionen ein.

!!! Zusammenfassung „Nutzungsdokumentation“ Weitere Informationen zu unseren aktuellen experimentellen Funktionen finden Sie in der Dokumentation zu experimentellen Funktionen.

Bitte beachten Sie, dass experimentelle Funktionen derzeit in Arbeit sind. Wenn diese Funktionen erfolgreich sind, werden sie schließlich Teil von Pydantic. Wenn dies nicht gelingt, werden diese Funktionen ohne Vorankündigung entfernt. Während der experimentellen Phase sind die API und das Verhalten einer Funktion möglicherweise nicht stabil und es ist sehr wahrscheinlich, dass an der Funktion vorgenommene Änderungen nicht abwärtskompatibel sind.

Namenskonventionen

Wir verwenden eine der folgenden Namenskonventionen, um anzugeben, dass eine Funktion experimentell ist:

  1. Die Funktion befindet sich im Experimentiermodul. In diesem Fall können Sie wie folgt auf die Funktion zugreifen:

    from pydantic.experimental import feature_name 2. Die Funktion befindet sich im Hauptmodul, hat jedoch das Präfix „experimental_“. Dieser Fall tritt auf, wenn wir ein neues Feld, Argument oder eine neue Methode zu einer vorhandenen Datenstruktur hinzufügen, die sich bereits im Hauptmodul von Pydantic befindet.

Neue Funktionen mit diesen Namenskonventionen können geändert oder entfernt werden, und wir suchen Feedback und Vorschläge, bevor wir sie zu einem dauerhaften Bestandteil von Pydantic machen. Weitere Informationen finden Sie im Abschnitt „Feedback“.

Experimentelle Features importieren

Wenn Sie eine experimentelle Funktion aus dem experimentellen Modul importieren, wird eine Warnmeldung angezeigt, dass die Funktion experimentell ist. Sie können diese Warnung wie folgt deaktivieren:

import warnings

from pydantic import PydanticExperimentalWarning

warnings.filterwarnings('ignore', category=PydanticExperimentalWarning)

Lebenszyklus experimenteller Funktionen

  1. Eine neue Funktion wird hinzugefügt, entweder im Experimentalmodul oder mit dem Präfix „experimental_“.
  2. Das Verhalten wird häufig während Patch-/Nebenversionen geändert, mit möglichen API-/Verhaltensänderungen.
  3. Wenn die Funktion erfolgreich ist, befördern wir sie mit den folgenden Schritten zu Pydantic: a. Wenn es sich im Experimentalmodul befand, wird die Funktion in das Hauptmodul von Pydantic geklont. Die ursprüngliche experimentelle Funktion verbleibt weiterhin im experimentellen Modul, zeigt jedoch bei Verwendung eine Warnung an. Wenn das Feature bereits im Hauptmodul von Pydantic vorhanden war, erstellen wir eine Kopie des Features ohne das Präfix „experimental_“, sodass das Feature sowohl mit dem offiziellen als auch mit dem experimentellen Namen vorhanden ist. Der experimentellen Version ist eine Verfallswarnung beigefügt. B. Irgendwann wird der Code der experimentellen Funktion entfernt, aber es wird immer noch ein Stub der Funktion vorhanden sein, der eine Fehlermeldung mit entsprechenden Anweisungen bereitstellt. C. Als letzten Schritt wird die experimentelle Version des Features vollständig aus der Codebasis entfernt.

Wenn die Funktion erfolglos oder unbeliebt ist, wird sie ohne Vorankündigung entfernt. Am Speicherort der veralteten Funktion verbleibt ein Stub mit einer Fehlermeldung.

Vielen Dank an streamlit für die Inspiration für den Lebenszyklus und die Namenskonventionen unserer neuen experimentellen Feature-Muster.

Unterstützung für Python-Versionen

Pydantic stellt die Unterstützung für eine Python-Version ein, wenn die folgenden Bedingungen erfüllt sind:

  • Die Python-Version hat EOL erreicht.
  • <5 % der Downloads der neuesten Nebenversion müssen diese Version verwenden.

本文总阅读量