Skip to content

Releases: snowflakedb/snowflake-connector-python

3.4.0

02 Nov 23:25
bbf8aac

Choose a tag to compare

  • v3.4.0(November 03,2023)

    • Added support for use_logical_type in write_pandas.
    • Removed dependencies on pycryptodomex and oscrypto. All connections now go through OpenSSL via the cryptography library, which was already a dependency.
    • Fixed issue with ingesting files over 80 GB to S3.
    • Added the backoff_policy argument to snowflake.connector.connect allowing for configurable backoff policy between retries of failed requests. See available implementations in the backoff_policies module.
    • Added the socket_timeout argument to snowflake.connector.connect specifying socket read and connect timeout.
    • Fixed login_timeout and network_timeout behaviour. Retries of login and network requests are now properly halted after these timeouts expire.
    • Fixed bug for issue urllib3/urllib3#1878 in vendored urllib.

3.3.1

18 Oct 21:48
5b61af7

Choose a tag to compare

  • v3.3.1(October 18, 2023)

    • Added for non-Windows platforms command suggestions (chown/chmod) for insufficient file permissions of config files.
    • Fixed issue with connection diagnostics failing to complete certificate checks.
    • Fixed issue that arrow iterator causes ImportError when the c extensions are not compiled.

3.3.0

12 Oct 22:30
4e29385

Choose a tag to compare

  • v3.3.0(October 10,2023)

    • Updated to Apache arrow-nanoarrow project for result arrow data conversion.
    • Introduced the NANOARROW_USAGE environment variable to allows switching between the nanoarrow converter and the arrow converter. Valid values include:
      • FOLLOW_SESSION_PARAMETER, which uses the converter configured in the server.
      • DISABLE_NANOARROW, which uses arrow converter, overriding the server setting.
      • ENABLE_NANOARROW, which uses the nanoarrow converter, overriding the server setting.
    • Introduced the snowflake.connector.cursor.NanoarrowUsage enum, whose members include:
      • NanoarrowUsage.FOLLOW_SESSION_PARAMETER, which uses the converter configured in the server.
      • NanoarrowUsage.DISABLE_NANOARROW, which uses arrow converter, overriding the server setting.
      • NanoarrowUsage.ENABLE_NANOARROW, which uses the nanoarrow converter, overriding the server setting.
    • Introduced the snowflake.connector.cursor.NANOARROW_USAGE module variable to allow switching between the nanoarrow converter and the arrow converter. It works in conjunction with the snowflake.connector.cursor.NanoarrowUsage enum.
    • The newly-introduced environment variable, enum, and module variable are temporary. They will be removed in a future release when switch from arrow to nanoarrow for data conversion is complete.

Release

03 Oct 17:58
246eb8f

Choose a tag to compare

  • v3.2.1(September 26,2023)

    • Fixed a bug where url port and path were ignored in private link oscp retry.
    • Added thread safety in telemetry when instantiating multiple connections concurrently.
    • Bumped platformdirs dependency from >=2.6.0,<3.9.0 to >=2.6.0,<4.0.0.0 and made necessary changes to allow this.
    • Removed the deprecation warning from the vendored urllib3 about urllib3.contrib.pyopenssl deprecation.
    • Improved robustness in handling authentication response.

v3.3.0b1

13 Sep 18:55

Choose a tag to compare

v3.3.0b1 Pre-release
Pre-release
  • Version 3.3.0b1 is the snowflake-connector-python based on apache nanoarrow project, which
    reduces the package size as well as removes a hard dependency on a specific version of pyarrow.
    This version is built on top of v3.2.0, and it includes the following nanoarrow related improvements:
    • Updated arrow-nanoarrow dependency which improved error handling.
    • Aligned error experience of handling corrupted arrow data with the GA versions.

Release

07 Sep 19:54
d0e00ad

Choose a tag to compare

  • v3.2.0(September 06,2023)

    • Made the parser -> manager renaming more consistent in snowflake.connector.config_manager module.
    • Added support for default values for ConfigOptions
    • Added default_connection_name to config.toml file

Release

29 Aug 18:07
4da2a61

Choose a tag to compare

v3.1.1(August 28,2023)

  • Fixed a bug in retry logic for okta authentication to refresh token.
  • Support RSAPublicKey when constructing AuthByKeyPair in addition to raw bytes.
  • Fixed a bug when connecting through SOCKS5 proxy, the attribute proxy_header is missing on SOCKSProxyManager.
  • Cherry-picked urllib3/urllib3@fd2759a onto vendored urllib3 (v1.26.15) to enable enforce_content_length by default.
  • Fixed a bug in tag generation of OOB telemetry event.

Release

01 Aug 18:13
0da61a3

