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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/CONTRIBUTING.md +2 -2
  2. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/DESCRIPTION.md +18 -2
  3. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/PKG-INFO +23 -8
  4. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/README.md +3 -3
  5. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/setup.cfg +4 -5
  6. snowflake_connector_python-4.8.1/src/snowflake/connector/_ocsp_mode.py +68 -0
  7. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/README.md +1 -1
  8. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_azure_storage_client.py +4 -19
  9. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_connection.py +2 -0
  10. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_pandas_tools.py +17 -19
  11. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_result_batch.py +11 -2
  12. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_session_manager.py +2 -2
  13. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_storage_client.py +1 -0
  14. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_webbrowser.py +35 -34
  15. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/webbrowser.py +141 -71
  16. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/workload_identity.py +3 -0
  17. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/azure_storage_client.py +17 -19
  18. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/connection.py +116 -23
  19. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/constants.py +68 -2
  20. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/file_transfer_agent.py +1 -0
  21. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/file_util.py +29 -0
  22. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/network.py +4 -2
  23. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/pandas_tools.py +57 -29
  24. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/result_batch.py +33 -2
  25. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/ssl_wrap_socket.py +87 -1
  26. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/storage_client.py +5 -0
  27. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/__init__.py +4 -4
  28. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/_collections.py +4 -0
  29. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/_version.py +2 -2
  30. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/connection.py +150 -45
  31. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/connectionpool.py +29 -9
  32. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +61 -21
  33. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +5 -7
  34. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/http2/connection.py +3 -2
  35. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/poolmanager.py +28 -4
  36. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/response.py +42 -9
  37. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/request.py +40 -4
  38. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/retry.py +13 -1
  39. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +12 -8
  40. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/url.py +158 -50
  41. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/version.py +1 -1
  42. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/wif_util.py +180 -36
  43. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/PKG-INFO +23 -8
  44. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/SOURCES.txt +1 -0
  45. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/requires.txt +3 -3
  46. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/LICENSE.txt +0 -0
  47. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/MANIFEST.in +0 -0
  48. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/NOTICE +0 -0
  49. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/SECURITY.md +0 -0
  50. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/pyproject.toml +0 -0
  51. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/setup.py +0 -0
  52. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/__init__.py +0 -0
  53. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/_connection_identifier_shape.py +0 -0
  54. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/_host_util.py +0 -0
  55. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/_query_context_cache.py +0 -0
  56. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/_sql_util.py +0 -0
  57. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/_utils.py +0 -0
  58. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/__init__.py +0 -0
  59. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_bind_upload_agent.py +0 -0
  60. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_cursor.py +0 -0
  61. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_description.py +0 -0
  62. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_direct_file_operation_utils.py +0 -0
  63. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_file_transfer_agent.py +0 -0
  64. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_gcs_storage_client.py +0 -0
  65. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_network.py +0 -0
  66. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_ocsp_asn1crypto.py +0 -0
  67. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_ocsp_snowflake.py +0 -0
  68. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_result_set.py +0 -0
  69. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_s3_storage_client.py +0 -0
  70. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_telemetry.py +0 -0
  71. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_time_util.py +0 -0
  72. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/_wif_util.py +0 -0
  73. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/__init__.py +0 -0
  74. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_auth.py +0 -0
  75. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_by_plugin.py +0 -0
  76. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_default.py +0 -0
  77. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_idtoken.py +0 -0
  78. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_keypair.py +0 -0
  79. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_no_auth.py +0 -0
  80. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_oauth.py +0 -0
  81. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_oauth_code.py +0 -0
  82. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_oauth_credentials.py +0 -0
  83. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_okta.py +0 -0
  84. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_pat.py +0 -0
  85. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_usrpwdmfa.py +0 -0
  86. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/aio/auth/_workload_identity.py +0 -0
  87. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/arrow_context.py +0 -0
  88. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/__init__.py +0 -0
  89. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/_auth.py +0 -0
  90. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/_http_server.py +0 -0
  91. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/_oauth_base.py +0 -0
  92. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/by_plugin.py +0 -0
  93. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/default.py +0 -0
  94. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/idtoken.py +0 -0
  95. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/keypair.py +0 -0
  96. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/no_auth.py +0 -0
  97. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/oauth.py +0 -0
  98. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/oauth_code.py +0 -0
  99. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/oauth_credentials.py +0 -0
  100. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/okta.py +0 -0
  101. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/pat.py +0 -0
  102. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
  103. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/backoff_policies.py +0 -0
  104. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/bind_upload_agent.py +0 -0
  105. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/cache.py +0 -0
  106. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/compat.py +0 -0
  107. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/config_manager.py +0 -0
  108. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/connection_diagnostic.py +0 -0
  109. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/converter.py +0 -0
  110. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/converter_issue23517.py +0 -0
  111. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/converter_null.py +0 -0
  112. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/converter_snowsql.py +0 -0
  113. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/crl.py +0 -0
  114. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/crl_cache.py +0 -0
  115. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/cursor.py +0 -0
  116. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/dbapi.py +0 -0
  117. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/description.py +0 -0
  118. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/direct_file_operation_utils.py +0 -0
  119. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/encryption_util.py +0 -0
  120. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/errorcode.py +0 -0
  121. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/errors.py +0 -0
  122. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/externals_utils/__init__.py +0 -0
  123. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/externals_utils/externals_setup.py +0 -0
  124. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/feature.py +0 -0
  125. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/file_compression_type.py +0 -0
  126. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/file_lock.py +0 -0
  127. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/gcs_storage_client.py +0 -0
  128. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/gzip_decoder.py +0 -0
  129. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/interval_util.py +0 -0
  130. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/local_storage_client.py +0 -0
  131. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/log_configuration.py +0 -0
  132. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/logging_utils/__init__.py +0 -0
  133. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/logging_utils/filters.py +0 -0
  134. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/minicore/__init__.py +0 -0
  135. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/minicore/linux_x86_64_glibc/libsf_mini_core.so +0 -0
  136. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  137. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  138. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  139. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  140. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  141. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  142. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
  143. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
  144. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  145. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  146. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
  147. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
  148. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  149. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  150. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
  151. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
  152. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  153. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  154. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  155. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  156. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  157. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  158. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  159. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  160. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  161. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
  162. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
  163. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  164. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  165. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  166. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  167. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  168. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  169. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  170. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  171. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  172. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  173. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  174. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  175. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  176. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  177. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  178. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  179. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  180. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  181. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  182. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  183. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  184. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  185. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  186. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  187. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  188. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  189. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  190. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  191. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  192. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  193. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  194. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  195. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  196. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  197. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  198. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  199. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  200. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  201. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  202. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  203. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  204. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  205. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  206. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  207. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  208. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  209. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  210. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  211. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  212. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  213. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  214. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  215. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  216. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  217. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  218. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  219. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  220. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
  221. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
  222. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
  223. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  224. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  225. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
  226. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
  227. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
  228. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/ocsp_snowflake.py +0 -0
  229. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/options.py +0 -0
  230. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/os_details.py +0 -0
  231. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/platform_detection.py +0 -0
  232. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/proxy.py +0 -0
  233. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/py.typed +0 -0
  234. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/result_set.py +0 -0
  235. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/s3_storage_client.py +0 -0
  236. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/secret_detector.py +0 -0
  237. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/session_manager.py +0 -0
  238. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/sf_dirs.py +0 -0
  239. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/sfbinaryformat.py +0 -0
  240. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/sfdatetime.py +0 -0
  241. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/snow_logging.py +0 -0
  242. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/sqlstate.py +0 -0
  243. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/ssd_internal_keys.py +0 -0
  244. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/telemetry.py +0 -0
  245. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/telemetry_oob.py +0 -0
  246. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/test_util.py +0 -0
  247. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/time_util.py +0 -0
  248. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/token_cache.py +0 -0
  249. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/tool/__init__.py +0 -0
  250. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/tool/dump_certs.py +0 -0
  251. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
  252. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
  253. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/tool/probe_connection.py +0 -0
  254. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/url_util.py +0 -0
  255. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/util_text.py +0 -0
  256. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/__init__.py +0 -0
  257. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
  258. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
  259. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
  260. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
  261. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/api.py +0 -0
  262. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/auth.py +0 -0
  263. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/certs.py +0 -0
  264. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/compat.py +0 -0
  265. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
  266. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
  267. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/help.py +0 -0
  268. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
  269. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/models.py +0 -0
  270. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/packages.py +0 -0
  271. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
  272. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
  273. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/structures.py +0 -0
  274. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/requests/utils.py +0 -0
  275. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
  276. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
  277. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/_base_connection.py +0 -0
  278. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/_request_methods.py +0 -0
  279. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
  280. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/__init__.py +0 -0
  281. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/connection.py +0 -0
  282. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/emscripten_fetch_worker.js +0 -0
  283. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/fetch.py +0 -0
  284. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/request.py +0 -0
  285. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/contrib/emscripten/response.py +0 -0
  286. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
  287. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
  288. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
  289. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/http2/__init__.py +0 -0
  290. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/http2/probe.py +0 -0
  291. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/py.typed +0 -0
  292. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
  293. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
  294. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
  295. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
  296. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
  297. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
  298. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
  299. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/util.py +0 -0
  300. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
  301. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
  302. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
  303. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
  304. {snowflake_connector_python-4.7.5 → snowflake_connector_python-4.8.1}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
