Notas de lançamento de Snowflake Connector for Python para 2023

Este artigo contém as notas de versão do Snowflake Connector for Python, incluindo o seguinte, quando aplicável:

  • Mudanças de comportamento

  • Novos recursos

  • Correções de bugs voltados para o cliente

Snowflake usa controle de versão semântico para atualizações de Snowflake Connector for Python.

Versão 3.6.0 (07 de dezembro de 2023)

Novos recursos e atualizações

  • Adicionado suporte para tipos de vetores.

  • Adicionado suporte para os parâmetros de conexão private_key_file e private_key_file_pwd.

  • Adicionado o novo sinalizador expired à classe SnowflakeConnection que rastreia se o token mestre da conexão expirou.

  • Alterado o pin da versão urlib3 para afetar apenas versões do Python anteriores a 3.10.

Correções de bugs

  • Corrigido um bug em que a inserção da data falhava quando o formato da data era definido e a vinculação no estilo qmark era usada.

Versão 3.5.0 (13 de novembro de 2023)

Novos recursos e atualizações

  • Snowflake Connector for Python agora é criado exclusivamente no projeto apache arrow-nanoarrow:

    • Reduziu o tamanho do wheel para ~1MB e o tamanho da instalação para ~5MB.

    • Removida uma dependência rígida de uma versão específica do pyarrow.

  • O seguinte foi descontinuado em suporte ao conversor nanoarrow:

    • Classe snowflake.connector.cursor.NanoarrowUsage.

    • Variável de ambiente NANOARROW_USAGE.

    • Varável do módulo snowflake.connector.cursor.NANOARROW_USAGE.

Correções de bugs

  • Nenhum.

Versão 3.4.1 (09 de novembro de 2023)

Novos recursos e atualizações

  • Atualizadas as seguintes bibliotecas:

    • Atualizado a urlib3 própria de terceiros para a versão 1.26.18.

    • Atualizado a requests própria de terceiros para a versão 2.31.0.

Correções de bugs

  • Nenhum.

Versão 3.4.0 (03 de novembro de 2023)

Novos recursos e atualizações

  • Adição de suporte para use_logical_type em write_pandas.

  • Adicionado o argumento backoff_policy a snowflake.connector.connect, permitindo uma política de espera configurável entre novas tentativas de solicitações com falha. Veja as implementações disponíveis no módulo backoff_policies.

  • Adicionado o argumento socket_timeout a snowflake.connector.connect especificando a leitura do soquete e o tempo limite de conexão.

  • Dependências removidas de pycryptodomex e oscrypto. Todas as conexões agora passam por OpenSSL através da biblioteca de criptografia, que já era uma dependência.

Correções de bugs

  • Comportamento login_timeout e network_timeout corrigido. As novas tentativas de login e solicitações de rede agora são interrompidas corretamente depois que esses tempos limite expiram.

  • Bug corrigido para o problema urllib3/urllib3#1878 no urllib do fornecedor.

  • Corrigido o problema com a ingestão de arquivos de 80 GB para S3.

Versão 3.3.1 (18 de outubro de 2023)

Novos recursos e atualizações

  • Para plataformas não Windows, sugestões de comando adicionadas (chown ou chmod) para permissões de arquivo insuficientes de arquivos de configuração.

Correções de bugs

  • Corrigido um problema em que o diagnóstico de conexão falhava ao concluir as verificações de certificado.

  • Corrigido um problema em que o iterador de seta causava ImportError quando as extensões C não eram compiladas.

Versão 3.3.0 (12 de outubro de 2023)

Novos recursos e atualizações

  • Atualizado para o projeto Apache arrow-nanoarrow para conversão de dados arrow de resultado.

  • Introduzida a variável de ambiente NANOARROW_USAGE para permitir alternar entre o conversor nanoarrow e o conversor arrow. Os valores válidos incluem:

    • FOLLOW_SESSION_PARAMETER, que utiliza o conversor configurado no servidor.

    • DISABLE_NANOARROW, que usa o conversor arrow, substituindo a configuração do servidor.

    • ENABLE_NANOARROW, que usa o conversor nanoarrow, substituindo a configuração do servidor.

  • Introduzida a enumeração snowflake.connector.cursor.NanoarrowUsage, cujos membros incluem:

    • NanoarrowUsage.FOLLOW_SESSION_PARAMETER, que utiliza o conversor configurado no servidor.

    • NanoarrowUsage.DISABLE_NANOARROW, que usa o conversor arrow, substituindo a configuração do servidor.

    • NanoarrowUsage.ENABLE_NANOARROW, que usa o conversor nanoarrow, substituindo a configuração do servidor.

  • Introduzida a variável do módulo snowflake.connector.cursor.NANOARROW_USAGE para permitir a alternância entre o conversor nanoarrow e o conversor arrow. Funciona em conjunto com a enumeração snowflake.connector.cursor.NanoarrowUsage.

Nota

