snowflake-connector-python 4.7.5__tar.gz → 4.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/DESCRIPTION.md +8 -2
  2. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/PKG-INFO +10 -4
  3. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/setup.cfg +1 -1
  4. snowflake_connector_python-4.8.0/src/snowflake/connector/_ocsp_mode.py +68 -0
  5. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/README.md +1 -1
  6. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_azure_storage_client.py +4 -19
  7. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_connection.py +2 -0
  8. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_session_manager.py +2 -2
  9. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_storage_client.py +1 -0
  10. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_webbrowser.py +35 -34
  11. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/webbrowser.py +141 -71
  12. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/workload_identity.py +3 -0
  13. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/azure_storage_client.py +17 -19
  14. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/connection.py +116 -23
  15. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/constants.py +68 -2
  16. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/file_transfer_agent.py +1 -0
  17. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/file_util.py +29 -0
  18. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/network.py +4 -2
  19. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/ssl_wrap_socket.py +87 -1
  20. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/storage_client.py +5 -0
  21. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/version.py +1 -1
  22. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/wif_util.py +180 -36
  23. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/PKG-INFO +10 -4
  24. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/SOURCES.txt +1 -0
  25. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/requires.txt +1 -1
  26. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/CONTRIBUTING.md +0 -0
  27. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/LICENSE.txt +0 -0
  28. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/MANIFEST.in +0 -0
  29. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/NOTICE +0 -0
  30. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/README.md +0 -0
  31. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/SECURITY.md +0 -0
  32. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/pyproject.toml +0 -0
  33. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/setup.py +0 -0
  34. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/__init__.py +0 -0
  35. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/_connection_identifier_shape.py +0 -0
  36. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/_host_util.py +0 -0
  37. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/_query_context_cache.py +0 -0
  38. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/_sql_util.py +0 -0
  39. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/_utils.py +0 -0
  40. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/__init__.py +0 -0
  41. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_bind_upload_agent.py +0 -0
  42. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_cursor.py +0 -0
  43. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_description.py +0 -0
  44. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_direct_file_operation_utils.py +0 -0
  45. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_file_transfer_agent.py +0 -0
  46. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_gcs_storage_client.py +0 -0
  47. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_network.py +0 -0
  48. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_ocsp_asn1crypto.py +0 -0
  49. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_ocsp_snowflake.py +0 -0
  50. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_pandas_tools.py +0 -0
  51. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_result_batch.py +0 -0
  52. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_result_set.py +0 -0
  53. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_s3_storage_client.py +0 -0
  54. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_telemetry.py +0 -0
  55. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_time_util.py +0 -0
  56. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/_wif_util.py +0 -0
  57. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/__init__.py +0 -0
  58. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_auth.py +0 -0
  59. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_by_plugin.py +0 -0
  60. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_default.py +0 -0
  61. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_idtoken.py +0 -0
  62. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_keypair.py +0 -0
  63. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_no_auth.py +0 -0
  64. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_oauth.py +0 -0
  65. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_oauth_code.py +0 -0
  66. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_oauth_credentials.py +0 -0
  67. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_okta.py +0 -0
  68. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_pat.py +0 -0
  69. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_usrpwdmfa.py +0 -0
  70. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/aio/auth/_workload_identity.py +0 -0
  71. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/arrow_context.py +0 -0
  72. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/__init__.py +0 -0
  73. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/_auth.py +0 -0
  74. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/_http_server.py +0 -0
  75. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/_oauth_base.py +0 -0
  76. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/by_plugin.py +0 -0
  77. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/default.py +0 -0
  78. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/idtoken.py +0 -0
  79. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/keypair.py +0 -0
  80. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/no_auth.py +0 -0
  81. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/oauth.py +0 -0
  82. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/oauth_code.py +0 -0
  83. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/oauth_credentials.py +0 -0
  84. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/okta.py +0 -0
  85. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/pat.py +0 -0
  86. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
  87. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/backoff_policies.py +0 -0
  88. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/bind_upload_agent.py +0 -0
  89. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/cache.py +0 -0
  90. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/compat.py +0 -0
  91. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/config_manager.py +0 -0
  92. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/connection_diagnostic.py +0 -0
  93. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/converter.py +0 -0
  94. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/converter_issue23517.py +0 -0
  95. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/converter_null.py +0 -0
  96. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/converter_snowsql.py +0 -0
  97. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/crl.py +0 -0
  98. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/crl_cache.py +0 -0
  99. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/cursor.py +0 -0
  100. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/dbapi.py +0 -0
  101. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/description.py +0 -0
  102. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/direct_file_operation_utils.py +0 -0
  103. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/encryption_util.py +0 -0
  104. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/errorcode.py +0 -0
  105. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/errors.py +0 -0
  106. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/externals_utils/__init__.py +0 -0
  107. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/externals_utils/externals_setup.py +0 -0
  108. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/feature.py +0 -0
  109. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/file_compression_type.py +0 -0
  110. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/file_lock.py +0 -0
  111. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/gcs_storage_client.py +0 -0
  112. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/gzip_decoder.py +0 -0
  113. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/interval_util.py +0 -0
  114. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/local_storage_client.py +0 -0
  115. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/log_configuration.py +0 -0
  116. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/logging_utils/__init__.py +0 -0
  117. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/logging_utils/filters.py +0 -0
  118. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/minicore/__init__.py +0 -0
  119. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/minicore/linux_x86_64_glibc/libsf_mini_core.so +0 -0
  120. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  121. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  122. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  123. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  124. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  125. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  126. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
  127. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
  128. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  129. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  130. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
  131. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
  132. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  133. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  134. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
  135. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
  136. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  137. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  138. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  139. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  140. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  141. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  142. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  143. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  144. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  145. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
  146. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
  147. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  148. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  149. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  150. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  151. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  152. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  153. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  154. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  155. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  156. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  157. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  158. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  159. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  160. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  161. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  162. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  163. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  164. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  165. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  166. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  167. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  168. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  169. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  170. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  171. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  172. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  173. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  174. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  175. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  176. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  177. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  178. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  179. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  180. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  181. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  182. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  183. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  184. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  185. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  186. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  187. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  188. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  189. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  190. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  191. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  192. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  193. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  194. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  195. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  196. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  197. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  198. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  199. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  200. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  201. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  202. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  203. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  204. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
  205. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
  206. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
  207. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  208. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  209. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
  210. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
  211. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
  212. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/ocsp_snowflake.py +0 -0
  213. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/options.py +0 -0
  214. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/os_details.py +0 -0
  215. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/pandas_tools.py +0 -0
  216. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/platform_detection.py +0 -0
  217. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/proxy.py +0 -0
  218. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/py.typed +0 -0
  219. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/result_batch.py +0 -0
  220. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/result_set.py +0 -0
  221. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/s3_storage_client.py +0 -0
  222. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/secret_detector.py +0 -0
  223. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/session_manager.py +0 -0
  224. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/sf_dirs.py +0 -0
  225. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/sfbinaryformat.py +0 -0
  226. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/sfdatetime.py +0 -0
  227. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/snow_logging.py +0 -0
  228. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/sqlstate.py +0 -0
  229. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/ssd_internal_keys.py +0 -0
  230. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/telemetry.py +0 -0
  231. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/telemetry_oob.py +0 -0
  232. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/test_util.py +0 -0
  233. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/time_util.py +0 -0
  234. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/token_cache.py +0 -0
  235. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/tool/__init__.py +0 -0
  236. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/tool/dump_certs.py +0 -0
  237. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
  238. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
  239. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/tool/probe_connection.py +0 -0
  240. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/url_util.py +0 -0
  241. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/util_text.py +0 -0
  242. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/__init__.py +0 -0
  243. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
  244. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
  245. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
  246. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
  247. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
  248. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/api.py +0 -0
  249. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/auth.py +0 -0
  250. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/certs.py +0 -0
  251. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/compat.py +0 -0
  252. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
  253. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
  254. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/help.py +0 -0
  255. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
  256. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/models.py +0 -0
  257. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/packages.py +0 -0
  258. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
  259. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
  260. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/structures.py +0 -0
  261. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/requests/utils.py +0 -0
  262. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
  263. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
  264. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/_base_connection.py +0 -0
  265. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
  266. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/_request_methods.py +0 -0
  267. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
  268. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
  269. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
  270. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
  271. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/__init__.py +0 -0
  272. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/connection.py +0 -0
  273. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/emscripten_fetch_worker.js +0 -0
  274. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/fetch.py +0 -0
  275. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/request.py +0 -0
  276. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/response.py +0 -0
  277. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
  278. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
  279. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
  280. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
  281. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
  282. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/http2/__init__.py +0 -0
  283. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/http2/connection.py +0 -0
  284. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/http2/probe.py +0 -0
  285. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
  286. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/py.typed +0 -0
  287. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
  288. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
  289. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
  290. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
  291. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
  292. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
  293. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
  294. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
  295. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
  296. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
  297. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
  298. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
  299. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/util.py +0 -0
  300. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
  301. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
  302. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
  303. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
  304. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.0}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
