Notes de version de Snowflake Connector for Python pour 2023

Cet article contient les notes de version Snowflake Connector for Python, y compris les éléments suivants, le cas échéant :

  • Changements de comportement

  • Nouvelles fonctionnalités

  • Corrections de bogues pour les clients

Snowflake utilise la version sémantique pour les mises à jour Snowflake Connector for Python.

Version 3.6.0 (07 décembre 2023)

Nouvelles fonctions et mises à jour

  • Ajout de la prise en charge des types de vecteur.

  • Ajout de la prise en charge des paramètres de connexion private_key_file et private_key_file_pwd.

  • Ajout du nouvel indicateur expired à la classe SnowflakeConnection qui permet de savoir si le jeton maître de la connexion a expiré.

  • Modification de l’épinglage de version urlib3 pour n’affecter que les versions de Python inférieures à 3.10.

Corrections de bogues

  • Correction d’un bogue selon lequel l’insertion de la date échouait lorsque le format de date était défini et que la liaison de style qmark était utilisée.

Version 3.5.0 (13 novembre 2023)

Nouvelles fonctions et mises à jour

  • Snowflake Connector for Python est maintenant basé uniquement sur le projet apache arrow-nanoarrow :

    • Réduction de la taille des roues à ~1MB et de la taille de l’installation à ~5MB.

    • Suppression d’une dépendance forte sur une version spécifique de pyarrow.

  • Les éléments suivants ont été abandonnés au profit du convertisseur nanoarrow :

    • classe snowflake.connector.cursor.NanoarrowUsage.

    • Variable d’environnement NANOARROW_USAGE.

    • Variable du module snowflake.connector.cursor.NANOARROW_USAGE.

Corrections de bogues

  • Aucun.

Version 3.4.1 (09 novembre 2023)

Nouvelles fonctions et mises à jour

  • Mise à niveau des bibliothèques suivantes :

    • Mise à jour de urlib3 vers la version 1.26.18.

    • Mise à jour des requests liées vers la version 2.31.0.

Corrections de bogues

  • Aucun.

Version 3.4.0 (03 novembre 2023)

Nouvelles fonctions et mises à jour

  • Ajout de la prise en charge de use_logical_type dans write_pandas.

  • Ajout de l’argument backoff_policy à snowflake.connector.connect permettant une politique d’interruption configurable entre les tentatives de requêtes ayant échoué. Voir les implémentations disponibles dans le module backoff_policies.

  • Ajout de l’argument socket_timeout à snowflake.connector.connect spécifiant le délai d’expiration de lecture et de connexion du socket.

  • Suppression des dépendances sur pycryptodomex et oscrypto. Toutes les connexions passent désormais par OpenSSL via la bibliothèque de cryptographie, qui était déjà une dépendance.

Corrections de bogues

  • Correction du comportement de login_timeout et network_timeout. Les tentatives de connexion et les requêtes réseau sont désormais correctement interrompues après l’expiration de ces délais.

  • Correction d’un bogue pour le problème urllib3/urllib3#1878 dans le fournisseur urllib.

  • Correction d’un problème d’ingestion de fichiers entre 80 GB dans S3.

Version 3.3.1 (18 octobre 2023)

Nouvelles fonctions et mises à jour

  • Pour les plates-formes non Windows, ajout de suggestions de commandes (chown ou chmod) pour les autorisations insuffisantes des fichiers de configuration.

Corrections de bogues

  • Correction d’un problème où les diagnostics de connexion ne parvenaient pas à terminer les vérifications de certificat.

  • Correction d’un problème où l’itérateur Arrow provoquait ImportError lorsque les extensions C n’étaient pas compilées.

Version 3.3.0 (12 octobre 2023)