A variável de ambiente, enumeração e variável de módulo recém-introduzidas são temporárias. Elas serão removidas em uma versão futura quando a mudança de arrow para nanoarrow para conversão de dados for concluída.

Correções de bugs

  • Nenhum.

Versão 3.2.1 (3 de outubro de 2023)

Novos recursos e atualizações

  • Adicionada segurança de thread em telemetria ao instanciar múltiplas conexões simultaneamente.

  • Robustez aprimorada no tratamento de alterações de autenticação.

  • Removido o aviso de suspensão de urllib3.contrib.pyopenssl da biblioteca urllib3.

  • Atualizada a dependência platformdirs para as versões 2.6.0 a 4.0.0 das versões 2.6.0 a 3.9.0.

Correções de bugs

  • Corrigido um bug onde URL, porta e caminho eram ignorados em novas tentativas do AWS PrivateLink OCSP.

Versão 3.2.0 (7 de setembro de 2023)

Novos recursos e atualizações

  • Tornou a renomeação de parser -> manager mais consistente no módulo snowflake.connector.config_manager.

  • Adicionado suporte para valores padrão para ConfigOptions.

  • Adicionado default_connection_name ao arquivo config.toml.

Correções de bugs

  • Nenhum.

Versão 3.1.1 (28 de agosto de 2023)

Novos recursos e atualizações

  • Adicionado suporte para RSAPublicKey ao construir AuthByKeyPair além de bytes brutos.

Correções de bugs

  • Corrigido um bug na lógica de nova tentativa de autenticação OKTA para atualizar o token.

  • Corrigido um bug onde o atributo proxy_header estava faltando em SOCKSProxyManager ao conectar pelo proxy SOCKS5.

Versão 3.1.0 (31 de julho de 2023)

Novos recursos e atualizações

  • Adicionado um recurso que permite adicionar definições de conexão ao arquivo de configuração connections.toml. Uma definição de conexão refere-se a uma coleção de parâmetros de conexão, por exemplo, se você quiser definir uma conexão chamada «prod»:

    [prod]
    account = "my_account"
    user = "my_user"
    password = "my_password"
    
    Copy

    Por padrão, procuramos o arquivo connections.toml no local especificado na variável de ambiente SNOWFLAKE_HOME (padrão: ~/.snowflake). Se esta pasta não existir, o conector Python procurará o arquivo no local platformdirs, da seguinte maneira:

    • No Linux: ~/.config/snowflake/, mas segue as configurações de XDG

    • No Mac: ~/Library/Application Support/snowflake/

    • No Windows: %USERPROFILE%\AppData\Local\snowflake\

    Você pode determinar qual arquivo será usado executando o seguinte comando:

    python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
    
    Copy
  • Dependência de criptografia aumentada de <41.0.0,>=3.1.0 para >=3.1.0,<42.0.0.

  • Cache de resposta OCSP aprimorado para remover arquivos de cache tmp no Windows

  • Cache de resposta OCSP aprimorado para reduzir os tempos de gravação em disco.

  • Adicionado um parâmetro server_session_keep_alive em SnowflakeConnection que ignora a exclusão da sessão quando a conexão do cliente é fechada.

  • Melhoramos nossa fixação de platformdirs para evitar que seus novos lançamentos quebrem novas versões do conector.

  • Permitiu que você passasse type_mapper para fetch_pandas_batches() e fetch_pandas_all().

  • Lógica de nova tentativa aprimorada para autenticação okta para atualizar o token se a autenticação for limitada.

  • Adicionados motivos de repetição para consultas repetidas pelo cliente.

  • Remoção do suporte para Python 3.7.

  • Tratamento de erros aprimorado de erro de redefinição de conexão.

Correções de bugs

  • Corrigido um bug em que SFPlatformDirs acrescentava incorretamente nome_do_aplicativo/versão ao seu caminho.

  • Corrigido um bug em que write_pandas falha quando o usuário não tem o privilégio para criar um estágio ou formato de arquivo no esquema de destino, mas tem o privilégio correto para o esquema atual.

  • Resolvido um segfault que às vezes ocorria durante a serialização do cache em cenários multithread.

  • Corrigido um bug sobre a exclusão de arquivos temporários ao executar o comando PUT.

  • Corrigido um bug em que pickle.dump falhava durante a serialização do cache em cenários multithread.

Versão 3.0.4 (25 de maio de 2023)

Novos recursos e atualizações

  • Adicionado o parâmetro de conexão json_result_force_utf8_decoding para forçar a decodificação do conteúdo JSON em utf-8 quando o formato do resultado for JSON.

  • Biblioteca própria de terceiros atualizada de urllib3 para 1.26.15

  • Solicitações de biblioteca própria de terceiros atualizadas para 2.29.0

  • Dependência de pandas atualizada de <1.6.0,>=1.0.0 para >=1.0.0,<2.1.0

  • Adição de suporte para tipos de geometria.

