Política de gerenciamento de dependências para o conector Python

O Conector Snowflake para Python depende de bibliotecas de terceiros, todas essenciais para a comunicação com o banco de dados Snowflake. Embora pretendamos tornar o gerenciamento de dependências fácil e confiável, cada biblioteca pode introduzir mudanças que podem resultar em comportamentos inesperados no Conector Snowflake para Python ou causar conflitos com outras bibliotecas.

Este tópico cobre as seguintes informações:

  • A política para determinar como as versões das bibliotecas dependentes são selecionadas como requisitos para o Conector Snowflake para Python.

  • O processo para lidar com incidentes que podem ocorrer como resultado de mudanças nas bibliotecas dependentes.

Neste tópico:

Política para determinar os requisitos de dependência

O Conector Snowflake para Python estabelece os requisitos de dependência de acordo com as seguintes regras:

  • Se o Conector Snowflake para Python se referir diretamente a um pacote, o nome desse pacote é incluído na lista de dependências.

  • Para cada biblioteca dependente, os requisitos especificam tanto a versão de limite inferior quanto a versão de limite superior da biblioteca.

    • A versão de limite inferior (a versão mínima) é a versão mais antiga utilizada para verificar se a biblioteca funcionou.

    • A versão com limite superior (a primeira versão que não tem suporte) é a próxima versão principal.

      Se uma versão menor introduzir uma alteração que quebra a compatibilidade, a versão com limite superior será definida para essa versão menor.

    Isto proporciona um ambiente estável no qual o conector pode ser testado com versões específicas das bibliotecas dependentes.

Nota

Estas regras são baseadas na suposição de que todos os pacotes, incluindo o Conector Snowflake para Python, seguem as diretrizes semânticas de versões. De acordo com estas diretrizes, uma versão menor ou de patch de uma biblioteca não deve introduzir nenhuma alteração de API.

Tratamento de incidentes resultantes de alterações em bibliotecas dependentes

Embora a política de gerenciamento de dependências seja projetada para minimizar os efeitos das mudanças feitas nas bibliotecas dependentes, incidentes podem ocorrer sob condições inesperadas. Esta seção discute como cada caso é tratado.

Caso 1. Uma biblioteca dependente introduz uma mudança em API ou comportamento

Se ocorrer um incidente porque uma nova versão de uma biblioteca dependente introduziu uma mudança em sua API (e/ou comportamento), lançaremos uma nova versão do Conector Snowflake para Python que exclui a nova versão da biblioteca dependente do intervalo de versões com suporte. Faremos esta mudança na primeira oportunidade. (A Snowflake fará o melhor esforço para tratar do assunto na próxima versão).

Por exemplo, suponha que o arquivo de requisitos especifique este intervalo de versões para a biblioteca dependente package1:

package1>=1.0,<2.0
Copy

Em teoria, a API não deve mudar em nenhuma versão lançada dentro desse intervalo. Entretanto, se uma alteração na versão 1.3 quebra a compatibilidade, a versão de limite superior será alterada para excluir a versão 1.3 e versões posteriores:

package1>=1.0,<1.3
Copy

Esta mudança pretende ser uma solução temporária para o problema. Uma vez resolvido o problema, mudaremos a versão de limite superior de volta para a próxima versão principal da biblioteca.

Caso 2. Uma biblioteca dependente introduz uma nova versão maior do que o limite superior

Neste caso, após verificarmos que o Conector Snowflake para Python funciona com a nova versão da biblioteca, incluiremos a nova versão no intervalo de versões com suporte para o próximo lançamento do Conector Snowflake para Python. Por exemplo, suponha que o arquivo de requisitos especifique este intervalo de versões para a biblioteca dependente package1:

package1>=1.0,<2.0
Copy

Se package1 versão 2.0 for lançado, a nova versão não poderá ser usada com o Conector Snowflake para Python porque a versão está fora do intervalo de versões obrigatórias. Temos testes automatizados que detectam este caso.

Observe que se houver razões críticas para oferecer suporte a esta nova versão da biblioteca (por exemplo, se a nova versão incluir um patch de segurança), faremos o melhor esforço para lançar o Conector Snowflake para Python atualizado no próximo lançamento após o incidente ser relatado.