snowflake-connector-python 4.3.0__tar.gz → 4.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/CONTRIBUTING.md +3 -3
- snowflake_connector_python-4.3.0/PKG-INFO → snowflake_connector_python-4.5.0/DESCRIPTION.md +33 -87
- {snowflake_connector_python-4.3.0/src/snowflake_connector_python.egg-info → snowflake_connector_python-4.5.0}/PKG-INFO +39 -6
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/setup.cfg +5 -4
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/_utils.py +38 -33
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_connection.py +2 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_cursor.py +3 -4
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_network.py +39 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_pandas_tools.py +1 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_wif_util.py +77 -9
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_auth.py +5 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/_auth.py +11 -2
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/keypair.py +41 -11
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/okta.py +3 -3
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/azure_storage_client.py +3 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/compat.py +2 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/config_manager.py +43 -3
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/connection.py +45 -14
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/crl.py +1 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/cursor.py +4 -8
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/network.py +44 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/ocsp_snowflake.py +14 -40
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/pandas_tools.py +1 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/platform_detection.py +18 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/result_batch.py +22 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/token_cache.py +43 -13
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/util_text.py +108 -1
- snowflake_connector_python-4.5.0/src/snowflake/connector/version.py +3 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/wif_util.py +117 -31
- snowflake_connector_python-4.3.0/DESCRIPTION.md → snowflake_connector_python-4.5.0/src/snowflake_connector_python.egg-info/PKG-INFO +120 -1
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/requires.txt +5 -5
- snowflake_connector_python-4.3.0/src/snowflake/connector/version.py +0 -3
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/LICENSE.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/MANIFEST.in +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/NOTICE +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/README.md +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/SECURITY.md +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/pyproject.toml +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/setup.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/_query_context_cache.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/_sql_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/README.md +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_azure_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_bind_upload_agent.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_description.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_direct_file_operation_utils.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_file_transfer_agent.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_gcs_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_ocsp_asn1crypto.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_ocsp_snowflake.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_result_batch.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_result_set.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_s3_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_session_manager.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_telemetry.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/_time_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_by_plugin.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_default.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_idtoken.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_keypair.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_no_auth.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_oauth.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_oauth_code.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_oauth_credentials.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_okta.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_pat.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_usrpwdmfa.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_webbrowser.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/aio/auth/_workload_identity.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/arrow_context.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/_http_server.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/_oauth_base.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/by_plugin.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/default.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/idtoken.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/no_auth.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/oauth.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/oauth_code.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/oauth_credentials.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/pat.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/webbrowser.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/auth/workload_identity.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/backoff_policies.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/bind_upload_agent.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/cache.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/connection_diagnostic.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/constants.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/converter.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/converter_issue23517.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/converter_null.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/converter_snowsql.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/crl_cache.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/dbapi.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/description.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/direct_file_operation_utils.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/encryption_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/errorcode.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/errors.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/externals_utils/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/externals_utils/externals_setup.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/feature.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/file_compression_type.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/file_lock.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/file_transfer_agent.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/file_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/gcs_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/gzip_decoder.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/interval_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/local_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/log_configuration.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/logging_utils/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/logging_utils/filters.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/minicore/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/minicore/linux_x86_64_glibc/libsf_mini_core.so +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/options.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/os_details.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/proxy.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/py.typed +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/result_set.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/s3_storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/secret_detector.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/session_manager.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/sf_dirs.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/sfbinaryformat.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/sfdatetime.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/snow_logging.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/sqlstate.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/ssd_internal_keys.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/ssl_wrap_socket.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/storage_client.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/telemetry.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/telemetry_oob.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/test_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/time_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/tool/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/tool/dump_certs.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/tool/probe_connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/url_util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/api.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/auth.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/certs.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/compat.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/help.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/models.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/packages.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/structures.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/requests/utils.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/_base_connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/_request_methods.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/emscripten_fetch_worker.js +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/fetch.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/request.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/response.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/http2/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/http2/connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/http2/probe.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/py.typed +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/util.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
- {snowflake_connector_python-4.3.0 → snowflake_connector_python-4.5.0}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
|
@@ -27,11 +27,11 @@ We require our contributors to sign a CLA, available at https://github.com/snowf
|
|
|
27
27
|
What is a development environment? It's a [virtualenv](https://virtualenv.pypa.io) that has all of necessary
|
|
28
28
|
dependencies installed with `snowflake-connector-python` installed as an editable package.
|
|
29
29
|
|
|
30
|
-
Setting up a development environment is super easy with this [one simple tox command](https://tox.wiki/en/
|
|
30
|
+
Setting up a development environment is super easy with this [one simple tox command](https://tox.wiki/en/legacy/example/devenv.html).
|
|
31
31
|
|
|
32
32
|
```shell
|
|
33
|
-
tox --devenv
|
|
34
|
-
.
|
|
33
|
+
tox --devenv venv39 -e py39
|
|
34
|
+
. venv39/bin/activate
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Note: we suggest using the lowest supported Python version for development.
|
|
@@ -1,89 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: snowflake-connector-python
|
|
3
|
-
Version: 4.3.0
|
|
4
|
-
Summary: Snowflake Connector for Python
|
|
5
|
-
Home-page: https://www.snowflake.com/
|
|
6
|
-
Author: Snowflake, Inc
|
|
7
|
-
Author-email: snowflake-python-libraries-dl@snowflake.com
|
|
8
|
-
License: Apache-2.0
|
|
9
|
-
Project-URL: Documentation, https://docs.snowflake.com/en/user-guide/python-connector.html
|
|
10
|
-
Project-URL: Source, https://github.com/snowflakedb/snowflake-connector-python
|
|
11
|
-
Project-URL: Issues, https://github.com/snowflakedb/snowflake-connector-python/issues
|
|
12
|
-
Project-URL: Changelog, https://github.com/snowflakedb/snowflake-connector-python/blob/main/DESCRIPTION.md
|
|
13
|
-
Keywords: Snowflake db database cloud analytics warehouse
|
|
14
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
-
Classifier: Environment :: Console
|
|
16
|
-
Classifier: Environment :: Other Environment
|
|
17
|
-
Classifier: Intended Audience :: Developers
|
|
18
|
-
Classifier: Intended Audience :: Education
|
|
19
|
-
Classifier: Intended Audience :: Information Technology
|
|
20
|
-
Classifier: Intended Audience :: System Administrators
|
|
21
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
22
|
-
Classifier: Operating System :: OS Independent
|
|
23
|
-
Classifier: Programming Language :: Python :: 3
|
|
24
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
27
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
28
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
29
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
30
|
-
Classifier: Programming Language :: SQL
|
|
31
|
-
Classifier: Topic :: Database
|
|
32
|
-
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
33
|
-
Classifier: Topic :: Software Development
|
|
34
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
35
|
-
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
36
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
37
|
-
Requires-Python: >=3.9
|
|
38
|
-
Description-Content-Type: text/markdown
|
|
39
|
-
License-File: LICENSE.txt
|
|
40
|
-
License-File: NOTICE
|
|
41
|
-
Requires-Dist: asn1crypto<2.0.0,>0.24.0
|
|
42
|
-
Requires-Dist: cryptography>=44.0.1
|
|
43
|
-
Requires-Dist: pyOpenSSL<26.0.0,>=24.0.0
|
|
44
|
-
Requires-Dist: pyjwt<3.0.0,>=2.10.1
|
|
45
|
-
Requires-Dist: pytz
|
|
46
|
-
Requires-Dist: requests<3.0.0,>=2.32.4
|
|
47
|
-
Requires-Dist: packaging
|
|
48
|
-
Requires-Dist: charset_normalizer<4,>=2
|
|
49
|
-
Requires-Dist: idna<4,>=3.7
|
|
50
|
-
Requires-Dist: urllib3<2.0.0,>=1.26.5; python_version < "3.10"
|
|
51
|
-
Requires-Dist: certifi>=2024.7.4
|
|
52
|
-
Requires-Dist: typing_extensions<5,>=4.3
|
|
53
|
-
Requires-Dist: filelock<4,>=3.5
|
|
54
|
-
Requires-Dist: sortedcontainers>=2.4.0
|
|
55
|
-
Requires-Dist: platformdirs<5.0.0,>=2.6.0
|
|
56
|
-
Requires-Dist: tomlkit
|
|
57
|
-
Requires-Dist: boto3>=1.24
|
|
58
|
-
Requires-Dist: botocore>=1.24
|
|
59
|
-
Provides-Extra: boto
|
|
60
|
-
Requires-Dist: boto3>=1.24; extra == "boto"
|
|
61
|
-
Requires-Dist: botocore>=1.24; extra == "boto"
|
|
62
|
-
Provides-Extra: development
|
|
63
|
-
Requires-Dist: Cython; extra == "development"
|
|
64
|
-
Requires-Dist: coverage; extra == "development"
|
|
65
|
-
Requires-Dist: mitmproxy>=6.0.0; python_version >= "3.10" and extra == "development"
|
|
66
|
-
Requires-Dist: more-itertools; extra == "development"
|
|
67
|
-
Requires-Dist: numpy<=2.2.4; extra == "development"
|
|
68
|
-
Requires-Dist: pendulum!=2.1.1; extra == "development"
|
|
69
|
-
Requires-Dist: pexpect; extra == "development"
|
|
70
|
-
Requires-Dist: pytest<7.5.0; extra == "development"
|
|
71
|
-
Requires-Dist: pytest-asyncio; extra == "development"
|
|
72
|
-
Requires-Dist: pytest-cov; extra == "development"
|
|
73
|
-
Requires-Dist: pytest-rerunfailures<16.0; extra == "development"
|
|
74
|
-
Requires-Dist: pytest-timeout; extra == "development"
|
|
75
|
-
Requires-Dist: pytest-xdist; extra == "development"
|
|
76
|
-
Requires-Dist: pytzdata; extra == "development"
|
|
77
|
-
Requires-Dist: responses; extra == "development"
|
|
78
|
-
Provides-Extra: pandas
|
|
79
|
-
Requires-Dist: pandas<3.0.0,>=1.0.0; python_version < "3.13" and extra == "pandas"
|
|
80
|
-
Requires-Dist: pandas<3.0.0,>=2.1.2; python_version >= "3.13" and extra == "pandas"
|
|
81
|
-
Requires-Dist: pyarrow>=14.0.1; extra == "pandas"
|
|
82
|
-
Provides-Extra: secure-local-storage
|
|
83
|
-
Requires-Dist: keyring<26.0.0,>=23.1.0; extra == "secure-local-storage"
|
|
84
|
-
Dynamic: license-file
|
|
85
|
-
Dynamic: requires-dist
|
|
86
|
-
|
|
87
1
|
This package includes the Snowflake Connector for Python, which conforms to the Python DB API 2.0 specification:
|
|
88
2
|
https://www.python.org/dev/peps/pep-0249/
|
|
89
3
|
|
|
@@ -93,6 +7,34 @@ https://docs.snowflake.com/
|
|
|
93
7
|
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
|
|
94
8
|
|
|
95
9
|
# Release Notes
|
|
10
|
+
- v4.5.0(May 12,2026)
|
|
11
|
+
- Fixed `write_pandas` temp stage name collisions (SNOW-3481510). The old PRNG could produce identical name sequences in forked processes (e.g. Notebook kernels), causing `CREATE TEMPORARY STAGE` to fail with "Object already exists".
|
|
12
|
+
- Fixed a security bug in Okta SAML authentication where `_is_prefix_equal()` compared `url1`'s port against itself instead of `url2`'s port, allowing an attacker to redirect credentials to a different port on the same hostname. Also fixed the default port fallback to use `int` instead of `str` for correct comparison when one URL omits the port.
|
|
13
|
+
- Fixed `executemany` with `paramstyle="pyformat"` to correctly locate the VALUES clause using a balanced-parentheses parser instead of a greedy regex. This fixes incorrect behaviour with nested function calls such as SQLAlchemy `@compiles VARIANT` patterns (e.g. `PARSE_JSON(%(col)s)`) and subquery-form INSERTs (SNOW-298756).
|
|
14
|
+
- Added ECDSA key support (ES256, ES384, ES512) for key-pair authentication.
|
|
15
|
+
- Added HTTP 307/308 redirect status codes to the retryable set as defense-in-depth, with redirect-aware logging in both sync and async paths.
|
|
16
|
+
- Consolidated keyring token cache to use a single service name with hashed account keys, reducing macOS Keychain password prompts. Legacy entries are auto-migrated on first read.
|
|
17
|
+
- Added support for AWS outbound JWT token attestation for Workload Identity Federation (WIF). This can be enabled by setting the `SNOWFLAKE_ENABLE_AWS_WIF_OUTBOUND_TOKEN` environment variable to `true`. Note: This environment variable will be removed in a future release.
|
|
18
|
+
- Removed dynamic class deserialization from the OCSP response validation cache to prevent arbitrary code execution via crafted cache files (SNOW-2439940). The `SNOWFLAKE_ENABLE_CUSTOM_REVOCATION_ERRORS` environment variable is now a no-op.
|
|
19
|
+
- Updated SPCS token injection to gate on `SNOWFLAKE_RUNNING_INSIDE_SPCS` environment variable, trim whitespace, and remove configurable token path.
|
|
20
|
+
- GCP WIF attestation now uses hostname `metadata.google.internal` instead of the IPv4 link-local address, so it works on IPv6-only GCP VMs.
|
|
21
|
+
- Fixed a bug where `write_pandas()` with `auto_create_table=False` and `overwrite=True` would execute `CREATE TABLE IF NOT EXISTS`, which required unnecessary `OWNERSHIP` privilege on the table. Now only `TRUNCATE TABLE` is executed in this case. Note: users who relied on the table being implicitly created despite `auto_create_table=False` should set `auto_create_table=True` instead.
|
|
22
|
+
- Added validation of the `account` connection parameter so malformed identifiers (for example path-like values or labels outside letters, digits, `_`, and `-`) are rejected with `ProgrammingError` before login (SNOW-1902886).
|
|
23
|
+
- Added support for Azure Workload Identity Federation impersonation, allowing a managed identity to authenticate as a service principal.
|
|
24
|
+
|
|
25
|
+
- v4.4.0(March 25,2026)
|
|
26
|
+
- Bump the lower boundary of cryptography to 46.0.5 due to CVE-2026-26007.
|
|
27
|
+
- Added support for Python 3.14.
|
|
28
|
+
- Removed pyOpenSSL upper bound dependency constraint to allow installation of pyOpenSSL 26.0.0+, which includes a fix for GHSA-vp96-hxj8-p424.
|
|
29
|
+
- Fixed Azure IMDS `Metadata` header to use lowercase `"true"` instead of `"True"`, which caused 400 errors during Azure Workload Identity Federation authentication.
|
|
30
|
+
- Fixed default `crl_download_max_size` to be 20MB instead of 200MB, as the previous value was set too high and could cause out-of-memory issues.
|
|
31
|
+
- Fixed a bug where Azure GET commands would incorrectly set the file status to UPLOADED instead of preserving the DOWNLOADED status during metadata retrieval.
|
|
32
|
+
- Renamed the environment variable for skipping config file permission warnings from `SF_SKIP_WARNING_FOR_READ_PERMISSIONS_ON_CONFIG_FILE` to `SF_SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION`. The old variable is still supported but emits a deprecation warning.
|
|
33
|
+
- Fixed `unsafe_skip_file_permissions_check` flag not being respected when reading `connections.toml`.
|
|
34
|
+
- Fixed JSONDecodeError in result_batch._load() when fetching large result sets
|
|
35
|
+
- Fixed validation ordering for `client_session_keep_alive_heartbeat_frequency`.
|
|
36
|
+
|
|
37
|
+
|
|
96
38
|
- v4.3.0(February 12,2026)
|
|
97
39
|
- Ensured proper list conversion - the converter runs to_snowflake on all list elements.
|
|
98
40
|
- Made the parameter `server_session_keep_alive` in `SnowflakeConnection` skip checking for pending async queries, providing faster connection close times especially when many async queries are executed.
|
|
@@ -100,7 +42,10 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
100
42
|
- Log a warning when using http protocol for OAuth urls.
|
|
101
43
|
- Deprecated support for custom revocation error classes in OCSP response cache deserialization. By default, only `RevocationCheckError` exceptions are deserialized from OCSP cache. Custom exception classes can be temporarily enabled by setting the `SNOWFLAKE_ENABLE_CUSTOM_REVOCATION_ERRORS` environment variable to `true` or `1`, but this support will be removed in a future release.
|
|
102
44
|
- Bumped up vendored `urllib3` to `2.6.3`
|
|
103
|
-
- Added `force_microseconds_precision` to `cursor.fetch_arrow_all` and `cursor.fetch_pandas_all` to avoid PyArrow schema
|
|
45
|
+
- Added `force_microseconds_precision` to `cursor.fetch_arrow_all` and `cursor.fetch_pandas_all` to avoid PyArrow schema inconsistency between batches.
|
|
46
|
+
- Fixed a bug where tilde in path to `private_key_file` specified in the connection was not properly expanded
|
|
47
|
+
- Added `secondary_roles` connection parameter to control secondary role activation at session creation. Supports `ALL` or `NONE` or no value.
|
|
48
|
+
|
|
104
49
|
|
|
105
50
|
- v4.2.0(January 07,2026)
|
|
106
51
|
- Added `SnowflakeCursor.stats` property to expose granular DML statistics (rows inserted, deleted, updated, and duplicates) for operations like CTAS where `rowcount` is insufficient.
|
|
@@ -144,6 +89,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
144
89
|
|
|
145
90
|
- v3.18.0(October 03,2025)
|
|
146
91
|
- Added support for pandas conversion for Day-time and Year-Month Interval types
|
|
92
|
+
* Fixed the return type of iterating over a cursor
|
|
147
93
|
|
|
148
94
|
- v3.17.4(September 22,2025)
|
|
149
95
|
- Added support for intermediate certificates as roots when they are stored in the trust store
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.0
|
|
4
4
|
Summary: Snowflake Connector for Python
|
|
5
5
|
Home-page: https://www.snowflake.com/
|
|
6
6
|
Author: Snowflake, Inc
|
|
@@ -27,6 +27,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
27
27
|
Classifier: Programming Language :: Python :: 3.11
|
|
28
28
|
Classifier: Programming Language :: Python :: 3.12
|
|
29
29
|
Classifier: Programming Language :: Python :: 3.13
|
|
30
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
30
31
|
Classifier: Programming Language :: SQL
|
|
31
32
|
Classifier: Topic :: Database
|
|
32
33
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
@@ -39,8 +40,8 @@ Description-Content-Type: text/markdown
|
|
|
39
40
|
License-File: LICENSE.txt
|
|
40
41
|
License-File: NOTICE
|
|
41
42
|
Requires-Dist: asn1crypto<2.0.0,>0.24.0
|
|
42
|
-
Requires-Dist: cryptography>=
|
|
43
|
-
Requires-Dist: pyOpenSSL
|
|
43
|
+
Requires-Dist: cryptography>=46.0.5
|
|
44
|
+
Requires-Dist: pyOpenSSL>=24.0.0
|
|
44
45
|
Requires-Dist: pyjwt<3.0.0,>=2.10.1
|
|
45
46
|
Requires-Dist: pytz
|
|
46
47
|
Requires-Dist: requests<3.0.0,>=2.32.4
|
|
@@ -62,9 +63,9 @@ Requires-Dist: botocore>=1.24; extra == "boto"
|
|
|
62
63
|
Provides-Extra: development
|
|
63
64
|
Requires-Dist: Cython; extra == "development"
|
|
64
65
|
Requires-Dist: coverage; extra == "development"
|
|
65
|
-
Requires-Dist: mitmproxy>=
|
|
66
|
+
Requires-Dist: mitmproxy>=12.0.0; python_version >= "3.12" and extra == "development"
|
|
66
67
|
Requires-Dist: more-itertools; extra == "development"
|
|
67
|
-
Requires-Dist: numpy<=2.
|
|
68
|
+
Requires-Dist: numpy<=2.4.3; extra == "development"
|
|
68
69
|
Requires-Dist: pendulum!=2.1.1; extra == "development"
|
|
69
70
|
Requires-Dist: pexpect; extra == "development"
|
|
70
71
|
Requires-Dist: pytest<7.5.0; extra == "development"
|
|
@@ -93,6 +94,34 @@ https://docs.snowflake.com/
|
|
|
93
94
|
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
|
|
94
95
|
|
|
95
96
|
# Release Notes
|
|
97
|
+
- v4.5.0(May 12,2026)
|
|
98
|
+
- Fixed `write_pandas` temp stage name collisions (SNOW-3481510). The old PRNG could produce identical name sequences in forked processes (e.g. Notebook kernels), causing `CREATE TEMPORARY STAGE` to fail with "Object already exists".
|
|
99
|
+
- Fixed a security bug in Okta SAML authentication where `_is_prefix_equal()` compared `url1`'s port against itself instead of `url2`'s port, allowing an attacker to redirect credentials to a different port on the same hostname. Also fixed the default port fallback to use `int` instead of `str` for correct comparison when one URL omits the port.
|
|
100
|
+
- Fixed `executemany` with `paramstyle="pyformat"` to correctly locate the VALUES clause using a balanced-parentheses parser instead of a greedy regex. This fixes incorrect behaviour with nested function calls such as SQLAlchemy `@compiles VARIANT` patterns (e.g. `PARSE_JSON(%(col)s)`) and subquery-form INSERTs (SNOW-298756).
|
|
101
|
+
- Added ECDSA key support (ES256, ES384, ES512) for key-pair authentication.
|
|
102
|
+
- Added HTTP 307/308 redirect status codes to the retryable set as defense-in-depth, with redirect-aware logging in both sync and async paths.
|
|
103
|
+
- Consolidated keyring token cache to use a single service name with hashed account keys, reducing macOS Keychain password prompts. Legacy entries are auto-migrated on first read.
|
|
104
|
+
- Added support for AWS outbound JWT token attestation for Workload Identity Federation (WIF). This can be enabled by setting the `SNOWFLAKE_ENABLE_AWS_WIF_OUTBOUND_TOKEN` environment variable to `true`. Note: This environment variable will be removed in a future release.
|
|
105
|
+
- Removed dynamic class deserialization from the OCSP response validation cache to prevent arbitrary code execution via crafted cache files (SNOW-2439940). The `SNOWFLAKE_ENABLE_CUSTOM_REVOCATION_ERRORS` environment variable is now a no-op.
|
|
106
|
+
- Updated SPCS token injection to gate on `SNOWFLAKE_RUNNING_INSIDE_SPCS` environment variable, trim whitespace, and remove configurable token path.
|
|
107
|
+
- GCP WIF attestation now uses hostname `metadata.google.internal` instead of the IPv4 link-local address, so it works on IPv6-only GCP VMs.
|
|
108
|
+
- Fixed a bug where `write_pandas()` with `auto_create_table=False` and `overwrite=True` would execute `CREATE TABLE IF NOT EXISTS`, which required unnecessary `OWNERSHIP` privilege on the table. Now only `TRUNCATE TABLE` is executed in this case. Note: users who relied on the table being implicitly created despite `auto_create_table=False` should set `auto_create_table=True` instead.
|
|
109
|
+
- Added validation of the `account` connection parameter so malformed identifiers (for example path-like values or labels outside letters, digits, `_`, and `-`) are rejected with `ProgrammingError` before login (SNOW-1902886).
|
|
110
|
+
- Added support for Azure Workload Identity Federation impersonation, allowing a managed identity to authenticate as a service principal.
|
|
111
|
+
|
|
112
|
+
- v4.4.0(March 25,2026)
|
|
113
|
+
- Bump the lower boundary of cryptography to 46.0.5 due to CVE-2026-26007.
|
|
114
|
+
- Added support for Python 3.14.
|
|
115
|
+
- Removed pyOpenSSL upper bound dependency constraint to allow installation of pyOpenSSL 26.0.0+, which includes a fix for GHSA-vp96-hxj8-p424.
|
|
116
|
+
- Fixed Azure IMDS `Metadata` header to use lowercase `"true"` instead of `"True"`, which caused 400 errors during Azure Workload Identity Federation authentication.
|
|
117
|
+
- Fixed default `crl_download_max_size` to be 20MB instead of 200MB, as the previous value was set too high and could cause out-of-memory issues.
|
|
118
|
+
- Fixed a bug where Azure GET commands would incorrectly set the file status to UPLOADED instead of preserving the DOWNLOADED status during metadata retrieval.
|
|
119
|
+
- Renamed the environment variable for skipping config file permission warnings from `SF_SKIP_WARNING_FOR_READ_PERMISSIONS_ON_CONFIG_FILE` to `SF_SKIP_TOKEN_FILE_PERMISSIONS_VERIFICATION`. The old variable is still supported but emits a deprecation warning.
|
|
120
|
+
- Fixed `unsafe_skip_file_permissions_check` flag not being respected when reading `connections.toml`.
|
|
121
|
+
- Fixed JSONDecodeError in result_batch._load() when fetching large result sets
|
|
122
|
+
- Fixed validation ordering for `client_session_keep_alive_heartbeat_frequency`.
|
|
123
|
+
|
|
124
|
+
|
|
96
125
|
- v4.3.0(February 12,2026)
|
|
97
126
|
- Ensured proper list conversion - the converter runs to_snowflake on all list elements.
|
|
98
127
|
- Made the parameter `server_session_keep_alive` in `SnowflakeConnection` skip checking for pending async queries, providing faster connection close times especially when many async queries are executed.
|
|
@@ -100,7 +129,10 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
100
129
|
- Log a warning when using http protocol for OAuth urls.
|
|
101
130
|
- Deprecated support for custom revocation error classes in OCSP response cache deserialization. By default, only `RevocationCheckError` exceptions are deserialized from OCSP cache. Custom exception classes can be temporarily enabled by setting the `SNOWFLAKE_ENABLE_CUSTOM_REVOCATION_ERRORS` environment variable to `true` or `1`, but this support will be removed in a future release.
|
|
102
131
|
- Bumped up vendored `urllib3` to `2.6.3`
|
|
103
|
-
- Added `force_microseconds_precision` to `cursor.fetch_arrow_all` and `cursor.fetch_pandas_all` to avoid PyArrow schema
|
|
132
|
+
- Added `force_microseconds_precision` to `cursor.fetch_arrow_all` and `cursor.fetch_pandas_all` to avoid PyArrow schema inconsistency between batches.
|
|
133
|
+
- Fixed a bug where tilde in path to `private_key_file` specified in the connection was not properly expanded
|
|
134
|
+
- Added `secondary_roles` connection parameter to control secondary role activation at session creation. Supports `ALL` or `NONE` or no value.
|
|
135
|
+
|
|
104
136
|
|
|
105
137
|
- v4.2.0(January 07,2026)
|
|
106
138
|
- Added `SnowflakeCursor.stats` property to expose granular DML statistics (rows inserted, deleted, updated, and duplicates) for operations like CTAS where `rowcount` is insufficient.
|
|
@@ -144,6 +176,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
144
176
|
|
|
145
177
|
- v3.18.0(October 03,2025)
|
|
146
178
|
- Added support for pandas conversion for Day-time and Year-Month Interval types
|
|
179
|
+
* Fixed the return type of iterating over a cursor
|
|
147
180
|
|
|
148
181
|
- v3.17.4(September 22,2025)
|
|
149
182
|
- Added support for intermediate certificates as roots when they are stored in the trust store
|
|
@@ -25,6 +25,7 @@ classifiers =
|
|
|
25
25
|
Programming Language :: Python :: 3.11
|
|
26
26
|
Programming Language :: Python :: 3.12
|
|
27
27
|
Programming Language :: Python :: 3.13
|
|
28
|
+
Programming Language :: Python :: 3.14
|
|
28
29
|
Programming Language :: SQL
|
|
29
30
|
Topic :: Database
|
|
30
31
|
Topic :: Scientific/Engineering :: Information Analysis
|
|
@@ -44,8 +45,8 @@ python_requires = >=3.9
|
|
|
44
45
|
packages = find_namespace:
|
|
45
46
|
install_requires =
|
|
46
47
|
asn1crypto>0.24.0,<2.0.0
|
|
47
|
-
cryptography>=
|
|
48
|
-
pyOpenSSL>=24.0.0
|
|
48
|
+
cryptography>=46.0.5
|
|
49
|
+
pyOpenSSL>=24.0.0
|
|
49
50
|
pyjwt>=2.10.1,<3.0.0
|
|
50
51
|
pytz
|
|
51
52
|
requests>=2.32.4,<3.0.0
|
|
@@ -89,9 +90,9 @@ boto =
|
|
|
89
90
|
development =
|
|
90
91
|
Cython
|
|
91
92
|
coverage
|
|
92
|
-
mitmproxy>=
|
|
93
|
+
mitmproxy>=12.0.0; python_version >= '3.12'
|
|
93
94
|
more-itertools
|
|
94
|
-
numpy<=2.
|
|
95
|
+
numpy<=2.4.3
|
|
95
96
|
pendulum!=2.1.1
|
|
96
97
|
pexpect
|
|
97
98
|
pytest<7.5.0
|
|
@@ -10,8 +10,7 @@ import threading
|
|
|
10
10
|
import time
|
|
11
11
|
from enum import Enum
|
|
12
12
|
from inspect import stack
|
|
13
|
-
from
|
|
14
|
-
from random import choice
|
|
13
|
+
from secrets import choice
|
|
15
14
|
from threading import Timer
|
|
16
15
|
from uuid import UUID
|
|
17
16
|
|
|
@@ -110,30 +109,29 @@ def get_application_path() -> str:
|
|
|
110
109
|
return "unknown"
|
|
111
110
|
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
_SPCS_ENV_VAR = "SNOWFLAKE_RUNNING_INSIDE_SPCS"
|
|
113
|
+
_SPCS_TOKEN_PATH = "/snowflake/session/spcs_token"
|
|
115
114
|
|
|
116
115
|
|
|
117
116
|
def get_spcs_token() -> str | None:
|
|
118
|
-
"""Return the SPCS token
|
|
117
|
+
"""Return the SPCS token if running inside an SPCS container, or None.
|
|
119
118
|
|
|
120
|
-
The
|
|
121
|
-
|
|
119
|
+
The token is only read when the SNOWFLAKE_RUNNING_INSIDE_SPCS environment
|
|
120
|
+
variable is set. The file at /snowflake/session/spcs_token is read as
|
|
121
|
+
UTF-8 text and leading/trailing whitespace is stripped.
|
|
122
122
|
|
|
123
|
-
Any
|
|
124
|
-
will not cause authentication to fail.
|
|
123
|
+
Any read failure is logged as a warning and None is returned.
|
|
125
124
|
"""
|
|
126
|
-
|
|
125
|
+
if not os.environ.get(_SPCS_ENV_VAR):
|
|
126
|
+
return None
|
|
127
127
|
try:
|
|
128
|
-
|
|
129
|
-
return None
|
|
130
|
-
with open(path, encoding="utf-8") as f:
|
|
128
|
+
with open(_SPCS_TOKEN_PATH, encoding="utf-8") as f:
|
|
131
129
|
token = f.read().strip()
|
|
132
130
|
if not token:
|
|
133
131
|
return None
|
|
134
132
|
return token
|
|
135
|
-
except Exception as exc:
|
|
136
|
-
logger.
|
|
133
|
+
except Exception as exc:
|
|
134
|
+
logger.warning("Failed to read SPCS token from %s: %s", _SPCS_TOKEN_PATH, exc)
|
|
137
135
|
return None
|
|
138
136
|
|
|
139
137
|
|
|
@@ -185,29 +183,34 @@ class _CoreLoader:
|
|
|
185
183
|
else:
|
|
186
184
|
return "unknown"
|
|
187
185
|
|
|
186
|
+
@staticmethod
|
|
187
|
+
def _libc_ver() -> tuple[str, str]:
|
|
188
|
+
"""Return (libc_name, libc_version) from the platform."""
|
|
189
|
+
return platform.libc_ver()
|
|
190
|
+
|
|
188
191
|
@staticmethod
|
|
189
192
|
def _detect_libc() -> str:
|
|
190
193
|
"""Detect libc type on Linux (glibc vs musl)."""
|
|
191
|
-
|
|
192
|
-
if
|
|
193
|
-
return "
|
|
194
|
-
|
|
195
|
-
# Check for musl by looking at the libc library
|
|
196
|
-
try:
|
|
197
|
-
import subprocess
|
|
194
|
+
lib, _ = _CoreLoader._libc_ver()
|
|
195
|
+
if lib == "glibc":
|
|
196
|
+
return "glibc"
|
|
197
|
+
return "musl"
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
pass
|
|
199
|
+
@staticmethod
|
|
200
|
+
def get_libc_version() -> str | None:
|
|
201
|
+
"""Return libc version from :func:`platform.libc_ver`, or None if unknown."""
|
|
202
|
+
_, version = _CoreLoader._libc_ver()
|
|
203
|
+
if not version:
|
|
204
|
+
return None
|
|
205
|
+
stripped = version.strip()
|
|
206
|
+
return stripped or None
|
|
208
207
|
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
@staticmethod
|
|
209
|
+
def get_libc_family() -> str | None:
|
|
210
|
+
"""Return libc family for Linux (glibc or musl), otherwise None."""
|
|
211
|
+
if _CoreLoader._detect_os() != "linux":
|
|
212
|
+
return None
|
|
213
|
+
return _CoreLoader._detect_libc()
|
|
211
214
|
|
|
212
215
|
@staticmethod
|
|
213
216
|
def _get_platform_subdir() -> str:
|
|
@@ -347,6 +350,8 @@ def build_minicore_usage_for_session() -> dict[str, str | None]:
|
|
|
347
350
|
"ISA": ISA,
|
|
348
351
|
"CORE_VERSION": _core_loader.get_core_version(),
|
|
349
352
|
"CORE_FILE_NAME": _core_loader.get_file_name(),
|
|
353
|
+
"LIBC_FAMILY": _CoreLoader.get_libc_family(),
|
|
354
|
+
"LIBC_VERSION": _CoreLoader.get_libc_version(),
|
|
350
355
|
}
|
|
351
356
|
|
|
352
357
|
|
|
@@ -451,6 +451,7 @@ class SnowflakeConnection(SnowflakeConnectionSync):
|
|
|
451
451
|
not in (
|
|
452
452
|
AttestationProvider.GCP,
|
|
453
453
|
AttestationProvider.AWS,
|
|
454
|
+
AttestationProvider.AZURE,
|
|
454
455
|
)
|
|
455
456
|
):
|
|
456
457
|
Error.errorhandler_wrapper(
|
|
@@ -458,7 +459,7 @@ class SnowflakeConnection(SnowflakeConnectionSync):
|
|
|
458
459
|
None,
|
|
459
460
|
ProgrammingError,
|
|
460
461
|
{
|
|
461
|
-
"msg": "workload_identity_impersonation_path is currently only supported for GCP and
|
|
462
|
+
"msg": "workload_identity_impersonation_path is currently only supported for GCP, AWS, and AZURE.",
|
|
462
463
|
"errno": ER_INVALID_WIF_SETTINGS,
|
|
463
464
|
},
|
|
464
465
|
)
|
|
@@ -57,6 +57,7 @@ from snowflake.connector.errors import BindUploadError, DatabaseError
|
|
|
57
57
|
from snowflake.connector.file_transfer_agent import SnowflakeProgressPercentage
|
|
58
58
|
from snowflake.connector.telemetry import TelemetryData, TelemetryField
|
|
59
59
|
from snowflake.connector.time_util import get_time_millis
|
|
60
|
+
from snowflake.connector.util_text import extract_values_clause
|
|
60
61
|
|
|
61
62
|
from .._utils import REQUEST_ID_STATEMENT_PARAM_NAME, is_uuid4
|
|
62
63
|
|
|
@@ -765,8 +766,8 @@ class SnowflakeCursorBase(SnowflakeCursorBaseSync, abc.ABC, typing.Generic[Fetch
|
|
|
765
766
|
# accumulate results to mock the result from a single insert statement as formatted below
|
|
766
767
|
logger.debug("rewriting INSERT query")
|
|
767
768
|
command_wo_comments = re.sub(self.COMMENT_SQL_RE, "", command)
|
|
768
|
-
|
|
769
|
-
if
|
|
769
|
+
fmt = extract_values_clause(command_wo_comments)
|
|
770
|
+
if fmt is None:
|
|
770
771
|
Error.errorhandler_wrapper(
|
|
771
772
|
self.connection,
|
|
772
773
|
self,
|
|
@@ -776,8 +777,6 @@ class SnowflakeCursorBase(SnowflakeCursorBaseSync, abc.ABC, typing.Generic[Fetch
|
|
|
776
777
|
"errno": ER_FAILED_TO_REWRITE_MULTI_ROW_INSERT,
|
|
777
778
|
},
|
|
778
779
|
)
|
|
779
|
-
|
|
780
|
-
fmt = m.group(1)
|
|
781
780
|
values = []
|
|
782
781
|
for param in seqparams:
|
|
783
782
|
logger.debug(f"parameter: {param}")
|
|
@@ -11,7 +11,16 @@ from typing import TYPE_CHECKING, Any, AsyncGenerator
|
|
|
11
11
|
|
|
12
12
|
import OpenSSL.SSL
|
|
13
13
|
|
|
14
|
-
from ..compat import
|
|
14
|
+
from ..compat import (
|
|
15
|
+
FORBIDDEN,
|
|
16
|
+
OK,
|
|
17
|
+
PERMANENT_REDIRECT,
|
|
18
|
+
TEMPORARY_REDIRECT,
|
|
19
|
+
UNAUTHORIZED,
|
|
20
|
+
urlencode,
|
|
21
|
+
urlparse,
|
|
22
|
+
urlsplit,
|
|
23
|
+
)
|
|
15
24
|
from ..constants import (
|
|
16
25
|
_CONNECTIVITY_ERR_MSG,
|
|
17
26
|
HTTP_HEADER_ACCEPT,
|
|
@@ -741,6 +750,18 @@ class SnowflakeRestful(SnowflakeRestfulSync):
|
|
|
741
750
|
data=input_data,
|
|
742
751
|
timeout=aiohttp.ClientTimeout(socket_timeout),
|
|
743
752
|
)
|
|
753
|
+
|
|
754
|
+
# Log when the HTTP library auto-followed a redirect chain before
|
|
755
|
+
# delivering this response (history is populated by aiohttp).
|
|
756
|
+
if raw_ret.history:
|
|
757
|
+
for hist_resp in raw_ret.history:
|
|
758
|
+
if hist_resp.status in (TEMPORARY_REDIRECT, PERMANENT_REDIRECT):
|
|
759
|
+
logger.debug(
|
|
760
|
+
"Request was redirected: HTTP %d to %s",
|
|
761
|
+
hist_resp.status,
|
|
762
|
+
hist_resp.headers.get("Location", "unknown"),
|
|
763
|
+
)
|
|
764
|
+
|
|
744
765
|
try:
|
|
745
766
|
if raw_ret.status == OK:
|
|
746
767
|
logger.debug("SUCCESS")
|
|
@@ -841,6 +862,23 @@ class SnowflakeRestful(SnowflakeRestfulSync):
|
|
|
841
862
|
exc_info=True,
|
|
842
863
|
)
|
|
843
864
|
raise RetryRequest(err)
|
|
865
|
+
except aiohttp.TooManyRedirects as err:
|
|
866
|
+
# aiohttp raises TooManyRedirects when max_redirects is exceeded.
|
|
867
|
+
# Unlike .NET's HttpClient (which returns the last 307/308 response),
|
|
868
|
+
# aiohttp throws here — so is_retryable_http_code(307/308) never fires.
|
|
869
|
+
# Catch explicitly and apply the same retry/login logic.
|
|
870
|
+
if is_login_request(full_url):
|
|
871
|
+
raise OperationalError(
|
|
872
|
+
msg="Login request is retryable. Will be handled by authenticator",
|
|
873
|
+
errno=ER_RETRYABLE_CODE,
|
|
874
|
+
)
|
|
875
|
+
else:
|
|
876
|
+
logger.debug(
|
|
877
|
+
"Too many redirects. Retrying... Ignore the following "
|
|
878
|
+
f"error stack: {err}",
|
|
879
|
+
exc_info=True,
|
|
880
|
+
)
|
|
881
|
+
raise RetryRequest(err)
|
|
844
882
|
except Exception as err:
|
|
845
883
|
if isinstance(err, (Error, RetryRequest, ReauthenticationRequest)):
|
|
846
884
|
raise err
|
|
@@ -443,7 +443,7 @@ async def write_pandas(
|
|
|
443
443
|
quote_identifiers,
|
|
444
444
|
)
|
|
445
445
|
|
|
446
|
-
if auto_create_table
|
|
446
|
+
if auto_create_table:
|
|
447
447
|
iceberg = "ICEBERG " if iceberg_config else ""
|
|
448
448
|
iceberg_config_statement = _iceberg_config_statement_helper(
|
|
449
449
|
iceberg_config or {}
|