snowflake-connector-python 5.0.0b3__tar.gz → 5.0.0b4__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.
Files changed (394) hide show
  1. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/Cargo.lock +5 -0
  2. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/PKG-INFO +1 -1
  3. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/protobuf/database_driver_v1.proto +43 -1
  4. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/pyproject.toml +5 -1
  5. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/Cargo.toml +14 -1
  6. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/exports.def +2 -0
  7. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/connection.rs +198 -9
  8. snowflake_connector_python-5.0.0b4/sf_core/src/apis/database_driver_v1/get_objects.rs +1226 -0
  9. snowflake_connector_python-5.0.0b4/sf_core/src/apis/database_driver_v1/like_pattern.rs +246 -0
  10. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/mod.rs +9 -0
  11. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/query.rs +2 -0
  12. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/result_set.rs +76 -20
  13. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/statement.rs +30 -2
  14. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/auth.rs +6 -0
  15. snowflake_connector_python-5.0.0b4/sf_core/src/bin/spcs_probe.rs +144 -0
  16. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/error.rs +6 -0
  17. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/json_parser.rs +94 -11
  18. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/mod.rs +5 -1
  19. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/prefetch.rs +5 -1
  20. snowflake_connector_python-5.0.0b4/sf_core/src/compression.rs +177 -0
  21. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/config_manager.rs +193 -124
  22. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/connection_config.rs +161 -8
  23. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/param_registry.rs +128 -0
  24. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/resolver.rs +4 -0
  25. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/rest_parameters.rs +248 -9
  26. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/cache.rs +95 -59
  27. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/error.rs +6 -0
  28. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/validator.rs +2 -2
  29. snowflake_connector_python-5.0.0b4/sf_core/src/diagnostic/mod.rs +798 -0
  30. snowflake_connector_python-5.0.0b4/sf_core/src/file_manager/azure_transfer.rs +1829 -0
  31. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/cloud_http.rs +103 -19
  32. snowflake_connector_python-5.0.0b4/sf_core/src/file_manager/encryption.rs +558 -0
  33. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/gcs_transfer.rs +173 -78
  34. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/mod.rs +600 -64
  35. snowflake_connector_python-5.0.0b4/sf_core/src/file_manager/multipart.rs +366 -0
  36. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/s3_transfer.rs +224 -37
  37. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/types.rs +164 -6
  38. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/lib.rs +1 -0
  39. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/apis/database_driver_v1/converter.rs +23 -51
  40. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/apis/database_driver_v1/mod.rs +78 -20
  41. snowflake_connector_python-5.0.0b4/sf_core/src/protobuf/c_api.rs +254 -0
  42. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/mod.rs +71 -1
  43. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/client_credentials.rs +60 -6
  44. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/query_response.rs +22 -12
  45. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/mod.rs +17 -8
  46. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/mod.rs +1 -0
  47. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/put_get.rs +46 -0
  48. snowflake_connector_python-5.0.0b4/sf_core/tests/common/mocks/query.rs +98 -0
  49. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/snowflake_test_client.rs +10 -0
  50. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/bridge.py +107 -0
  51. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/__init__.py +39 -0
  52. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/_async.py +47 -0
  53. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/_common.py +62 -0
  54. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/_init.py +65 -0
  55. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/_performance.py +50 -0
  56. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/api_client/c_api/_sync.py +44 -0
  57. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/api_client/client_api.py +12 -4
  58. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/binding_converters.py +198 -62
  59. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection_config_mixin.py +4 -6
  60. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/base.py +84 -28
  61. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/decorators.py +51 -9
  62. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.cpp +217 -90
  63. snowflake_connector_python-5.0.0b4/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +344 -0
  64. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.pyi +92 -7
  65. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_services.py +33 -0
  66. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/telemetry.py +14 -4
  67. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/write_pandas_operation.py +5 -1
  68. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/cursor/_base.py +87 -32
  69. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/connection_config.py +27 -0
  70. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/constants.py +7 -0
  71. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/cursor/_base.py +98 -36
  72. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/version.py +1 -1
  73. snowflake_connector_python-5.0.0b3/sf_core/src/compression.rs +0 -79
  74. snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/azure_transfer.rs +0 -1048
  75. snowflake_connector_python-5.0.0b3/sf_core/src/file_manager/encryption.rs +0 -438
  76. snowflake_connector_python-5.0.0b3/sf_core/src/protobuf/c_api.rs +0 -115
  77. snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/api_client/bridge.py +0 -48
  78. snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/api_client/c_api.py +0 -187
  79. snowflake_connector_python-5.0.0b3/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +0 -340
  80. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/.gitignore +0 -0
  81. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/Cargo.toml +0 -0
  82. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/README.md +0 -0
  83. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/build_common.rs +0 -0
  84. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/error_trace/Cargo.toml +0 -0
  85. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/error_trace/src/lib.rs +0 -0
  86. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/error_trace_derive/Cargo.toml +0 -0
  87. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/error_trace_derive/src/lib.rs +0 -0
  88. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/hatch_build.py +0 -0
  89. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/Cargo.lock +0 -0
  90. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/Cargo.toml +0 -0
  91. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/README.md +0 -0
  92. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generator.rs +0 -0
  93. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/helpers.rs +0 -0
  94. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/java_generator.rs +0 -0
  95. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/json_generator.rs +0 -0
  96. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/mod.rs +0 -0
  97. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/python_generator.rs +0 -0
  98. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/generators/rust_generator.rs +0 -0
  99. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/lib.rs +0 -0
  100. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/main.rs +0 -0
  101. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/protobuf.rs +0 -0
  102. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_generator/src/protoc_installer.rs +0 -0
  103. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_utils/Cargo.toml +0 -0
  104. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/proto_utils/src/lib.rs +0 -0
  105. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/CHANGELOG.md +0 -0
  106. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/README.md +0 -0
  107. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/benches/prefetch_bench.rs +0 -0
  108. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/build.rs +0 -0
  109. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/alter_session_parser.rs +0 -0
  110. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/async_query_registry.rs +0 -0
  111. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/database.rs +0 -0
  112. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/error.rs +0 -0
  113. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/global_state.rs +0 -0
  114. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/heartbeat.rs +0 -0
  115. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/logout.rs +0 -0
  116. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/multistatement.rs +0 -0
  117. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/spcs_token.rs +0 -0
  118. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/database_driver_v1/validation.rs +0 -0
  119. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/apis/mod.rs +0 -0
  120. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/arrow_utils.rs +0 -0
  121. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/bin/README.md +0 -0
  122. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/bin/collect_chunk_data.rs +0 -0
  123. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/bin/param_defs_export.rs +0 -0
  124. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/bin/tls_client.rs +0 -0
  125. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/c_api.rs +0 -0
  126. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/arrow_parser.rs +0 -0
  127. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/http_downloader.rs +0 -0
  128. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/memory_budget.rs +0 -0
  129. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/chunks/mock.rs +0 -0
  130. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/compression_types.rs +0 -0
  131. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/configured_redirect_uri.rs +0 -0
  132. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/ini_loader.rs +0 -0
  133. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/logging_config_loader.rs +0 -0
  134. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/logout.rs +0 -0
  135. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/mod.rs +0 -0
  136. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/param_store.rs +0 -0
  137. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/path_resolver.rs +0 -0
  138. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/retry.rs +0 -0
  139. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/settings.rs +0 -0
  140. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/config/toml_loader.rs +0 -0
  141. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/certificate_parser.rs +0 -0
  142. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/config.rs +0 -0
  143. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/disk_tests.rs +0 -0
  144. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/integration_test.rs +0 -0
  145. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/mod.rs +0 -0
  146. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/crl/worker.rs +0 -0
  147. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/file_manager/path_expansion.rs +0 -0
  148. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/fs_adapter.rs +0 -0
  149. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/handle_manager.rs +0 -0
  150. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/http/mod.rs +0 -0
  151. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/http/retry.rs +0 -0
  152. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/c_api.rs +0 -0
  153. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/callback_layer.rs +0 -0
  154. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/error.rs +0 -0
  155. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/log_manager.rs +0 -0
  156. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/mod.rs +0 -0
  157. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/logging/opentelemetry.rs +0 -0
  158. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/perf_timing/c_api.rs +0 -0
  159. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/perf_timing/mod.rs +0 -0
  160. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/apis/mod.rs +0 -0
  161. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/config_setting_ext.rs +0 -0
  162. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/generated.rs +0 -0
  163. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/protobuf/mod.rs +0 -0
  164. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/query_types.rs +0 -0
  165. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/refresh.rs +0 -0
  166. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/mod.rs +0 -0
  167. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/async_exec.rs +0 -0
  168. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/auth.rs +0 -0
  169. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/error.rs +0 -0
  170. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/external_browser.rs +0 -0
  171. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/heartbeat.rs +0 -0
  172. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/logout.rs +0 -0
  173. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/native_okta.rs +0 -0
  174. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/authorization_code.rs +0 -0
  175. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/dpop.rs +0 -0
  176. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/error.rs +0 -0
  177. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/http_client.rs +0 -0
  178. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/loopback_server.rs +0 -0
  179. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/mod.rs +0 -0
  180. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/pkce.rs +0 -0
  181. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/oauth/token.rs +0 -0
  182. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/prompt_lock.rs +0 -0
  183. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/query_request.rs +0 -0
  184. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/sql_state.rs +0 -0
  185. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/rest/snowflake/telemetry.rs +0 -0
  186. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/sensitive.rs +0 -0
  187. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/stage_binding.rs +0 -0
  188. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/environment.rs +0 -0
  189. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/os_details.rs +0 -0
  190. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/platform_detection/aws.rs +0 -0
  191. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/platform_detection/azure.rs +0 -0
  192. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/platform_detection/gcp.rs +0 -0
  193. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/platform_detection/mod.rs +0 -0
  194. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/platform_detection/tests.rs +0 -0
  195. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/serialization.rs +0 -0
  196. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/snowflake_exporter.rs +0 -0
  197. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/snowflake_processor.rs +0 -0
  198. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/telemetry/types.rs +0 -0
  199. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/client.rs +0 -0
  200. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/config.rs +0 -0
  201. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/crl_verifier.rs +0 -0
  202. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/error.rs +0 -0
  203. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/mod.rs +0 -0
  204. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/revocation.rs +0 -0
  205. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/test_helpers.rs +0 -0
  206. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/tls/x509_utils.rs +0 -0
  207. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/token_cache/file_cache.rs +0 -0
  208. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/token_cache/keyring_cache.rs +0 -0
  209. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/src/token_cache/mod.rs +0 -0
  210. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/arrow_deserialize.rs +0 -0
  211. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/arrow_deserialize_macro/Cargo.toml +0 -0
  212. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/arrow_deserialize_macro/src/lib.rs +0 -0
  213. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/arrow_extract_value.rs +0 -0
  214. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/arrow_result_helper.rs +0 -0
  215. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/cloud_gating.rs +0 -0
  216. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/config.rs +0 -0
  217. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/file_utils.rs +0 -0
  218. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/auth.rs +0 -0
  219. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/external_browser.rs +0 -0
  220. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/mfa.rs +0 -0
  221. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/oauth.rs +0 -0
  222. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/okta.rs +0 -0
  223. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/password.rs +0 -0
  224. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mocks/session.rs +0 -0
  225. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/mod.rs +0 -0
  226. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/private_key_helper.rs +0 -0
  227. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/put_get_common.rs +0 -0
  228. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/test_server.rs +0 -0
  229. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/test_utils.rs +0 -0
  230. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/sf_core/tests/common/tls_proxy.rs +0 -0
  231. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/__init__.py +0 -0
  232. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_common/__init__.py +0 -0
  233. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/__init__.py +0 -0
  234. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/_private_key_helper.py +0 -0
  235. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/api_client/__init__.py +0 -0
  236. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/arrow_context.py +0 -0
  237. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/arrow_stream_async.py +0 -0
  238. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/arrow_stream_iterator.pyi +0 -0
  239. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/arrow_stream_utils.py +0 -0
  240. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/backward_compatibility.py +0 -0
  241. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/config_utils.py +0 -0
  242. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/__init__.py +0 -0
  243. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/connection.py +0 -0
  244. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/connection_types.py +0 -0
  245. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/constants.py +0 -0
  246. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/decorators.py +0 -0
  247. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/freezable_proxy.py +0 -0
  248. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/connection/queries.py +0 -0
  249. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/__init__.py +0 -0
  250. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/cursor_types.py +0 -0
  251. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/decorators.py +0 -0
  252. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/query_result.py +0 -0
  253. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/query_result_waiter.py +0 -0
  254. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/result_metadata.py +0 -0
  255. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/cursor/result_set_wrapper.py +0 -0
  256. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/errorcode.py +0 -0
  257. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/errorhandler.py +0 -0
  258. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/extras.py +0 -0
  259. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/logging.py +0 -0
  260. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/logout_config_mapping.py +0 -0
  261. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  262. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  263. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.cpp +0 -0
  264. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.hpp +0 -0
  265. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  266. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  267. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  268. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  269. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  270. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  271. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.cpp +0 -0
  272. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.hpp +0 -0
  273. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.cpp +0 -0
  274. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.hpp +0 -0
  275. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.cpp +0 -0
  276. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.hpp +0 -0
  277. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  278. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  279. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
  280. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
  281. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  282. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  283. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  284. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  285. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  286. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  287. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  288. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  289. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  290. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
  291. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
  292. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  293. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  294. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  295. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  296. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  297. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  298. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  299. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  300. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  301. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  302. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  303. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  304. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  305. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  306. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  307. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  308. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  309. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  310. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  311. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  312. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.pyx +0 -0
  313. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  314. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  315. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  316. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  317. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  318. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  319. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  320. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  321. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  322. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  323. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  324. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  325. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  326. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  327. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  328. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  329. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  330. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  331. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  332. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  333. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  334. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  335. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  336. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  337. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  338. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  339. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  340. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  341. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  342. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  343. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  344. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  345. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  346. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  347. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  348. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  349. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  350. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  351. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  352. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.cpp +0 -0
  353. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.hpp +0 -0
  354. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/protobuf_gen/__init__.py +0 -0
  355. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/protobuf_gen/proto_exception.py +0 -0
  356. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/result_batch.py +0 -0
  357. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/snow_logging.py +0 -0
  358. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/snowflake_restful.py +0 -0
  359. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/sqlstate.py +0 -0
  360. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/statement_utils.py +0 -0
  361. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/status_codes.py +0 -0
  362. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/text_utils.py +0 -0
  363. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/_internal/type_codes.py +0 -0
  364. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/README.md +0 -0
  365. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/__init__.py +0 -0
  366. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/connection/__init__.py +0 -0
  367. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/connection/_connection.py +0 -0
  368. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/connection/_freezable_proxy.py +0 -0
  369. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/cursor/__init__.py +0 -0
  370. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/cursor/_dict_cursor.py +0 -0
  371. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/cursor/_result_set_wrapper.py +0 -0
  372. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/cursor/_snowflake_cursor.py +0 -0
  373. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/aio/result_batch.py +0 -0
  374. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/auth/__init__.py +0 -0
  375. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/auth/workload_identity.py +0 -0
  376. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/compat.py +0 -0
  377. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/config_manager.py +0 -0
  378. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/connection/__init__.py +0 -0
  379. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/connection/_connection.py +0 -0
  380. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/connection/_freezable_proxy.py +0 -0
  381. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/cursor/__init__.py +0 -0
  382. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/cursor/_dict_cursor.py +0 -0
  383. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/cursor/_result_set_wrapper.py +0 -0
  384. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/cursor/_snowflake_cursor.py +0 -0
  385. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/description.py +0 -0
  386. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/errors.py +0 -0
  387. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/pandas_tools.py +0 -0
  388. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/py.typed +0 -0
  389. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/result_batch.py +0 -0
  390. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/telemetry.py +0 -0
  391. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/time_util.py +0 -0
  392. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/types.py +0 -0
  393. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/src/snowflake/connector/util_text.py +0 -0
  394. {snowflake_connector_python-5.0.0b3 → snowflake_connector_python-5.0.0b4}/tests/README.md +0 -0
