Richtlinie zur Verwaltung von Abhängigkeiten für den Python-Konnektor

Der Snowflake-Konnektor für Python hängt von Bibliotheken von Drittanbietern ab, die alle für die Kommunikation mit der Snowflake-Datenbank unerlässlich sind. Obwohl wir beabsichtigen, die Verwaltung von Abhängigkeiten einfach und zuverlässig zu gestalten, kann jede Bibliothek Änderungen einführen, die zu unerwartetem Verhalten im Snowflake-Konnektor für Python führen oder Konflikte mit anderen Bibliotheken verursachen können.

Unter diesem Thema werden folgende Informationen bereitgestellt:

  • Die Richtlinie zur Festlegung, wie abhängige Bibliotheksversionen als Anforderungen für den Snowflake-Konnektor für Python ausgewählt werden

  • Der Prozess zur Behandlung von Vorfällen, die aufgrund von Änderungen in den abhängigen Bibliotheken auftreten können

Unter diesem Thema:

Richtlinie zum Festlegen von Abhängigkeitsanforderungen

Der Snowflake-Konnektor für Python legt Abhängigkeitsanforderungen gemäß den folgenden Regeln fest:

  • Wenn der Snowflake-Konnektor für Python direkt auf ein Paket verweist, wird der Name dieses Pakets in die Liste der Abhängigkeiten aufgenommen.

  • Für jede abhängige Bibliothek geben die Anforderungen sowohl die untere Begrenzungsversion als auch die obere Begrenzungsversion der Bibliothek an.

    • Die untere Begrenzungsversion (die Mindestversion) ist die älteste Version, die zur Überprüfung der Funktionsfähigkeit der Bibliothek verwendet wurde.

    • Die obere Begrenzungsversion (die erste Version, die nicht unterstützt wird) ist die nächste Hauptversion.

      Wenn eine Nebenversion eine Änderung einführt, die die Kompatibilität aufhebt, wird die obere Begrenzungsversion auf diese Nebenversion gesetzt.

    Dies bietet eine stabile Umgebung, in der der Konnektor mit bestimmten Versionen der abhängigen Bibliotheken getestet werden kann.

Bemerkung

Diese Regeln basieren auf der Annahme, dass alle Pakete, einschließlich des Snowflake-Konnektor für Python, die Richtlinien für die semantische Versionsverwaltung befolgen. Gemäß diesen Richtlinien darf eine Neben- oder Patchversion einer Bibliothek keine API-Änderungen einführen.

Verarbeiten von Vorfällen, die sich aus Änderungen an abhängigen Bibliotheken ergeben

Obwohl die Richtlinie für die Abhängigkeitsverwaltung darauf ausgerichtet ist, die Auswirkungen von Änderungen in abhängigen Bibliotheken zu minimieren, können unter unerwarteten Bedingungen dennoch Vorfälle auftreten. In diesem Abschnitt wird erörtert, wie jeder Fall behandelt wird.

Fall 1. Eine abhängige Bibliothek führt eine API-Änderung oder eine Verhaltensänderung ein

Wenn ein Vorfall auftritt, weil die neue Version einer abhängigen Bibliothek eine Änderung an ihrer API (und/oder am Verhalten) eingeführt hat, werden wir ein neues Release des Snowflake-Konnektors für Python veröffentlichen, das die neue Version der abhängigen Bibliothek aus dem Bereich der unterstützten Versionen ausschließt. Wir werden diese Änderung zum frühestmöglichen Zeitpunkt vornehmen. (Snowflake wird sich nach Kräften bemühen, das Problem im nächsten Release zu behandeln).

Angenommen, die Anforderungsdatei gibt folgenden Versionsbereich für die abhängige Bibliothek package1 an:

package1>=1.0,<2.0
Copy

Theoretisch sollte sich die API in allen Versionen, die innerhalb dieses Bereichs veröffentlicht werden, nicht ändern. Wenn jedoch eine Änderung der Version 1.3 die Kompatibilität aufhebt, wird die obere Begrenzungsversion so geändert, dass Version 1.3 und spätere Versionen ausgeschlossen werden:

package1>=1.0,<1.3
Copy

Diese Änderung soll eine vorübergehende Lösung des Problems darstellen. Sobald das Problem gelöst ist, werden wir die obere Begrenzungsversion wieder auf die nächste Hauptversion der Bibliothek umstellen.

Fall 2. Eine abhängige Bibliothek stellt eine neue Version vor, die größer als die obere Begrenzungsversion ist

In diesem Fall werden wir zunächst prüfen, ob der Snowflake-Konnektor für Python mit dieser neuen Version der Bibliothek funktioniert. Danach werden wir die neue Version im nächsten Release des Snowflake-Konnektors für Python in den Bereich der unterstützten Versionen aufnehmen. Angenommen, die Anforderungsdatei gibt folgenden Versionsbereich für die abhängige Bibliothek package1 an:

package1>=1.0,<2.0
Copy

Wenn package1, Version 2.0 freigegeben wird, kann die neue Version nicht mit dem Snowflake-Konnektor für Python verwendet werden, da die Version außerhalb des Bereichs der erforderlichen Versionen liegt. Wir haben automatisierte Tests, die diesen Fall aufspüren.

Beachten Sie, dass wir uns bemühen werden, den aktualisierten Snowflake-Konnektor für Python im nächsten Release bereitzustellen, wenn es kritische Gründe für die Unterstützung dieser neuen Version der Bibliothek gibt (z. B. wenn die neue Version einen Sicherheitspatch enthält).