Snowflake Connector for Python release notes for 2024

This article contains the release notes for the Snowflake Connector for Python, including the following when applicable:

  • Behavior changes

  • New features

  • Customer-facing bug fixes

Snowflake uses semantic versioning for Snowflake Connector for Python updates.

Version 3.10.0 (April 29, 2024)

New features and updates

  • Added support for structured types to fetch_pandas_all.

Bug fixes

  • Fixed an issue relating to incorrectly formed China S3 endpoints.

Version 3.9.1 (April 22, 2024)

New features and updates

  • Fixed an issue that caused a HTTP 400 error when connecting to a China endpoint.

Bug fixes

  • None.

Version 3.9.0 (April 18, 2024)

New features and updates

  • Added support for log settings in a logging configuration file.

  • Improved S3 acceleration logic when connecting to a China endpoint.

Bug fixes

  • None.

Version 3.8.1 (April 09, 2024)

New features and updates

  • Improved externalbrowser authentication in containerized environments:

    • Instructs the browser to not fetch /favicon on a success page.

    • Uses a simple retry strategy for an empty socket.recv call.

    • Adds a SNOWFLAKE_AUTH_SOCKET_REUSE_PORT flag (SNOWFLAKE_AUTH_SOCKET_REUSE_PORT=true) to set the underlying socket’s SO_REUSEPORT flag (as described in the socket man page).

      • Setting this flag can be useful when the randomized port used in the localhost callback url is being followed before the container engine completes port forwarding to host.

      • You can then statically map a port between your host and container and allow that port to be reused in rapid succession with a command similar to the following:

        SF_AUTH_SOCKET_PORT=3037 SNOWFLAKE_AUTH_SOCKET_REUSE_PORT=true poetry run python somescript.py
        
        Copy
    • Adds a SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT flag (SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT=true) to make a non-blocking socket.recv call and retry on an error.

  • Added support for parsing structured type information in schema queries.

  • Bumped platformdirs from >=2.6.0,<4.0.0 to >=2.6.0,<5.0.0.

  • Updated diagnostics to use system$allowlist instead of system$whitelist.

  • Improved the cleanup logic so connections now rely on an interpreter shutdown instead of the __del__ method.

  • Updated the logging level from INFO to DEBUG when logging the executed query using SnowflakeCursor.execute.

Bug fixes

  • Fixed a bug that the truncated password in log is not masked.

Version 3.7.1 (February 22, 2024)

New features and updates

  • Bumped the following dependencies:

    • pandas from version >=1.0.0,<2.2.0 to >=1.0.0,<3.0.0

    • cryptography from version <42.0.0,>=3.1.0 to >=3.1.0,<43.0.0

    • pyOpenSSL from version >=16.2.0,<24.0.0 to >=16.2.0,<25.0.0

  • Bumped the keyring dependency lower bound to version 23.1.0 to address a security vulnerability.

Bug fixes

  • Fixed a memory leak in decimal data conversion.

  • Fixed a bug where write_pandas wasn’t truncating the target table.

Version 3.7.0 (January 26, 2024)

New features and updates

  • Added support for Python 3.12.

  • Added a new Boolean force_return_table parameter to SnowflakeCursor.fetch_arrow_all to force returning pyarrow.Table in case of zero rows.

  • Cleanup some C++ code warnings and performance issues.

  • Made local testing more robust against implicit assumptions.

  • Added support for connecting using an existing connection via the session and master token.

  • Added support for connecting to Snowflake by authenticating with multiple SAML IDP using an external browser.

  • Improved configuration permissions warning message.

Bug fixes

  • Fixed an issue with PyArrow Table type hinting.

  • Fixed a compilation issue due to a missing cstdint header on gcc13.