Choose a tag to compare

Release Pre-release
Pre-release

Version 3.1.0a2 is built on top of 3.1.0a1, including all the latest changes in the released GA version 3.1.0.

Release

31 Jul 23:02
1380e41

Choose a tag to compare

v3.1.0(July 31,2023)

  • Added a feature that lets you add connection definitions to the connections.toml configuration file. A connection definition refers to a collection of connection parameters, for example, if you wanted to define a connection named `prod``:

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

    By default, we look for the connections.toml file in the location specified in the SNOWFLAKE_HOME environment variable (default: ~/.snowflake). If this folder does not exist, the Python connector looks for the file in the platformdirs location, as follows:

    • On Linux: ~/.config/snowflake/, but follows XDG settings
    • On Mac: ~/Library/Application Support/snowflake/
    • On Windows: %USERPROFILE%\AppData\Local\snowflake\

    You can determine which file is used by running the following command:

    python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
    
    • Bumped cryptography dependency from <41.0.0,>=3.1.0 to >=3.1.0,<42.0.0.
    • Improved OCSP response caching to remove tmp cache files on Windows.
    • Improved OCSP response caching to reduce the times of disk writing.
    • Added a parameter server_session_keep_alive in SnowflakeConnection that skips session deletion when client connection closes.
    • Tightened our pinning of platformdirs, to prevent their new releases breaking us.
    • Fixed a bug where SFPlatformDirs would incorrectly append application_name/version to its path.
    • Added retry reason for queries that are retried by the client.
    • Fixed a bug where write_pandas fails when user does not have the privilege to create stage or file format in the target schema, but has the right privilege for the current schema.
    • Remove Python 3.7 support.
    • Worked around a segfault which sometimes occurred during cache serialization in multi-threaded scenarios.
    • Improved error handling of connection reset error.
    • Fixed a bug about deleting the temporary files happened when running PUT command.
    • Allowed to pass type_mapper to fetch_pandas_batches() and fetch_pandas_all().
    • Fixed a bug where pickle.dump segfaults during cache serialization in multi-threaded scenarios.
    • Improved retry logic for okta authentication to refresh token if authentication gets throttled.
    • Note that this release does not include the changes introduced in the previous 3.1.0a1 release. Those will be released at a later time.

Please check our community page for release notes.

Release

26 Jul 00:07

Choose a tag to compare

Release Pre-release
Pre-release

Version 3.1.0a1 is our first efforts to build snowflake-connector-python based on apache nanoarrow project, which reduces the package size as well as removes a hard dependency on a specific version of pyarrow. This version also includes the following features and bug fixes from the unreleased v3.0.5:

New Features and Improvements

  • Added a feature that lets you add connection definitions to the config.toml configuration file. A connection definition refers to a collection of connection parameters. The connection configuration name must begin with connections, similar to the following that defines the parameters for the prod connection:

      [connections.prod]
      account = "my_account"
      user = "my_user"
      password = "my_password"

    By default, we look for the config.toml file in the location specified in the SNOWFLAKE_HOME environment variable (default: ~/.snowflake). If this folder does not exist, the Python connector looks for the file in the platformdirs location, as follows:

    • On Linux: ~/.config/snowflake/, but follows XDG settings
    • On Mac: ~/Library/Application Support/snowflake/
    • On Windows: %USERPROFILE%\AppData\Local\snowflake\

    You can determine which file is used by running the following command:

    python -c "from snowflake.connector.constants import CONFIG_FILE; print(str(CONFIG_FILE))"
    
  • Bumped cryptography dependency from <41.0.0,>=3.1.0 to >=3.1.0,<42.0.0.

  • Allowed to pass type_mapper to fetch_pandas_batches() and fetch_pandas_all().

  • Added a parameter server_session_keep_alive in SnowflakeConnection that skips session deletion when client connection closes.

  • Added retry reason for queries that are retried by the client.

  • Improved error handling of connection reset error.

  • Improved OCSP response caching to remove tmp cache files on Windows.

  • Improved OCSP response caching to reduce the times of disk writing.

  • Tightened our pinning of platformdirs, to prevent their new releases breaking us.

  • Remove Python 3.7 support.

Bug Fixes

  • Fixed a bug where SFPlatformDirs would incorrectly append application_name/version to its path.
  • Fixed a bug where write_pandas fails when user does not have the privilege to create stage or file format in the target schema, but has the right privilege for the current schema.
  • Fixed a bug about deleting the temporary files happened when running PUT command.
  • Fixed a bug where pickle.dump segfaults during cache serialization in multi-threaded scenarios.
  • Worked around a segfault which sometimes occurred during cache serialization in multi-threaded scenarios.