@@ -30,8 +30,8 @@ dependencies installed with `snowflake-connector-python` installed as an editabl
30
30
  Setting up a development environment is super easy with this [one simple tox command](https://tox.wiki/en/legacy/example/devenv.html).
31
31
 
32
32
  ```shell
33
- tox --devenv venv310 -e py310
34
- . venv310/bin/activate
33
+ tox --devenv venv311 -e py311
34
+ . venv311/bin/activate
35
35
  ```
36
36
 
37
37
  Note: we suggest using the lowest supported Python version for development.
@@ -7,6 +7,23 @@ 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.1(Oct 26,2026)
11
+ - Fixed `write_pandas` identifier quoting. Parquet field paths are quoted, Iceberg option values are escaped string literals, and `quote_identifiers=False` accepts only valid unquoted identifiers.
12
+ - Dropped support for Python 3.10. The minimum supported version is now Python 3.11.
13
+ - Bumped vendored `urllib3` to `2.8.0`. This includes the upstream fix for importing the connector on Python built against OpenSSL 4, where `ssl.PROTOCOL_TLSv1` no longer exists (SNOW-4232077).
14
+ - Fixed large result set batch chunk download logging every transient retry at ERROR level with a traceback. Intermediate retries now log at WARNING; only the final failure after all retries are exhausted logs at ERROR with a traceback. These retry and failure logs now also include the S3 request IDs (`x-amz-request-id` / `x-amz-id-2`) when present, to aid troubleshooting and correlation with AWS-side records (SNOW-4218352).
15
+ - Fixed a spurious `RequestsDependencyWarning` emitted at import time by the vendored `requests` when a newer `chardet` (7.x) or `charset_normalizer` is installed. `check_compatibility()` still requires `chardet >= 3.0.2` and `charset_normalizer >= 2.0.0`, but no longer rejects newer majors (SNOW-3559506).
16
+ - Raised the minimum certifi requirement to 2026.10.18
17
+ - Raised filelock upper bound dependency to allow installation of filelock 4.X.
18
+
19
+ - v4.8.0(Sep 30,2026)
20
+ - 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.
21
+ - 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.
22
+ - 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.
23
+ - 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).
24
+ - Fixed MD5 computation for Azure clouds (SNOW-4168830).
25
+ - 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`.
26
+
10
27
  - v4.7.5(Sep 18,2026)
11
28
  - 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
29
 
@@ -14,8 +31,6 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
14
31
  - 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
32
  - 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
33
  - 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
34
 
20
35
  - v4.7.3(Sep 3,2026)
21
36
  - Added experimental Python 3.14t (free-threaded CPython) wheel support. **Experimental — not intended for production use.**
@@ -33,6 +48,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
33
48
  - Improved the robustness and correctness of OCSP revocation checking (SNOW-3675581).
34
49
  - When `SF_OCSP_RESPONSE_CACHE_SERVER_URL` is set, the connector uses it as the OCSP cache server, including on PrivateLink hosts.
35
50
  - A PrivateLink OCSP cache URL is derived only for hosts that consist of hostname characters, include a `.privatelink.` label, and end at `snowflakecomputing.com`, `.cn`, or `.mil`. Other hosts use the public default cache URL; set `SF_OCSP_RESPONSE_CACHE_SERVER_URL` to use a different cache server.
51
+ - Please review [Snowflake documentation](https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-473-sep-3-2026) for possible implications to your workflow
36
52
  - Extended log secret masking coverage (SNOW-3675583). The connection-token pattern accepts `:` and `%` in the token value. Added patterns for OAuth access and refresh tokens in serialized JSON, for one-time passcodes, and for OAuth client identifiers and secrets. The passcode pattern accepts quoted values. The password pattern requires at least six characters in the value, so ordinary prose following the word "password" is not redacted.
37
53
  - Request headers are copied before mutation on the async path, and masking is applied to the `Authorization` header in error logs (SNOW-3675593).
38
54
  - Applied secret masking to the `snowflake.connector` loggers by default, independent of how application logging is configured. The same filter also covers the third-party loggers the connector uses (`botocore`, `boto3`, `aiohttp`, `aiobotocore`, `aioboto3`, vendored `urllib3`). Set `SNOWFLAKE_DISABLE_LOG_SECRET_MASKING=true` to opt out; it is honored at emit time, including after import (SNOW-3675583).
@@ -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.1
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -22,7 +22,6 @@ Classifier: License :: OSI Approved :: Apache Software License
22
22
  Classifier: Operating System :: OS Independent
23
23
  Classifier: Programming Language :: Python :: 3
24
24
  Classifier: Programming Language :: Python :: 3 :: Only
25
- Classifier: Programming Language :: Python :: 3.10
26
25
  Classifier: Programming Language :: Python :: 3.11
27
26
  Classifier: Programming Language :: Python :: 3.12
28
27
  Classifier: Programming Language :: Python :: 3.13
@@ -35,22 +34,22 @@ Classifier: Topic :: Software Development
35
34
  Classifier: Topic :: Software Development :: Libraries
36
35
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
37
36
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
38
- Requires-Python: >=3.10
37
+ Requires-Python: >=3.11
39
38
  Description-Content-Type: text/markdown
40
39
  License-File: LICENSE.txt
41
40
  License-File: NOTICE
42
41
  Requires-Dist: asn1crypto<2.0.0,>0.24.0
43
42
  Requires-Dist: cryptography>=46.0.5
44
- Requires-Dist: pyOpenSSL>=24.0.0
43
+ Requires-Dist: pyOpenSSL>=25.3.0
45
44
  Requires-Dist: pyjwt<3.0.0,>=2.10.1
46
45
  Requires-Dist: pytz
47
46
  Requires-Dist: requests<3.0.0,>=2.32.4
48
47
  Requires-Dist: packaging
49
48
  Requires-Dist: charset_normalizer<4,>=2
50
49
  Requires-Dist: idna<4,>=3.7
51
- Requires-Dist: certifi>=2024.7.4
50
+ Requires-Dist: certifi>=2026.10.18
52
51
  Requires-Dist: typing_extensions<5,>=4.3
53
- Requires-Dist: filelock<4,>=3.5
52
+ Requires-Dist: filelock<5,>=3.12
54
53
  Requires-Dist: sortedcontainers>=2.4.0
55
54
  Requires-Dist: platformdirs<5.0.0,>=2.6.0
56
55
  Requires-Dist: tomlkit
@@ -97,6 +96,23 @@ https://docs.snowflake.com/
97
96
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
98
97
 
99
98
  # Release Notes
99
+ - v4.8.1(Oct 26,2026)
100
+ - Fixed `write_pandas` identifier quoting. Parquet field paths are quoted, Iceberg option values are escaped string literals, and `quote_identifiers=False` accepts only valid unquoted identifiers.
101
+ - Dropped support for Python 3.10. The minimum supported version is now Python 3.11.
102
+ - Bumped vendored `urllib3` to `2.8.0`. This includes the upstream fix for importing the connector on Python built against OpenSSL 4, where `ssl.PROTOCOL_TLSv1` no longer exists (SNOW-4232077).
103
+ - Fixed large result set batch chunk download logging every transient retry at ERROR level with a traceback. Intermediate retries now log at WARNING; only the final failure after all retries are exhausted logs at ERROR with a traceback. These retry and failure logs now also include the S3 request IDs (`x-amz-request-id` / `x-amz-id-2`) when present, to aid troubleshooting and correlation with AWS-side records (SNOW-4218352).
104
+ - Fixed a spurious `RequestsDependencyWarning` emitted at import time by the vendored `requests` when a newer `chardet` (7.x) or `charset_normalizer` is installed. `check_compatibility()` still requires `chardet >= 3.0.2` and `charset_normalizer >= 2.0.0`, but no longer rejects newer majors (SNOW-3559506).
105
+ - Raised the minimum certifi requirement to 2026.10.18
106
+ - Raised filelock upper bound dependency to allow installation of filelock 4.X.
107
+
108
+ - v4.8.0(Sep 30,2026)
109
+ - 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.
110
+ - 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.
111
+ - 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.
112
+ - 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).
113
+ - Fixed MD5 computation for Azure clouds (SNOW-4168830).
114
+ - 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`.
115
+
100
116
  - v4.7.5(Sep 18,2026)