Correções de bugs

  • Corrigido um bug no qual cursor.execute() poderia modificar o objeto de dicionário do argumento statement_params ao executar uma consulta com múltiplas instruções.

  • Corrigido um bug que impedia a chamada de SnowflakeCursor.nextset antes de buscar o resultado da primeira consulta se o cursor executasse uma consulta assíncrona com múltiplas instruções.

  • Corrigido um bug quando _prefetch_hook() não era chamado antes de produzir resultados de execute_async().

  • Corrigido um bug onde alguns campos ResultMetadata eram marcados como obrigatórios quando eram opcionais.

  • Corrigido um bug onde a inserção em massa converte a data incorretamente.

Versão 3.0.3 (20 de abril de 2023)

Novos recursos e atualizações

  • Adicionado um parâmetro que permite aos usuários ignorar o carregamento de arquivos para o estágio se o arquivo existir no estágio e o conteúdo do arquivo for correspondente.

  • Dica de tipo aprimorada do método SnowflakeCursor.execute.

  • Registro GET aprimorado para avisar ao baixar vários arquivos com o mesmo nome.

Correções de bugs

  • Corrigido um bug que imprime erro nos logs do comando GET em GCS.

  • Adicionado um parâmetro que permite aos usuários ignorar o carregamento de arquivos para o estágio se o arquivo existir no estágio e o conteúdo do arquivo for correspondente.

  • Corrigido um bug que ocorria ao escrever um Pandas DataFrame com nomes de colunas contendo aspas duplas em snowflake.connector.pandas_tool.write_pandas.

  • Corrigido um bug que ocorria ao escrever um Pandas DataFrame com dados binários em snowflake.connector.pandas_tool.write_pandas.

Versão 3.0.2 (23 de março de 2023)

Novos recursos e atualizações

  • Nenhum.

Correções de bugs

  • Corrigido um bug de dicas de tipo incorretas de SnowflakeCursor.fetch_arrow_all e SnowflakeCursor.fetchall.

  • Registro em log aprimorado para mascarar tokens em caso de erros.

  • Corrigido um bug onde snowflake.connector.util_text.split_statements engolia a quebra de linha final no caso quando não havia espaço entre as linhas.

  • Corrigido um vazamento de memória no módulo de registro da extensão Cython.

  • Corrigido um bug onde o comando put em AWS gerava um AttributeError ao carregar um arquivo composto de múltiplas partes.

  • Corrigido um bug onde o comando put em AWS gerava um AttributeError para tamanhos de arquivo maiores que 200MB.

Versão 3.0.1 (01 de março de 2023)

Novos recursos e atualizações

  • Robustez aprimorada do cache de resposta OCSP para lidar com erros em casos de serialização e desserialização.

  • Substituída a dependência de setuptools em favor do empacotamento.

  • Cadeia de documentos do método async_executes atualizada.

  • Os erros gerados agora possuem um campo de consulta que contém a consulta SQL que os causou, quando disponível.

Correções de bugs

  • Corrigido um bug onde AuthByKeyPair.handle_timeout deveria passar argumentos de palavras-chave em vez de argumentos posicionais ao chamar AuthByKeyPair.prepare.

  • Corrigido um bug em que o cache de token MFA se recusava a funcionar até ser reiniciado em vez de autenticar novamente.

Versão 3.0.0 (27 de janeiro de 2023)

Mudança do BCR (versão da mudança de comportamento)

  • Corrigido um bug onde write_pandas não usava esquemas e bancos de dados especificados pelo usuário para criar objetos intermediários.

    Anteriormente, a função write_pandas criava objetos temporários no banco de dados e esquema usados atualmente e colocava apenas a tabela final (que foi criada ou anexada) no banco de dados e esquema especificados pelo usuário. Com esta versão, se os parâmetros do banco de dados ou do esquema para write_pandas forem diferentes do selecionado atualmente, você precisará garantir que o usuário que está executando write_pandas tenha acesso para criar/descartar estágios temporários, formatos de arquivo e tabelas com o esquema referenciado pela função write_pandas.

    Snowflake recomenda que você teste qualquer nova versão de driver em ambientes de pré-produção antes de implantar em ambientes de produção. Com esta mudança de comportamento, você deve dar atenção especial ao(s) cenário(s) listado(s) acima (ou seja, write_pandas com parâmetros de banco de dados ou esquemas diferentes do contexto atual).

Novos recursos e atualizações

  • Dependência de pyarrow aumentada de >=8.0.0,<8.1.0 para >=10.0.1,<10.1.0

  • Dependência pyOpenSSL aumentada de <23.0.0 para <24.0.0

  • Durante a autenticação baseada no navegador, o URL SSO agora é impresso antes de abri-lo no navegador

  • Aumentou o nível de um registro de log para quando ArrowResult não puder ser importado

  • Adicionada uma verificação de versão mínima de MacOS ao compilar extensões C

Correções de bugs

  • Corrigido um bug onde write_pandas não usava esquema e banco de dados especificados pelo usuário para criar objetos intermediários

  • Corrigido um bug onde o código de resposta HTTP de 429 não era repetido

  • Corrigido um bug onde o cache de token MFA não funcionava