Nouvelles fonctions et mises à jour

  • Mise à jour du projet Apache arrow-nanoarrow pour la conversion des données de flèche de résultat.

  • Introduction de la variable d’environnement NANOARROW_USAGE pour permettre la commutation entre le convertisseur nanoarrow et le convertisseur arrow. Les valeurs valides incluent :

    • FOLLOW_SESSION_PARAMETER, qui utilise le convertisseur configuré sur le serveur.

    • DISABLE_NANOARROW, qui utilise le convertisseur Arrow, remplaçant le paramètre du serveur.

    • ENABLE_NANOARROW, qui utilise le convertisseur Nanoarrow, remplaçant les paramètres du serveur.

  • Introduction de l’énumération snowflake.connector.cursor.NanoarrowUsage, dont les membres incluent :

    • NanoarrowUsage.FOLLOW_SESSION_PARAMETER, qui utilise le convertisseur configuré sur le serveur.

    • NanoarrowUsage.DISABLE_NANOARROW, qui utilise le convertisseur Arrow, remplaçant le paramètre du serveur.

    • NanoarrowUsage.ENABLE_NANOARROW, qui utilise le convertisseur Nanoarrow, remplaçant les paramètres du serveur.

  • Introduction de la variable de module snowflake.connector.cursor.NANOARROW_USAGE pour permettre la commutation entre le convertisseur nanoarrow et le convertisseur Arrow. Cela fonctionne en conjonction avec l’énumération snowflake.connector.cursor.NanoarrowUsage.

Note

La variable d’environnement, l’énumération et la variable de module nouvellement introduites sont temporaires. Ils seront supprimés dans une prochaine version lorsque le passage de Arrow à nanoarrow pour la conversion des données sera terminé.

Corrections de bogues

  • Aucun.

Version 3.2.1 (3 octobre 2023)

Nouvelles fonctions et mises à jour

  • Ajout d’une sécurité de niveau « thread safety » dans la télémétrie lors de l’instanciation simultanée de plusieurs connexions.

  • Amélioration de la robustesse dans la gestion des changements d’authentification.

  • Suppression de l’avertissement de dépréciation urllib3.contrib.pyopenssl de la bibliothèque urllib3.

  • Mise à jour de la dépendance platformdirs pour les versions 2.6.0 à 4.0.0 à partir des versions 2.6.0 à 3.9.0.

Corrections de bogues

  • Correction d’un bogue où un URL, un port et un chemin étaient ignorés dans les nouvelles tentatives de AWS PrivateLink OCSP.

Version 3.2.0 (7 septembre 2023)

Nouvelles fonctions et mises à jour

  • Rendre plus cohérent le renommage de parser -> manager dans le module snowflake.connector.config_manager.

  • Ajout de la prise en charge des valeurs par défaut pour ConfigOptions.

  • Ajout du default_connection_name au fichier config.toml.

Corrections de bogues

  • Aucun.

Version 3.1.1 (28 août 2023)

Nouvelles fonctions et mises à jour

  • Ajout de la prise en charge de RSAPublicKey lors de la construction de AuthByKeyPair en plus des octets bruts.

Corrections de bogues

  • Correction d’un bogue dans la logique de nouvelles tentatives de l’authentification OKTA pour actualiser le jeton.

  • Correction d’un bogue où l’attribut proxy_header est manquant dans SOCKSProxyManager lors d’une connexion via le proxy SOCKS5.

Version 3.1.0 (31 juillet 2023)

Nouvelles fonctions et mises à jour

  • Ajout d’une fonction qui vous permet d’ajouter des définitions de connexion au fichier de configuration connections.toml. Une définition de connexion fait référence à un ensemble de paramètres de connexion. Par exemple, si vous vouliez définir une connexion nommée « prod »:

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

    Par défaut, nous recherchons le fichier connections.toml à l’emplacement spécifié dans la variable d’environnement SNOWFLAKE_HOME (par défaut : ~/.snowflake). Si ce dossier n’existe pas, le connecteur Python recherche le fichier à l’emplacement platformdirs, comme suit :

    • Sous Linux : ~/.config/snowflake/, mais suit les paramètres XDG

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

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

    Vous pouvez déterminer quel fichier est utilisé en exécutant la commande suivante :

    python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
    
    Copy
  • La dépendance de la cryptographie est passée de <41.0.0,>=3.1.0 à >=3.1.0,<42.0.0.

  • Amélioration de la mise en cache des réponses OCSP pour supprimer les fichiers de cache tmp sous Windows

  • Amélioration de la mise en cache des réponses OCSP afin de réduire les temps d’écriture sur le disque.

  • Ajout d’un paramètre server_session_keep_alive dans SnowflakeConnection qui permet d’éviter la suppression de la session lors de la fermeture de la connexion du client.

  • Nous avons resserré nos liens avec platformdirs, afin d’éviter que leurs nouvelles versions ne compromettent les nouvelles versions du connecteur.

  • Possibilité de transmettre type_mapper à fetch_pandas_batches() et fetch_pandas_all().

  • Amélioration de la logique de nouvelles tentatives pour l’authentification okta afin d’actualiser le jeton si l’authentification est bloquée.

  • Ajout de motifs de relance pour les requêtes qui font l’objet de nouvelles tentatives par le client.

  • Suppression de la prise en charge de Python 3.7.

  • Amélioration de la gestion de l’erreur de réinitialisation de la connexion.