@@ -7,6 +7,14 @@ https://docs.snowflake.com/
7
7
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
8
8
 
9
9
  # Release Notes
10
+ - v4.8.0(Sep 30,2026)
11
+ - Fixed external-browser (SSO) authentication to validate the `Origin` header on the local callback server, rejecting tokens delivered from unexpected origins. A trailing slash in the origin (e.g. `https://account.snowflakecomputing.com/`) is now accepted on par with the bare origin, matching JDBC and other driver behaviour. Preconnect probe connections (empty recv) no longer count against the retry budget and no longer abort the login flow.
12
+ - Added the `SNOWFLAKE_TLS_CIPHERS` environment variable to restrict which TLS ciphers the connector offers. It takes a colon-separated list; names beginning with `TLS_` are applied as TLS 1.3 cipher suites and the remainder as the cipher list for TLS 1.2 and below, so a single variable covers both. Leaving it unset keeps OpenSSL's defaults unchanged, and an unrecognized cipher name is rejected rather than silently ignored. The restriction covers Snowflake API traffic, cloud-storage (stage) transfers, OCSP/CRL fetches and IdP requests. Requests issued by the AWS and Azure SDKs, and asynchronous connections, are not covered — for TLS 1.3 suites specifically they cannot be, because the Python standard library exposes no API for restricting them.
13
+ - Raised the minimum `pyOpenSSL` requirement to 25.3.0, the first version providing `set_tls13_ciphersuites`. This does not narrow the set of installable versions in practice: earlier releases cap `cryptography` below 46 and so were already uninstallable alongside the connector's own `cryptography>=46.0.5` requirement.
14
+ - Added the `workload_identity_host` connection option that overrides the STS host used by AWS Workload Identity Federation, for endpoints the driver cannot derive from the region (such as an interface VPC endpoint). The default STS host is now resolved via botocore so partitions that do not use `amazonaws.com` (ISO, European Sovereign Cloud, ...) get the correct hostname. A privately routed host cannot be reached by Snowflake on the default GetCallerIdentity path, so a VPC or PrivateLink STS endpoint also requires `workload_identity_aws_use_outbound_token=True` (SNOW-4017192).
15
+ - Fixed MD5 computation for Azure clouds (SNOW-4168830).
16
+ - OCSP certificate revocation checks are now off unless you opt in. Set `ocsp_fail_open=True` or `ocsp_fail_open=False` to enable OCSP. The stored default is `None` (unset); only an explicit `True`/`False` opts in, so forwarding `DEFAULT_CONFIGURATION` as kwargs does not turn OCSP on. `disable_ocsp_checks=True` (or `insecure_mode=True`) always turns OCSP off, including when `ocsp_fail_open` is also set. `disable_ocsp_checks=False` and `insecure_mode=False` are the stored defaults and are not an opt-in. Connection attribute `ocsp_fail_open` is no longer a report of whether OCSP *is* fail-open; it is the stored preference (`None` = unset, `True` = fail-open, `False` = fail-closed). Use `_ocsp_mode()` / `disable_ocsp_checks` to see whether checks are actually on. `ocsp_response_cache_filename` and `ocsp_root_certs_dict_lock_timeout` do not turn OCSP on; if they are set without an OCSP mode parameter they are ignored and a warning is logged. The `SF_OCSP_FAIL_OPEN` environment variable still only switches fail-open vs fail-closed after OCSP is already on. Login `OCSP_MODE` telemetry now reports `DISABLE_OCSP_CHECKS` by default. The process-global `FEATURE_OCSP_MODE` is updated by each constructed REST client, except that a later default (OCSP off) client does not overwrite a non-default already stored on the process, and a later `FAIL_OPEN` client does not overwrite `FAIL_CLOSED`.
17
+
10
18
  - v4.7.5(Sep 18,2026)