101
117
  - 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
118
 
@@ -104,8 +120,6 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
104
120
  - 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
121
  - 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
122
  - 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
123
 
110
124
  - v4.7.3(Sep 3,2026)
111
125
  - Added experimental Python 3.14t (free-threaded CPython) wheel support. **Experimental — not intended for production use.**
@@ -123,6 +137,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
123
137
  - Improved the robustness and correctness of OCSP revocation checking (SNOW-3675581).
124
138
  - When `SF_OCSP_RESPONSE_CACHE_SERVER_URL` is set, the connector uses it as the OCSP cache server, including on PrivateLink hosts.
125
139
  - A PrivateLink OCSP cache URL is derived only for hosts that consist of hostname characters, include a `.privatelink.` label, and end at `snowflakecomputing.com`, `.cn`, or `.mil`. Other hosts use the public default cache URL; set `SF_OCSP_RESPONSE_CACHE_SERVER_URL` to use a different cache server.
140
+ - Please review [Snowflake documentation](https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-473-sep-3-2026) for possible implications to your workflow
126
141
  - Extended log secret masking coverage (SNOW-3675583). The connection-token pattern accepts `:` and `%` in the token value. Added patterns for OAuth access and refresh tokens in serialized JSON, for one-time passcodes, and for OAuth client identifiers and secrets. The passcode pattern accepts quoted values. The password pattern requires at least six characters in the value, so ordinary prose following the word "password" is not redacted.