@@ -4834,6 +4834,7 @@ dependencies = [
4834
4834
  "aws-lc-rs",
4835
4835
  "aws-sdk-s3",
4836
4836
  "aws-sdk-sts",
4837
+ "aws-smithy-types",
4837
4838
  "axum",
4838
4839
  "base64 0.22.1",
4839
4840
  "brotli",
@@ -4854,6 +4855,8 @@ dependencies = [
4854
4855
  "hex",
4855
4856
  "html-escape",
4856
4857
  "http 1.3.1",
4858
+ "http-body 1.0.1",
4859
+ "http-body-util",
4857
4860
  "infer",
4858
4861
  "jwt",
4859
4862
  "keyring",
@@ -4869,6 +4872,7 @@ dependencies = [
4869
4872
  "opentelemetry-semantic-conventions",
4870
4873
  "opentelemetry_sdk",
4871
4874
  "os_info",
4875
+ "pin-project-lite",
4872
4876
  "pprof",
4873
4877
  "prost 0.14.1",
4874
4878
  "proto_generator",
@@ -4881,6 +4885,7 @@ dependencies = [
4881
4885
  "rustls-native-certs 0.8.1",
4882
4886
  "rustls-pemfile 2.2.0",
4883
4887
  "rustls-webpki 0.102.8",
4888
+ "scopeguard",
4884
4889
  "serde",
4885
4890
  "serde_json",
4886
4891
  "sf_core",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-connector-python
3
- Version: 5.0.0b3
3
+ Version: 5.0.0b4
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
@@ -345,8 +345,36 @@ message ConnectionGetObjectsRequest {
345
345
  optional string column_name = 7;
346
346
  }
347
347
 
348
+ // ConnectionGetObjects returns a result set (streaming, via result_set_get_stream)
349
+ // containing a nested ADBC-shaped Arrow batch:
350
+ // catalog_name: utf8
351
+ // catalog_db_schemas: list<struct<
352
+ // db_schema_name: utf8,
353
+ // db_schema_tables: list<struct<
354
+ // table_name: utf8,
355
+ // table_type: utf8,
356
+ // table_columns: list (always empty in this impl),
357
+ // table_constraints: list (always empty in this impl)
358
+ // >>
359
+ // >>
360
+ //
361
+ // depth constants:
362
+ // 0 = ALL (not used)
363
+ // 1 = CATALOGS -> populates only catalog_name
364
+ // 2 = DB_SCHEMAS -> populates catalog_name + db_schema_name
365
+ // 3 = TABLES -> populates down to table_name/table_type
366
+ // 4 = COLUMNS -> deferred (not implemented yet)
367
+ //
368
+ // Filter semantics (search patterns, ADBC + backslash-escape extension):
369
+ // - NULL filter = no filter (account-wide or connection-context if
370
+ // CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX is set)
371
+ // - empty string "" = matches nothing (returns empty result)
372
+ // - % = any sequence, _ = any single char
373
+ // - \%, \_, \\ = literal %, _, \ (escape extension, not in ADBC spec)
374
+ // - Matching is case-insensitive (Snowflake unquoted-identifier semantics)
348
375
  message ConnectionGetObjectsResponse {
349
- bytes objects_data = 1;
376
+ ResultSetHandle result_set_handle = 1;
377
+ ResultSetDescriptor result_descriptor = 2;
350
378
  }
351
379
 
352
380
  message ConnectionGetTableSchemaRequest {
@@ -398,6 +426,14 @@ message ConnectionUseDatabaseRequest {
398
426
  message ConnectionUseDatabaseResponse {
399
427
  }
400
428
 
429
+ message ConnectionUseSchemaRequest {
430
+ ConnectionHandle conn_handle = 1;
431
+ string schema = 2;
432
+ }
433
+
434
+ message ConnectionUseSchemaResponse {
435
+ }
436
+
401
437
  message ConnectionSetSessionParametersRequest {
402
438
  ConnectionHandle conn_handle = 1;
403
439
  map<string, string> parameters = 2;
@@ -550,6 +586,7 @@ message PrepareResult {
550
586
  string query = 6;
551
587
  optional string sql_state = 7;
552
588
  bool array_bind_supported = 8;
589
+ repeated ColumnMetadata binds = 9;
553
590
  }
554
591
 
555
592
  message StatementPrepareRequest {
@@ -804,6 +841,10 @@ message ConfigGetPathsResponse {
804
841
  message TelemetrySendApiUsageRequest {
805
842
  ConnectionHandle conn_handle = 1;
806
843
  string api_method = 2;
844
+ // Names of the arguments the caller explicitly passed to the API method.
845
+ // Names only — never argument values, and parameters left at their default
846
+ // are omitted. Used to learn which optional fields callers actually exercise.
847
+ repeated string passed_arguments = 3;
807
848
  }
808
849
 
809
850
  message TelemetrySendWrapperErrorRequest {
@@ -840,6 +881,7 @@ service DatabaseDriver {
840
881
  rpc ConnectionRollback(ConnectionRollbackRequest) returns (ConnectionRollbackResponse);
841
882
  rpc ConnectionSetAutocommit(ConnectionSetAutocommitRequest) returns (ConnectionSetAutocommitResponse);
842
883
  rpc ConnectionUseDatabase(ConnectionUseDatabaseRequest) returns (ConnectionUseDatabaseResponse);
884
+ rpc ConnectionUseSchema(ConnectionUseSchemaRequest) returns (ConnectionUseSchemaResponse);
843
885
  // sets initial session parameters connection should be initialized with
844
886
  // call before opening the connection
845
887
  rpc ConnectionSetSessionParameters(ConnectionSetSessionParametersRequest) returns (ConnectionSetSessionParametersResponse);
@@ -238,7 +238,11 @@ dependencies = [
238
238
  "protobuf>=6.32.1",
239
239
  "pytz",
240
240
  "tomlkit>=0.13",
241
- "numpy>=2.1.0",
241
+ # Cap < 2.3 to match the mypy `python_version = "3.10"` target: numpy 2.3
242
+ # dropped 3.10 and its stubs use PEP-695 `type` statements mypy rejects
243
+ # under a 3.10 target. A real 3.10 install resolves numpy <= 2.2, so this is
244
+ # the numpy we should type-check against.
245
+ "numpy>=2.1.0,<2.3",
242
246
  ]
243
247
 
244
248
  [tool.hatch.envs.precommit.env-vars]
@@ -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
+ auth_spcs_e2e = []
18
19
  gcs_e2e = []
19
20
  perf_timing = []
20
21
  test-utils = []
@@ -51,6 +52,10 @@ oauth2 = { version = "5", features = ["timing-resistant-secret-traits"] }
51
52
  axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "query"] }
52
53
  webbrowser = "1"
53
54
  http = "1"
55
+ http-body = "1"
56
+ http-body-util = "0.1"
57
+ pin-project-lite = "0.2"
58
+ tempfile = "3.21.0"
54
59
  infer = "0.19.0"
55
60
 
56
61
  # Proto
@@ -62,6 +67,9 @@ aws-sdk-s3 = "1.103.0"
62
67
  aws-sdk-sts = "1.86.0"
63
68
  aws-config = "1.8.5"
64
69
  aws-credential-types = "1.2.5"
70
+ # Enables `ByteStream::from_body_1_x` so the S3 PUT path can stream a custom
71
+ # (lazily-encrypting) http-body without buffering ciphertext.
72
+ aws-smithy-types = { version = "1.3", features = ["http-body-1-x"] }
65
73
  snafu = "0.8.7"
66
74
  error_trace = { path = "../error_trace" }
67
75
  fs2 = "0.4"
@@ -110,7 +118,6 @@ libc = "0.2"
110
118
  sf_core = { path = ".", default-features = false, features = ["test-utils"] }
111
119
  tokio = { version = "1.47.1", features = ["fs", "test-util"] }
112
120
  opentelemetry_sdk = { version = "0.30.0", default-features = false, features = ["experimental_metrics_custom_reader"] }
113
- tempfile = "3.21.0"
114
121
  arrow_deserialize_macro = { path = "tests/common/arrow_deserialize_macro" }
115
122
  bzip2 = "0.6.0"
116
123
  brotli = "8.0.2"
@@ -123,6 +130,7 @@ tokio-rustls = "0.26"
123
130
  tracing-test = { version = "0.2", features = ["no-env-filter"] }
124
131
  criterion = { version = "0.5", features = ["async_tokio"] }
125
132
  temp-env = { version = "0.3.6", features = ["async_closure"] }
133
+ scopeguard = "1.2"
126
134
 
127
135
  [target.'cfg(not(target_os = "windows"))'.dev-dependencies]
128
136
  pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
@@ -185,6 +193,11 @@ required-features = ["cli"]
185
193
  name = "param_defs_export"
186
194
  path = "src/bin/param_defs_export.rs"
187
195
 
196
+ [[bin]]
197
+ name = "spcs_probe"
198
+ path = "src/bin/spcs_probe.rs"
199
+ required-features = ["protobuf"]
200
+
188
201
  [[bench]]
189
202
  name = "prefetch_bench"
190
203
  harness = false
@@ -4,6 +4,8 @@
4
4
  EXPORTS
5
5
  sf_core_init
6
6
  sf_core_api_call_proto
7
+ sf_core_api_call_proto_async
8
+ sf_core_api_cancel
7
9
  sf_core_free_buffer
8
10
  sf_core_perf_enabled
9
11
  sf_core_get_perf_data
@@ -23,7 +23,7 @@ use super::validation::{
23
23
  validate_session_override_write,
24
24
  };
25
25
  use crate::config::ParamStore;
26
- use crate::config::connection_config::ConnectionConfig;
26
+ use crate::config::connection_config::{ConnectionConfig, DiagnosticConfig};
27
27
  use crate::config::logout::LogoutConfig;
28
28
  use crate::config::param_registry::{
29
29
  DEFAULT_PUT_GET_MAX_ATTEMPTS, ParamKey, ParamScope, param_names,
@@ -34,6 +34,7 @@ use crate::config::rest_parameters::{
34
34
  resolve_log_query_parameters, resolve_log_query_text,
35
35
  };
36
36
  use crate::config::retry::RetryPolicy;
37
+ use crate::diagnostic::DiagnosticRunner;
37
38
  use crate::handle_manager::Handle;
38
39
  use crate::rest::snowflake::{
39
40
  self, QueryExecutionMode, QueryInput, RestError, SessionTokens, SnowflakeResponseError,
@@ -42,6 +43,18 @@ use crate::rest::snowflake::{
42
43
  use crate::sensitive::SensitiveString;
43
44
  use crate::token_cache::TokenCache;
44
45
 
46
+ /// Whether `execute_session_sql` should refresh the connection's local
47
+ /// session-state cache (`session_parameters`, `final_session_names`) from
48
+ /// the response after a successful query.
49
+ #[derive(Copy, Clone, Debug)]
50
+ enum SessionStateRefresh {
51
+ /// SQL may change session state (e.g. `ALTER SESSION SET`, `USE DATABASE`).
52
+ Apply,
53
+ /// SQL is non-stateful from the session's perspective (e.g. `COMMIT`,
54
+ /// `ROLLBACK`).
55
+ Skip,
56
+ }
57
+
45
58
  impl DatabaseDriverV1 {
46
59
  /// Set autocommit on the given connection.
47
60
  ///
@@ -62,7 +75,8 @@ impl DatabaseDriverV1 {
62
75
  } else {
63
76
  "ALTER SESSION SET AUTOCOMMIT = FALSE"
64
77
  };
65
- self.execute_session_sql(&conn, sql).await
78
+ self.execute_session_sql(&conn, sql, SessionStateRefresh::Apply)
79
+ .await
66
80
  } else {
67
81
  conn.init_session_parameters
68
82
  .get_or_insert_with(HashMap::new)
@@ -92,8 +106,7 @@ impl DatabaseDriverV1 {
92
106
  }
93
107
  .fail();
94
108
  }
95
- // TODO: ensure that this is correct escaping
96
- let escaped = db.replace('"', "\"\"");
109
+ let escaped = escape_sql_identifier(db);
97
110
  let sql = format!("USE DATABASE \"{escaped}\"");
98
111
 
99
112
  match self.connections.get_obj(conn_handle) {
@@ -106,7 +119,89 @@ impl DatabaseDriverV1 {
106
119
  }
107
120
  .fail();
108
121
  }
109
- self.execute_session_sql(&conn, &sql).await
122
+ self.execute_session_sql(&conn, &sql, SessionStateRefresh::Apply)
123
+ .await
124
+ }
125
+ None => InvalidArgumentSnafu {
126
+ argument: "Connection handle not found".to_string(),
127
+ }
128
+ .fail(),
129
+ }
130
+ }
131
+
132
+ /// Commit the open transaction on the given connection by executing `COMMIT`.
133
+ /// Must only be called after the connection is initialised (`is_post_connect()`).
134
+ pub async fn connection_commit(&self, conn_handle: Handle) -> Result<(), ApiError> {
135
+ self.execute_transaction_control(conn_handle, "COMMIT")
136
+ .await
137
+ }
138
+
139
+ /// Roll back the open transaction on the given connection by executing `ROLLBACK`.
140
+ /// Must only be called after the connection is initialised (`is_post_connect()`).
141
+ pub async fn connection_rollback(&self, conn_handle: Handle) -> Result<(), ApiError> {
142
+ self.execute_transaction_control(conn_handle, "ROLLBACK")
143
+ .await
144
+ }
145
+
146
+ /// Shared implementation for `connection_commit` / `connection_rollback`:
147
+ /// run the transaction-control statement on the connection's session.
148
+ async fn execute_transaction_control(
149
+ &self,
150
+ conn_handle: Handle,
151
+ sql: &str,
152
+ ) -> Result<(), ApiError> {
153
+ match self.connections.get_obj(conn_handle) {
154
+ Some(conn_ptr) => {
155
+ let conn = conn_ptr.lock().await;
156
+ if !conn.is_post_connect() {
157
+ return InvalidArgumentSnafu {
158
+ argument: format!("{sql} called before connection is open"),
159
+ }
160
+ .fail();
161
+ }
162
+ // COMMIT/ROLLBACK do not change session parameters or
163
+ // current database/schema/warehouse/role, so skip the
164
+ // session-state cache refresh.
165
+ self.execute_session_sql(&conn, sql, SessionStateRefresh::Skip)
166
+ .await
167
+ }
168
+ None => InvalidArgumentSnafu {
169
+ argument: "Connection handle not found".to_string(),
170
+ }
171
+ .fail(),
172
+ }
173
+ }
174
+
175
+ /// Execute `USE SCHEMA "<name>"` or `USE SCHEMA "<db>"."<name>"` when a session database is set.
176
+ /// Schema and database names are escaped (internal `"` doubled).
177
+ /// Must only be called after the connection is initialised (`is_post_connect()`).
178
+ pub async fn connection_use_schema(
179
+ &self,
180
+ conn_handle: Handle,
181
+ schema: &str,
182
+ ) -> Result<(), ApiError> {
183
+ let schema = schema.trim();
184
+ if schema.is_empty() {
185
+ return InvalidArgumentSnafu {
186
+ argument: "schema name must not be empty".to_string(),
187
+ }
188
+ .fail();
189
+ }
190
+
191
+ match self.connections.get_obj(conn_handle) {
192
+ Some(conn_ptr) => {
193
+ let conn = conn_ptr.lock().await;
194
+ if !conn.is_post_connect() {
195
+ return InvalidArgumentSnafu {
196
+ argument: "connection_use_schema called before connection is open"
197
+ .to_string(),
198
+ }
199
+ .fail();
200
+ }
201
+ let database = resolve_session_database(&conn)?;
202
+ let sql = build_use_schema_sql(database.as_deref(), schema);
203
+ self.execute_session_sql(&conn, &sql, SessionStateRefresh::Apply)
204
+ .await
110
205
  }
111
206
  None => InvalidArgumentSnafu {
112
207
  argument: "Connection handle not found".to_string(),
@@ -116,7 +211,20 @@ impl DatabaseDriverV1 {
116
211
  }
117
212
 
118
213
  /// Execute a session-scoped SQL command without creating a statement.
119
- async fn execute_session_sql(&self, conn: &Connection, sql: &str) -> Result<(), ApiError> {
214
+ ///
215
+ /// `refresh` controls whether the local session-state cache
216
+ /// (`session_parameters`, `final_session_names`) is refreshed from the
217
+ /// response after a successful query. Pass `Apply` for SQL that may
218
+ /// change session state (e.g. `ALTER SESSION SET`, `USE DATABASE`); pass
219
+ /// `Skip` for SQL that is non-stateful from the session's perspective
220
+ /// (e.g. `COMMIT`, `ROLLBACK`) to avoid taking the cache write locks
221
+ /// for a no-op merge.
222
+ async fn execute_session_sql(
223
+ &self,
224
+ conn: &Connection,
225
+ sql: &str,
226
+ refresh: SessionStateRefresh,
227
+ ) -> Result<(), ApiError> {
120
228
  let query_input = QueryInput {
121
229
  sql: sql.to_string(),
122
230
  bindings: None,
@@ -150,7 +258,7 @@ impl DatabaseDriverV1 {
150
258
  }
151
259
  }?;
152
260
 
153
- if response.success {
261
+ if response.success && matches!(refresh, SessionStateRefresh::Apply) {
154
262
  conn.update_session_params_cache(
155
263
  sql,
156
264
  response.data.parameters.as_ref(),
@@ -265,6 +373,24 @@ impl DatabaseDriverV1 {
265
373
  read_spcs_token(self.fs_adapter().as_ref()),
266
374
  );
267
375
 
376
+ // ---- Diagnostics: pre-connect -----------------------------------
377
+ let mut diag_runner = if let DiagnosticConfig::Enabled { .. } = config.diagnostic {
378
+ let account = config.server.account.clone();
379
+ // resolve_options() already ran derive_host_from_account, so host
380
+ // is Some whenever account is set; the empty-string fallback is unreachable.
381
+ let host_str = host.clone().unwrap_or_default();
382
+ let diag_cfg = config.diagnostic.clone();
383
+ tokio::task::spawn_blocking(move || {
384
+ let mut runner = DiagnosticRunner::new(&account, &host_str, diag_cfg);
385
+ runner.run_pre_connect();
386
+ runner
387
+ })
388
+ .await
389
+ .ok()
390
+ } else {
391
+ None
392
+ };
393
+
268
394
  let token_caching_requested = matches!(
269
395
  &login_parameters.login_method,
270
396
  LoginMethod::UserPasswordMfa {
@@ -304,8 +430,19 @@ impl DatabaseDriverV1 {
304
430
  token_cache.map(|c| c as &dyn TokenCache),
305
431
  Some(&self.prompt_locks),
306
432
  )
307
- .await
308
- .context(LoginSnafu)?;
433
+ .await;
434
+
435
+ // ---- Diagnostics: post-connect ----------------------------------
436
+ if let Some(mut runner) = diag_runner.take() {
437
+ tokio::task::spawn_blocking(move || {
438
+ runner.run_post_connect(None);
439
+ runner.write_report();
440
+ })
441
+ .await
442
+ .ok();
443
+ }
444
+
445
+ let login_result = login_result.context(LoginSnafu)?;
309
446
 
310
447
  // Initialize connection with session parameters from login response.
311
448
  // The server returns system-level parameters but may not echo back
@@ -1465,6 +1602,34 @@ fn get_session_or_setting(
1465
1602
  resolved_or_seed_string(conn, setting_key)
1466
1603
  }
1467
1604
 
1605
+ // TODO: ensure that this is correct escaping
1606
+ fn escape_sql_identifier(name: &str) -> String {
1607
+ name.replace('"', "\"\"")
1608
+ }
1609
+
1610
+ fn build_use_schema_sql(database: Option<&str>, schema: &str) -> String {
1611
+ let escaped_schema = escape_sql_identifier(schema);
1612
+ match database.filter(|db| !db.is_empty()) {
1613
+ Some(db) => {
1614
+ let escaped_db = escape_sql_identifier(db);
1615
+ format!("USE SCHEMA \"{escaped_db}\".\"{escaped_schema}\"")
1616
+ }
1617
+ None => format!("USE SCHEMA \"{escaped_schema}\""),
1618
+ }
1619
+ }
1620
+
1621
+ fn resolve_session_database(conn: &Connection) -> Result<Option<String>, ApiError> {
1622
+ let final_names = conn
1623
+ .final_session_names
1624
+ .read()
1625
+ .map_err(|_| ConnectionLockingSnafu {}.build())?;
1626
+ Ok(final_names
1627
+ .database
1628
+ .clone()
1629
+ .or_else(|| get_session_or_setting(conn, "DATABASE", param_names::DATABASE))
1630
+ .filter(|db| !db.is_empty()))
1631
+ }
1632
+
1468
1633
  impl DatabaseDriverV1 {
1469
1634
  /// Get connection information for the given connection handle
1470
1635
  pub async fn connection_get_info(
@@ -2187,6 +2352,30 @@ mod tests {
2187
2352
  assert_eq!(get_connection_seed_string(&conn, param_names::PORT), None);
2188
2353
  }
2189
2354
 
2355
+ #[test]
2356
+ fn build_use_schema_sql_without_database() {
2357
+ assert_eq!(
2358
+ build_use_schema_sql(None, "PUBLIC"),
2359
+ "USE SCHEMA \"PUBLIC\""
2360
+ );
2361
+ }
2362
+
2363
+ #[test]
2364
+ fn build_use_schema_sql_with_database() {
2365
+ assert_eq!(
2366
+ build_use_schema_sql(Some("TEST_DB"), "MY_SCHEMA"),
2367
+ "USE SCHEMA \"TEST_DB\".\"MY_SCHEMA\""
2368
+ );
2369
+ }
2370
+
2371
+ #[test]
2372
+ fn build_use_schema_sql_escapes_quotes() {
2373
+ assert_eq!(
2374
+ build_use_schema_sql(Some("DB\"1"), "SC\"2"),
2375
+ "USE SCHEMA \"DB\"\"1\".\"SC\"\"2\""
2376
+ );
2377
+ }
2378
+
2190
2379
  #[test]
2191
2380
  fn get_session_or_setting_prefers_session_parameter() {
2192
2381
  let conn =