snowflake-connector-python 5.0.0b2__tar.gz → 5.0.0b3__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-5.0.0b2 → snowflake_connector_python-5.0.0b3}/Cargo.lock +20 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/PKG-INFO +4 -6
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/README.md +2 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/python_generator.rs +97 -2
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/rust_generator.rs +1 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/protoc_installer.rs +76 -8
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/protobuf/database_driver_v1.proto +42 -2
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/pyproject.toml +2 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/Cargo.toml +10 -3
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/connection.rs +518 -110
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/error.rs +7 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/global_state.rs +53 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/heartbeat.rs +12 -8
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/query.rs +277 -56
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/result_set.rs +169 -17
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/statement.rs +388 -111
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/validation.rs +128 -23
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/arrow_utils.rs +6 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/auth.rs +10 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/bin/collect_chunk_data.rs +4 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/prefetch.rs +19 -11
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/compression.rs +3 -3
- snowflake_connector_python-5.0.0b3/sf_core/src/compression_types.rs +559 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/config_manager.rs +138 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/config/configured_redirect_uri.rs +121 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/connection_config.rs +233 -10
- snowflake_connector_python-5.0.0b3/sf_core/src/config/ini_loader.rs +206 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/config/logging_config_loader.rs +344 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/mod.rs +16 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/param_registry.rs +348 -9
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/resolver.rs +237 -11
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/rest_parameters.rs +136 -43
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/cache.rs +4 -2
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/integration_test.rs +1 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/worker.rs +2 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/file_manager/azure_transfer.rs +276 -66
- snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/cloud_http.rs +282 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/encryption.rs +438 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/gcs_transfer.rs +2420 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/mod.rs +1666 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/s3_transfer.rs +1422 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/file_manager/types.rs +199 -48
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/lib.rs +2 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/logging/error.rs +12 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/logging/log_manager.rs +188 -52
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/logging/mod.rs +1 -2
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/apis/database_driver_v1/converter.rs +57 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/apis/database_driver_v1/mod.rs +79 -11
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/c_api.rs +4 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/query_types.rs +3 -1
- snowflake_connector_python-5.0.0b3/sf_core/src/refresh.rs +212 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/async_exec.rs +1 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/auth.rs +22 -7
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/external_browser.rs +2 -2
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/heartbeat.rs +17 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/mod.rs +441 -202
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/authorization_code.rs +173 -35
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/loopback_server.rs +249 -116
- snowflake_connector_python-5.0.0b3/sf_core/src/rest/snowflake/prompt_lock.rs +189 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/query_response.rs +722 -24
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/sql_state.rs +7 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/stage_binding.rs +276 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/mod.rs +43 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/serialization.rs +86 -15
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/snowflake_exporter.rs +12 -15
- snowflake_connector_python-5.0.0b3/sf_core/src/telemetry/snowflake_processor.rs +399 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/tls/client.rs +372 -0
- snowflake_connector_python-5.0.0b3/sf_core/src/tls/config.rs +223 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/error.rs +8 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/mod.rs +2 -2
- snowflake_connector_python-5.0.0b3/sf_core/tests/common/cloud_gating.rs +295 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/config.rs +2 -0
- snowflake_connector_python-5.0.0b3/sf_core/tests/common/mocks/external_browser.rs +302 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/mfa.rs +24 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/password.rs +7 -4
- snowflake_connector_python-5.0.0b3/sf_core/tests/common/mocks/put_get.rs +172 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mod.rs +1 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/snowflake_test_client.rs +57 -1
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/api_client/bridge.py +48 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/api_client/client_api.py +278 -31
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/arrow_context.py +3 -2
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/arrow_stream_async.py +156 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/arrow_stream_utils.py +4 -3
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/__init__.py +30 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/connection.py +328 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/connection_types.py +13 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/constants.py +25 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/decorators.py +70 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/freezable_proxy.py +39 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/connection/queries.py +9 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/connection_config_mixin.py +64 -6
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/__init__.py +25 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/base.py +425 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/cursor_types.py +13 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/decorators.py +113 -0
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/cursor/_query_result.py → snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/query_result.py +23 -18
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/query_result_waiter.py +98 -0
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/cursor/_result_metadata.py → snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/result_metadata.py +2 -2
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/cursor/result_set_wrapper.py +59 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/decorators.py +297 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/errorhandler.py +6 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/logging.py +26 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.cpp +31 -35
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +340 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.pyi +130 -9
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_services.py +729 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/result_batch.py +148 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/snowflake_restful.py +12 -4
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/statement_utils.py +13 -3
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/telemetry.py +33 -1
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/README.md +159 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/__init__.py +35 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/connection/__init__.py +17 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/connection/_connection.py +408 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/connection/_freezable_proxy.py +85 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/cursor/__init__.py +35 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/cursor/_base.py +828 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/cursor/_dict_cursor.py +58 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/cursor/_result_set_wrapper.py +59 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/cursor/_snowflake_cursor.py +52 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/aio/result_batch.py +158 -0
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/connection/__init__.py +30 -0
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/connection.py → snowflake_connector_python-5.0.0b3/src/snowflake/connector/connection/_connection.py +103 -382
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/_internal/freezable_proxy.py → snowflake_connector_python-5.0.0b3/src/snowflake/connector/connection/_freezable_proxy.py +21 -26
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/connection_config.py +60 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/cursor/__init__.py +2 -6
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/cursor/_base.py +137 -468
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/cursor/_dict_cursor.py +2 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/cursor/_result_set_wrapper.py +6 -32
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/cursor/_snowflake_cursor.py +2 -1
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/errors.py +24 -5
- snowflake_connector_python-5.0.0b3/src/snowflake/connector/py.typed +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/result_batch.py +16 -149
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/version.py +1 -1
- snowflake_connector_python-5.0.0b2/sf_core/src/compression_types.rs +0 -123
- snowflake_connector_python-5.0.0b2/sf_core/src/file_manager/encryption.rs +0 -193
- snowflake_connector_python-5.0.0b2/sf_core/src/file_manager/gcs_transfer.rs +0 -1059
- snowflake_connector_python-5.0.0b2/sf_core/src/file_manager/mod.rs +0 -672
- snowflake_connector_python-5.0.0b2/sf_core/src/file_manager/s3_transfer.rs +0 -933
- snowflake_connector_python-5.0.0b2/sf_core/src/logging/error.rs +0 -34
- snowflake_connector_python-5.0.0b2/sf_core/src/logging/ini_config.rs +0 -702
- snowflake_connector_python-5.0.0b2/sf_core/src/tls/client.rs +0 -147
- snowflake_connector_python-5.0.0b2/sf_core/src/tls/config.rs +0 -55
- snowflake_connector_python-5.0.0b2/sf_core/tests/common/mocks/external_browser.rs +0 -109
- snowflake_connector_python-5.0.0b2/sf_core/tests/common/mocks/put_get.rs +0 -52
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/_internal/decorators.py +0 -137
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +0 -336
- snowflake_connector_python-5.0.0b2/src/snowflake/connector/cursor/_query_result_waiter.py +0 -47
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/.gitignore +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/build_common.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/error_trace/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/error_trace/src/lib.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/error_trace_derive/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/error_trace_derive/src/lib.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/hatch_build.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/Cargo.lock +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/README.md +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generator.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/helpers.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/java_generator.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/json_generator.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/generators/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/lib.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/main.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_generator/src/protobuf.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_utils/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/proto_utils/src/lib.rs +0 -0
- /snowflake_connector_python-5.0.0b2/src/snowflake/connector/_common/__init__.py → /snowflake_connector_python-5.0.0b3/sf_core/CHANGELOG.md +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/README.md +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/benches/prefetch_bench.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/build.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/exports.def +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/alter_session_parser.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/async_query_registry.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/database.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/logout.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/multistatement.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/database_driver_v1/spcs_token.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/apis/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/bin/README.md +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/bin/param_defs_export.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/bin/tls_client.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/c_api.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/arrow_parser.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/error.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/http_downloader.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/json_parser.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/memory_budget.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/mock.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/chunks/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/logout.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/param_store.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/path_resolver.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/retry.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/settings.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/config/toml_loader.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/certificate_parser.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/config.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/disk_tests.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/error.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/crl/validator.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/file_manager/path_expansion.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/fs_adapter.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/handle_manager.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/http/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/http/retry.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/logging/c_api.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/logging/callback_layer.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/logging/opentelemetry.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/perf_timing/c_api.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/perf_timing/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/apis/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/config_setting_ext.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/generated.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/protobuf/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/error.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/logout.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/native_okta.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/client_credentials.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/dpop.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/error.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/http_client.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/pkce.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/oauth/token.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/query_request.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/rest/snowflake/telemetry.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/sensitive.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/environment.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/os_details.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/platform_detection/aws.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/platform_detection/azure.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/platform_detection/gcp.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/platform_detection/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/platform_detection/tests.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/telemetry/types.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/crl_verifier.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/revocation.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/test_helpers.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/tls/x509_utils.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/token_cache/file_cache.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/token_cache/keyring_cache.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/src/token_cache/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/arrow_deserialize.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/arrow_deserialize_macro/Cargo.toml +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/arrow_deserialize_macro/src/lib.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/arrow_extract_value.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/arrow_result_helper.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/file_utils.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/auth.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/mod.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/oauth.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/okta.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/mocks/session.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/private_key_helper.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/put_get_common.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/test_server.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/test_utils.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/tests/common/tls_proxy.rs +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2/src/snowflake/connector/_internal/protobuf_gen → snowflake_connector_python-5.0.0b3/src/snowflake/connector/_common}/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/_private_key_helper.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/api_client/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/api_client/c_api.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/arrow_stream_iterator.pyi +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/backward_compatibility.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/binding_converters.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/config_utils.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/errorcode.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/extras.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/logout_config_mapping.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.pyx +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.cpp +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.hpp +0 -0
- {snowflake_connector_python-5.0.0b2/src/snowflake/connector/auth → snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/protobuf_gen}/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/protobuf_gen/proto_exception.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/snow_logging.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/sqlstate.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/status_codes.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/text_utils.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/type_codes.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/_internal/write_pandas_operation.py +0 -0
- /snowflake_connector_python-5.0.0b2/src/snowflake/connector/py.typed → /snowflake_connector_python-5.0.0b3/src/snowflake/connector/auth/__init__.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/auth/workload_identity.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/compat.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/config_manager.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/constants.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/description.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/pandas_tools.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/telemetry.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/time_util.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/types.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/src/snowflake/connector/util_text.py +0 -0
- {snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/tests/README.md +0 -0
|
@@ -3478,6 +3478,7 @@ dependencies = [
|
|
|
3478
3478
|
"arrow",
|
|
3479
3479
|
"base64 0.22.1",
|
|
3480
3480
|
"chrono",
|
|
3481
|
+
"dirs",
|
|
3481
3482
|
"embed-resource",
|
|
3482
3483
|
"error_trace",
|
|
3483
3484
|
"libc",
|
|
@@ -3491,6 +3492,7 @@ dependencies = [
|
|
|
3491
3492
|
"snafu 0.8.9",
|
|
3492
3493
|
"strum",
|
|
3493
3494
|
"strum_macros",
|
|
3495
|
+
"temp-env",
|
|
3494
3496
|
"test-case",
|
|
3495
3497
|
"tokio",
|
|
3496
3498
|
"tokio-util",
|
|
@@ -3510,8 +3512,10 @@ name = "odbc_trace_tool"
|
|
|
3510
3512
|
version = "0.1.0"
|
|
3511
3513
|
dependencies = [
|
|
3512
3514
|
"clap",
|
|
3515
|
+
"encoding_rs",
|
|
3513
3516
|
"regex",
|
|
3514
3517
|
"serde",
|
|
3518
|
+
"serde_json",
|
|
3515
3519
|
"serde_yaml",
|
|
3516
3520
|
"snafu 0.8.9",
|
|
3517
3521
|
"tempfile",
|
|
@@ -4385,6 +4389,7 @@ dependencies = [
|
|
|
4385
4389
|
"url",
|
|
4386
4390
|
"wasm-bindgen",
|
|
4387
4391
|
"wasm-bindgen-futures",
|
|
4392
|
+
"wasm-streams",
|
|
4388
4393
|
"web-sys",
|
|
4389
4394
|
"webpki-roots",
|
|
4390
4395
|
]
|
|
@@ -4832,6 +4837,7 @@ dependencies = [
|
|
|
4832
4837
|
"axum",
|
|
4833
4838
|
"base64 0.22.1",
|
|
4834
4839
|
"brotli",
|
|
4840
|
+
"bytes",
|
|
4835
4841
|
"bzip2",
|
|
4836
4842
|
"chrono",
|
|
4837
4843
|
"clap",
|
|
@@ -4895,6 +4901,7 @@ dependencies = [
|
|
|
4895
4901
|
"toml 0.8.23",
|
|
4896
4902
|
"tracing",
|
|
4897
4903
|
"tracing-appender",
|
|
4904
|
+
"tracing-core",
|
|
4898
4905
|
"tracing-opentelemetry",
|
|
4899
4906
|
"tracing-subscriber",
|
|
4900
4907
|
"tracing-test",
|
|
@@ -6063,6 +6070,19 @@ dependencies = [
|
|
|
6063
6070
|
"unicode-ident",
|
|
6064
6071
|
]
|
|
6065
6072
|
|
|
6073
|
+
[[package]]
|
|
6074
|
+
name = "wasm-streams"
|
|
6075
|
+
version = "0.4.2"
|
|
6076
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6077
|
+
checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
|
|
6078
|
+
dependencies = [
|
|
6079
|
+
"futures-util",
|
|
6080
|
+
"js-sys",
|
|
6081
|
+
"wasm-bindgen",
|
|
6082
|
+
"wasm-bindgen-futures",
|
|
6083
|
+
"web-sys",
|
|
6084
|
+
]
|
|
6085
|
+
|
|
6066
6086
|
[[package]]
|
|
6067
6087
|
name = "web-sys"
|
|
6068
6088
|
version = "0.3.81"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.0b3
|
|
4
4
|
Summary: Snowflake DB driver for Python (Private Preview)
|
|
5
5
|
Project-URL: Homepage, https://github.com/snowflakedb/universal-driver
|
|
6
6
|
Project-URL: Bug Reports, https://github.com/snowflakedb/universal-driver/issues
|
|
@@ -8,7 +8,7 @@ Project-URL: Source, https://github.com/snowflakedb/universal-driver
|
|
|
8
8
|
Project-URL: Documentation, https://github.com/snowflakedb/universal-driver/blob/main/README.md
|
|
9
9
|
License: Apache-2.0
|
|
10
10
|
Keywords: api,database,dbapi,pep249,python,snowflake
|
|
11
|
-
Classifier: Development Status ::
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -58,11 +58,9 @@ Description-Content-Type: text/markdown
|
|
|
58
58
|
|
|
59
59
|
# ⚠️ PRIVATE PREVIEW DISCLAIMER ⚠️
|
|
60
60
|
|
|
61
|
-
**
|
|
61
|
+
**This is a beta version of our Universal Driver intended for Snowflake customers who are subject to Snowflake's Preview Terms.**
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
- **Testing Environments Only:** For authorized Private Preview partners, this driver is provided solely for evaluation, feedback, and testing purposes. It must be deployed exclusively in isolated, non-production environments.
|
|
65
|
-
- **"As-Is" Software:** As a preview release, this driver is still under active development. It may contain bugs, lack features, or undergo significant breaking changes before general availability. It is provided "as-is" without any warranties, service level agreements (SLAs), or official support commitments.
|
|
63
|
+
This driver is not ready for use with production data and may be unstable. Please only use it if you are actively participating in the Universal Driver Private Preview.
|
|
66
64
|
|
|
67
65
|
## Development
|
|
68
66
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# ⚠️ PRIVATE PREVIEW DISCLAIMER ⚠️
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**This is a beta version of our Universal Driver intended for Snowflake customers who are subject to Snowflake's Preview Terms.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- **Testing Environments Only:** For authorized Private Preview partners, this driver is provided solely for evaluation, feedback, and testing purposes. It must be deployed exclusively in isolated, non-production environments.
|
|
7
|
-
- **"As-Is" Software:** As a preview release, this driver is still under active development. It may contain bugs, lack features, or undergo significant breaking changes before general availability. It is provided "as-is" without any warranties, service level agreements (SLAs), or official support commitments.
|
|
5
|
+
This driver is not ready for use with production data and may be unstable. Please only use it if you are actively participating in the Universal Driver Private Preview.
|
|
8
6
|
|
|
9
7
|
## Development
|
|
10
8
|
|
|
@@ -113,11 +113,16 @@ impl PythonGenerator {
|
|
|
113
113
|
content += &self.generate_server_class(&service, &package);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
// Generate client classes
|
|
117
|
-
for service in file.service {
|
|
116
|
+
// Generate (synchronous) client classes
|
|
117
|
+
for service in file.service.clone() {
|
|
118
118
|
content += &self.generate_client_class(&service, &package);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
// Generate async client classes (separate code path from the sync clients)
|
|
122
|
+
for service in file.service {
|
|
123
|
+
content += &self.generate_async_client_class(&service, &package);
|
|
124
|
+
}
|
|
125
|
+
|
|
121
126
|
result.add_file(
|
|
122
127
|
PathBuf::from(format!(r#"{package}_services.py"#)),
|
|
123
128
|
GeneratedFile::new(content),
|
|
@@ -311,6 +316,96 @@ class ProtoError(Exception):
|
|
|
311
316
|
|
|
312
317
|
content
|
|
313
318
|
}
|
|
319
|
+
|
|
320
|
+
/// Generate the asynchronous client for a service.
|
|
321
|
+
///
|
|
322
|
+
/// This is a dedicated client for the async code path — separate from the
|
|
323
|
+
/// synchronous ``{service}Client``. Each method awaits
|
|
324
|
+
/// ``transport.handle_message_async``, which today offloads the blocking
|
|
325
|
+
/// FFI call to a worker thread via ``asyncio.to_thread``. A non-blocking,
|
|
326
|
+
/// callback-based FFI will replace that hop later without changing this
|
|
327
|
+
/// client's surface.
|
|
328
|
+
fn generate_async_client_class(
|
|
329
|
+
&self,
|
|
330
|
+
service: &crate::protobuf::ServiceDescriptorProto,
|
|
331
|
+
package: &str,
|
|
332
|
+
) -> String {
|
|
333
|
+
let service_name = service.name.as_ref().unwrap_or(&String::new()).clone();
|
|
334
|
+
let service_error = service
|
|
335
|
+
.options
|
|
336
|
+
.as_ref()
|
|
337
|
+
.and_then(|o| o.service_error.as_ref());
|
|
338
|
+
|
|
339
|
+
let mut content = format!(
|
|
340
|
+
r#"class Async{service_name}Client:
|
|
341
|
+
"""Asynchronous {service_name} client.
|
|
342
|
+
|
|
343
|
+
Each RPC awaits ``transport.handle_message_async``, which runs the
|
|
344
|
+
blocking FFI call on a worker thread so the event loop is not blocked.
|
|
345
|
+
This is a separate code path from the synchronous ``{service_name}Client``.
|
|
346
|
+
"""
|
|
347
|
+
|
|
348
|
+
def __init__(self, transport, error_handler=None):
|
|
349
|
+
"""
|
|
350
|
+
Args:
|
|
351
|
+
transport: Transport layer that handles message serialization.
|
|
352
|
+
error_handler: Optional callable that converts a proto-layer exception
|
|
353
|
+
into a public exception. Must **return** the converted exception
|
|
354
|
+
(not raise it); ``_raise_error`` takes care of raising.
|
|
355
|
+
"""
|
|
356
|
+
self._transport = transport
|
|
357
|
+
self._error_handler = error_handler
|
|
358
|
+
|
|
359
|
+
def _raise_error(self, exc):
|
|
360
|
+
if self._error_handler is not None:
|
|
361
|
+
raise self._error_handler(exc) from None
|
|
362
|
+
raise exc
|
|
363
|
+
|
|
364
|
+
"#
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
for method in &service.method {
|
|
368
|
+
let name = camel_to_snake_case(method.name.as_ref().unwrap_or(&String::new()));
|
|
369
|
+
let input_type = to_rust_message_name(
|
|
370
|
+
&package.to_string(),
|
|
371
|
+
&method.input_type.as_ref().unwrap_or(&String::new()).clone(),
|
|
372
|
+
);
|
|
373
|
+
let output_type = to_rust_message_name(
|
|
374
|
+
&package.to_string(),
|
|
375
|
+
&method
|
|
376
|
+
.output_type
|
|
377
|
+
.as_ref()
|
|
378
|
+
.unwrap_or(&String::new())
|
|
379
|
+
.clone(),
|
|
380
|
+
);
|
|
381
|
+
let method_error = method
|
|
382
|
+
.options
|
|
383
|
+
.as_ref()
|
|
384
|
+
.and_then(|o| o.method_error.as_ref());
|
|
385
|
+
let empty_error = "EmptyError".to_string();
|
|
386
|
+
let error_type = method_error.or(service_error).unwrap_or(&empty_error);
|
|
387
|
+
|
|
388
|
+
content += &format!(
|
|
389
|
+
r#" async def {name}(self, request: {input_type}) -> {output_type}:
|
|
390
|
+
(code, response_bytes) = await self._transport.handle_message_async('{service_name}', '{name}', request.SerializeToString())
|
|
391
|
+
if code == 0:
|
|
392
|
+
response = {output_type}()
|
|
393
|
+
response.ParseFromString(response_bytes)
|
|
394
|
+
return response
|
|
395
|
+
elif code == 1:
|
|
396
|
+
error = {error_type}()
|
|
397
|
+
error.ParseFromString(response_bytes)
|
|
398
|
+
self._raise_error(ProtoApplicationException(error))
|
|
399
|
+
elif code == 2:
|
|
400
|
+
self._raise_error(ProtoTransportException(str(response_bytes)))
|
|
401
|
+
else:
|
|
402
|
+
self._raise_error(ProtoTransportException(f"Unknown error code: %s", code))
|
|
403
|
+
"#
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
content
|
|
408
|
+
}
|
|
314
409
|
}
|
|
315
410
|
|
|
316
411
|
impl Default for PythonGenerator {
|
|
@@ -230,7 +230,7 @@ use prost::Message;
|
|
|
230
230
|
Ok(input) => input,
|
|
231
231
|
Err(e) => return Err(ProtoError::Transport(e.to_string())),
|
|
232
232
|
}};
|
|
233
|
-
let result = self.{name}(input).await;
|
|
233
|
+
let result = Box::pin(self.{name}(input)).await;
|
|
234
234
|
match result {{
|
|
235
235
|
Ok(output) => Ok(output.encode_to_vec()),
|
|
236
236
|
Err(e) => Err(ProtoError::Application(e.encode_to_vec())),
|
|
@@ -72,21 +72,89 @@ fn download_url() -> String {
|
|
|
72
72
|
|
|
73
73
|
fn download_and_install(dest: &Path) {
|
|
74
74
|
let url = download_url();
|
|
75
|
-
eprintln!("Downloading protoc v{PROTOC_VERSION} from {url}");
|
|
76
75
|
|
|
77
76
|
std::fs::create_dir_all(dest).expect("Failed to create protoc cache directory");
|
|
78
77
|
let zip_path = dest.join("protoc.zip");
|
|
79
78
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
// Two layers of retry guard the build against transient GitHub Releases failures
|
|
80
|
+
// (recurring HTTP 5xx, slow connect, partial download):
|
|
81
|
+
//
|
|
82
|
+
// 1. `curl --retry 5` already covers the failure mode we actually see —
|
|
83
|
+
// curl's documented default treats HTTP 408/429/500/502/503/504 as
|
|
84
|
+
// transient and retries them with its own backoff, so a 504 from
|
|
85
|
+
// releases.githubusercontent.com is absorbed inside a single curl
|
|
86
|
+
// invocation without any extra flags. We intentionally do NOT pass
|
|
87
|
+
// `--retry-all-errors` (added in curl 7.71): the manylinux build
|
|
88
|
+
// container ships an older curl that hard-errors on unknown options
|
|
89
|
+
// (exit 2), which would push every attempt into the outer loop and
|
|
90
|
+
// effectively disable retries. Sticking to flags supported back to
|
|
91
|
+
// ~7.52 (`--retry`, `--retry-delay`, `--retry-max-time`, plus the
|
|
92
|
+
// connect/total timeouts) keeps every CI runner (macOS-15, ubuntu-24,
|
|
93
|
+
// Windows-2022, manylinux_2_*) on the same code path.
|
|
94
|
+
//
|
|
95
|
+
// 2. An outer exponential-backoff loop (1s → 2s → 4s → 8s, 5 attempts total)
|
|
96
|
+
// catches the failures curl's own retry doesn't: partial downloads that
|
|
97
|
+
// leave a corrupt zip on disk, transient DNS/SSL handshake errors that
|
|
98
|
+
// curl exits on without retrying, and any future failure class we
|
|
99
|
+
// haven't enumerated. Each outer attempt starts by deleting the
|
|
100
|
+
// previous zip so extract_zip never sees a half-written file.
|
|
101
|
+
//
|
|
102
|
+
// Total worst-case stall ≈ 1+2+4+8 = 15s of outer backoff plus curl's
|
|
103
|
+
// internal retry budget (capped by --retry-max-time at 120s) — well under
|
|
104
|
+
// any CI job budget, and far cheaper than rerunning the whole release
|
|
105
|
+
// pipeline on a 504.
|
|
106
|
+
const MAX_ATTEMPTS: u32 = 5;
|
|
107
|
+
let mut last_status = None;
|
|
108
|
+
for attempt in 1..=MAX_ATTEMPTS {
|
|
109
|
+
eprintln!(
|
|
110
|
+
"Downloading protoc v{PROTOC_VERSION} from {url} (attempt {attempt}/{MAX_ATTEMPTS})"
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
// Best-effort cleanup of any partial download from the previous attempt.
|
|
114
|
+
// A corrupt zip would otherwise survive into extract_zip() and fail there.
|
|
115
|
+
let _ = std::fs::remove_file(&zip_path);
|
|
116
|
+
|
|
117
|
+
let status = std::process::Command::new("curl")
|
|
118
|
+
.args([
|
|
119
|
+
"-sSL",
|
|
120
|
+
"--fail",
|
|
121
|
+
"--retry",
|
|
122
|
+
"5",
|
|
123
|
+
"--retry-delay",
|
|
124
|
+
"2",
|
|
125
|
+
"--retry-max-time",
|
|
126
|
+
"120",
|
|
127
|
+
"--connect-timeout",
|
|
128
|
+
"30",
|
|
129
|
+
"--max-time",
|
|
130
|
+
"300",
|
|
131
|
+
"-o",
|
|
132
|
+
])
|
|
133
|
+
.arg(&zip_path)
|
|
134
|
+
.arg(&url)
|
|
135
|
+
.status()
|
|
136
|
+
.expect("Failed to execute curl. Install curl or set the PROTOC env var.");
|
|
137
|
+
|
|
138
|
+
if status.success() {
|
|
139
|
+
last_status = Some(status);
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
last_status = Some(status);
|
|
143
|
+
|
|
144
|
+
if attempt < MAX_ATTEMPTS {
|
|
145
|
+
let backoff_ms = 1_000u64 * (1u64 << (attempt - 1));
|
|
146
|
+
eprintln!("curl failed (status: {status}); retrying in {backoff_ms} ms");
|
|
147
|
+
std::thread::sleep(std::time::Duration::from_millis(backoff_ms));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
86
150
|
|
|
151
|
+
let status = last_status.expect("curl loop must produce at least one status");
|
|
87
152
|
assert!(
|
|
88
153
|
status.success(),
|
|
89
|
-
"Failed to download protoc from {url}
|
|
154
|
+
"Failed to download protoc from {url} after {MAX_ATTEMPTS} attempts \
|
|
155
|
+
(last curl exit status: {status}). \
|
|
156
|
+
Set the PROTOC env var to a local protoc binary to bypass the download \
|
|
157
|
+
(useful in offline or locked-down environments).",
|
|
90
158
|
);
|
|
91
159
|
|
|
92
160
|
extract_zip(&zip_path, dest);
|
|
@@ -332,6 +332,7 @@ message ConnectionGetInfoResponse {
|
|
|
332
332
|
optional string schema = 10;
|
|
333
333
|
optional string warehouse = 11;
|
|
334
334
|
optional string master_token = 12;
|
|
335
|
+
optional string user_agent = 13;
|
|
335
336
|
}
|
|
336
337
|
|
|
337
338
|
message ConnectionGetObjectsRequest {
|
|
@@ -422,6 +423,19 @@ message ConnectionGetAllParametersResponse {
|
|
|
422
423
|
map<string, string> parameters = 1;
|
|
423
424
|
}
|
|
424
425
|
|
|
426
|
+
// Reads the Snowflake server version cached from the login response.
|
|
427
|
+
// Distinct from ConnectionGetInfo (which aggregates ~12 fields and takes
|
|
428
|
+
// several locks) so SQLGetInfo(SQL_DBMS_VER) / JDBC getDatabaseProductVersion
|
|
429
|
+
// stay cheap even when callers poll them per-statement.
|
|
430
|
+
message ConnectionGetServerVersionRequest {
|
|
431
|
+
ConnectionHandle conn_handle = 1;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
message ConnectionGetServerVersionResponse {
|
|
435
|
+
// Empty when called before login completes.
|
|
436
|
+
optional string server_version = 1;
|
|
437
|
+
}
|
|
438
|
+
|
|
425
439
|
message ConnectionValidateOptionsRequest {
|
|
426
440
|
ConnectionHandle conn_handle = 1;
|
|
427
441
|
}
|
|
@@ -467,6 +481,7 @@ message ConnectionTokenResponse {
|
|
|
467
481
|
// Heartbeat request to validate that the connection and session are still alive.
|
|
468
482
|
message ConnectionHeartbeatRequest {
|
|
469
483
|
ConnectionHandle conn_handle = 1;
|
|
484
|
+
optional uint32 timeout_seconds = 2; // 0 / absent = use default (300s)
|
|
470
485
|
}
|
|
471
486
|
|
|
472
487
|
message ConnectionHeartbeatResponse {
|
|
@@ -534,6 +549,7 @@ message PrepareResult {
|
|
|
534
549
|
int32 number_of_binds = 5;
|
|
535
550
|
string query = 6;
|
|
536
551
|
optional string sql_state = 7;
|
|
552
|
+
bool array_bind_supported = 8;
|
|
537
553
|
}
|
|
538
554
|
|
|
539
555
|
message StatementPrepareRequest {
|
|
@@ -705,6 +721,15 @@ message ConfigSection {
|
|
|
705
721
|
message ConnectionSetOptionsRequest {
|
|
706
722
|
ConnectionHandle conn_handle = 1;
|
|
707
723
|
map<string, ConfigSetting> options = 2;
|
|
724
|
+
// True when the caller invoked connect() with zero connection-identifying
|
|
725
|
+
// options (the legacy Python driver's `is_kwargs_empty` condition). The core
|
|
726
|
+
// then falls back to the default connection profile from connections.toml,
|
|
727
|
+
// honoring SNOWFLAKE_DEFAULT_CONNECTION_NAME and config.toml's
|
|
728
|
+
// `default_connection_name`. Language wrappers MUST compute this from the
|
|
729
|
+
// raw caller input *before* injecting any bookkeeping params (application,
|
|
730
|
+
// client_app_id, …); a value of `false` (the default) means "caller supplied
|
|
731
|
+
// something", so do not load the default profile.
|
|
732
|
+
bool no_connection_details = 3;
|
|
708
733
|
}
|
|
709
734
|
|
|
710
735
|
message ConnectionSetOptionsResponse {
|
|
@@ -748,8 +773,19 @@ message ConnectionGetQueryStatusRequest {
|
|
|
748
773
|
message ConnectionGetQueryStatusResponse {
|
|
749
774
|
// Status name as returned by the server (e.g. "RUNNING", "SUCCESS", "FAILED_WITH_ERROR")
|
|
750
775
|
string status_name = 1;
|
|
751
|
-
|
|
752
|
-
optional
|
|
776
|
+
int64 end_time = 2;
|
|
777
|
+
optional int32 error_code = 3;
|
|
778
|
+
optional string error_message = 4;
|
|
779
|
+
string query_id = 5;
|
|
780
|
+
int64 session_id = 6;
|
|
781
|
+
string sql_text = 7;
|
|
782
|
+
int64 start_time = 8;
|
|
783
|
+
string state = 9;
|
|
784
|
+
int32 total_duration = 10;
|
|
785
|
+
optional string warehouse_external_size = 11;
|
|
786
|
+
int64 warehouse_id = 12;
|
|
787
|
+
optional string warehouse_name = 13;
|
|
788
|
+
optional string warehouse_server_type = 14;
|
|
753
789
|
}
|
|
754
790
|
|
|
755
791
|
message ConfigGetPathsRequest {
|
|
@@ -812,6 +848,10 @@ service DatabaseDriver {
|
|
|
812
848
|
rpc ConnectionGetParameter(ConnectionGetParameterRequest) returns (ConnectionGetParameterResponse);
|
|
813
849
|
// gets all resolved session parameters at once
|
|
814
850
|
rpc ConnectionGetAllParameters(ConnectionGetAllParametersRequest) returns (ConnectionGetAllParametersResponse);
|
|
851
|
+
// returns the Snowflake server version cached from the login response
|
|
852
|
+
// (`serverVersion` in `/session/v1/login-request`); backs
|
|
853
|
+
// `SQLGetInfo(SQL_DBMS_VER)` and `getDatabaseProductVersion`
|
|
854
|
+
rpc ConnectionGetServerVersion(ConnectionGetServerVersionRequest) returns (ConnectionGetServerVersionResponse);
|
|
815
855
|
// pre-flight validation of connection options - reports all issues at once
|
|
816
856
|
rpc ConnectionValidateOptions(ConnectionValidateOptionsRequest) returns (ConnectionValidateOptionsResponse);
|
|
817
857
|
// Fetch the result of a previously executed query by Snowflake Query ID
|
|
@@ -10,7 +10,7 @@ readme = "README.md"
|
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
11
11
|
keywords = ["database", "api", "pep249", "dbapi", "python", "snowflake"]
|
|
12
12
|
classifiers = [
|
|
13
|
-
"Development Status ::
|
|
13
|
+
"Development Status :: 4 - Beta",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
15
15
|
"Topic :: Database",
|
|
16
16
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
@@ -147,6 +147,7 @@ markers = [
|
|
|
147
147
|
"slow: marks tests as slow (e.g., full sdist install with Rust compilation)",
|
|
148
148
|
"skip_for_json_result_set(reason: str=''): skip when QUERY_RESULT_FORMAT=JSON (tests requiring Arrow precision)",
|
|
149
149
|
"require_vpn: test requires VPN access (skipped outside Jenkins CI)",
|
|
150
|
+
"requires_browser: test requires headless browser container (skipped unless SF_TEST_HEADLESS_BROWSER=true)",
|
|
150
151
|
"flaky: marks tests as flaky; skipped by default, run explicitly via the flaky CI job or `-m flaky` locally",
|
|
151
152
|
]
|
|
152
153
|
log_cli = false
|
{snowflake_connector_python-5.0.0b2 → snowflake_connector_python-5.0.0b3}/sf_core/Cargo.toml
RENAMED
|
@@ -15,6 +15,7 @@ protobuf = ["prost", "proto_utils"]
|
|
|
15
15
|
vendored-openssl = ["openssl/vendored"]
|
|
16
16
|
auth_mfa_e2e = []
|
|
17
17
|
auth_oauth_e2e = []
|
|
18
|
+
gcs_e2e = []
|
|
18
19
|
perf_timing = []
|
|
19
20
|
test-utils = []
|
|
20
21
|
cli = ["clap"]
|
|
@@ -26,10 +27,12 @@ opentelemetry_sdk = { version = "0.30.0", default-features = false, features = [
|
|
|
26
27
|
opentelemetry-otlp = { version = "0.30.0" }
|
|
27
28
|
opentelemetry-semantic-conventions = { version = "0.30.0" }
|
|
28
29
|
tracing = "0.1.41"
|
|
30
|
+
tracing-core = "0.1.34"
|
|
29
31
|
tracing-appender = "0.2"
|
|
30
32
|
tracing-subscriber = { version = "0.3.19", features = ["fmt", "env-filter"] }
|
|
31
33
|
rand = "0.9.2"
|
|
32
|
-
|
|
34
|
+
bytes = "1"
|
|
35
|
+
reqwest = { version = "0.12.23", features = ["json", "rustls-tls", "gzip", "stream"] }
|
|
33
36
|
serde = { version = "1.0.219", features = ["derive"] }
|
|
34
37
|
serde_json = { version = "1.0.143", features = ["raw_value"] }
|
|
35
38
|
futures = "0.3"
|
|
@@ -39,8 +42,8 @@ tokio-stream = "0.1"
|
|
|
39
42
|
toml = "0.8"
|
|
40
43
|
uuid = { version = "1.18", features = ["v4"] }
|
|
41
44
|
base64 = "0.22.1"
|
|
42
|
-
arrow = { version = "
|
|
43
|
-
arrow-ipc = "
|
|
45
|
+
arrow = { version = ">=54.0.0, <59", features = ["ffi"] }
|
|
46
|
+
arrow-ipc = ">=54.0.0, <59"
|
|
44
47
|
flate2 = "1.1.2"
|
|
45
48
|
openssl = "0.10.73"
|
|
46
49
|
jwt = { version = "0.16.0", features = ["openssl"] }
|
|
@@ -160,6 +163,10 @@ path = "tests/logging_custom_file_tests.rs"
|
|
|
160
163
|
name = "logging_query_tests"
|
|
161
164
|
path = "tests/logging_query_tests.rs"
|
|
162
165
|
|
|
166
|
+
[[test]]
|
|
167
|
+
name = "byte_source_roundtrip"
|
|
168
|
+
path = "tests/byte_source_roundtrip.rs"
|
|
169
|
+
|
|
163
170
|
[[test]]
|
|
164
171
|
name = "e2e_tests"
|
|
165
172
|
path = "tests/e2e/mod.rs"
|