snowflake-connector-python 4.7.0__tar.gz → 4.7.1__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.7.0 → snowflake_connector_python-4.7.1}/DESCRIPTION.md +4 -2
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/PKG-INFO +10 -7
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/setup.cfg +5 -4
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/ssl_wrap_socket.py +124 -3
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/version.py +1 -1
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/PKG-INFO +10 -7
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/requires.txt +9 -4
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/CONTRIBUTING.md +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/LICENSE.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/MANIFEST.in +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/NOTICE +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/README.md +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/SECURITY.md +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/pyproject.toml +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/setup.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/_connection_identifier_shape.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/_query_context_cache.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/_sql_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/_utils.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/README.md +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_azure_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_bind_upload_agent.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_cursor.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_description.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_direct_file_operation_utils.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_file_transfer_agent.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_gcs_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_network.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_ocsp_asn1crypto.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_ocsp_snowflake.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_pandas_tools.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_result_batch.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_result_set.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_s3_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_session_manager.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_telemetry.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_time_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/_wif_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_auth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_by_plugin.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_default.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_idtoken.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_keypair.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_no_auth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_oauth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_oauth_code.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_oauth_credentials.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_okta.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_pat.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_usrpwdmfa.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_webbrowser.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/aio/auth/_workload_identity.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/arrow_context.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/_auth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/_http_server.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/_oauth_base.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/by_plugin.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/default.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/idtoken.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/keypair.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/no_auth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/oauth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/oauth_code.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/oauth_credentials.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/okta.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/pat.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/webbrowser.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/auth/workload_identity.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/azure_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/backoff_policies.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/bind_upload_agent.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/cache.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/compat.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/config_manager.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/connection_diagnostic.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/constants.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/converter.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/converter_issue23517.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/converter_null.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/converter_snowsql.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/crl.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/crl_cache.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/cursor.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/dbapi.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/description.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/direct_file_operation_utils.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/encryption_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/errorcode.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/errors.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/externals_utils/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/externals_utils/externals_setup.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/feature.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/file_compression_type.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/file_lock.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/file_transfer_agent.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/file_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/gcs_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/gzip_decoder.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/interval_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/local_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/log_configuration.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/logging_utils/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/logging_utils/filters.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/minicore/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/minicore/linux_x86_64_glibc/libsf_mini_core.so +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/network.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/ocsp_snowflake.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/options.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/os_details.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/pandas_tools.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/platform_detection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/proxy.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/py.typed +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/result_batch.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/result_set.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/s3_storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/secret_detector.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/session_manager.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/sf_dirs.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/sfbinaryformat.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/sfdatetime.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/snow_logging.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/sqlstate.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/ssd_internal_keys.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/storage_client.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/telemetry.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/telemetry_oob.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/test_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/time_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/token_cache.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/tool/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/tool/dump_certs.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/tool/probe_connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/url_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/util_text.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/api.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/auth.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/certs.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/compat.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/help.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/models.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/packages.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/structures.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/requests/utils.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/_base_connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/_request_methods.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/emscripten_fetch_worker.js +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/fetch.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/request.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/response.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/http2/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/http2/connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/http2/probe.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/py.typed +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/wif_util.py +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
- {snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
|
@@ -7,14 +7,16 @@ https://docs.snowflake.com/
|
|
|
7
7
|
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
|
|
8
8
|
|
|
9
9
|
# Release Notes
|
|
10
|
-
- v4.7.
|
|
10
|
+
- v4.7.1(Jul 15,2026)
|
|
11
|
+
- Added support for Python 3.14t (free-threaded).
|
|
12
|
+
- **Note:** Python 3.14t CI testing excludes `win_arm64` (no `cryptography` wheels available) and `mitmproxy` proxy tests on all platforms (transitive dependencies `aioquic`/`pylsqpack` lack free-threaded-compatible wheels).
|
|
13
|
+
- Improved verification of TLS connections (SNOW-3675579).
|
|
11
14
|
- Fixed `python-connector.log` not rotating on Windows, and every record being logged twice, when easy logging is enabled via `config.toml` (SNOW-3680325).
|
|
12
15
|
- **Note:** As part of this fix, easy logging no longer calls `logging.basicConfig()` and therefore no longer configures the root logger. `python-connector.log` now captures only the `snowflake.connector`, `botocore`, and `boto3`.
|
|
13
16
|
- Improved URL validation reliability by replacing the hand-rolled regex in `is_valid_url()` with `urllib.parse.urlparse` (SNOW-3392651).
|
|
14
17
|
- Fixed OAuth infinite loop when tokens expire by ensuring `reauthenticate()` calls `_request_tokens()` directly instead of looping through `prepare()`. Token cache is now read exactly once per connection, and `_store_tokens()` preserves macOS Keychain ACL by never calling `remove()`. The async OAuth `reauthenticate()` now runs the synchronous OAuth flow on a worker thread instead of blocking the event loop.
|
|
15
18
|
- Fixed OAuth scope handling for Snowflake custom OAuth: when refresh tokens are enabled, the connector no longer appends the OIDC `offline_access` scope for token endpoints on `*.snowflakecomputing.com` or `*.snowflakecomputing.cn`, which caused `invalid_scope` errors. Snowflake custom OAuth expects `refresh_token` in scope instead. External IdP behavior is unchanged.
|
|
16
19
|
- Fixed input validation for `scale` metadata in Arrow result set processing for `TIME`, `TIMESTAMP_NTZ`, `TIMESTAMP_LTZ`, and `TIMESTAMP_TZ` columns (SNOW-3388299).
|
|
17
|
-
- Removed pandas upper bound dependency constraint on the `[pandas]` extra to allow installation of pandas 3.0.0 and later.
|
|
18
20
|
- Fixed S3 storage client to correctly handle 307/308 (method-preserving) and 301/302 (GET/HEAD only) redirects by disabling automatic redirect following and re-signing each request with AWS SigV4 credentials for the redirect target. The region is updated from the `x-amz-bucket-region` response header on each redirect. Redirects are capped at 5 hops.
|
|
19
21
|
- Added native AKS (Azure Kubernetes Service) workload identity support. When running on AKS with workload identity configured, the connector automatically uses `WorkloadIdentityCredential` to authenticate via the injected service account credentials. OIDC backward compatibility is also supported.
|
|
20
22
|
- Added the `workload_identity_aws_use_outbound_token` connection option (default `false`) to opt into AWS WIF JWT attestation via STS `GetWebIdentityToken` instead of the default SigV4 `GetCallerIdentity` method.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.1
|
|
4
4
|
Summary: Snowflake Connector for Python
|
|
5
5
|
Home-page: https://www.snowflake.com/
|
|
6
6
|
Author: Snowflake, Inc
|
|
@@ -64,7 +64,7 @@ Provides-Extra: development
|
|
|
64
64
|
Requires-Dist: Cython; extra == "development"
|
|
65
65
|
Requires-Dist: azure-identity>=1.16; extra == "development"
|
|
66
66
|
Requires-Dist: coverage; extra == "development"
|
|
67
|
-
Requires-Dist: mitmproxy>=12.0.0; python_version >= "3.12" and extra == "development"
|
|
67
|
+
Requires-Dist: mitmproxy>=12.0.0; (python_version >= "3.12" and python_version < "3.14") and extra == "development"
|
|
68
68
|
Requires-Dist: more-itertools; extra == "development"
|
|
69
69
|
Requires-Dist: numpy<=2.4.3; extra == "development"
|
|
70
70
|
Requires-Dist: pendulum!=2.1.1; extra == "development"
|
|
@@ -78,9 +78,10 @@ Requires-Dist: pytest-xdist; extra == "development"
|
|
|
78
78
|
Requires-Dist: pytzdata; extra == "development"
|
|
79
79
|
Requires-Dist: responses; extra == "development"
|
|
80
80
|
Provides-Extra: pandas
|
|
81
|
-
Requires-Dist: pandas
|
|
82
|
-
Requires-Dist: pandas
|
|
83
|
-
Requires-Dist: pyarrow
|
|
81
|
+
Requires-Dist: pandas<3.0.0,>=1.0.0; python_version < "3.13" and extra == "pandas"
|
|
82
|
+
Requires-Dist: pandas<3.0.0,>=2.1.2; python_version >= "3.13" and extra == "pandas"
|
|
83
|
+
Requires-Dist: pyarrow<24,>=14.0.1; python_version >= "3.14" and extra == "pandas"
|
|
84
|
+
Requires-Dist: pyarrow>=14.0.1; python_version < "3.14" and extra == "pandas"
|
|
84
85
|
Provides-Extra: secure-local-storage
|
|
85
86
|
Requires-Dist: keyring<26.0.0,>=23.1.0; extra == "secure-local-storage"
|
|
86
87
|
Dynamic: license-file
|
|
@@ -95,14 +96,16 @@ https://docs.snowflake.com/
|
|
|
95
96
|
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
|
|
96
97
|
|
|
97
98
|
# Release Notes
|
|
98
|
-
- v4.7.
|
|
99
|
+
- v4.7.1(Jul 15,2026)
|
|
100
|
+
- Added support for Python 3.14t (free-threaded).
|
|
101
|
+
- **Note:** Python 3.14t CI testing excludes `win_arm64` (no `cryptography` wheels available) and `mitmproxy` proxy tests on all platforms (transitive dependencies `aioquic`/`pylsqpack` lack free-threaded-compatible wheels).
|
|
102
|
+
- Improved verification of TLS connections (SNOW-3675579).
|
|
99
103
|
- Fixed `python-connector.log` not rotating on Windows, and every record being logged twice, when easy logging is enabled via `config.toml` (SNOW-3680325).
|
|
100
104
|
- **Note:** As part of this fix, easy logging no longer calls `logging.basicConfig()` and therefore no longer configures the root logger. `python-connector.log` now captures only the `snowflake.connector`, `botocore`, and `boto3`.
|
|
101
105
|
- Improved URL validation reliability by replacing the hand-rolled regex in `is_valid_url()` with `urllib.parse.urlparse` (SNOW-3392651).
|
|
102
106
|
- Fixed OAuth infinite loop when tokens expire by ensuring `reauthenticate()` calls `_request_tokens()` directly instead of looping through `prepare()`. Token cache is now read exactly once per connection, and `_store_tokens()` preserves macOS Keychain ACL by never calling `remove()`. The async OAuth `reauthenticate()` now runs the synchronous OAuth flow on a worker thread instead of blocking the event loop.
|
|
103
107
|
- Fixed OAuth scope handling for Snowflake custom OAuth: when refresh tokens are enabled, the connector no longer appends the OIDC `offline_access` scope for token endpoints on `*.snowflakecomputing.com` or `*.snowflakecomputing.cn`, which caused `invalid_scope` errors. Snowflake custom OAuth expects `refresh_token` in scope instead. External IdP behavior is unchanged.
|
|
104
108
|
- Fixed input validation for `scale` metadata in Arrow result set processing for `TIME`, `TIMESTAMP_NTZ`, `TIMESTAMP_LTZ`, and `TIMESTAMP_TZ` columns (SNOW-3388299).
|
|
105
|
-
- Removed pandas upper bound dependency constraint on the `[pandas]` extra to allow installation of pandas 3.0.0 and later.
|
|
106
109
|
- Fixed S3 storage client to correctly handle 307/308 (method-preserving) and 301/302 (GET/HEAD only) redirects by disabling automatic redirect following and re-signing each request with AWS SigV4 credentials for the redirect target. The region is updated from the `x-amz-bucket-region` response header on each redirect. Redirects are capped at 5 hops.
|
|
107
110
|
- Added native AKS (Azure Kubernetes Service) workload identity support. When running on AKS with workload identity configured, the connector automatically uses `WorkloadIdentityCredential` to authenticate via the injected service account credentials. OIDC backward compatibility is also supported.
|
|
108
111
|
- Added the `workload_identity_aws_use_outbound_token` connection option (default `false`) to opt into AWS WIF JWT attestation via STS `GetWebIdentityToken` instead of the default SigV4 `GetCallerIdentity` method.
|
|
@@ -91,7 +91,7 @@ development =
|
|
|
91
91
|
Cython
|
|
92
92
|
azure-identity>=1.16
|
|
93
93
|
coverage
|
|
94
|
-
mitmproxy>=12.0.0; python_version >= '3.12'
|
|
94
|
+
mitmproxy>=12.0.0; python_version >= '3.12' and python_version < '3.14'
|
|
95
95
|
more-itertools
|
|
96
96
|
numpy<=2.4.3
|
|
97
97
|
pendulum!=2.1.1
|
|
@@ -105,9 +105,10 @@ development =
|
|
|
105
105
|
pytzdata
|
|
106
106
|
responses
|
|
107
107
|
pandas =
|
|
108
|
-
pandas>=1.0.0; python_version < '3.13'
|
|
109
|
-
pandas>=2.1.2; python_version >= '3.13'
|
|
110
|
-
pyarrow>=14.0.1
|
|
108
|
+
pandas>=1.0.0,<3.0.0; python_version < '3.13'
|
|
109
|
+
pandas>=2.1.2,<3.0.0; python_version >= '3.13'
|
|
110
|
+
pyarrow>=14.0.1,<24; python_version >= '3.14'
|
|
111
|
+
pyarrow>=14.0.1; python_version < '3.14'
|
|
111
112
|
secure-local-storage =
|
|
112
113
|
keyring>=23.1.0,<26.0.0
|
|
113
114
|
|
|
@@ -29,6 +29,7 @@ from .session_manager import SessionManager, SessionManagerFactory
|
|
|
29
29
|
from .vendored.urllib3 import connection as connection_
|
|
30
30
|
from .vendored.urllib3.contrib.pyopenssl import PyOpenSSLContext, WrappedSocket
|
|
31
31
|
from .vendored.urllib3.util import ssl_ as ssl_
|
|
32
|
+
from .vendored.urllib3.util.ssl_match_hostname import CertificateError, match_hostname
|
|
32
33
|
|
|
33
34
|
if TYPE_CHECKING:
|
|
34
35
|
from cryptography import x509
|
|
@@ -85,13 +86,79 @@ def _ensure_partial_chain_on_context(ctx: PyOpenSSLContext, cafile: str | None)
|
|
|
85
86
|
pass
|
|
86
87
|
|
|
87
88
|
|
|
88
|
-
def
|
|
89
|
-
"""
|
|
89
|
+
def _nonnegative_options(value: int) -> int:
|
|
90
|
+
"""Return *value* as the non-negative bitmask pyOpenSSL/cryptography expects.
|
|
91
|
+
|
|
92
|
+
``ssl.SSLContext.options`` is exposed through a signed, platform-width C
|
|
93
|
+
``long``. On Windows that type is 32 bits, so the common default mask (which
|
|
94
|
+
has bit 31 set, e.g. ``0x82520050``) is returned as a *negative* Python int.
|
|
95
|
+
cryptography's binding marshals the value into an unsigned parameter and
|
|
96
|
+
rejects negatives with ``OverflowError: can't convert negative number to
|
|
97
|
+
unsigned`` -- which previously aborted every Windows TLS handshake the
|
|
98
|
+
moment we carried these options onto the substituted ``PyOpenSSLContext``.
|
|
99
|
+
Recover the intended unsigned 32-bit mask; values that are already
|
|
100
|
+
non-negative (every other platform) pass through unchanged.
|
|
101
|
+
"""
|
|
102
|
+
return value & 0xFFFFFFFF if value < 0 else value
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _apply_stdlib_hardening(dst: PyOpenSSLContext, src: ssl.SSLContext | None) -> None:
|
|
106
|
+
"""Carry TLS hardening from a stdlib ``SSLContext`` onto ``dst``.
|
|
107
|
+
|
|
108
|
+
The connector replaces the stdlib ``ssl.SSLContext`` that urllib3 builds
|
|
109
|
+
(or that a caller supplied) with a ``PyOpenSSLContext``. Without copying the
|
|
110
|
+
original context's hardening forward, the substitution silently drops the
|
|
111
|
+
TLS-version floor and ``OP_NO_*`` options urllib3 configured and
|
|
112
|
+
any hardening a caller set on a supplied context. Copy the
|
|
113
|
+
settings we can read back; fall back to urllib3's default floor when there
|
|
114
|
+
is no source context to mirror.
|
|
115
|
+
|
|
116
|
+
Limitation: cipher restrictions and pinned CA material (``cadata`` /
|
|
117
|
+
``load_verify_locations``) cannot be read back out of an ``ssl.SSLContext``,
|
|
118
|
+
so they cannot be transferred here. Honoring caller-supplied pinning needs a
|
|
119
|
+
dedicated, supported channel and is tracked as a follow-up.
|
|
120
|
+
"""
|
|
121
|
+
if isinstance(src, ssl.SSLContext):
|
|
122
|
+
# Mirror the protocol-version floor/ceiling and OpenSSL options the
|
|
123
|
+
# original context carried (e.g. TLS 1.2 minimum, OP_NO_SSLv3,
|
|
124
|
+
# OP_NO_COMPRESSION) plus any caller hardening (e.g. VERIFY_X509_STRICT).
|
|
125
|
+
for attr in ("minimum_version", "maximum_version", "verify_flags"):
|
|
126
|
+
try:
|
|
127
|
+
setattr(dst, attr, getattr(src, attr))
|
|
128
|
+
except (ValueError, OSError, OpenSSL.SSL.Error):
|
|
129
|
+
# Best-effort; an unsupported value must not break the handshake.
|
|
130
|
+
pass
|
|
131
|
+
try:
|
|
132
|
+
dst.options |= _nonnegative_options(src.options)
|
|
133
|
+
except (ValueError, OSError, OpenSSL.SSL.Error, OverflowError, TypeError):
|
|
134
|
+
# Best-effort; carrying options forward must never break the
|
|
135
|
+
# handshake even if a value can't be marshalled into pyOpenSSL.
|
|
136
|
+
pass
|
|
137
|
+
else:
|
|
138
|
+
# No source context to mirror (no ssl_context was supplied): restore the
|
|
139
|
+
# hardening urllib3's create_urllib3_context() would have applied.
|
|
140
|
+
try:
|
|
141
|
+
dst.minimum_version = ssl.TLSVersion.TLSv1_2
|
|
142
|
+
dst.options |= ssl.OP_NO_COMPRESSION
|
|
143
|
+
except (ValueError, OSError, OpenSSL.SSL.Error, OverflowError, TypeError):
|
|
144
|
+
pass
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _build_context_with_partial_chain(
|
|
148
|
+
cafile: str | None, src_context: ssl.SSLContext | None = None
|
|
149
|
+
) -> PyOpenSSLContext:
|
|
150
|
+
"""Create PyOpenSSL context configured for CERT_REQUIRED and partial-chain trust.
|
|
151
|
+
|
|
152
|
+
When ``src_context`` is the stdlib context being replaced, its TLS hardening
|
|
153
|
+
(version floor, options, verify flags) is carried forward so the
|
|
154
|
+
substitution does not weaken the connection.
|
|
155
|
+
"""
|
|
90
156
|
ctx = PyOpenSSLContext(ssl_.PROTOCOL_TLS_CLIENT)
|
|
91
157
|
try:
|
|
92
158
|
ctx.verify_mode = ssl.CERT_REQUIRED
|
|
93
159
|
except Exception:
|
|
94
160
|
pass
|
|
161
|
+
_apply_stdlib_hardening(ctx, src_context)
|
|
95
162
|
_ensure_partial_chain_on_context(ctx, cafile)
|
|
96
163
|
return ctx
|
|
97
164
|
|
|
@@ -168,6 +235,54 @@ def _load_trusted_certificates(cafile: str | None) -> list[x509.Certificate]:
|
|
|
168
235
|
return [load_der_x509_certificate(cert, default_backend()) for cert in certs]
|
|
169
236
|
|
|
170
237
|
|
|
238
|
+
def _verify_hostname_after_handshake(
|
|
239
|
+
wrapped_socket: WrappedSocket,
|
|
240
|
+
server_hostname: str | None,
|
|
241
|
+
ssl_context: Any,
|
|
242
|
+
) -> None:
|
|
243
|
+
"""Match the peer certificate against *server_hostname*."""
|
|
244
|
+
# Honor explicitly-disabled certificate verification (CERT_NONE) first; when
|
|
245
|
+
# verification is off there is nothing to assert about server identity, so a
|
|
246
|
+
# missing hostname is acceptable. Check this before the hostname so we only
|
|
247
|
+
# skip when the caller genuinely opted out of verification.
|
|
248
|
+
verify_mode = getattr(ssl_context, "verify_mode", ssl.CERT_REQUIRED)
|
|
249
|
+
if verify_mode == ssl.CERT_NONE:
|
|
250
|
+
return
|
|
251
|
+
|
|
252
|
+
# Verification is required but there is no host to match against (e.g. TLS
|
|
253
|
+
# without SNI). Fail closed rather than accepting the peer: without a
|
|
254
|
+
# hostname we cannot assert server identity.
|
|
255
|
+
if not server_hostname:
|
|
256
|
+
raise CertificateError(
|
|
257
|
+
"no server hostname supplied to match against the peer certificate; "
|
|
258
|
+
"cannot verify server identity"
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
# Normalize bracketed / scoped IPv6 literals the same way urllib3 does:
|
|
262
|
+
# strip the brackets and drop any "%scope" suffix before testing for an IP,
|
|
263
|
+
# since Python's ssl module treats scoped addresses as DNS hostnames.
|
|
264
|
+
normalized = server_hostname.strip("[]")
|
|
265
|
+
if "%" in normalized:
|
|
266
|
+
normalized = normalized[: normalized.rfind("%")]
|
|
267
|
+
if ssl_.is_ipaddress(normalized):
|
|
268
|
+
server_hostname = normalized
|
|
269
|
+
|
|
270
|
+
cert = wrapped_socket.getpeercert()
|
|
271
|
+
try:
|
|
272
|
+
match_hostname(cert, server_hostname)
|
|
273
|
+
except CertificateError as e:
|
|
274
|
+
log.warning(
|
|
275
|
+
"Certificate did not match expected hostname: %s. Certificate: %s",
|
|
276
|
+
server_hostname,
|
|
277
|
+
cert,
|
|
278
|
+
)
|
|
279
|
+
# Attach the cert so callers catching CertificateError can inspect it,
|
|
280
|
+
# matching urllib3's own _match_hostname behavior.
|
|
281
|
+
e._peer_cert = cert
|
|
282
|
+
wrapped_socket.close()
|
|
283
|
+
raise
|
|
284
|
+
|
|
285
|
+
|
|
171
286
|
@wraps(ssl_.ssl_wrap_socket)
|
|
172
287
|
def ssl_wrap_socket_with_cert_revocation_checks(
|
|
173
288
|
*args: Any, **kwargs: Any
|
|
@@ -186,13 +301,19 @@ def ssl_wrap_socket_with_cert_revocation_checks(
|
|
|
186
301
|
provided_ctx = params.get("ssl_context")
|
|
187
302
|
cafile_for_ctx = _resolve_cafile(params)
|
|
188
303
|
if not isinstance(provided_ctx, PyOpenSSLContext):
|
|
189
|
-
|
|
304
|
+
# Carry the replaced stdlib context's TLS hardening forward so the
|
|
305
|
+
# substitution doesn't silently weaken the connection.
|
|
306
|
+
params["ssl_context"] = _build_context_with_partial_chain(
|
|
307
|
+
cafile_for_ctx, src_context=provided_ctx
|
|
308
|
+
)
|
|
190
309
|
else:
|
|
191
310
|
# If a PyOpenSSLContext is provided, ensure it trusts the provided CA and partial-chain is enabled
|
|
192
311
|
_ensure_partial_chain_on_context(provided_ctx, cafile_for_ctx)
|
|
193
312
|
|
|
194
313
|
ret = ssl_.ssl_wrap_socket(**params)
|
|
195
314
|
|
|
315
|
+
_verify_hostname_after_handshake(ret, server_hostname, params.get("ssl_context"))
|
|
316
|
+
|
|
196
317
|
log.debug(
|
|
197
318
|
"CRL Check Mode: %s",
|
|
198
319
|
FEATURE_CRL_CONFIG.cert_revocation_check_mode.name,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.1
|
|
4
4
|
Summary: Snowflake Connector for Python
|
|
5
5
|
Home-page: https://www.snowflake.com/
|
|
6
6
|
Author: Snowflake, Inc
|
|
@@ -64,7 +64,7 @@ Provides-Extra: development
|
|
|
64
64
|
Requires-Dist: Cython; extra == "development"
|
|
65
65
|
Requires-Dist: azure-identity>=1.16; extra == "development"
|
|
66
66
|
Requires-Dist: coverage; extra == "development"
|
|
67
|
-
Requires-Dist: mitmproxy>=12.0.0; python_version >= "3.12" and extra == "development"
|
|
67
|
+
Requires-Dist: mitmproxy>=12.0.0; (python_version >= "3.12" and python_version < "3.14") and extra == "development"
|
|
68
68
|
Requires-Dist: more-itertools; extra == "development"
|
|
69
69
|
Requires-Dist: numpy<=2.4.3; extra == "development"
|
|
70
70
|
Requires-Dist: pendulum!=2.1.1; extra == "development"
|
|
@@ -78,9 +78,10 @@ Requires-Dist: pytest-xdist; extra == "development"
|
|
|
78
78
|
Requires-Dist: pytzdata; extra == "development"
|
|
79
79
|
Requires-Dist: responses; extra == "development"
|
|
80
80
|
Provides-Extra: pandas
|
|
81
|
-
Requires-Dist: pandas
|
|
82
|
-
Requires-Dist: pandas
|
|
83
|
-
Requires-Dist: pyarrow
|
|
81
|
+
Requires-Dist: pandas<3.0.0,>=1.0.0; python_version < "3.13" and extra == "pandas"
|
|
82
|
+
Requires-Dist: pandas<3.0.0,>=2.1.2; python_version >= "3.13" and extra == "pandas"
|
|
83
|
+
Requires-Dist: pyarrow<24,>=14.0.1; python_version >= "3.14" and extra == "pandas"
|
|
84
|
+
Requires-Dist: pyarrow>=14.0.1; python_version < "3.14" and extra == "pandas"
|
|
84
85
|
Provides-Extra: secure-local-storage
|
|
85
86
|
Requires-Dist: keyring<26.0.0,>=23.1.0; extra == "secure-local-storage"
|
|
86
87
|
Dynamic: license-file
|
|
@@ -95,14 +96,16 @@ https://docs.snowflake.com/
|
|
|
95
96
|
Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
|
|
96
97
|
|
|
97
98
|
# Release Notes
|
|
98
|
-
- v4.7.
|
|
99
|
+
- v4.7.1(Jul 15,2026)
|
|
100
|
+
- Added support for Python 3.14t (free-threaded).
|
|
101
|
+
- **Note:** Python 3.14t CI testing excludes `win_arm64` (no `cryptography` wheels available) and `mitmproxy` proxy tests on all platforms (transitive dependencies `aioquic`/`pylsqpack` lack free-threaded-compatible wheels).
|
|
102
|
+
- Improved verification of TLS connections (SNOW-3675579).
|
|
99
103
|
- Fixed `python-connector.log` not rotating on Windows, and every record being logged twice, when easy logging is enabled via `config.toml` (SNOW-3680325).
|
|
100
104
|
- **Note:** As part of this fix, easy logging no longer calls `logging.basicConfig()` and therefore no longer configures the root logger. `python-connector.log` now captures only the `snowflake.connector`, `botocore`, and `boto3`.
|
|
101
105
|
- Improved URL validation reliability by replacing the hand-rolled regex in `is_valid_url()` with `urllib.parse.urlparse` (SNOW-3392651).
|
|
102
106
|
- Fixed OAuth infinite loop when tokens expire by ensuring `reauthenticate()` calls `_request_tokens()` directly instead of looping through `prepare()`. Token cache is now read exactly once per connection, and `_store_tokens()` preserves macOS Keychain ACL by never calling `remove()`. The async OAuth `reauthenticate()` now runs the synchronous OAuth flow on a worker thread instead of blocking the event loop.
|
|
103
107
|
- Fixed OAuth scope handling for Snowflake custom OAuth: when refresh tokens are enabled, the connector no longer appends the OIDC `offline_access` scope for token endpoints on `*.snowflakecomputing.com` or `*.snowflakecomputing.cn`, which caused `invalid_scope` errors. Snowflake custom OAuth expects `refresh_token` in scope instead. External IdP behavior is unchanged.
|
|
104
108
|
- Fixed input validation for `scale` metadata in Arrow result set processing for `TIME`, `TIMESTAMP_NTZ`, `TIMESTAMP_LTZ`, and `TIMESTAMP_TZ` columns (SNOW-3388299).
|
|
105
|
-
- Removed pandas upper bound dependency constraint on the `[pandas]` extra to allow installation of pandas 3.0.0 and later.
|
|
106
109
|
- Fixed S3 storage client to correctly handle 307/308 (method-preserving) and 301/302 (GET/HEAD only) redirects by disabling automatic redirect following and re-signing each request with AWS SigV4 credentials for the redirect target. The region is updated from the `x-amz-bucket-region` response header on each redirect. Redirects are capped at 5 hops.
|
|
107
110
|
- Added native AKS (Azure Kubernetes Service) workload identity support. When running on AKS with workload identity configured, the connector automatically uses `WorkloadIdentityCredential` to authenticate via the injected service account credentials. OIDC backward compatibility is also supported.
|
|
108
111
|
- Added the `workload_identity_aws_use_outbound_token` connection option (default `false`) to opt into AWS WIF JWT attestation via STS `GetWebIdentityToken` instead of the default SigV4 `GetCallerIdentity` method.
|
|
@@ -40,17 +40,22 @@ pytest-xdist
|
|
|
40
40
|
pytzdata
|
|
41
41
|
responses
|
|
42
42
|
|
|
43
|
-
[development:python_version >= "3.12"]
|
|
43
|
+
[development:python_version >= "3.12" and python_version < "3.14"]
|
|
44
44
|
mitmproxy>=12.0.0
|
|
45
45
|
|
|
46
46
|
[pandas]
|
|
47
|
-
pyarrow>=14.0.1
|
|
48
47
|
|
|
49
48
|
[pandas:python_version < "3.13"]
|
|
50
|
-
pandas
|
|
49
|
+
pandas<3.0.0,>=1.0.0
|
|
50
|
+
|
|
51
|
+
[pandas:python_version < "3.14"]
|
|
52
|
+
pyarrow>=14.0.1
|
|
51
53
|
|
|
52
54
|
[pandas:python_version >= "3.13"]
|
|
53
|
-
pandas
|
|
55
|
+
pandas<3.0.0,>=2.1.2
|
|
56
|
+
|
|
57
|
+
[pandas:python_version >= "3.14"]
|
|
58
|
+
pyarrow<24,>=14.0.1
|
|
54
59
|
|
|
55
60
|
[secure-local-storage]
|
|
56
61
|
keyring<26.0.0,>=23.1.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{snowflake_connector_python-4.7.0 → snowflake_connector_python-4.7.1}/src/snowflake/connector/crl.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|