snowflake-connector-python 3.12.3__tar.gz → 3.12.4__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 (237) hide show
  1. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/DESCRIPTION.md +6 -0
  2. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/PKG-INFO +8 -2
  3. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/README.md +5 -0
  4. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/setup.cfg +1 -1
  5. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/azure_storage_client.py +24 -2
  6. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/network.py +12 -4
  7. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ocsp_asn1crypto.py +17 -1
  8. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/util_text.py +9 -0
  9. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/version.py +1 -1
  10. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/PKG-INFO +8 -2
  11. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/requires.txt +1 -1
  12. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/CONTRIBUTING.md +0 -0
  13. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/LICENSE.txt +0 -0
  14. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/MANIFEST.in +0 -0
  15. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/NOTICE +0 -0
  16. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/SECURITY.md +0 -0
  17. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/pyproject.toml +0 -0
  18. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/setup.py +0 -0
  19. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/__init__.py +0 -0
  20. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_query_context_cache.py +0 -0
  21. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_sql_util.py +0 -0
  22. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_utils.py +0 -0
  23. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/arrow_context.py +0 -0
  24. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/__init__.py +0 -0
  25. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/_auth.py +0 -0
  26. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/by_plugin.py +0 -0
  27. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/default.py +0 -0
  28. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/idtoken.py +0 -0
  29. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/keypair.py +0 -0
  30. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/oauth.py +0 -0
  31. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/okta.py +0 -0
  32. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
  33. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/webbrowser.py +0 -0
  34. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/backoff_policies.py +0 -0
  35. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/bind_upload_agent.py +0 -0
  36. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/cache.py +0 -0
  37. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/compat.py +0 -0
  38. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/config_manager.py +0 -0
  39. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/connection.py +0 -0
  40. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/connection_diagnostic.py +0 -0
  41. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/constants.py +0 -0
  42. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter.py +0 -0
  43. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_issue23517.py +0 -0
  44. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_null.py +0 -0
  45. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_snowsql.py +0 -0
  46. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/cursor.py +0 -0
  47. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/dbapi.py +0 -0
  48. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/description.py +0 -0
  49. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/encryption_util.py +0 -0
  50. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/errorcode.py +0 -0
  51. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/errors.py +0 -0
  52. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/feature.py +0 -0
  53. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_compression_type.py +0 -0
  54. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_transfer_agent.py +0 -0
  55. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_util.py +0 -0
  56. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/gcs_storage_client.py +0 -0
  57. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/gzip_decoder.py +0 -0
  58. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/local_storage_client.py +0 -0
  59. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/log_configuration.py +0 -0
  60. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  61. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  62. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  63. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  64. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  65. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  66. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
  67. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
  68. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  69. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  70. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
  71. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
  72. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  73. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  74. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  75. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  76. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  77. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  78. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  79. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  80. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  81. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  82. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  83. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  84. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  85. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  86. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  87. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  88. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  89. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  90. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  91. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  92. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  93. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  94. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  95. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  96. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  97. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  98. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  99. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  100. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  101. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  102. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  103. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  104. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  105. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  106. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  107. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  108. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  109. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  110. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  111. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  112. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  113. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  114. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  115. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  116. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  117. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  118. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  119. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  120. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  121. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  122. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  123. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  124. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  125. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  126. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  127. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  128. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  129. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  130. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  131. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  132. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  133. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  134. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  135. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  136. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  137. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  138. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  139. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  140. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
  141. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
  142. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
  143. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  144. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  145. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
  146. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
  147. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ocsp_snowflake.py +0 -0
  148. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/options.py +0 -0
  149. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/pandas_tools.py +0 -0
  150. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/proxy.py +0 -0
  151. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/py.typed +0 -0
  152. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/result_batch.py +0 -0
  153. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/result_set.py +0 -0
  154. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/s3_storage_client.py +0 -0
  155. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/secret_detector.py +0 -0
  156. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sf_dirs.py +0 -0
  157. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sfbinaryformat.py +0 -0
  158. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sfdatetime.py +0 -0
  159. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/snow_logging.py +0 -0
  160. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sqlstate.py +0 -0
  161. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ssd_internal_keys.py +0 -0
  162. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ssl_wrap_socket.py +0 -0
  163. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/storage_client.py +0 -0
  164. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/telemetry.py +0 -0
  165. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/telemetry_oob.py +0 -0
  166. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/test_util.py +0 -0
  167. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/time_util.py +0 -0
  168. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/__init__.py +0 -0
  169. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_certs.py +0 -0
  170. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
  171. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
  172. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/probe_connection.py +0 -0
  173. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/url_util.py +0 -0
  174. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/__init__.py +0 -0
  175. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
  176. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
  177. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
  178. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
  179. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
  180. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/api.py +0 -0
  181. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/auth.py +0 -0
  182. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/certs.py +0 -0
  183. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/compat.py +0 -0
  184. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
  185. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
  186. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/help.py +0 -0
  187. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
  188. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/models.py +0 -0
  189. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
  190. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
  191. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/structures.py +0 -0
  192. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/utils.py +0 -0
  193. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
  194. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
  195. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
  196. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
  197. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
  198. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
  199. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
  200. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_appengine_environ.py +0 -0
  201. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/__init__.py +0 -0
  202. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/bindings.py +0 -0
  203. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/low_level.py +0 -0
  204. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/appengine.py +0 -0
  205. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/ntlmpool.py +0 -0
  206. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
  207. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/securetransport.py +0 -0
  208. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
  209. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
  210. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
  211. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
  212. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/__init__.py +0 -0
  213. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/__init__.py +0 -0
  214. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/makefile.py +0 -0
  215. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/weakref_finalize.py +0 -0
  216. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/six.py +0 -0
  217. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
  218. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/request.py +0 -0
  219. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
  220. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
  221. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
  222. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
  223. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/queue.py +0 -0
  224. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
  225. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
  226. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
  227. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
  228. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
  229. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
  230. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
  231. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
  232. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
  233. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
  234. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
  235. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
  236. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
  237. {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
@@ -8,6 +8,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
8
8
 
9
9
  # Release Notes
10
10
 
11
+ - v3.12.4(December 3,2024)
12
+ - Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
13
+ - Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
14
+ - Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
15
+ - Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
16
+
11
17
  - v3.12.3(October 25,2024)
12
18
  - Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
13
19
  - Improved error message for SQL execution cancellations caused by timeout.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: snowflake-connector-python
3
- Version: 3.12.3
3
+ Version: 3.12.4
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: NOTICE
41
41
  Requires-Dist: asn1crypto<2.0.0,>0.24.0
42
42
  Requires-Dist: cffi<2.0.0,>=1.9
43
43
  Requires-Dist: cryptography>=3.1.0
44
- Requires-Dist: pyOpenSSL<25.0.0,>=16.2.0
44
+ Requires-Dist: pyOpenSSL<25.0.0,>=22.0.0
45
45
  Requires-Dist: pyjwt<3.0.0
46
46
  Requires-Dist: pytz
47
47
  Requires-Dist: requests<3.0.0
@@ -85,6 +85,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
85
85
 
86
86
  # Release Notes
87
87
 
88
+ - v3.12.4(December 3,2024)
89
+ - Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
90
+ - Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
91
+ - Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
92
+ - Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
93
+
88
94
  - v3.12.3(October 25,2024)
89
95
  - Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
90
96
  - Improved error message for SQL execution cancellations caused by timeout.
@@ -81,3 +81,8 @@ conn = snowflake.connector.connect(
81
81
  )
82
82
  conn.telemetry_enabled = False
83
83
  ```
84
+
85
+
86
+ ## NOTE
87
+
88
+ This library currently does not support GCP regional endpoints. Please ensure that any workloads using through this library do not require support for regional endpoints on GCP. If you have questions about this, please contact [Snowflake Support](https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge).
@@ -46,7 +46,7 @@ install_requires =
46
46
  asn1crypto>0.24.0,<2.0.0
47
47
  cffi>=1.9,<2.0.0
48
48
  cryptography>=3.1.0
49
- pyOpenSSL>=16.2.0,<25.0.0
49
+ pyOpenSSL>=22.0.0,<25.0.0
50
50
  pyjwt<3.0.0
51
51
  pytz
52
52
  requests<3.0.0
@@ -4,6 +4,7 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
+ import base64
7
8
  import json
8
9
  import os
9
10
  import xml.etree.ElementTree as ET
@@ -17,6 +18,7 @@ from .compat import quote
17
18
  from .constants import FileHeader, ResultStatus
18
19
  from .encryption_util import EncryptionMetadata
19
20
  from .storage_client import SnowflakeStorageClient
21
+ from .util_text import get_md5
20
22
  from .vendored import requests
21
23
 
22
24
  if TYPE_CHECKING: # pragma: no cover
@@ -149,7 +151,7 @@ class SnowflakeAzureRestClient(SnowflakeStorageClient):
149
151
  )
150
152
  )
151
153
  return FileHeader(
152
- digest=r.headers.get("x-ms-meta-sfcdigest"),
154
+ digest=r.headers.get(SFCDIGEST),
153
155
  content_length=int(r.headers.get("Content-Length")),
154
156
  encryption_metadata=encryption_metadata,
155
157
  )
@@ -236,7 +238,27 @@ class SnowflakeAzureRestClient(SnowflakeStorageClient):
236
238
  part = ET.Element("Latest")
237
239
  part.text = block_id
238
240
  root.append(part)
239
- headers = {"x-ms-blob-content-encoding": "utf-8"}
241
+ # SNOW-1778088: We need to calculate the MD5 sum of this file for Azure Blob storage
242
+ new_stream = not bool(self.meta.src_stream or self.meta.intermediate_stream)
243
+ fd = (
244
+ self.meta.src_stream
245
+ or self.meta.intermediate_stream
246
+ or open(self.meta.real_src_file_name, "rb")
247
+ )
248
+ try:
249
+ if not new_stream:
250
+ # Reset position in file
251
+ fd.seek(0)
252
+ file_content = fd.read()
253
+ finally:
254
+ if new_stream:
255
+ fd.close()
256
+ headers = {
257
+ "x-ms-blob-content-encoding": "utf-8",
258
+ "x-ms-blob-content-md5": base64.b64encode(get_md5(file_content)).decode(
259
+ "utf-8"
260
+ ),
261
+ }
240
262
  azure_metadata = self._prepare_file_metadata()
241
263
  headers.update(azure_metadata)
242
264
  retry_id = "COMPLETE"
@@ -481,11 +481,19 @@ class SnowflakeRestful:
481
481
  HTTP_HEADER_USER_AGENT: PYTHON_CONNECTOR_USER_AGENT,
482
482
  }
483
483
  try:
484
- from opentelemetry.propagate import inject
484
+ # SNOW-1763555: inject OpenTelemetry headers if available specifically in WC3 format
485
+ # into our request headers in case tracing is enabled. This should make sure that
486
+ # our requests are accounted for properly if OpenTelemetry is used by users.
487
+ from opentelemetry.trace.propagation.tracecontext import (
488
+ TraceContextTextMapPropagator,
489
+ )
485
490
 
486
- inject(headers)
487
- except ModuleNotFoundError as e:
488
- logger.debug(f"Opentelemtry otel injection failed because of: {e}")
491
+ TraceContextTextMapPropagator().inject(headers)
492
+ except Exception:
493
+ logger.debug(
494
+ "Opentelemtry otel injection failed",
495
+ exc_info=True,
496
+ )
489
497
  if self._connection.service_name:
490
498
  headers[HTTP_HEADER_SERVICE_NAME] = self._connection.service_name
491
499
  if method == "post":
@@ -5,6 +5,7 @@
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
+ import typing
8
9
  from base64 import b64decode, b64encode
9
10
  from collections import OrderedDict
10
11
  from datetime import datetime, timezone
@@ -28,6 +29,9 @@ from cryptography.exceptions import InvalidSignature
28
29
  from cryptography.hazmat.backends import default_backend
29
30
  from cryptography.hazmat.primitives import hashes, serialization
30
31
  from cryptography.hazmat.primitives.asymmetric import padding, utils
32
+ from cryptography.hazmat.primitives.asymmetric.dsa import DSAPublicKey
33
+ from cryptography.hazmat.primitives.asymmetric.ec import ECDSA, EllipticCurvePublicKey
34
+ from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey
31
35
  from OpenSSL.SSL import Connection
32
36
 
33
37
  from snowflake.connector.errorcode import (
@@ -368,9 +372,21 @@ class SnowflakeOCSPAsn1Crypto(SnowflakeOCSP):
368
372
  hasher = hashes.Hash(chosen_hash, backend)
369
373
  hasher.update(data.dump())
370
374
  digest = hasher.finalize()
375
+ additional_kwargs: dict[str, typing.Any] = dict()
376
+ if isinstance(public_key, RSAPublicKey):
377
+ additional_kwargs["padding"] = padding.PKCS1v15()
378
+ additional_kwargs["algorithm"] = utils.Prehashed(chosen_hash)
379
+ elif isinstance(public_key, DSAPublicKey):
380
+ additional_kwargs["algorithm"] = utils.Prehashed(chosen_hash)
381
+ elif isinstance(public_key, EllipticCurvePublicKey):
382
+ additional_kwargs["signature_algorithm"] = ECDSA(
383
+ utils.Prehashed(chosen_hash)
384
+ )
371
385
  try:
372
386
  public_key.verify(
373
- signature, digest, padding.PKCS1v15(), utils.Prehashed(chosen_hash)
387
+ signature,
388
+ digest,
389
+ **additional_kwargs,
374
390
  )
375
391
  except InvalidSignature:
376
392
  raise RevocationCheckError(msg="Failed to verify the signature")
@@ -5,6 +5,7 @@
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
+ import hashlib
8
9
  import logging
9
10
  import random
10
11
  import re
@@ -289,3 +290,11 @@ def random_string(
289
290
  """
290
291
  random_part = "".join([random.Random().choice(choices) for _ in range(length)])
291
292
  return "".join([prefix, random_part, suffix])
293
+
294
+
295
+ def get_md5(text: str | bytes) -> bytes:
296
+ if isinstance(text, str):
297
+ text = text.encode("utf-8")
298
+ md5 = hashlib.md5()
299
+ md5.update(text)
300
+ return md5.digest()
@@ -1,3 +1,3 @@
1
1
  # Update this for the versions
2
2
  # Don't change the forth version number from None
3
- VERSION = (3, 12, 3, None)
3
+ VERSION = (3, 12, 4, None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: snowflake-connector-python
3
- Version: 3.12.3
3
+ Version: 3.12.4
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: NOTICE
41
41
  Requires-Dist: asn1crypto<2.0.0,>0.24.0
42
42
  Requires-Dist: cffi<2.0.0,>=1.9
43
43
  Requires-Dist: cryptography>=3.1.0
44
- Requires-Dist: pyOpenSSL<25.0.0,>=16.2.0
44
+ Requires-Dist: pyOpenSSL<25.0.0,>=22.0.0
45
45
  Requires-Dist: pyjwt<3.0.0
46
46
  Requires-Dist: pytz
47
47
  Requires-Dist: requests<3.0.0
@@ -85,6 +85,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
85
85
 
86
86
  # Release Notes
87
87
 
88
+ - v3.12.4(December 3,2024)
89
+ - Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
90
+ - Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
91
+ - Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
92
+ - Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
93
+
88
94
  - v3.12.3(October 25,2024)
89
95
  - Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
90
96
  - Improved error message for SQL execution cancellations caused by timeout.
@@ -1,7 +1,7 @@
1
1
  asn1crypto<2.0.0,>0.24.0
2
2
  cffi<2.0.0,>=1.9
3
3
  cryptography>=3.1.0
4
- pyOpenSSL<25.0.0,>=16.2.0
4
+ pyOpenSSL<25.0.0,>=22.0.0
5
5
  pyjwt<3.0.0
6
6
  pytz
7
7
  requests<3.0.0