Corrections de bogues

  • Correction d’un bogue à cause duquel SFPlatformDirs ajoutait incorrectement le nom/la version de l’application à son chemin.

  • Correction d’un bogue où write_pandas échoue lorsque l’utilisateur n’a pas le privilège de créer une zone de préparation ou un format de fichier dans le schéma cible, mais qu’il a le bon privilège pour le schéma actuel.

  • Correction d’un erreur de segmentation qui se produisait parfois lors de la sérialisation du cache dans des scénarios multithreads.

  • Correction d’un bogue concernant la suppression des fichiers temporaires lors de l’exécution d’une commande PUT.

  • Correction d’un bogue qui provoquait une erreur de segmentation de pickle.dump lors de la sérialisation du cache dans des scénarios multithreads.

Version 3.0.4 (25 mai 2023)

Nouvelles fonctions et mises à jour

  • Ajout du paramètre de connexion json_result_force_utf8_decoding pour forcer le décodage du contenu JSON en utf-8 lorsque le format de résultat est JSON.

  • Passage de la bibliothèque liée à la copie de paquets tiers urllib3 à la version 1.26.15

  • Passage des requêtes de la bibliothèque liée à la copie de paquets tiers à la version 2.29.0

  • La dépendance de pandas est passée de <1.6.0,>=1.0.0 à >=1.0.0,<2.1.0

  • Ajout de la prise en charge des types de géométrie.

Corrections de bogues

  • Correction d’un bogue dans lequel cursor.execute() pouvait modifier l’objet dictionnaire statement_params de l’argument lors de l’exécution d’une requête à plusieurs instructions.

  • Correction d’un bogue empêchant d’appeler SnowflakeCursor.nextset avant de récupérer le résultat de la première requête si le curseur exécute une requête asynchrone à plusieurs instructions.

  • Correction d’un bogue lorsque _prefetch_hook() n’était pas appelé avant d’obtenir les résultats de execute_async().

  • Correction d’un bogue où certains champs ResultMetadata étaient marqués comme obligatoires alors qu’ils étaient facultatifs.

  • Correction d’un bogue où l’insertion en masse convertit la date de manière incorrecte.

Version 3.0.3 (20 avril 2023)

Nouvelles fonctions et mises à jour

  • Ajout d’un paramètre permettant aux utilisateurs d’ignorer les chargements de fichiers vers une zone de préparation si le fichier existe sur la zone de préparation et si le contenu du fichier correspond.

  • Amélioration de l’indication de type de la méthode SnowflakeCursor.execute.

  • Amélioration de la journalisation de GET pour avertir du téléchargement de plusieurs fichiers portant le même nom.

Corrections de bogues

  • Correction d’un bogue entraînant l’affichage d’une erreur dans les journaux pour la commande GET sur GCS.

  • Ajout d’un paramètre permettant aux utilisateurs d’ignorer les chargements de fichiers vers une zone de préparation si le fichier existe sur la zone de préparation et si le contenu du fichier correspond.

  • Correction d’un bogue qui survenait lors de l’écriture d’un DataFrame Pandas avec des noms de colonnes contenant des guillemets doubles dans snowflake.connector.pandas_tool.write_pandas.

  • Correction d’un bogue survenant lors de l’écriture d’un DataFrame Pandas avec des données binaires dans snowflake.connector.pandas_tool.write_pandas.