127
142
  - Request headers are copied before mutation on the async path, and masking is applied to the `Authorization` header in error logs (SNOW-3675593).
128
143
  - Applied secret masking to the `snowflake.connector` loggers by default, independent of how application logging is configured. The same filter also covers the third-party loggers the connector uses (`botocore`, `boto3`, `aiohttp`, `aiobotocore`, `aioboto3`, vendored `urllib3`). Set `SNOWFLAKE_DISABLE_LOG_SECRET_MASKING=true` to opt out; it is honored at emit time, including after import (SNOW-3675583).
@@ -1,7 +1,7 @@
1
1
  # Snowflake Connector for Python
2
2
 
3
3
  > [!IMPORTANT]
4
- > A new version of the driver is being developed in [snowflakedb/drivers](https://github.com/snowflakedb/drivers) and is currently in public preview. See the [documentation](https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-universal-core) for more information.
4
+ > Version 5.0.0 of the Snowflake Connector for Python has been released. Development has moved to [snowflakedb/drivers](https://github.com/snowflakedb/drivers). See the [documentation](https://docs.snowflake.com/en/developer-guide/universal-core/universal-core) for more information.
5
5
 
6
6
  This package includes the Snowflake Connector for Python, which conforms to the [Python DB API 2.0](https://www.python.org/dev/peps/pep-0249/) specification.
7
7
 
@@ -12,7 +12,7 @@ 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
  Snowflake Documentation is available at:
18
18
  https://docs.snowflake.com/
@@ -39,7 +39,7 @@ Find the `snowflake_connector_python*.whl` package in the `./dist` directory.
39
39
  ### In Docker
40
40
  Or use our Dockerized build script `ci/build_docker.sh` and find the built wheel files in `dist/repaired_wheels`.
41
41
 
42
- Note: `ci/build_docker.sh` can be used to compile only certain versions, like this: `ci/build_docker.sh "3.10 3.11"`
42
+ Note: `ci/build_docker.sh` can be used to compile only certain versions, like this: `ci/build_docker.sh "3.11 3.12"`
43
43
 
44
44
  ## Code hygiene and other utilities
45
45
  These tools are integrated into `tox` to allow us to easily set them up universally on any computer.
@@ -20,7 +20,6 @@ classifiers =
20
20
  Operating System :: OS Independent
21
21
  Programming Language :: Python :: 3
22
22
  Programming Language :: Python :: 3 :: Only
23
- Programming Language :: Python :: 3.10
24
23
  Programming Language :: Python :: 3.11
25
24
  Programming Language :: Python :: 3.12
26
25
  Programming Language :: Python :: 3.13
@@ -41,21 +40,21 @@ project_urls =
41
40
  Changelog=https://github.com/snowflakedb/snowflake-connector-python/blob/main/DESCRIPTION.md
42
41
 
43
42
  [options]
44
- python_requires = >=3.10
43
+ python_requires = >=3.11
45
44
  packages = find_namespace:
46
45
  install_requires =
47
46
  asn1crypto>0.24.0,<2.0.0
48
47
  cryptography>=46.0.5
49
- pyOpenSSL>=24.0.0
48
+ pyOpenSSL>=25.3.0
50
49
  pyjwt>=2.10.1,<3.0.0
51
50
  pytz
52
51
  requests>=2.32.4,<3.0.0
53
52
  packaging
54
53
  charset_normalizer>=2,<4
55
54
  idna>=3.7,<4
56
- certifi>=2024.7.4
55
+ certifi>=2026.10.18
57
56
  typing_extensions>=4.3,<5
58
- filelock>=3.5,<4
57
+ filelock>=3.12,<5
59
58
  sortedcontainers>=2.4.0
60
59
  platformdirs>=2.6.0,<5.0.0
61
60
  tomlkit
@@ -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
@@ -12,6 +12,8 @@ from snowflake.connector.options import pandas
12
12
  # Import utilities from sync version
13
13
  from snowflake.connector.pandas_tools import (
14
14
  _iceberg_config_statement_helper,
15
+ _quote_sql_identifier,
16
+ _sql_column_identifier,
15
17
  build_location_helper,
16
18
  chunk_helper,
17
19
  )
@@ -240,7 +242,8 @@ async def write_pandas(
240
242
  https://docs.snowflake.com/en/sql-reference/sql/put.html#optional-parameters (Default value = 4).
241
243
  quote_identifiers: By default, identifiers, specifically database, schema, table and column names
242
244
  (from df.columns) will be quoted. If set to False, identifiers are passed on to Snowflake without quoting.
243
- I.e. identifiers will be coerced to uppercase by Snowflake. (Default value = True)
245
+ I.e. identifiers will be coerced to uppercase by Snowflake. Column names in this mode must be valid
246
+ Snowflake unquoted identifiers. (Default value = True)
244
247
  infer_schema: Perform explicit schema inference on the data in the DataFrame and use the inferred data types
245
248
  when selecting columns from the DataFrame. (Default value = False)
246
249
  auto_create_table: When true, will automatically create a table with corresponding columns for each column in
@@ -335,6 +338,15 @@ async def write_pandas(
335
338
  else:
336
339
  sql_use_logical_type = " USE_LOGICAL_TYPE = FALSE"
337
340
 
341
+ # Validate/quote column names before creating temp objects or uploading.
342
+ # `$1:"field"` path syntax does not support IDENTIFIER(?) or ? bindings; always quote it.
343
+ # quote_identifiers only controls CREATE/COPY column lists (case-folding), not the parquet path.
344
+ snowflake_column_names = [
345
+ _sql_column_identifier(c, quote_identifiers) for c in df.columns
346
+ ]
347
+ parquet_field_names = [_quote_sql_identifier(c) for c in df.columns]
348
+ columns = ",".join(snowflake_column_names)
349
+
338
350
  cursor = conn.cursor()
339
351
  stage_location = await _create_temp_stage(
340
352
  cursor,
@@ -373,18 +385,6 @@ async def write_pandas(
373
385
  options={"parallel": parallel, "source_compression": "auto_detect"},
374
386
  )
375
387
 
376
- # in Snowflake, all parquet data is stored in a single column, $1, so we must select columns explicitly
377
- # see (https://docs.snowflake.com/en/user-guide/script-data-load-transform-parquet.html)
378
- if quote_identifiers:
379
- quote = '"'
380
- # if the column name contains a double quote, we need to escape it by replacing with two double quotes
381
- # https://docs.snowflake.com/en/sql-reference/identifiers-syntax#double-quoted-identifiers
382
- snowflake_column_names = [str(c).replace('"', '""') for c in df.columns]
383
- else:
384
- quote = ""
385
- snowflake_column_names = list(df.columns)
386
- columns = quote + f"{quote},{quote}".join(snowflake_column_names) + quote
387
-
388
388
  async def drop_object(name: str, object_type: str) -> None:
389
389
  drop_sql = f"DROP {object_type.upper()} IF EXISTS identifier(?) /* Python:snowflake.connector.aio._pandas_tools.write_pandas() */"
390
390
  params = (name,)
@@ -427,7 +427,7 @@ async def write_pandas(
427
427
  # columns in order
428
428
  create_table_columns = ", ".join(
429
429
  [
430
- f"{quote}{snowflake_col}{quote} {column_type_mapping[col]}"
430
+ f"{snowflake_col} {column_type_mapping[col]}"
431
431
  for snowflake_col, col in zip(snowflake_column_names, df.columns)
432
432
  ]
433
433
  )
@@ -468,8 +468,8 @@ async def write_pandas(
468
468
 
469
469
  # need explicit casting when the underlying table schema is inferred
470
470
  parquet_columns = "$1:" + ",$1:".join(
471
- f"{quote}{snowflake_col}{quote}::{column_type_mapping[col]}"
472
- for snowflake_col, col in zip(snowflake_column_names, df.columns)
471
+ f"{parquet_field}::{column_type_mapping[col]}"
472
+ for parquet_field, col in zip(parquet_field_names, df.columns)
473
473
  )
474
474
  else:
475
475
  target_table_location = build_location_helper(
@@ -478,9 +478,7 @@ async def write_pandas(
478
478
  name=table_name,
479
479
  quote_identifiers=quote_identifiers,
480
480
  )
481
- parquet_columns = "$1:" + ",$1:".join(
482
- f"{quote}{snowflake_col}{quote}" for snowflake_col in snowflake_column_names
483
- )
481
+ parquet_columns = "$1:" + ",$1:".join(parquet_field_names)
484
482
 
485
483
  try:
486
484
  if overwrite and (not auto_create_table):
@@ -34,6 +34,7 @@ from snowflake.connector.result_batch import RemoteChunkInfo
34
34
  from snowflake.connector.result_batch import ResultBatch as ResultBatchSync
35
35
  from snowflake.connector.result_batch import (
36
36
  _create_nanoarrow_iterator,
37
+ _s3_request_id_log_suffix,
37
38
  inline_first_chunk_rowcount,
38
39
  )
39
40
  from snowflake.connector.secret_detector import SecretDetector
@@ -232,6 +233,7 @@ class ResultBatch(ResultBatchSync):
232
233
 
233
234
  content, encoding = None, None
234
235
  for retry in range(max(MAX_DOWNLOAD_RETRY, 1)):
236
+ amz_request_id_suffix = ""
235
237
  try:
236
238
 
237
239
  async with TimerContextManager() as download_metric:
@@ -284,6 +286,7 @@ class ResultBatch(ResultBatchSync):
284
286
  ) as session:
285
287
  response, content, encoding = await download_chunk(session)
286
288
 
289
+ amz_request_id_suffix = _s3_request_id_log_suffix(response)
287
290
  if response.status == OK:
288
291
  break
289
292
  # Raise error here to correctly go in to exception clause
@@ -301,12 +304,18 @@ class ResultBatch(ResultBatchSync):
301
304
  if retry == MAX_DOWNLOAD_RETRY - 1:
302
305
  # Re-throw if we failed on the last retry
303
306
  e = e.args[0] if isinstance(e, RetryRequest) else e
307
+ logger.error(
308
+ f"Failed to fetch the large result set batch "
309
+ f"{self.id} after {MAX_DOWNLOAD_RETRY} attempts, "
310
+ f"giving up for the reason: '{e}'{amz_request_id_suffix}",
311
+ exc_info=True,
312
+ )
304
313
  raise e
305
314
  sleep_timer = next(backoff)
306
- logger.exception(
315
+ logger.warning(
307
316
  f"Failed to fetch the large result set batch "
308
317
  f"{self.id} for the {retry + 1} th time, "
309
- f"backing off for {sleep_timer}s for the reason: '{e}'"
318
+ f"backing off for {sleep_timer}s for the reason: '{e}'{amz_request_id_suffix}"
310
319
  )
311
320
  await asyncio.sleep(sleep_timer)
312
321
 
@@ -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: