snowflake-connector-python 5.0.0rc2__tar.gz → 5.0.0rc3__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.

Potentially problematic release.


This version of snowflake-connector-python might be problematic. Click here for more details.

Files changed (475) hide show
  1. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/Cargo.lock +15 -0
  2. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/Cargo.toml +1 -0
  3. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/PKG-INFO +6 -7
  4. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/README.md +3 -3
  5. snowflake_connector_python-5.0.0rc3/ci/anaconda/recipe/README.md +39 -0
  6. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/protobuf/database_driver_v1.proto +6 -0
  7. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/pyproject.toml +24 -13
  8. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/Cargo.toml +4 -1
  9. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/binary.rs +58 -0
  10. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/boolean.rs +52 -0
  11. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/converters/context.rs +24 -11
  12. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/date.rs +140 -0
  13. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/decfloat.rs +196 -0
  14. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/converters/decode.rs +12 -12
  15. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/mod.rs +65 -0
  16. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/number.rs +263 -0
  17. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/real.rs +52 -0
  18. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/test_util.rs +131 -0
  19. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/text.rs +70 -0
  20. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/time.rs +185 -0
  21. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/timestamp_ntz.rs +238 -0
  22. snowflake_connector_python-5.0.0rc3/python_bridge/src/arrow/converters/util.rs +170 -0
  23. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/error.rs +0 -101
  24. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/mod.rs +0 -3
  25. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/plan.rs +37 -3
  26. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/stream.rs +0 -4
  27. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/test_support.rs +0 -2
  28. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/lib.rs +107 -13
  29. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/CHANGELOG.md +12 -0
  30. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/Cargo.toml +1 -0
  31. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/benches/prefetch_bench.rs +10 -6
  32. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/connection.rs +678 -160
  33. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/database.rs +28 -3
  34. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/error_kind.rs +68 -0
  35. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/get_objects.rs +19 -11
  36. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/global_state.rs +246 -9
  37. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/heartbeat.rs +1 -0
  38. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/logout.rs +60 -33
  39. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/mod.rs +2 -2
  40. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/query.rs +338 -61
  41. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/result_set.rs +398 -48
  42. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/statement.rs +61 -18
  43. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/stream_transfer.rs +26 -4
  44. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/validation.rs +9 -1
  45. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/arrow_utils.rs +32 -0
  46. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/bin/collect_chunk_data.rs +1 -0
  47. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/bin/tls_client.rs +1 -1
  48. snowflake_connector_python-5.0.0rc3/sf_core/src/chunks/async_arrow_batch_fetcher.rs +383 -0
  49. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/error.rs +5 -0
  50. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/json_parser.rs +3 -1
  51. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/mod.rs +108 -58
  52. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/prefetch.rs +90 -71
  53. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/param_store.rs +58 -0
  54. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/resolver.rs +293 -1
  55. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/rest_parameters.rs +75 -3
  56. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/env_vars.rs +5 -0
  57. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/azure_transfer.rs +95 -66
  58. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/cloud_http.rs +168 -4
  59. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/gcs_transfer.rs +98 -40
  60. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/mod.rs +882 -79
  61. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/multipart.rs +47 -3
  62. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/s3_transfer.rs +53 -44
  63. snowflake_connector_python-5.0.0rc3/sf_core/src/file_manager/scheduler.rs +380 -0
  64. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/types.rs +40 -11
  65. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/http/retry.rs +97 -11
  66. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/lib.rs +1 -0
  67. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/apis/database_driver_v1/converter.rs +6 -0
  68. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/c_api.rs +122 -28
  69. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/query_types/row_type.rs +22 -0
  70. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/async_exec.rs +47 -19
  71. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/error_context.rs +26 -1
  72. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/mod.rs +422 -39
  73. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/query_response.rs +65 -15
  74. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/telemetry.rs +1 -0
  75. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/stage_binding.rs +9 -1
  76. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/session_telemetry.rs +1 -0
  77. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/client.rs +153 -66
  78. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/config.rs +37 -9
  79. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/crl_verifier.rs +2 -2
  80. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/token_cache/file_cache.rs +52 -11
  81. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/token_cache/mod.rs +5 -2
  82. snowflake_connector_python-5.0.0rc3/sf_core/src/xp_backend/mod.rs +315 -0
  83. snowflake_connector_python-5.0.0rc3/sf_core/src/xp_backend/registry.rs +174 -0
  84. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/query.rs +12 -0
  85. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/put_get_common.rs +18 -0
  86. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_params_spec/src/lib.rs +291 -1
  87. snowflake_connector_python-5.0.0rc3/sf_types/Cargo.toml +11 -0
  88. snowflake_connector_python-5.0.0rc3/sf_types/src/binary.rs +69 -0
  89. snowflake_connector_python-5.0.0rc3/sf_types/src/boolean.rs +53 -0
  90. snowflake_connector_python-5.0.0rc3/sf_types/src/civil.rs +73 -0
  91. snowflake_connector_python-5.0.0rc3/sf_types/src/clock.rs +122 -0
  92. snowflake_connector_python-5.0.0rc3/sf_types/src/date.rs +105 -0
  93. snowflake_connector_python-5.0.0rc3/sf_types/src/decfloat.rs +301 -0
  94. snowflake_connector_python-5.0.0rc3/sf_types/src/error.rs +25 -0
  95. snowflake_connector_python-5.0.0rc3/sf_types/src/fixed.rs +107 -0
  96. snowflake_connector_python-5.0.0rc3/sf_types/src/interval.rs +190 -0
  97. snowflake_connector_python-5.0.0rc3/sf_types/src/lib.rs +57 -0
  98. snowflake_connector_python-5.0.0rc3/sf_types/src/nullable.rs +89 -0
  99. snowflake_connector_python-5.0.0rc3/sf_types/src/real.rs +122 -0
  100. snowflake_connector_python-5.0.0rc3/sf_types/src/text.rs +76 -0
  101. snowflake_connector_python-5.0.0rc3/sf_types/src/time.rs +137 -0
  102. snowflake_connector_python-5.0.0rc3/sf_types/src/timestamp.rs +677 -0
  103. snowflake_connector_python-5.0.0rc3/sf_types/src/traits.rs +34 -0
  104. snowflake_connector_python-5.0.0rc3/sf_types/src/vector.rs +155 -0
  105. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/authenticator_type.py +2 -10
  106. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/binding_converters.py +33 -12
  107. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/base.py +12 -0
  108. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/query_result.py +20 -7
  109. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/result_metadata.py +20 -15
  110. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/decorators.py +19 -6
  111. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/logout_config_mapping.py +3 -3
  112. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.cpp +71 -34
  113. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.cpp +33 -8
  114. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.cpp +17 -1
  115. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +2 -9
  116. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +7 -0
  117. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +12 -1
  118. snowflake_connector_python-5.0.0rc3/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +402 -0
  119. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.pyi +12 -1
  120. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/type_codes.py +13 -0
  121. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/cursor/_base.py +20 -3
  122. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/connection_config.py +8 -0
  123. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/__init__.py +2 -0
  124. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/_base.py +27 -8
  125. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/errors.py +8 -9
  126. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/telemetry.py +3 -0
  127. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/version.py +1 -1
  128. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/tests/README.md +2 -2
  129. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/converters/mod.rs +0 -18
  130. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/converters/test_util.rs +0 -7
  131. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/converters/util.rs +0 -80
  132. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/odbc_decode/error.rs +0 -58
  133. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/odbc_decode/mod.rs +0 -19
  134. snowflake_connector_python-5.0.0rc2/python_bridge/src/arrow/odbc_decode/traits.rs +0 -22
  135. snowflake_connector_python-5.0.0rc2/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_pb2.py +0 -402
  136. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/.gitignore +0 -0
  137. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/build_common.rs +0 -0
  138. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/error_trace/Cargo.toml +0 -0
  139. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/error_trace/src/lib.rs +0 -0
  140. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/error_trace_derive/Cargo.toml +0 -0
  141. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/error_trace_derive/src/lib.rs +0 -0
  142. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/hatch_build.py +0 -0
  143. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/Cargo.lock +0 -0
  144. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/Cargo.toml +0 -0
  145. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/README.md +0 -0
  146. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generator.rs +0 -0
  147. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/csharp_generator.rs +0 -0
  148. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/helpers.rs +0 -0
  149. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/java_generator.rs +0 -0
  150. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/json_generator.rs +0 -0
  151. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/mod.rs +0 -0
  152. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/python_generator.rs +0 -0
  153. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/generators/rust_generator.rs +0 -0
  154. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/lib.rs +0 -0
  155. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/main.rs +0 -0
  156. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/protobuf.rs +0 -0
  157. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_generator/src/protoc_installer.rs +0 -0
  158. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_utils/Cargo.toml +0 -0
  159. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/proto_utils/src/lib.rs +0 -0
  160. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/build.rs +0 -0
  161. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/batch_converter.rs +0 -0
  162. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/src/arrow/iterator.rs +0 -0
  163. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/stub_gen/Cargo.toml +0 -0
  164. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/python_bridge/stub_gen/src/main.rs +0 -0
  165. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/README.md +0 -0
  166. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/build.rs +0 -0
  167. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/exports.def +0 -0
  168. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/alter_session_parser.rs +0 -0
  169. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/async_query_registry.rs +0 -0
  170. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/error.rs +0 -0
  171. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/final_session_names.rs +0 -0
  172. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/like_pattern.rs +0 -0
  173. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/multistatement.rs +0 -0
  174. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/database_driver_v1/spcs_token.rs +0 -0
  175. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/mod.rs +0 -0
  176. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/apis/operation_ctx.rs +0 -0
  177. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/auth.rs +0 -0
  178. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/bin/README.md +0 -0
  179. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/bin/spcs_probe.rs +0 -0
  180. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/c_api.rs +0 -0
  181. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/arrow_parser.rs +0 -0
  182. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/http_downloader.rs +0 -0
  183. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/memory_budget.rs +0 -0
  184. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/chunks/mock.rs +0 -0
  185. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/compression.rs +0 -0
  186. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/compression_types.rs +0 -0
  187. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/config_manager.rs +0 -0
  188. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/configured_redirect_uri.rs +0 -0
  189. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/connection_config.rs +0 -0
  190. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/error_context.rs +0 -0
  191. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/ini_loader.rs +0 -0
  192. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/logging_config_loader.rs +0 -0
  193. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/logout.rs +0 -0
  194. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/mod.rs +0 -0
  195. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/param_registry.rs +0 -0
  196. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/path_resolver.rs +0 -0
  197. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/private_key.rs +0 -0
  198. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/retry.rs +0 -0
  199. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/settings.rs +0 -0
  200. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/token.rs +0 -0
  201. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/config/toml_loader.rs +0 -0
  202. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/cache.rs +0 -0
  203. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/certificate_parser.rs +0 -0
  204. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/config.rs +0 -0
  205. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/disk_tests.rs +0 -0
  206. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/error.rs +0 -0
  207. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/integration_test.rs +0 -0
  208. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/mod.rs +0 -0
  209. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/validator.rs +0 -0
  210. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/crl/worker.rs +0 -0
  211. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/diagnostic/mod.rs +0 -0
  212. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/encryption.rs +0 -0
  213. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/path_expansion.rs +0 -0
  214. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/file_manager/spool.rs +0 -0
  215. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/fs_adapter.rs +0 -0
  216. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/fs_lock.rs +0 -0
  217. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/handle_manager.rs +0 -0
  218. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/http/mod.rs +0 -0
  219. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/c_api.rs +0 -0
  220. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/callback_layer.rs +0 -0
  221. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/error.rs +0 -0
  222. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/log_manager.rs +0 -0
  223. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/mod.rs +0 -0
  224. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/logging/opentelemetry.rs +0 -0
  225. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/perf_timing/c_api.rs +0 -0
  226. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/perf_timing/mod.rs +0 -0
  227. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/apis/database_driver_v1/mod.rs +0 -0
  228. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/apis/mod.rs +0 -0
  229. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/config_setting_ext.rs +0 -0
  230. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/generated.rs +0 -0
  231. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/protobuf/mod.rs +0 -0
  232. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/query_types/mod.rs +0 -0
  233. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/query_types/statement_type.rs +0 -0
  234. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/refresh.rs +0 -0
  235. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/mod.rs +0 -0
  236. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/auth.rs +0 -0
  237. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/browser.rs +0 -0
  238. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/external_browser.rs +0 -0
  239. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/heartbeat.rs +0 -0
  240. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/logout.rs +0 -0
  241. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/native_okta.rs +0 -0
  242. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/authorization_code.rs +0 -0
  243. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/client_credentials.rs +0 -0
  244. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/dpop.rs +0 -0
  245. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/error.rs +0 -0
  246. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/http_client.rs +0 -0
  247. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/loopback_server.rs +0 -0
  248. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/mod.rs +0 -0
  249. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/pkce.rs +0 -0
  250. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/oauth/token.rs +0 -0
  251. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/prompt_lock.rs +0 -0
  252. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/query_context_cache.rs +0 -0
  253. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/query_request.rs +0 -0
  254. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/sql_state.rs +0 -0
  255. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/aws.rs +0 -0
  256. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/azure.rs +0 -0
  257. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/gcp.rs +0 -0
  258. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/host_allowlist.rs +0 -0
  259. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/mod.rs +0 -0
  260. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/rest/snowflake/workload_identity/oidc.rs +0 -0
  261. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/sensitive.rs +0 -0
  262. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/environment.rs +0 -0
  263. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/mod.rs +0 -0
  264. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/os_details.rs +0 -0
  265. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/platform_detection/aws.rs +0 -0
  266. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/platform_detection/azure.rs +0 -0
  267. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/platform_detection/gcp.rs +0 -0
  268. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/platform_detection/mod.rs +0 -0
  269. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/platform_detection/tests.rs +0 -0
  270. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/serialization.rs +0 -0
  271. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/session_batch.rs +0 -0
  272. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/snowflake_exporter.rs +0 -0
  273. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/snowflake_processor.rs +0 -0
  274. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/telemetry/types.rs +0 -0
  275. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/aws_http_client.rs +0 -0
  276. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/error.rs +0 -0
  277. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/mod.rs +0 -0
  278. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/revocation.rs +0 -0
  279. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/test_helpers.rs +0 -0
  280. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/tls/x509_utils.rs +0 -0
  281. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/token_cache/keyring_cache.rs +0 -0
  282. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/utils/mod.rs +0 -0
  283. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/src/utils/sync.rs +0 -0
  284. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/arrow_deserialize.rs +0 -0
  285. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/arrow_deserialize_macro/Cargo.toml +0 -0
  286. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/arrow_deserialize_macro/src/lib.rs +0 -0
  287. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/arrow_extract_value.rs +0 -0
  288. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/arrow_result_helper.rs +0 -0
  289. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/cloud_gating.rs +0 -0
  290. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/config.rs +0 -0
  291. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/connect_proxy.rs +0 -0
  292. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/dead_proxy.rs +0 -0
  293. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/file_utils.rs +0 -0
  294. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mitm_port_detector.py +0 -0
  295. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mitm_proxy.rs +0 -0
  296. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/auth.rs +0 -0
  297. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/external_browser.rs +0 -0
  298. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/mfa.rs +0 -0
  299. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/mod.rs +0 -0
  300. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/oauth.rs +0 -0
  301. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/okta.rs +0 -0
  302. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/password.rs +0 -0
  303. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/put_get.rs +0 -0
  304. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mocks/session.rs +0 -0
  305. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/mod.rs +0 -0
  306. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/private_key_helper.rs +0 -0
  307. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/snowflake_test_client.rs +0 -0
  308. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/test_server.rs +0 -0
  309. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/test_utils.rs +0 -0
  310. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_core/tests/common/tls_proxy.rs +0 -0
  311. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/sf_params_spec/Cargo.toml +0 -0
  312. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/__init__.py +0 -0
  313. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_common/__init__.py +0 -0
  314. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_common/extras.py +0 -0
  315. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_common/telemetry.py +0 -0
  316. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_common/wif_util.py +0 -0
  317. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/__init__.py +0 -0
  318. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/_private_key_helper.py +0 -0
  319. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/api_client/__init__.py +0 -0
  320. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/api_client/bridge.py +0 -0
  321. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/api_client/client_api.py +0 -0
  322. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/arrow.py +0 -0
  323. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/arrow_context.py +0 -0
  324. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/arrow_stream_async.py +0 -0
  325. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/arrow_stream_iterator.pyi +0 -0
  326. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/arrow_stream_utils.py +0 -0
  327. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/backward_compatibility.py +0 -0
  328. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/config_utils.py +0 -0
  329. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/__init__.py +0 -0
  330. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/connection.py +0 -0
  331. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/connection_types.py +0 -0
  332. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/constants.py +0 -0
  333. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/decorators.py +0 -0
  334. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/freezable_proxy.py +0 -0
  335. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection/queries.py +0 -0
  336. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/connection_config_mixin.py +0 -0
  337. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/__init__.py +0 -0
  338. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/cursor_types.py +0 -0
  339. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/decorators.py +0 -0
  340. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/query_result_waiter.py +0 -0
  341. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/cursor/result_set_wrapper.py +0 -0
  342. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/error_kinds.py +0 -0
  343. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/errorcode.py +0 -0
  344. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/errorhandler.py +0 -0
  345. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/logging/__init__.py +0 -0
  346. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/logging/config.py +0 -0
  347. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/logging/core_logger.py +0 -0
  348. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/logging/native_extension_logger.py +0 -0
  349. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  350. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  351. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ArrowTableConverter.hpp +0 -0
  352. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  353. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  354. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  355. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  356. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  357. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  358. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.cpp +0 -0
  359. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamIterator.hpp +0 -0
  360. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/CArrowStreamTableIterator.hpp +0 -0
  361. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ConverterUtil.hpp +0 -0
  362. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  363. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  364. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
  365. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
  366. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  367. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  368. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  369. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  370. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  371. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  372. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  373. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  374. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
  375. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
  376. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  377. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  378. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  379. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  380. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  381. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  382. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  383. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  384. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  385. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  386. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  387. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  388. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  389. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  390. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  391. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  392. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  393. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  394. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.cpp +0 -0
  395. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/arrow_stream_iterator.pyx +0 -0
  396. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  397. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  398. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  399. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  400. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  401. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  402. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  403. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  404. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  405. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  406. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  407. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  408. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  409. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  410. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  411. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  412. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  413. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  414. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  415. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  416. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  417. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  418. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  419. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  420. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  421. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  422. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  423. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  424. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  425. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  426. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  427. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  428. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  429. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  430. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  431. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  432. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  433. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  434. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  435. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.cpp +0 -0
  436. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/nanoarrow_cpp/Logging/logging.hpp +0 -0
  437. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/protobuf_gen/__init__.py +0 -0
  438. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/protobuf_gen/database_driver_v1_services.py +0 -0
  439. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/protobuf_gen/proto_exception.py +0 -0
  440. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/result_batch.py +0 -0
  441. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/snowflake_restful.py +0 -0
  442. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/sqlstate.py +0 -0
  443. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/statement_utils.py +0 -0
  444. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/text_utils.py +0 -0
  445. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/utils.py +0 -0
  446. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/_internal/write_pandas_operation.py +0 -0
  447. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/README.md +0 -0
  448. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/__init__.py +0 -0
  449. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/connection/__init__.py +0 -0
  450. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/connection/_connection.py +0 -0
  451. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/cursor/__init__.py +0 -0
  452. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/cursor/_dict_cursor.py +0 -0
  453. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/cursor/_result_set_wrapper.py +0 -0
  454. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/cursor/_snowflake_cursor.py +0 -0
  455. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/pandas_tools.py +0 -0
  456. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/aio/result_batch.py +0 -0
  457. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/auth/__init__.py +0 -0
  458. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/auth/workload_identity.py +0 -0
  459. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/compat.py +0 -0
  460. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/config_manager.py +0 -0
  461. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/connection/__init__.py +0 -0
  462. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/connection/_connection.py +0 -0
  463. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/constants.py +0 -0
  464. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/_chunked_download_reader.py +0 -0
  465. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/_dict_cursor.py +0 -0
  466. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/_result_set_wrapper.py +0 -0
  467. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/cursor/_snowflake_cursor.py +0 -0
  468. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/description.py +0 -0
  469. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/network.py +0 -0
  470. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/pandas_tools.py +0 -0
  471. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/py.typed +0 -0
  472. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/result_batch.py +0 -0
  473. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/time_util.py +0 -0
  474. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/types.py +0 -0
  475. {snowflake_connector_python-5.0.0rc2 → snowflake_connector_python-5.0.0rc3}/src/snowflake/connector/util_text.py +0 -0