Version 3.0.2 (23 mars 2023)

Nouvelles fonctions et mises à jour

  • Aucun.

Corrections de bogues

  • Correction d’un bogue concernant les indications de type incorrectes pour SnowflakeCursor.fetch_arrow_all et SnowflakeCursor.fetchall.

  • Amélioration de la journalisation pour masquer les jetons en cas d’erreur.

  • Correction d’un bogue où snowflake.connector.util_text.split_statements mangeait le saut de ligne final dans le cas où il n’y a pas d’espace entre les lignes.

  • Correction d’une fuite de mémoire dans le module de journalisation de l’extension Cython.

  • Correction d’un bogue où la commande put sur AWS générait un AttributeError lors du chargement d’un fichier composé de plusieurs parties.

  • Correction d’un bogue où la commande put sur AWS provoquait une erreur AttributeError pour les fichiers dont la taille était supérieure à 200MB.

Version 3.0.1 (01 mars 2023)

Nouvelles fonctions et mises à jour

  • Amélioration de la robustesse de la mise en cache des réponses OCSP pour gérer les erreurs dans les cas de sérialisation et de désérialisation.

  • Remplacement de la dépendance sur setuptools en faveur de l’empaquetage.

  • Mise à jour de la chaîne de documentation de la méthode async_executes.

  • Les erreurs levées ont désormais un champ de requête qui contient la requête SQL qui les a provoquées lorsqu’elle est disponible.

Corrections de bogues

  • Correction d’un bogue qui faisait que AuthByKeyPair.handle_timeout devait transmettre des arguments de type mot-clé au lieu d’arguments de position lors de l’appel de AuthByKeyPair.prepare.

  • Correction d’un bogue où la mise en cache du jeton MFA refusait de fonctionner jusqu’au redémarrage au lieu de la réauthentification.

Version 3.0.0 (27 janvier 2023)

Changement BCR (version de changement de comportement)

  • Correction d’un bogue où write_pandas n’utilisait pas les schémas et bases de données spécifiés par l’utilisateur pour créer des objets intermédiaires.

    Auparavant, la fonction write_pandas créait des objets temporaires dans la base de données et le schéma utilisés et ne plaçait la table finale (créée ou ajoutée) que dans la base de données et le schéma spécifiés par l’utilisateur. Avec cette version, si les paramètres de base de données ou de schéma pour write_pandas sont différents de ceux actuellement sélectionnés, vous devez vous assurer que l’utilisateur qui exécute write_pandas a accès à la création/suppression de zones de préparation temporaires, de formats de fichiers et de tables avec le schéma référencé par la fonction write_pandas.

    Snowflake vous recommande de tester toute nouvelle version de pilote dans des environnements de préproduction avant de la déployer dans des environnements de production. Dans le cadre de ce changement de comportement, vous devez accorder une attention particulière au(x) scénario(s) annoncé(s) ci-dessus (c’est-à-dire write_pandas avec des paramètres de base de données ou de schémas différents du contexte actuel).

Nouvelles fonctions et mises à jour

  • La dépendance de pyarrow est passée de >=8.0.0,<8.1.0 à >=10.0.1,<10.1.0

  • La dépendance de pyOpenSSL est passée de <23.0.0 à <24.0.0

  • Lors d’une authentification par navigateur, l’URL SSO est désormais affichée avant ouverture dans le navigateur

  • Augmentation du niveau de journalisation lorsque l’importation de ArrowResult est impossible

  • Ajout d’une vérification de la version minimale de MacOS lors de la compilation des extensions C

Corrections de bogues

  • Correction d’un bogue où write_pandas n’utilisait pas le schéma et la base de données spécifiés par l’utilisateur pour créer des objets intermédiaires

  • Correction d’un bogue où le code de réponse HTTP 429 ne faisait pas l’objet de nouvelles tentatives

  • Correction d’un bogue où la mise en cache des jetons MFA ne fonctionnait pas