Python Connector 的依赖项管理策略

Snowflake Connector for Python 依赖于第三方库,因此要与 Snowflake 数据库进行通信,所有这些库都至关重要。尽管我们旨在让依赖项管理变得简单可靠,但每个库都可能引入一些变更,这些变更可能会导致 Snowflake Connector for Python 出现意外行为,或导致与其他库发生冲突。

本主题涵盖以下信息:

  • 用于确定如何根据 Snowflake Connector for Python 的要求选择依赖库版本的策略。

  • 用于处理可能因依赖库变更而发生的事件的流程。

本主题内容:

用于确定依赖项要求的策略

Snowflake Connector for Python 根据以下规则设置依赖项要求:

  • 如果 Snowflake Connector for Python 直接引用某个包,则该包的名称将包含在依赖项列表中。

  • 对于每个依赖库,要求会指定库的下限和上限版本。

    • 下限版本(最低版本)是用于验证库是否正常运行的最早版本。

    • 上限版本(第一个 受支持的版本)是下一个主要版本。

      如果次要版本引入会破坏兼容性的变更,则上限版本将设置为该次要版本。

    这样会提供一个稳定的环境,在其中可以使用特定版本的依赖库来测试连接器。

备注

这些规则基于以下假设:包括 Snowflake Connector for Python 在内的所有包都遵循语义版本控制准则。根据这些准则,库的次要版本或补丁版本不应引入任何 API 变更。

处理因依赖库变更而导致的事件

尽管依赖项管理策略旨在最大限度地降低依赖库中变更的影响,但可能会意外发生事件。本部分讨论如何处理每种情况。

情况 1。依赖库引入 API 或行为变更

如果事件的起因是依赖库的新版本引入 API(和/或行为)变更,我们将发布 Snowflake Connector for Python 的新版本,该版本将依赖库的新版本排除在支持版本范围之外。我们将尽早做出这种变更。(Snowflake 将在下一个版本中尽最大努力解决这个问题。)

例如,假设要求文件为依赖库 package1 指定了以下版本范围:

package1>=1.0,<2.0
Copy

从理论上讲,在此范围内发布的任何版本都不应更改 API。但是,如果版本 1.3 的变更破坏了兼容性,则上限版本将更改,以排除版本 1.3 及更高版本:

package1>=1.0,<1.3
Copy

此变更旨在临时解决该问题。问题解决后,我们会将上限版本更改回库的下一个主要版本。

情况 2。依赖库引入高于上限的新版本

在这种情况下,在我们确定 Snowflake Connector for Python 适用于库的新版本之后,我们会将新版本纳入下一版 Snowflake Connector for Python 的支持版本范围。例如,假设要求文件为依赖库 package1 指定了以下版本范围:

package1>=1.0,<2.0
Copy

如果发布了 package1 版本 2.0,则新版本不能与 Snowflake Connector for Python 结合使用,因为该版本超出了所需版本的范围。我们有用于检测此情况的自动测试。

请注意,如果出于一些关键原因,支持库的这个新版本(例如,如果新版本包含安全补丁),我们将尽最大努力在事件报告后的下一个版本中发布更新后的 Snowflake Connector for Python。

语言: 中文