@@ -3920,6 +3920,7 @@ version = "0.29.0"
3920
3920
  source = "registry+https://github.com/rust-lang/crates.io-index"
3921
3921
  checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
3922
3922
  dependencies = [
3923
+ "chrono",
3923
3924
  "libc",
3924
3925
  "once_cell",
3925
3926
  "portable-atomic",
@@ -3990,16 +3991,19 @@ name = "python_bridge"
3990
3991
  version = "0.1.0"
3991
3992
  dependencies = [
3992
3993
  "arrow",
3994
+ "chrono",
3993
3995
  "error_trace",
3994
3996
  "futures",
3995
3997
  "proto_utils",
3996
3998
  "pyo3",
3997
3999
  "pyo3-async-runtimes",
3998
4000
  "sf_core",
4001
+ "sf_types",
3999
4002
  "snafu 0.8.9",
4000
4003
  "tokio",
4001
4004
  "tokio-util",
4002
4005
  "tracing",
4006
+ "tracing-subscriber",
4003
4007
  ]
4004
4008
 
4005
4009
  [[package]]
@@ -4709,6 +4713,7 @@ dependencies = [
4709
4713
  "arrow",
4710
4714
  "arrow-ipc",
4711
4715
  "arrow_deserialize_macro",
4716
+ "async-trait",
4712
4717
  "aws-config",
4713
4718
  "aws-credential-types",
4714
4719
  "aws-lc-rs",
@@ -4811,6 +4816,16 @@ dependencies = [
4811
4816
  name = "sf_params_spec"
4812
4817
  version = "0.0.0"
4813
4818
 
4819
+ [[package]]
4820
+ name = "sf_types"
4821
+ version = "0.1.0"
4822
+ dependencies = [
4823
+ "arrow",
4824
+ "chrono",
4825
+ "error_trace",
4826
+ "snafu 0.8.9",
4827
+ ]
4828
+
4814
4829
  [[package]]
4815
4830
  name = "sha1"
4816
4831
  version = "0.10.6"
@@ -5,6 +5,7 @@ members = [
5
5
  "python_bridge",
6
6
  "python_bridge/stub_gen",
7
7
  "sf_params_spec",
8
+ "sf_types",
8
9
  "proto_utils",
9
10
  "error_trace",
10
11
  "error_trace_derive",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: snowflake-connector-python
3
- Version: 5.0.0rc2
3
+ Version: 5.0.0rc3
4
4
  Summary: Snowflake DB driver for Python
5
5
  Project-URL: Homepage, https://github.com/snowflakedb/drivers
6
6
  Project-URL: Bug Reports, https://github.com/snowflakedb/drivers/issues
@@ -12,16 +12,15 @@ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Apache Software License
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
18
17
  Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: Programming Language :: Python :: 3.14
20
19
  Classifier: Topic :: Database
21
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.10
21
+ Requires-Python: >=3.11
23
22
  Requires-Dist: cryptography>=46.0.5
24
- Requires-Dist: protobuf>=6.32.1
23
+ Requires-Dist: protobuf<7,>=6.32.1
25
24
  Requires-Dist: pytz
26
25
  Requires-Dist: tomlkit>=0.13
27
26
  Provides-Extra: dev
@@ -70,13 +69,13 @@ using the Snowflake JDBC or ODBC drivers.
70
69
 
71
70
  The connector has **no** dependencies on JDBC or ODBC.
72
71
  It can be installed using ``pip`` on Linux, Mac OSX, and Windows platforms
73
- where Python 3.10.0 (or higher) is installed.
72
+ where Python 3.11.0 (or higher) is installed.
74
73
 
75
74
 
76
75
  ## Development
77
76
 
78
77
  ### Prerequisites
79
- - Python 3.10+
78
+ - Python 3.11+
80
79
  - [uv](https://docs.astral.sh/uv/) package manager
81
80
  - [Hatch](https://hatch.pypa.io/) build tool
82
81
  - Rust toolchain (for building core library)
@@ -115,7 +114,7 @@ The `dev` environment is designed for **human developers** during active develop
115
114
  - Installs from sources (`skip-install = false`)
116
115
  - Editable mode enabled (`dev-mode = true`)
117
116
  - Changes to source code are immediately available
118
- - Supports Python matrix: 3.10, 3.11, 3.12, 3.13, 3.14
117
+ - Supports Python matrix: 3.11, 3.12, 3.13, 3.14
119
118
 
120
119
  **Usage:**
121
120
  ```bash
@@ -12,13 +12,13 @@ using the Snowflake JDBC or ODBC drivers.
12
12
 
13
13
  The connector has **no** dependencies on JDBC or ODBC.
14
14
  It can be installed using ``pip`` on Linux, Mac OSX, and Windows platforms
15
- where Python 3.10.0 (or higher) is installed.
15
+ where Python 3.11.0 (or higher) is installed.
16
16
 
17
17
 
18
18
  ## Development
19
19
 
20
20
  ### Prerequisites
21
- - Python 3.10+
21
+ - Python 3.11+
22
22
  - [uv](https://docs.astral.sh/uv/) package manager
23
23
  - [Hatch](https://hatch.pypa.io/) build tool
24
24
  - Rust toolchain (for building core library)
@@ -57,7 +57,7 @@ The `dev` environment is designed for **human developers** during active develop
57
57
  - Installs from sources (`skip-install = false`)
58
58
  - Editable mode enabled (`dev-mode = true`)
59
59
  - Changes to source code are immediately available
60
- - Supports Python matrix: 3.10, 3.11, 3.12, 3.13, 3.14
60
+ - Supports Python matrix: 3.11, 3.12, 3.13, 3.14
61
61
 
62
62
  **Usage:**
63
63
  ```bash
@@ -0,0 +1,39 @@
1
+ # Conda recipe
2
+
3
+ Builds `snowflake-connector-python` from this repository. The package is not
4
+ `noarch`: it ships two ABI-tagged native extensions (the PyO3 core bridge and
5
+ the Cython/C++ Arrow reader), so it is built per Python version and per
6
+ architecture.
7
+
8
+ `source.path` is the repository root. The Python wrapper reaches the Rust
9
+ workspace through relative symlinks (`python/Cargo.toml`, `python/sf_core`,
10
+ `python/python_bridge`) that only resolve when the whole workspace is present.
11
+ Build from a clean checkout, or remove `target/` first — conda-build copies the
12
+ source tree.
13
+
14
+ ## Build
15
+
16
+ From the repository root, with conda-build installed (`conda install -c
17
+ conda-forge conda-build`):
18
+
19
+ ```bash
20
+ conda build python/ci/anaconda/recipe --python 3.12
21
+ ```
22
+
23
+ The C/C++ and Rust toolchains come from `requirements.build`. Version is read
24
+ from `python/src/snowflake/connector/version.py`; override with
25
+ `SNOWFLAKE_CONNECTOR_PYTHON_VERSION`. Build number defaults to `0`; override
26
+ with `UNIVERSAL_DRIVER_BUILD_NUMBER`.
27
+
28
+ `conda_build_config.yaml` pins the sysroot (glibc floor) to 2.17. That is the
29
+ oldest conda-forge publishes for both `linux-64` and `linux-aarch64`. Without
30
+ it, current compilers select sysroot 2.34.
31
+
32
+ `libprotobuf` is capped to match the runtime available in Snowflake's
33
+ in-platform channel.
34
+
35
+ Optional `script_env` passthroughs for iteration: `SKIP_CORE_BUILD`,
36
+ `SNOWFLAKE_DISABLE_COMPILE_ARROW_EXTENSIONS`, `SKIP_PROTO_GENERATION`,
37
+ `CORE_CARGO_TARGET_DIR`, `PROTO_CARGO_TARGET_DIR`, `CARGO_NET_OFFLINE`. A
38
+ `_core/` binary is tagged with `sysconfig` `EXT_SUFFIX`, so a 3.13 build is not
39
+ reusable for 3.12. `test.imports` fails the package if an extension is missing.
@@ -139,6 +139,12 @@ message ColumnMetadata {
139
139
  bool is_auto_increment = 13;
140
140
  string ext_col_type_name = 14;
141
141
  string udt_output_type = 15;
142
+ // Nested column metadata for structured types. Carries the element type for
143
+ // VECTOR and ARRAY, the key and value types for MAP, and one entry per
144
+ // attribute for structured OBJECT. Empty for every other type, and also for
145
+ // semi-structured (unstructured) ARRAY/OBJECT/MAP, which the server sends
146
+ // without a nested field list.
147
+ repeated ColumnMetadata fields = 16;
142
148
  }
143
149
 
144
150
  // DML operation statistics
@@ -16,16 +16,20 @@ classifiers = [
16
16
  "Topic :: Software Development :: Libraries :: Python Modules",
17
17
  "License :: OSI Approved :: Apache Software License",
18
18
  "Programming Language :: Python :: 3",
19
- "Programming Language :: Python :: 3.10",
20
19
  "Programming Language :: Python :: 3.11",
21
20
  "Programming Language :: Python :: 3.12",
22
21
  "Programming Language :: Python :: 3.13",
23
22
  "Programming Language :: Python :: 3.14",
24
23
  ]
25
- requires-python = ">=3.10"
24
+ requires-python = ">=3.11"
26
25
  dependencies = [
27
26
  "cryptography>=46.0.5",
28
- "protobuf>=6.32.1",
27
+ # Snowflake's in-platform Anaconda channel (Python UDF / stored-procedure
28
+ # resolve) tops out at protobuf 6.33.5; 7.x is not mirrored. A 7.x protoc
29
+ # bakes gencode that fails sproc import with
30
+ # VersionError: gencode 7.x runtime 6.33.5. Cap here so conda recipe run
31
+ # deps stay in lockstep (validate_deps_sync.py) and pip cannot pull 7.x.
32
+ "protobuf>=6.32.1,<7",
29
33
  "pytz",
30
34
  "tomlkit>=0.13",
31
35
  ]
@@ -85,6 +89,7 @@ include = [
85
89
  "sf_core/",
86
90
  "python_bridge/",
87
91
  "sf_params_spec/",
92
+ "sf_types/",
88
93
  "proto_utils/",
89
94
  "proto_generator/",
90
95
  "protobuf/",
@@ -98,6 +103,7 @@ exclude = [
98
103
  "sf_core/target/",
99
104
  "python_bridge/target/",
100
105
  "sf_params_spec/target/",
106
+ "sf_types/target/",
101
107
  "proto_utils/target/",
102
108
  # Exclude sf_core tests (except arrow_deserialize_macro which is a dev-dependency)
103
109
  "sf_core/tests/e2e/",
@@ -125,6 +131,9 @@ path = "hatch_build.py"
125
131
 
126
132
  [tool.hatch.build.hooks.custom]
127
133
 
134
+ [tool.cibuildwheel.windows]
135
+ repair-wheel-command = "delvewheel repair --namespace-pkg snowflake -w {dest_dir} -v {wheel}"
136
+
128
137
  [tool.pytest.ini_options]
129
138
  testpaths = ["tests"]
130
139
  python_files = ["test_*.py"]
@@ -183,7 +192,7 @@ exclude_lines = [
183
192
  ]
184
193
 
185
194
  [tool.mypy]
186
- python_version = "3.10"
195
+ python_version = "3.11"
187
196
  warn_return_any = true
188
197
  warn_unused_configs = true
189
198
  disallow_untyped_defs = true
@@ -240,13 +249,13 @@ dependencies = [
240
249
  # Keep in sync with `[project].dependencies` plus numpy (referenced by
241
250
  # arrow_context.py type hints).
242
251
  "cryptography>=46.0.5",
243
- "protobuf>=6.32.1",
252
+ "protobuf>=6.32.1,<7",
244
253
  "pytz",
245
254
  "tomlkit>=0.13",
246
- # Cap < 2.3 to match the mypy `python_version = "3.10"` target: numpy 2.3
247
- # dropped 3.10 and its stubs use PEP-695 `type` statements mypy rejects
248
- # under a 3.10 target. A real 3.10 install resolves numpy <= 2.2, so this is
249
- # the numpy we should type-check against.
255
+ # Cap < 2.3 to match the mypy `python_version = "3.11"` target: numpy 2.3+
256
+ # stubs use PEP-695 `type` statements, which mypy rejects below a 3.12
257
+ # target. A 3.11 install still resolves numpy < 2.3, so this is the numpy
258
+ # we should type-check against.
250
259
  "numpy>=2.1.0,<2.3",
251
260
  ]
252
261
 
@@ -284,7 +293,7 @@ PARAMETER_PATH = "{env:PARAMETER_PATH:../parameters.json}"
284
293
  SKIP_CORE_BUILD = "{env:SKIP_CORE_BUILD:1}"
285
294
 
286
295
  [[tool.hatch.envs.dev.matrix]]
287
- python = ["3.10", "3.11", "3.12", "3.13", "3.14"]
296
+ python = ["3.11", "3.12", "3.13", "3.14"]
288
297
 
289
298
  [tool.hatch.envs.dev.scripts]
290
299
  # Unit / integ: on failure, once-rerun last-failed tests (cap at 5 failures)
@@ -308,7 +317,7 @@ skip-install = true
308
317
  dev-mode = false
309
318
 
310
319
  [[tool.hatch.envs.test.matrix]]
311
- python = ["3.10", "3.11", "3.12", "3.13", "3.14"]
320
+ python = ["3.11", "3.12", "3.13", "3.14"]
312
321
 
313
322
  [tool.hatch.envs.test.scripts]
314
323
  # Install from wheel
@@ -340,7 +349,9 @@ install-wheel = [
340
349
  "uv pip install {env:WHEEL_PATH:dist/*.whl}",
341
350
  "python hatch_native_arrow.py",
342
351
  ]
343
- cov = "true {args}"
352
+ # BOOLEAN, REAL, TEXT, BINARY, NUMBER, DECFLOAT, DATE, and TIME converters are live.
353
+ # Table and insert cases can run because execute_query status rows are NUMBER.
354
+ cov = "pytest tests/e2e/types/test_boolean.py tests/e2e/types/test_float.py tests/e2e/types/test_string.py tests/e2e/types/test_binary.py tests/e2e/types/test_number.py tests/e2e/types/test_int.py tests/e2e/types/test_decfloat.py tests/e2e/types/test_date.py tests/e2e/types/test_time.py --cov=src/snowflake --cov-report=xml --cov-report=html {args}"
344
355
 
345
356
  # Pandas-specific CI test environment
346
357
  [tool.hatch.envs.test-pandas]
@@ -348,7 +359,7 @@ template = "test"
348
359
  features = ["test", "dev", "pandas"]
349
360
 
350
361
  [[tool.hatch.envs.test-pandas.matrix]]
351
- python = ["3.10", "3.11", "3.12", "3.13", "3.14"]
362
+ python = ["3.11", "3.12", "3.13", "3.14"]
352
363
 
353
364
  [tool.hatch.envs.test-pandas.scripts]
354
365
  cov = "pytest tests/e2e/pandas --cov=src/snowflake --cov-report=xml --cov-report=html {args}"
@@ -11,12 +11,14 @@ crate-type = ["cdylib", "rlib"]
11
11
  default = ["extension-module"]
12
12
  extension-module = ["pyo3/extension-module"]
13
13
  vendored-openssl = ["sf_core/vendored-openssl"]
14
- native-arrow = ["dep:arrow", "dep:snafu", "dep:error_trace"]
14
+ native-arrow = ["dep:arrow", "dep:snafu", "dep:error_trace", "dep:sf_types", "dep:chrono", "pyo3/chrono"]
15
15
 
16
16
  [dependencies]
17
17
  arrow = { version = ">=54.0.0, <59", features = ["ffi"], optional = true }
18
18
  snafu = { version = "0.8", optional = true }
19
19
  error_trace = { path = "../error_trace", optional = true }
20
+ sf_types = { path = "../sf_types", optional = true }
21
+ chrono = { version = "0.4.43", optional = true }
20
22
 
21
23
  sf_core = { path = "../sf_core" }
22
24
  proto_utils = { path = "../proto_utils" }
@@ -31,3 +33,4 @@ tracing = "0.1.41"
31
33
  # Tests for the native path use --features native-arrow (activates optional arrow).
32
34
  pyo3 = { version = "0.29.0", features = ["auto-initialize"] }
33
35
  arrow = { version = ">=54.0.0, <59", features = ["ffi"] }
36
+ tracing-subscriber = { version = "0.3.19", features = ["fmt"] }
@@ -0,0 +1,58 @@
1
+ use arrow::array::{ArrayRef, BinaryArray};
2
+ use pyo3::prelude::*;
3
+ use pyo3::types::PyByteArray;
4
+ use sf_types::SnowflakeBinary;
5
+
6
+ use super::Column;
7
+ use super::decode::{PyMaterializer, TypedColumn};
8
+ use crate::arrow::converters::util::downcast_column;
9
+ use crate::arrow::plan::SnowflakeFieldType;
10
+
11
+ pub(super) fn from_column(array: &ArrayRef, field_type: &SnowflakeFieldType) -> PyResult<Column> {
12
+ downcast_column::<BinaryArray>(array, field_type)
13
+ .map(|array| Column::Binary(TypedColumn::new(array, SnowflakeBinary, BinaryMaterializer)))
14
+ }
15
+
16
+ pub(crate) struct BinaryMaterializer;
17
+
18
+ impl PyMaterializer<SnowflakeBinary> for BinaryMaterializer {
19
+ fn materialize<'py>(&self, py: Python<'py>, value: &[u8]) -> PyResult<Bound<'py, PyAny>> {
20
+ Ok(PyByteArray::new(py, value).into_any())
21
+ }
22
+ }
23
+
24
+ #[cfg(test)]
25
+ mod tests {
26
+ use std::sync::Arc;
27
+
28
+ use arrow::array::{ArrayRef, BinaryArray};
29
+ use arrow::datatypes::Schema;
30
+ use pyo3::prelude::*;
31
+
32
+ use crate::arrow::converters::ConversionContext;
33
+ use crate::arrow::converters::test_util::{assert_py_bytes, assert_py_none};
34
+ use crate::arrow::plan::SnowflakeFieldType;
35
+
36
+ fn binary() -> SnowflakeFieldType {
37
+ SnowflakeFieldType::Binary { len: 8_388_608 }
38
+ }
39
+
40
+ #[test]
41
+ fn binary_converts_to_python_bytearray() {
42
+ Python::initialize();
43
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
44
+
45
+ let array: ArrayRef = Arc::new(BinaryArray::from_opt_vec(vec![
46
+ Some(b"hello".as_slice()),
47
+ None,
48
+ Some(b"".as_slice()),
49
+ ]));
50
+ let column = ctx.converter_from_column(&array, &binary()).unwrap();
51
+
52
+ Python::attach(|py| {
53
+ assert_py_bytes(&column.to_py(py, 0).unwrap(), b"hello");
54
+ assert_py_none(&column.to_py(py, 1).unwrap());
55
+ assert_py_bytes(&column.to_py(py, 2).unwrap(), b"");
56
+ });
57
+ }
58
+ }
@@ -0,0 +1,52 @@
1
+ use arrow::array::{ArrayRef, BooleanArray};
2
+ use pyo3::prelude::*;
3
+ use pyo3::types::PyBool;
4
+ use sf_types::SnowflakeBoolean;
5
+
6
+ use super::Column;
7
+ use super::decode::{PyMaterializer, TypedColumn};
8
+ use crate::arrow::converters::util::downcast_column;
9
+ use crate::arrow::plan::SnowflakeFieldType;
10
+
11
+ pub(super) fn from_column(array: &ArrayRef, field_type: &SnowflakeFieldType) -> PyResult<Column> {
12
+ downcast_column::<BooleanArray>(array, field_type)
13
+ .map(|array| Column::Bool(TypedColumn::new(array, SnowflakeBoolean, BoolMaterializer)))
14
+ }
15
+
16
+ pub(crate) struct BoolMaterializer;
17
+
18
+ impl PyMaterializer<SnowflakeBoolean> for BoolMaterializer {
19
+ fn materialize<'py>(&self, py: Python<'py>, value: bool) -> PyResult<Bound<'py, PyAny>> {
20
+ Ok(PyBool::new(py, value).to_owned().into_any())
21
+ }
22
+ }
23
+
24
+ #[cfg(test)]
25
+ mod tests {
26
+ use std::sync::Arc;
27
+
28
+ use arrow::array::{ArrayRef, BooleanArray};
29
+ use arrow::datatypes::Schema;
30
+ use pyo3::prelude::*;
31
+
32
+ use crate::arrow::converters::ConversionContext;
33
+ use crate::arrow::converters::test_util::{assert_py_bool, assert_py_none};
34
+ use crate::arrow::plan::SnowflakeFieldType;
35
+
36
+ #[test]
37
+ fn boolean_array_converts_to_python_bool() {
38
+ Python::initialize();
39
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
40
+
41
+ let array: ArrayRef = Arc::new(BooleanArray::from(vec![Some(true), None, Some(false)]));
42
+ let column = ctx
43
+ .converter_from_column(&array, &SnowflakeFieldType::Boolean)
44
+ .unwrap();
45
+
46
+ Python::attach(|py| {
47
+ assert_py_bool(&column.to_py(py, 0).unwrap(), true);
48
+ assert_py_none(&column.to_py(py, 1).unwrap());
49
+ assert_py_bool(&column.to_py(py, 2).unwrap(), false);
50
+ });
51
+ }
52
+ }
@@ -7,6 +7,15 @@ use crate::arrow::batch_converter::BatchConverter;
7
7
  use crate::arrow::plan::{LogicalPlan, SnowflakeFieldType};
8
8
 
9
9
  use super::Column;
10
+ use super::binary;
11
+ use super::boolean;
12
+ use super::date;
13
+ use super::decfloat;
14
+ use super::number;
15
+ use super::real;
16
+ use super::text;
17
+ use super::time;
18
+ use super::timestamp_ntz;
10
19
 
11
20
  pub(crate) struct ConversionContext {
12
21
  plan: LogicalPlan,
@@ -32,21 +41,25 @@ impl ConversionContext {
32
41
 
33
42
  pub(crate) fn converter_from_column(
34
43
  &self,
35
- _array: &ArrayRef,
44
+ array: &ArrayRef,
36
45
  field_type: &SnowflakeFieldType,
37
46
  ) -> PyResult<Column> {
38
47
  match *field_type {
39
- SnowflakeFieldType::Varchar { .. }
40
- | SnowflakeFieldType::Number { .. }
41
- | SnowflakeFieldType::Date
42
- | SnowflakeFieldType::Time { .. }
43
- | SnowflakeFieldType::TimestampNtz { .. }
44
- | SnowflakeFieldType::TimestampLtz { .. }
48
+ SnowflakeFieldType::Boolean => boolean::from_column(array, field_type),
49
+ SnowflakeFieldType::Number { scale, .. } => {
50
+ number::from_column(array, field_type, scale)
51
+ }
52
+ SnowflakeFieldType::Real => real::from_column(array, field_type),
53
+ SnowflakeFieldType::Varchar { .. } => text::from_column(array, field_type),
54
+ SnowflakeFieldType::Binary { .. } => binary::from_column(array, field_type),
55
+ SnowflakeFieldType::Decfloat { .. } => decfloat::from_column(array, field_type),
56
+ SnowflakeFieldType::Date => date::from_column(array, field_type),
57
+ SnowflakeFieldType::Time { scale } => time::from_column(array, field_type, scale),
58
+ SnowflakeFieldType::TimestampNtz { scale } => {
59
+ timestamp_ntz::from_column(array, field_type, scale)
60
+ }
61
+ SnowflakeFieldType::TimestampLtz { .. }
45
62
  | SnowflakeFieldType::TimestampTz { .. }
46
- | SnowflakeFieldType::Boolean
47
- | SnowflakeFieldType::Binary { .. }
48
- | SnowflakeFieldType::Real
49
- | SnowflakeFieldType::Decfloat { .. }
50
63
  | SnowflakeFieldType::Vector { .. } => Err(PyNotImplementedError::new_err(format!(
51
64
  "native Arrow conversion is not implemented for logical type {}",
52
65
  field_type.logical_type_name()
@@ -0,0 +1,140 @@
1
+ use arrow::array::{ArrayRef, Date32Array};
2
+ use chrono::{Datelike, NaiveDate};
3
+ use pyo3::exceptions::PyValueError;
4
+ use pyo3::prelude::*;
5
+ use sf_types::SnowflakeDate;
6
+
7
+ use super::Column;
8
+ use super::decode::{PyMaterializer, TypedColumn};
9
+ use crate::arrow::converters::util::downcast_column;
10
+ use crate::arrow::plan::SnowflakeFieldType;
11
+
12
+ pub(super) fn from_column(array: &ArrayRef, field_type: &SnowflakeFieldType) -> PyResult<Column> {
13
+ downcast_column::<Date32Array>(array, field_type)
14
+ .map(|array| Column::Date(TypedColumn::new(array, SnowflakeDate, DateMaterializer)))
15
+ }
16
+
17
+ pub(crate) struct DateMaterializer;
18
+
19
+ impl PyMaterializer<SnowflakeDate> for DateMaterializer {
20
+ fn materialize<'py>(&self, py: Python<'py>, value: NaiveDate) -> PyResult<Bound<'py, PyAny>> {
21
+ let year = value.year();
22
+ if !(1..=9999).contains(&year) {
23
+ return Err(PyValueError::new_err(format!(
24
+ "DATE {value} is outside the datetime.date year range 1..=9999"
25
+ )));
26
+ }
27
+ Ok(value.into_pyobject(py)?.into_any())
28
+ }
29
+ }
30
+
31
+ #[cfg(test)]
32
+ mod tests {
33
+ use std::sync::Arc;
34
+
35
+ use arrow::array::{ArrayRef, Date32Array, Int32Array};
36
+ use arrow::datatypes::Schema;
37
+ use pyo3::exceptions::PyValueError;
38
+ use pyo3::prelude::*;
39
+
40
+ use crate::arrow::converters::ConversionContext;
41
+ use crate::arrow::converters::test_util::{assert_py_date, assert_py_none};
42
+ use crate::arrow::plan::SnowflakeFieldType;
43
+
44
+ #[test]
45
+ fn date_converts_to_python_date_with_nulls() {
46
+ Python::initialize();
47
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
48
+
49
+ let array: ArrayRef = Arc::new(Date32Array::from(vec![
50
+ Some(0),
51
+ None,
52
+ Some(-1),
53
+ Some(-719162),
54
+ Some(2932896),
55
+ ]));
56
+ let column = ctx
57
+ .converter_from_column(&array, &SnowflakeFieldType::Date)
58
+ .unwrap();
59
+
60
+ Python::attach(|py| {
61
+ assert_py_date(&column.to_py(py, 0).unwrap(), 1970, 1, 1);
62
+ assert_py_none(&column.to_py(py, 1).unwrap());
63
+ assert_py_date(&column.to_py(py, 2).unwrap(), 1969, 12, 31);
64
+ assert_py_date(&column.to_py(py, 3).unwrap(), 1, 1, 1);
65
+ assert_py_date(&column.to_py(py, 4).unwrap(), 9999, 12, 31);
66
+ });
67
+ }
68
+
69
+ #[test]
70
+ fn rejects_physical_mismatch_for_date() {
71
+ Python::initialize();
72
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
73
+ let array: ArrayRef = Arc::new(Int32Array::from(vec![Some(0)]));
74
+ let err = match ctx.converter_from_column(&array, &SnowflakeFieldType::Date) {
75
+ Ok(_) => panic!("expected physical mismatch for Int32 DATE"),
76
+ Err(err) => err,
77
+ };
78
+ Python::attach(|py| {
79
+ assert!(
80
+ err.is_instance_of::<PyValueError>(py),
81
+ "expected PyValueError, got {err}"
82
+ );
83
+ let text = err.value(py).str().unwrap().to_string_lossy().into_owned();
84
+ assert!(
85
+ text.contains("logical/physical type mismatch")
86
+ && text.contains("DATE")
87
+ && text.contains("Int32"),
88
+ "got {text}"
89
+ );
90
+ });
91
+ }
92
+
93
+ #[test]
94
+ fn rejects_day_offset_outside_calendar_range() {
95
+ Python::initialize();
96
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
97
+ let array: ArrayRef = Arc::new(Date32Array::from(vec![Some(i32::MAX)]));
98
+ let column = ctx
99
+ .converter_from_column(&array, &SnowflakeFieldType::Date)
100
+ .unwrap();
101
+
102
+ Python::attach(|py| {
103
+ let err = column.to_py(py, 0).unwrap_err();
104
+ assert!(
105
+ err.is_instance_of::<PyValueError>(py),
106
+ "expected PyValueError, got {err}"
107
+ );
108
+ let text = err.value(py).str().unwrap().to_string_lossy().into_owned();
109
+ assert!(
110
+ text.contains("Invalid Arrow value") && text.contains("DATE"),
111
+ "got {text}"
112
+ );
113
+ });
114
+ }
115
+
116
+ #[test]
117
+ fn rejects_dates_outside_python_date_year_range() {
118
+ Python::initialize();
119
+ let ctx = ConversionContext::new(&Schema::empty()).unwrap();
120
+ let array: ArrayRef = Arc::new(Date32Array::from(vec![Some(-719163), Some(2932897)]));
121
+ let column = ctx
122
+ .converter_from_column(&array, &SnowflakeFieldType::Date)
123
+ .unwrap();
124
+
125
+ Python::attach(|py| {
126
+ for row in [0, 1] {
127
+ let err = column.to_py(py, row).unwrap_err();
128
+ assert!(
129
+ err.is_instance_of::<PyValueError>(py),
130
+ "expected PyValueError, got {err}"
131
+ );
132
+ let text = err.value(py).str().unwrap().to_string_lossy().into_owned();
133
+ assert!(
134
+ text.contains("datetime.date year range 1..=9999"),
135
+ "got {text}"
136
+ );
137
+ }
138
+ });
139
+ }
140
+ }