Pythonコネクタの依存関係管理ポリシー

Python用Snowflakeコネクタは、サードパーティのライブラリに依存しており、これらすべてはSnowflakeデータベースとの通信に不可欠です。依存関係の管理を簡単で信頼できるものにする予定ですが、各ライブラリは、Python用Snowflakeコネクタで予期しない動作を引き起こしたり、他のライブラリとの競合を引き起こしたりする可能性のある変更を導入する可能性があります。

このトピックでは、次の情報について説明します。

  • 依存ライブラリのバージョンが、Python用Snowflakeコネクタの要件としてどのように選択されるかを決定するためのポリシー。

  • 依存ライブラリの変更の結果として発生する可能性のあるインシデントを処理するためのプロセス。

このトピックの内容:

依存関係の要件を決定するためのポリシー

Python用Snowflakeコネクタは、次のルールに従って依存関係の要件を設定します。

  • Python用Snowflakeコネクタがパッケージを直接参照している場合は、そのパッケージの名前が依存関係のリストに含まれます。

  • 依存ライブラリごとに、要件はライブラリの下限バージョンと上限バージョンの両方を指定します。

    • 下限バージョン(最小バージョン)は、ライブラリが機能したことを確認するために使用される最も古いバージョンです。

    • 上限バージョン(サポートされて いない 最初のバージョン)は、次のメジャーバージョンです。

      マイナーバージョンにより互換性が損なわれる変更の導入があった場合、上限バージョンはそのマイナーバージョンに設定されます。

    これにより、依存ライブラリの特定のバージョンでコネクタをテストできる安定した環境が提供されます。

注釈

これらのルールは、Python用Snowflakeコネクタを含むすべてのパッケージが、 セマンティックバージョニングガイドライン に準拠しているという前提に基づいています。これらのガイドラインによると、ライブラリのマイナーバージョンまたはパッチバージョンでは、 API の変更は導入されません。

依存ライブラリの変更に起因するインシデントの処理

依存管理ポリシーは、依存ライブラリでの変更の影響を最小限に抑えるように設計されていますが、予期しない状況でインシデントが発生する可能性があります。このセクションでは、各ケースの処理方法について説明します。

ケース1。依存ライブラリが API または動作の変更を導入

依存ライブラリの新しいバージョンが API (および/または動作)に変更を導入したためにインシデントが発生した場合、サポートされているバージョンの範囲から依存ライブラリの新しいバージョンを除外した、Python用Snowflakeコネクタの新しいバージョンをリリースします。この変更は、できるだけ早い機会に行います。(Snowflakeは、次のリリースでこの問題に対処するために最善を尽くします。)

たとえば、要件ファイルで依存ライブラリ package1 のバージョンの範囲が指定されているとします。

package1>=1.0,<2.0

理論的には、この範囲内でリリースされたバージョンでは API は変更されません。ただし、バージョン1.3を変更すると互換性が失われる場合、上限バージョンはバージョン1.3以降のバージョンを除外するように変更されます。

package1>=1.0,<1.3

この変更は、問題の一時的な解決策となることを目的としています。問題が解決した後に、上限バージョンをライブラリの次のメジャーバージョンに戻します。

ケース2。依存ライブラリが上限を超える新しいバージョンを導入

この場合は、Python用Snowflakeコネクタが新しいバージョンのライブラリで動作することを確認した後、Python用Snowflakeコネクタの次のリリースでサポートされるバージョンの範囲に新しいバージョンを含めます。たとえば、要件ファイルで依存ライブラリ package1 のバージョンの範囲が指定されているとします。

package1>=1.0,<2.0

package1 バージョン2.0がリリースされた場合、新しいバージョンは必要なバージョンの範囲外であるため、Python用Snowflakeコネクタでは、そのバージョンを使用できません。このケースを検出する自動テストがあります。

この新しいバージョンのライブラリをサポートする重大な理由がある場合(たとえば、新しいバージョンにセキュリティパッチが含まれている場合)は、インシデントが報告された後の次のリリースにおいて、更新されたPython用Snowflakeコネクタをリリースするように最善を尽くします。