11
19
  - Follow-up to the v4.7.4 incomplete-result fix (SNOW-4109042): when a successful query-request has an incomplete inline first chunk, the connector re-fetches the finished query once via `GET /queries/{qid}/result` before building the result set. JSON treats empty or shorter-than-declared inline rowsets as incomplete; Arrow only treats a missing/empty `rowsetBase64` as incomplete so the execute hot path does not decode IPC. If the result GET fails (transport error or `success: false`), the original payload is kept; if the GET succeeds but is still incomplete, that response is used. In either incomplete case the existing rowcount/total checks still raise `OperationalError` errno `252013` when the result is drained (no silent EOF). On the sync path, a remote result chunk whose body holds fewer rows than its declared `rowCount` is re-downloaded once before that check raises, so a truncated-but-valid chunk download can recover without silent data loss. Asynchronous (`snowflake.connector.aio`) remote-chunk re-download is unchanged.
12
20
 
@@ -14,8 +22,6 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
14
22
  - Fixed missing retries on transient HTTP failures when fetching an OAuth access token from the IdP token endpoint (`OAUTH_CLIENT_CREDENTIALS` and `OAUTH_AUTHORIZATION_CODE`). Token requests now retry transport errors, HTTP 408/429, and 5xx responses (SNOW-3984430, #3003).
15
23
  - Fixed a bug where a TLS handshake terminated by the peer (`SSLError` containing `SysCallError(-1, 'Unexpected EOF')`) was classified as non-retryable and surfaced as an `OperationalError`, unlike `ECONNRESET`. Such handshake `Unexpected EOF` errors are now retried, on both the sync and async request paths (SNOW-4058589).
16
24
  - Fixed `fetchone()`, `fetchmany()`, `fetchall()` and cursor iteration silently returning an incomplete result set. A downloaded result chunk holding fewer rows than the back-end reported just ended the iteration, which the fetch methods report as a normal end of results, so callers received fewer rows than the query produced with no exception raised. Such a chunk now raises an `OperationalError` (errno `252013`). Errors raised while iterating a result set are no longer reported as end-of-results either: `_fetchone()` caught every `TypeError` and returned `None`, so a failure anywhere in the download/parse chain was indistinguishable from an exhausted result set. Both the sync and async paths are fixed (SNOW-4109042).
17
- - Added the `SNOWFLAKE_MIN_TLS_VERSION` environment variable (`1.2`, `1.3`, `TLSv1.2` or `TLSv1.3`, defaulting to TLS 1.2) to raise the minimum TLS version on every outbound connection a synchronous connector makes: the Snowflake API, stage transfers, OCSP/CRL fetches, platform detection, IdP requests, AWS SDK requests (workload identity STS calls and the platform-detection identity probe) and Azure AD token requests made by `azure-identity`. An unrecognized value is rejected at connect time. The variable name and accepted values match the Go and JDBC drivers. Asynchronous (`snowflake.connector.aio`) connections are not yet covered.
18
- - Fixed a TLS handshake failure that cannot succeed on a retry — a minimum-version mismatch, an untrusted certificate, a hostname mismatch — being reported by `connect()` as a generic `250001: Could not connect to Snowflake backend after N attempt(s)` alongside a firewall-troubleshooting hint. The network layer already identified and named such failures, but the authentication layer retried them until the login timeout expired and then replaced the diagnosis. They now surface as `NonRetryableTlsError` (a subclass of `OperationalError` keeping the same errno, so existing handlers are unaffected) naming the underlying cause, and are no longer retried. Transient handshake faults (`ECONNRESET`, unexpected EOF) remain retryable.
19
25
 
20
26
  - v4.7.3(Sep 3,2026)
21
27
  - Added experimental Python 3.14t (free-threaded CPython) wheel support. **Experimental — not intended for production use.**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-connector-python
3
- Version: 4.7.5
3
+ Version: 4.8.0
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -41,7 +41,7 @@ License-File: LICENSE.txt
41
41
  License-File: NOTICE
42
42
  Requires-Dist: asn1crypto<2.0.0,>0.24.0
43
43
  Requires-Dist: cryptography>=46.0.5
44
- Requires-Dist: pyOpenSSL>=24.0.0
44
+ Requires-Dist: pyOpenSSL>=25.3.0
45
45
  Requires-Dist: pyjwt<3.0.0,>=2.10.1
46
46
  Requires-Dist: pytz
47
47
  Requires-Dist: requests<3.0.0,>=2.32.4
@@ -97,6 +97,14 @@ https://docs.snowflake.com/
97
97
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
98
98
 
99
99
  # Release Notes
100
+ - v4.8.0(Sep 30,2026)
101
+ - Fixed external-browser (SSO) authentication to validate the `Origin` header on the local callback server, rejecting tokens delivered from unexpected origins. A trailing slash in the origin (e.g. `https://account.snowflakecomputing.com/`) is now accepted on par with the bare origin, matching JDBC and other driver behaviour. Preconnect probe connections (empty recv) no longer count against the retry budget and no longer abort the login flow.
102
+ - Added the `SNOWFLAKE_TLS_CIPHERS` environment variable to restrict which TLS ciphers the connector offers. It takes a colon-separated list; names beginning with `TLS_` are applied as TLS 1.3 cipher suites and the remainder as the cipher list for TLS 1.2 and below, so a single variable covers both. Leaving it unset keeps OpenSSL's defaults unchanged, and an unrecognized cipher name is rejected rather than silently ignored. The restriction covers Snowflake API traffic, cloud-storage (stage) transfers, OCSP/CRL fetches and IdP requests. Requests issued by the AWS and Azure SDKs, and asynchronous connections, are not covered — for TLS 1.3 suites specifically they cannot be, because the Python standard library exposes no API for restricting them.
103
+ - Raised the minimum `pyOpenSSL` requirement to 25.3.0, the first version providing `set_tls13_ciphersuites`. This does not narrow the set of installable versions in practice: earlier releases cap `cryptography` below 46 and so were already uninstallable alongside the connector's own `cryptography>=46.0.5` requirement.
104
+ - Added the `workload_identity_host` connection option that overrides the STS host used by AWS Workload Identity Federation, for endpoints the driver cannot derive from the region (such as an interface VPC endpoint). The default STS host is now resolved via botocore so partitions that do not use `amazonaws.com` (ISO, European Sovereign Cloud, ...) get the correct hostname. A privately routed host cannot be reached by Snowflake on the default GetCallerIdentity path, so a VPC or PrivateLink STS endpoint also requires `workload_identity_aws_use_outbound_token=True` (SNOW-4017192).
105
+ - Fixed MD5 computation for Azure clouds (SNOW-4168830).
106
+ - OCSP certificate revocation checks are now off unless you opt in. Set `ocsp_fail_open=True` or `ocsp_fail_open=False` to enable OCSP. The stored default is `None` (unset); only an explicit `True`/`False` opts in, so forwarding `DEFAULT_CONFIGURATION` as kwargs does not turn OCSP on. `disable_ocsp_checks=True` (or `insecure_mode=True`) always turns OCSP off, including when `ocsp_fail_open` is also set. `disable_ocsp_checks=False` and `insecure_mode=False` are the stored defaults and are not an opt-in. Connection attribute `ocsp_fail_open` is no longer a report of whether OCSP *is* fail-open; it is the stored preference (`None` = unset, `True` = fail-open, `False` = fail-closed). Use `_ocsp_mode()` / `disable_ocsp_checks` to see whether checks are actually on. `ocsp_response_cache_filename` and `ocsp_root_certs_dict_lock_timeout` do not turn OCSP on; if they are set without an OCSP mode parameter they are ignored and a warning is logged. The `SF_OCSP_FAIL_OPEN` environment variable still only switches fail-open vs fail-closed after OCSP is already on. Login `OCSP_MODE` telemetry now reports `DISABLE_OCSP_CHECKS` by default. The process-global `FEATURE_OCSP_MODE` is updated by each constructed REST client, except that a later default (OCSP off) client does not overwrite a non-default already stored on the process, and a later `FAIL_OPEN` client does not overwrite `FAIL_CLOSED`.
107
+
100
108
  - v4.7.5(Sep 18,2026)
101
109
  - Follow-up to the v4.7.4 incomplete-result fix (SNOW-4109042): when a successful query-request has an incomplete inline first chunk, the connector re-fetches the finished query once via `GET /queries/{qid}/result` before building the result set. JSON treats empty or shorter-than-declared inline rowsets as incomplete; Arrow only treats a missing/empty `rowsetBase64` as incomplete so the execute hot path does not decode IPC. If the result GET fails (transport error or `success: false`), the original payload is kept; if the GET succeeds but is still incomplete, that response is used. In either incomplete case the existing rowcount/total checks still raise `OperationalError` errno `252013` when the result is drained (no silent EOF). On the sync path, a remote result chunk whose body holds fewer rows than its declared `rowCount` is re-downloaded once before that check raises, so a truncated-but-valid chunk download can recover without silent data loss. Asynchronous (`snowflake.connector.aio`) remote-chunk re-download is unchanged.
102
110
 
@@ -104,8 +112,6 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
104
112
  - Fixed missing retries on transient HTTP failures when fetching an OAuth access token from the IdP token endpoint (`OAUTH_CLIENT_CREDENTIALS` and `OAUTH_AUTHORIZATION_CODE`). Token requests now retry transport errors, HTTP 408/429, and 5xx responses (SNOW-3984430, #3003).
105
113
  - Fixed a bug where a TLS handshake terminated by the peer (`SSLError` containing `SysCallError(-1, 'Unexpected EOF')`) was classified as non-retryable and surfaced as an `OperationalError`, unlike `ECONNRESET`. Such handshake `Unexpected EOF` errors are now retried, on both the sync and async request paths (SNOW-4058589).
106
114
  - Fixed `fetchone()`, `fetchmany()`, `fetchall()` and cursor iteration silently returning an incomplete result set. A downloaded result chunk holding fewer rows than the back-end reported just ended the iteration, which the fetch methods report as a normal end of results, so callers received fewer rows than the query produced with no exception raised. Such a chunk now raises an `OperationalError` (errno `252013`). Errors raised while iterating a result set are no longer reported as end-of-results either: `_fetchone()` caught every `TypeError` and returned `None`, so a failure anywhere in the download/parse chain was indistinguishable from an exhausted result set. Both the sync and async paths are fixed (SNOW-4109042).
107
- - Added the `SNOWFLAKE_MIN_TLS_VERSION` environment variable (`1.2`, `1.3`, `TLSv1.2` or `TLSv1.3`, defaulting to TLS 1.2) to raise the minimum TLS version on every outbound connection a synchronous connector makes: the Snowflake API, stage transfers, OCSP/CRL fetches, platform detection, IdP requests, AWS SDK requests (workload identity STS calls and the platform-detection identity probe) and Azure AD token requests made by `azure-identity`. An unrecognized value is rejected at connect time. The variable name and accepted values match the Go and JDBC drivers. Asynchronous (`snowflake.connector.aio`) connections are not yet covered.
108
- - Fixed a TLS handshake failure that cannot succeed on a retry — a minimum-version mismatch, an untrusted certificate, a hostname mismatch — being reported by `connect()` as a generic `250001: Could not connect to Snowflake backend after N attempt(s)` alongside a firewall-troubleshooting hint. The network layer already identified and named such failures, but the authentication layer retried them until the login timeout expired and then replaced the diagnosis. They now surface as `NonRetryableTlsError` (a subclass of `OperationalError` keeping the same errno, so existing handlers are unaffected) naming the underlying cause, and are no longer retried. Transient handshake faults (`ECONNRESET`, unexpected EOF) remain retryable.
109
115
 
110
116
  - v4.7.3(Sep 3,2026)
111
117
  - Added experimental Python 3.14t (free-threaded CPython) wheel support. **Experimental — not intended for production use.**
@@ -46,7 +46,7 @@ packages = find_namespace:
46
46
  install_requires =
47
47
  asn1crypto>0.24.0,<2.0.0
48
48
  cryptography>=46.0.5
49
- pyOpenSSL>=24.0.0
49
+ pyOpenSSL>=25.3.0
50
50
  pyjwt>=2.10.1,<3.0.0
51
51
  pytz
52
52
  requests>=2.32.4,<3.0.0
@@ -0,0 +1,68 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, Collection
5
+
6
+ from .constants import OCSPMode
7
+
8
+ # ocsp_fail_open True/False opts into OCSP. None is the stored default and
9
+ # is not an opt-in. disable_ocsp_checks / insecure_mode only turn OCSP off
10
+ # when True; their stored False default is not an opt-in. Cache/timeout
11
+ # knobs never enable OCSP.
12
+ OCSP_MODE_PARAMS = frozenset({"disable_ocsp_checks", "ocsp_fail_open", "insecure_mode"})
13
+ OCSP_SUPPORT_PARAMS = frozenset(
14
+ {"ocsp_response_cache_filename", "ocsp_root_certs_dict_lock_timeout"}
15
+ )
16
+ OCSP_EXPLICIT_PARAMS = OCSP_MODE_PARAMS | OCSP_SUPPORT_PARAMS
17
+
18
+ IGNORED_OCSP_SUPPORT_PARAMS_WARNING = (
19
+ "OCSP is disabled unless you opt in. The following OCSP setting(s) will be "
20
+ "ignored because none of ocsp_fail_open, disable_ocsp_checks, or "
21
+ "insecure_mode was set: {params}. Set ocsp_fail_open=True or "
22
+ "ocsp_fail_open=False to enable OCSP."
23
+ )
24
+
25
+
26
+ def snapshot_ocsp_explicit_params(params: Mapping[str, Any]) -> frozenset[str]:
27
+ return frozenset(name for name in OCSP_EXPLICIT_PARAMS if name in params)
28
+
29
+
30
+ def resolve_ocsp_mode(
31
+ *,
32
+ explicit: Collection[str],
33
+ disable_ocsp_checks: bool,
34
+ ocsp_fail_open: bool | None,
35
+ insecure_mode: bool | None = None,
36
+ ) -> OCSPMode:
37
+ """Resolve OCSP mode from explicit user/toml presence plus stored values.
38
+
39
+ ``ocsp_fail_open`` is the only opt-in: True = fail-open, False =
40
+ fail-closed. None is the stored default and does not enable OCSP, even
41
+ when the key is present (a caller forwarding DEFAULT_CONFIGURATION).
42
+
43
+ Connection-property disable (``disable_ocsp_checks=True`` or
44
+ ``insecure_mode=True``) always turns OCSP off, including when
45
+ ``ocsp_fail_open`` is True/False. Presence of
46
+ ``disable_ocsp_checks=False`` or ``insecure_mode=False`` is not an
47
+ opt-in; those are the stored defaults.
48
+ """
49
+ if "disable_ocsp_checks" in explicit:
50
+ disable_value = disable_ocsp_checks
51
+ elif "insecure_mode" in explicit:
52
+ disable_value = (
53
+ insecure_mode if insecure_mode is not None else disable_ocsp_checks
54
+ )
55
+ else:
56
+ disable_value = False
57
+
58
+ if disable_value:
59
+ return OCSPMode.DISABLE_OCSP_CHECKS
60
+ if ocsp_fail_open is not None:
61
+ return OCSPMode.FAIL_OPEN if ocsp_fail_open else OCSPMode.FAIL_CLOSED
62
+ return OCSPMode.DISABLE_OCSP_CHECKS
63
+
64
+
65
+ def ignored_ocsp_support_params(explicit: Collection[str]) -> tuple[str, ...]:
66
+ if any(name in explicit for name in OCSP_MODE_PARAMS):
67
+ return ()
68
+ return tuple(sorted(name for name in OCSP_SUPPORT_PARAMS if name in explicit))
@@ -14,7 +14,7 @@ is not intended for production environments.**
14
14
  - ❌ `mfa_callback` / `password_callback` - not supported
15
15
  - ❌ `_probe_connection=True` - no connection diagnostic
16
16
  - ❌ Raw binary response handling - not supported
17
- - ❌ CRL (Certificate Revocation List) - not supported (only OCSP is supported)
17
+ - ❌ CRL (Certificate Revocation List) - not supported (only OCSP is supported). OCSP is off by default; set `ocsp_fail_open=True`/`False` to enable it.
18
18
 
19
19
  ## Installation & Import
20
20
 
@@ -17,7 +17,6 @@ from ..azure_storage_client import (
17
17
  from ..compat import quote
18
18
  from ..constants import FileHeader, ResultStatus
19
19
  from ..encryption_util import EncryptionMetadata
20
- from ..util_text import get_md5_for_integrity
21
20
  from ._storage_client import SnowflakeStorageClient as SnowflakeStorageClientAsync
22
21
 
23
22
  if TYPE_CHECKING: # pragma: no cover
@@ -173,26 +172,12 @@ class SnowflakeAzureRestClient(
173
172
  part = ET.Element("Latest")
174
173
  part.text = block_id
175
174
  root.append(part)
176
- # SNOW-1778088: We need to calculate the MD5 sum of this file for Azure Blob storage
177
- new_stream = not bool(self.meta.src_stream or self.meta.intermediate_stream)
178
- fd = (
179
- self.meta.src_stream
180
- or self.meta.intermediate_stream
181
- or open(self.meta.real_src_file_name, "rb")
182
- )
183
- try:
184
- if not new_stream:
185
- # Reset position in file
186
- fd.seek(0)
187
- file_content = fd.read()
188
- finally:
189
- if new_stream:
190
- fd.close()
175
+ # SNOW-1778088: We need to provide the MD5 sum of this file for Azure Blob storage.
191
176
  headers = {
192
177
  "x-ms-blob-content-encoding": "utf-8",
193
- "x-ms-blob-content-md5": base64.b64encode(
194
- get_md5_for_integrity(file_content)
195
- ).decode("utf-8"),
178
+ "x-ms-blob-content-md5": base64.b64encode(self.meta.md5_digest).decode(
179
+ "utf-8"
180
+ ),
196
181
  }
197
182
  azure_metadata = self._prepare_file_metadata()
198
183
  headers.update(azure_metadata)
@@ -659,6 +659,7 @@ class SnowflakeConnection(SnowflakeConnectionSync):
659
659
  self._rest = None
660
660
  for name, (value, _) in DEFAULT_CONFIGURATION.items():
661
661
  setattr(self, f"_{name}", value)
662
+ self._ocsp_explicit: frozenset[str] = frozenset()
662
663
 
663
664
  self._heartbeat_task = None
664
665
  is_kwargs_empty = not connection_init_kwargs
@@ -675,6 +676,7 @@ class SnowflakeConnection(SnowflakeConnectionSync):
675
676
  DeprecationWarning,
676
677
  stacklevel=2,
677
678
  )
679
+ self._insecure_mode = connection_init_kwargs["insecure_mode"]
678
680
 
679
681
  if (
680
682
  "disable_ocsp_checks" in connection_init_kwargs
@@ -44,7 +44,7 @@ class SnowflakeSSLConnector(aiohttp.TCPConnector):
44
44
  def __init__(
45
45
  self,
46
46
  *args,
47
- snowflake_ocsp_mode: OCSPMode = OCSPMode.FAIL_OPEN,
47
+ snowflake_ocsp_mode: OCSPMode = OCSPMode.DISABLE_OCSP_CHECKS,
48
48
  session_manager: SessionManager | None = None,
49
49
  **kwargs,
50
50
  ):
@@ -139,7 +139,7 @@ class AioHttpConfig(BaseHttpConfig):
139
139
  """Trust environment variables for proxy configuration (HTTP_PROXY, HTTPS_PROXY, NO_PROXY).
140
140
  Required for proxy support set by proxy.set_proxies() in connection initialization."""
141
141
 
142
- snowflake_ocsp_mode: OCSPMode = OCSPMode.FAIL_OPEN
142
+ snowflake_ocsp_mode: OCSPMode = OCSPMode.DISABLE_OCSP_CHECKS
143
143
  """OCSP validation mode obtained from connection._ocsp_mode()."""
144
144
 
145
145
  def get_connector(
@@ -104,6 +104,7 @@ class SnowflakeStorageClient(SnowflakeStorageClientSync):
104
104
  else:
105
105
  self.data_file = meta.real_src_file_name
106
106
  logger.debug("finished preprocessing")
107
+ self._compute_content_md5()
107
108
  if meta.upload_size < meta.multipart_threshold or not self.chunked_transfer:
108
109
  self.num_of_chunks = 1
109
110
  else:
@@ -25,7 +25,6 @@ from ...constants import (
25
25
  HTTP_HEADER_USER_AGENT,
26
26
  )
27
27
  from ...errorcode import (
28
- ER_IDP_CONNECTION_ERROR,
29
28
  ER_INVALID_VALUE,
30
29
  ER_NO_HOSTNAME_FOUND,
31
30
  ER_UNABLE_TO_OPEN_BROWSER,
@@ -111,7 +110,7 @@ class AuthByWebBrowser(AuthByPluginAsync, AuthByWebBrowserSync):
111
110
  )
112
111
  else:
113
112
  raise ex
114
- socket_connection.listen(0) # no backlog
113
+ socket_connection.listen(5)
115
114
  callback_port = socket_connection.getsockname()[1]
116
115
 
117
116
  if conn._disable_console_login:
@@ -246,34 +245,45 @@ class AuthByWebBrowser(AuthByPluginAsync, AuthByWebBrowserSync):
246
245
  else:
247
246
  logger.debug("Exceeded retry count")
248
247
 
249
- data = raw_data.decode("utf-8").split("\r\n")
248
+ if not raw_data:
249
+ continue
250
250
 
251
- if not await self._process_options(data, socket_client):
252
- await self._process_receive_saml_token(conn, data, socket_client)
251
+ data = raw_data.decode("utf-8").splitlines()
252
+
253
+ method = self._request_method(data)
254
+ if method == "OPTIONS":
255
+ await self._process_options(data, socket_client)
256
+ continue
257
+ if method not in {"GET", "POST"}:
258
+ continue
259
+ if not self._validate_callback_origin(data):
260
+ continue
261
+ if await self._process_receive_saml_token(conn, data, socket_client):
253
262
  break
254
263
 
255
264
  finally:
256
- socket_client.shutdown(socket.SHUT_RDWR)
257
- socket_client.close()
265
+ self._close_socket_client(socket_client)
258
266
 
259
267
  async def _process_options(
260
268
  self, data: list[str], socket_client: socket.socket
261
269
  ) -> bool:
262
270
  """Allows JS Ajax access to this endpoint."""
263
- for line in data:
264
- if line.startswith("OPTIONS "):
265
- break
266
- else:
271
+ if self._request_method(data) != "OPTIONS":
267
272
  return False
268
273
 
269
274
  self._get_user_agent(data)
270
275
  requested_headers, requested_origin = self._check_post_requested(data)
271
- if not requested_headers:
272
- return False
276
+ if requested_origin is None:
277
+ return True
278
+
279
+ if requested_headers and any(
280
+ header.strip().lower() != "content-type"
281
+ for header in requested_headers.split(",")
282
+ ):
283
+ return True
273
284
 
274
285
  if not self._validate_origin(requested_origin):
275
- # validate Origin and fail if not match with the server.
276
- return False
286
+ return True
277
287
 
278
288
  self._origin = requested_origin
279
289
  content = [
@@ -281,8 +291,8 @@ class AuthByWebBrowser(AuthByPluginAsync, AuthByWebBrowserSync):
281
291
  "Date: {}".format(
282
292
  time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime())
283
293
  ),
284
- "Access-Control-Allow-Methods: POST, GET",
285
- f"Access-Control-Allow-Headers: {requested_headers}",
294
+ "Access-Control-Allow-Methods: POST",
295
+ "Access-Control-Allow-Headers: Content-Type",
286
296
  "Access-Control-Max-Age: 86400",
287
297
  f"Access-Control-Allow-Origin: {self._origin}",
288
298
  "",
@@ -295,9 +305,9 @@ class AuthByWebBrowser(AuthByPluginAsync, AuthByWebBrowserSync):
295
305
 
296
306
  async def _process_receive_saml_token(
297
307
  self, conn: SnowflakeConnection, data: list[str], socket_client: socket.socket
298
- ) -> None:
308
+ ) -> bool:
299
309
  if not self._process_get(data) and not await self._process_post(conn, data):
300
- return # error
310
+ return False
301
311
 
302
312
  content = [
303
313
  "HTTP/1.1 200 OK",
@@ -324,32 +334,23 @@ You can close this window now and go back where you started from.
324
334
  await self._event_loop.sock_sendall(
325
335
  socket_client, "\r\n".join(content).encode("utf-8")
326
336
  )
337
+ return True
327
338
 
328
339
  async def _process_post(self, conn: SnowflakeConnection, data: list[str]) -> bool:
329
- for line in data:
330
- if line.startswith("POST "):
331
- break
332
- else:
333
- await self._handle_failure(
334
- conn=conn,
335
- ret={
336
- "code": ER_IDP_CONNECTION_ERROR,
337
- "message": "Invalid HTTP request from web browser. Idp "
338
- "authentication could have failed.",
339
- },
340
- )
340
+ body = self._request_body(data)
341
+ if self._request_method(data) != "POST" or body is None:
341
342
  return False
342
343
 
343
344
  self._get_user_agent(data)
344
345
  try:
345
346
  # parse the response as JSON
346
- payload = json.loads(data[-1])
347
+ payload = json.loads(body)
347
348
  self._token = payload.get("token")
348
349
  self.consent_cache_id_token = payload.get("consent", True)
349
350
  except Exception:
350
351
  # key=value form.
351
- self._token = parse_qs(data[-1])["token"][0]
352
- return True
352
+ self._token = (parse_qs(body).get("token") or [None])[0]
353
+ return self._token is not None
353
354
 
354
355
  async def _get_sso_url(
355
356
  self,