snowflake-connector-python 3.12.0__tar.gz → 3.12.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 (236) hide show
  1. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/DESCRIPTION.md +9 -0
  2. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/PKG-INFO +11 -2
  3. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/README.md +29 -0
  4. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/setup.cfg +1 -2
  5. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/_auth.py +1 -1
  6. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/okta.py +1 -1
  7. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/webbrowser.py +1 -1
  8. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/connection.py +24 -20
  9. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/errors.py +0 -6
  10. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/network.py +22 -68
  11. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/ocsp_snowflake.py +0 -11
  12. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/sf_dirs.py +4 -4
  13. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/version.py +1 -1
  14. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/PKG-INFO +11 -2
  15. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -1
  16. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/requires.txt +1 -1
  17. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/CONTRIBUTING.md +0 -0
  18. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/LICENSE.txt +0 -0
  19. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/MANIFEST.in +0 -0
  20. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/NOTICE +0 -0
  21. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/SECURITY.md +0 -0
  22. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/pyproject.toml +0 -0
  23. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/setup.py +0 -0
  24. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/__init__.py +0 -0
  25. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/_query_context_cache.py +0 -0
  26. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/_sql_util.py +0 -0
  27. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/arrow_context.py +0 -0
  28. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/__init__.py +0 -0
  29. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/by_plugin.py +0 -0
  30. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/default.py +0 -0
  31. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/idtoken.py +0 -0
  32. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/keypair.py +0 -0
  33. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/oauth.py +0 -0
  34. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
  35. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/azure_storage_client.py +0 -0
  36. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/backoff_policies.py +0 -0
  37. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/bind_upload_agent.py +0 -0
  38. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/cache.py +0 -0
  39. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/compat.py +0 -0
  40. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/config_manager.py +0 -0
  41. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/connection_diagnostic.py +0 -0
  42. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/constants.py +0 -0
  43. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/converter.py +0 -0
  44. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/converter_issue23517.py +0 -0
  45. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/converter_null.py +0 -0
  46. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/converter_snowsql.py +0 -0
  47. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/cursor.py +0 -0
  48. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/dbapi.py +0 -0
  49. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/description.py +0 -0
  50. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/encryption_util.py +0 -0
  51. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/errorcode.py +0 -0
  52. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/feature.py +0 -0
  53. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/file_compression_type.py +0 -0
  54. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/file_transfer_agent.py +0 -0
  55. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/file_util.py +0 -0
  56. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/gcs_storage_client.py +0 -0
  57. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/gzip_decoder.py +0 -0
  58. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/local_storage_client.py +0 -0
  59. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/log_configuration.py +0 -0
  60. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  61. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  62. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  63. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  64. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  65. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  66. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
  67. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
  68. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  69. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  70. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
  71. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
  72. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  73. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  74. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  75. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  76. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  77. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  78. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  79. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  80. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  81. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  82. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  83. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  84. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  85. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  86. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  87. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  88. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  89. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  90. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  91. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  92. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  93. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  94. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  95. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  96. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  97. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  98. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  99. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  100. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  101. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  102. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  103. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  104. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  105. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  106. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  107. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  108. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  109. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  110. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  111. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  112. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  113. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  114. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  115. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  116. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  117. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  118. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  119. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  120. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  121. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  122. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  123. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  124. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  125. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  126. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  127. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  128. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  129. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  130. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  131. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  132. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  133. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  134. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  135. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  136. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  137. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  138. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  139. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  140. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
  141. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
  142. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
  143. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  144. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  145. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
  146. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
  147. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
  148. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/options.py +0 -0
  149. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/pandas_tools.py +0 -0
  150. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/proxy.py +0 -0
  151. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/py.typed +0 -0
  152. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/result_batch.py +0 -0
  153. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/result_set.py +0 -0
  154. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/s3_storage_client.py +0 -0
  155. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/secret_detector.py +0 -0
  156. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/sfbinaryformat.py +0 -0
  157. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/sfdatetime.py +0 -0
  158. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/snow_logging.py +0 -0
  159. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/sqlstate.py +0 -0
  160. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/ssd_internal_keys.py +0 -0
  161. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/ssl_wrap_socket.py +0 -0
  162. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/storage_client.py +0 -0
  163. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/telemetry.py +0 -0
  164. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/telemetry_oob.py +0 -0
  165. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/test_util.py +0 -0
  166. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/time_util.py +0 -0
  167. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/tool/__init__.py +0 -0
  168. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/tool/dump_certs.py +0 -0
  169. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
  170. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
  171. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/tool/probe_connection.py +0 -0
  172. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/url_util.py +0 -0
  173. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/util_text.py +0 -0
  174. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/__init__.py +0 -0
  175. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
  176. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
  177. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
  178. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
  179. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
  180. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/api.py +0 -0
  181. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/auth.py +0 -0
  182. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/certs.py +0 -0
  183. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/compat.py +0 -0
  184. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
  185. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
  186. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/help.py +0 -0
  187. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
  188. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/models.py +0 -0
  189. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
  190. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
  191. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/structures.py +0 -0
  192. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/requests/utils.py +0 -0
  193. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
  194. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
  195. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
  196. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
  197. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
  198. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
  199. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
  200. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/_appengine_environ.py +0 -0
  201. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/__init__.py +0 -0
  202. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/bindings.py +0 -0
  203. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/low_level.py +0 -0
  204. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/appengine.py +0 -0
  205. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/ntlmpool.py +0 -0
  206. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
  207. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/securetransport.py +0 -0
  208. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
  209. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
  210. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
  211. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
  212. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/packages/__init__.py +0 -0
  213. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/packages/backports/__init__.py +0 -0
  214. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/packages/backports/makefile.py +0 -0
  215. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/packages/backports/weakref_finalize.py +0 -0
  216. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/packages/six.py +0 -0
  217. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
  218. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/request.py +0 -0
  219. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
  220. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
  221. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
  222. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
  223. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/queue.py +0 -0
  224. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
  225. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
  226. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
  227. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
  228. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
  229. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
  230. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
  231. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
  232. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
  233. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
  234. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
  235. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
  236. {snowflake_connector_python-3.12.0 → snowflake_connector_python-3.12.1}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
@@ -8,6 +8,15 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
8
8
 
9
9
  # Release Notes
10
10
 
11
+ - v3.12.1(August 20,2024)
12
+ - Fixed a bug that logged the session token when renewing a session.
13
+ - Fixed a bug where disabling client telemetry did not work.
14
+ - Fixed a bug where passing `login_timeout` as a string raised a `TypeError` during the login retry step.
15
+ - Use `pathlib` instead of `os` for default config file location resolution.
16
+ - Removed upper `cryptogaphy` version pin.
17
+ - Removed reference to script `snowflake-export-certs` (its backing module was already removed long ago)
18
+ - Enhanced retry mechanism for handling transient network failures during query result polling when no server response is received.
19
+
11
20
  - v3.12.0(July 24,2024)
12
21
  - Set default connection timeout of 10 seconds and socket read timeout of 10 minutes for HTTP calls in file transfer.
13
22
  - Optimized `to_pandas()` performance by fully parallel downloading logic.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: snowflake-connector-python
3
- Version: 3.12.0
3
+ Version: 3.12.1
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -40,7 +40,7 @@ License-File: LICENSE.txt
40
40
  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
- Requires-Dist: cryptography<43.0.0,>=3.1.0
43
+ Requires-Dist: cryptography>=3.1.0
44
44
  Requires-Dist: pyOpenSSL<25.0.0,>=16.2.0
45
45
  Requires-Dist: pyjwt<3.0.0
46
46
  Requires-Dist: pytz
@@ -85,6 +85,15 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
85
85
 
86
86
  # Release Notes
87
87
 
88
+ - v3.12.1(August 20,2024)
89
+ - Fixed a bug that logged the session token when renewing a session.
90
+ - Fixed a bug where disabling client telemetry did not work.
91
+ - Fixed a bug where passing `login_timeout` as a string raised a `TypeError` during the login retry step.
92
+ - Use `pathlib` instead of `os` for default config file location resolution.
93
+ - Removed upper `cryptogaphy` version pin.
94
+ - Removed reference to script `snowflake-export-certs` (its backing module was already removed long ago)
95
+ - Enhanced retry mechanism for handling transient network failures during query result polling when no server response is received.
96
+
88
97
  - v3.12.0(July 24,2024)
89
98
  - Set default connection timeout of 10 seconds and socket read timeout of 10 minutes for HTTP calls in file transfer.
90
99
  - Optimized `to_pandas()` performance by fully parallel downloading logic.
@@ -52,3 +52,32 @@ These tools are integrated into `tox` to allow us to easily set them up universa
52
52
  * **coverage**: Runs `coverage.py` to combine generated coverage data files. Useful when multiple categories were run
53
53
  and we would like to have an overall coverage data file created for them.
54
54
  * **flake8**: (Deprecated) Similar to `fix_lint`, but only runs `flake8` checks.
55
+
56
+ ## Disable telemetry
57
+
58
+ By default, the Snowflake Connector for Python collects telemetry data to improve the product.
59
+ You can disable the telemetry data collection by setting the session parameter `CLIENT_TELEMETRY_ENABLED` to `False`
60
+ when connecting to Snowflake:
61
+ ```python
62
+ import snowflake.connector
63
+ conn = snowflake.connector.connect(
64
+ user='XXXX',
65
+ password='XXXX',
66
+ account='XXXX',
67
+ session_parameters={
68
+ "CLIENT_TELEMETRY_ENABLED": False,
69
+ }
70
+ )
71
+ ```
72
+
73
+ Alternatively, you can disable the telemetry data collection
74
+ by setting the `telemetry_enabled` property to `False` on the `SnowflakeConnection` object:
75
+ ```python
76
+ import snowflake.connector
77
+ conn = snowflake.connector.connect(
78
+ user='XXXX',
79
+ password='XXXX',
80
+ account='XXXX',
81
+ )
82
+ conn.telemetry_enabled = False
83
+ ```
@@ -45,7 +45,7 @@ packages = find_namespace:
45
45
  install_requires =
46
46
  asn1crypto>0.24.0,<2.0.0
47
47
  cffi>=1.9,<2.0.0
48
- cryptography>=3.1.0,<43.0.0
48
+ cryptography>=3.1.0
49
49
  pyOpenSSL>=16.2.0,<25.0.0
50
50
  pyjwt<3.0.0
51
51
  pytz
@@ -76,7 +76,6 @@ console_scripts =
76
76
  snowflake-dump-ocsp-response = snowflake.connector.tool.dump_ocsp_response:main
77
77
  snowflake-dump-ocsp-response-cache = snowflake.connector.tool.dump_ocsp_response_cache:main
78
78
  snowflake-dump-certs = snowflake.connector.tool.dump_certs:main
79
- snowflake-export-certs = snowflake.connector.tool.export_certs:main
80
79
 
81
80
  [options.extras_require]
82
81
  development =
@@ -198,7 +198,7 @@ class Auth:
198
198
  self._rest._connection._internal_application_name,
199
199
  self._rest._connection._internal_application_version,
200
200
  self._rest._connection._ocsp_mode(),
201
- self._rest._connection._login_timeout,
201
+ self._rest._connection.login_timeout,
202
202
  self._rest._connection._network_timeout,
203
203
  self._rest._connection._socket_timeout,
204
204
  )
@@ -170,7 +170,7 @@ class AuthByOkta(AuthByPlugin):
170
170
  conn._internal_application_name,
171
171
  conn._internal_application_version,
172
172
  conn._ocsp_mode(),
173
- conn._login_timeout,
173
+ conn.login_timeout,
174
174
  conn._network_timeout,
175
175
  )
176
176
 
@@ -462,7 +462,7 @@ You can close this window now and go back where you started from.
462
462
  conn._rest._connection._internal_application_name,
463
463
  conn._rest._connection._internal_application_version,
464
464
  conn._rest._connection._ocsp_mode(),
465
- conn._rest._connection._login_timeout,
465
+ conn._rest._connection.login_timeout,
466
466
  conn._rest._connection._network_timeout,
467
467
  )
468
468
 
@@ -61,7 +61,6 @@ from .constants import (
61
61
  PARAMETER_CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY,
62
62
  PARAMETER_CLIENT_STORE_TEMPORARY_CREDENTIAL,
63
63
  PARAMETER_CLIENT_TELEMETRY_ENABLED,
64
- PARAMETER_CLIENT_TELEMETRY_OOB_ENABLED,
65
64
  PARAMETER_CLIENT_VALIDATE_DEFAULT_PARAMETERS,
66
65
  PARAMETER_ENABLE_STAGE_S3_PRIVATELINK_FOR_US_EAST_1,
67
66
  PARAMETER_QUERY_CONTEXT_CACHE_SIZE,
@@ -106,7 +105,6 @@ from .network import (
106
105
  )
107
106
  from .sqlstate import SQLSTATE_CONNECTION_NOT_EXISTS, SQLSTATE_FEATURE_NOT_SUPPORTED
108
107
  from .telemetry import TelemetryClient, TelemetryData, TelemetryField
109
- from .telemetry_oob import TelemetryService
110
108
  from .time_util import HeartBeatTimer, get_time_millis
111
109
  from .url_util import extract_top_level_domain_from_hostname
112
110
  from .util_text import construct_hostname, parse_account, split_statements
@@ -409,7 +407,8 @@ class SnowflakeConnection:
409
407
  self.messages = []
410
408
  self._async_sfqids: dict[str, None] = {}
411
409
  self._done_async_sfqids: dict[str, None] = {}
412
- self.telemetry_enabled = False
410
+ self._client_param_telemetry_enabled = True
411
+ self._server_param_telemetry_enabled = False
413
412
  self._session_parameters: dict[str, str | int | bool] = {}
414
413
  logger.info(
415
414
  "Snowflake Connector for Python Version: %s, "
@@ -626,11 +625,22 @@ class SnowflakeConnection:
626
625
 
627
626
  @property
628
627
  def telemetry_enabled(self) -> bool:
629
- return self._telemetry_enabled
628
+ return bool(
629
+ self._client_param_telemetry_enabled
630
+ and self._server_param_telemetry_enabled
631
+ )
630
632
 
631
633
  @telemetry_enabled.setter
632
634
  def telemetry_enabled(self, value) -> None:
633
- self._telemetry_enabled = True if value else False
635
+ self._client_param_telemetry_enabled = True if value else False
636
+ if (
637
+ self._client_param_telemetry_enabled
638
+ and not self._server_param_telemetry_enabled
639
+ ):
640
+ logger.info(
641
+ "Telemetry has been disabled by the session parameter CLIENT_TELEMETRY_ENABLED."
642
+ " Set session parameter CLIENT_TELEMETRY_ENABLED to true to enable telemetry."
643
+ )
634
644
 
635
645
  @property
636
646
  def service_name(self) -> str | None:
@@ -720,7 +730,6 @@ class SnowflakeConnection:
720
730
  logger.debug("connect")
721
731
  if len(kwargs) > 0:
722
732
  self.__config(**kwargs)
723
- TelemetryService.get_instance().update_context(kwargs)
724
733
 
725
734
  if self.enable_connection_diag:
726
735
  exceptions_dict = {}
@@ -777,7 +786,7 @@ class SnowflakeConnection:
777
786
 
778
787
  # close telemetry first, since it needs rest to send remaining data
779
788
  logger.info("closed")
780
- self._telemetry.close(send_on_close=retry)
789
+ self._telemetry.close(send_on_close=bool(retry and self.telemetry_enabled))
781
790
  if (
782
791
  self._all_async_queries_finished()
783
792
  and not self._server_session_keep_alive
@@ -1009,7 +1018,7 @@ class SnowflakeConnection:
1009
1018
  elif self._authenticator == DEFAULT_AUTHENTICATOR:
1010
1019
  self.auth_class = AuthByDefault(
1011
1020
  password=self._password,
1012
- timeout=self._login_timeout,
1021
+ timeout=self.login_timeout,
1013
1022
  backoff_generator=self._backoff_generator,
1014
1023
  )
1015
1024
  elif self._authenticator == EXTERNAL_BROWSER_AUTHENTICATOR:
@@ -1029,7 +1038,7 @@ class SnowflakeConnection:
1029
1038
  protocol=self._protocol,
1030
1039
  host=self.host,
1031
1040
  port=self.port,
1032
- timeout=self._login_timeout,
1041
+ timeout=self.login_timeout,
1033
1042
  backoff_generator=self._backoff_generator,
1034
1043
  )
1035
1044
  else:
@@ -1039,7 +1048,7 @@ class SnowflakeConnection:
1039
1048
  protocol=self._protocol,
1040
1049
  host=self.host,
1041
1050
  port=self.port,
1042
- timeout=self._login_timeout,
1051
+ timeout=self.login_timeout,
1043
1052
  backoff_generator=self._backoff_generator,
1044
1053
  )
1045
1054
 
@@ -1054,13 +1063,13 @@ class SnowflakeConnection:
1054
1063
 
1055
1064
  self.auth_class = AuthByKeyPair(
1056
1065
  private_key=private_key,
1057
- timeout=self._login_timeout,
1066
+ timeout=self.login_timeout,
1058
1067
  backoff_generator=self._backoff_generator,
1059
1068
  )
1060
1069
  elif self._authenticator == OAUTH_AUTHENTICATOR:
1061
1070
  self.auth_class = AuthByOAuth(
1062
1071
  oauth_token=self._token,
1063
- timeout=self._login_timeout,
1072
+ timeout=self.login_timeout,
1064
1073
  backoff_generator=self._backoff_generator,
1065
1074
  )
1066
1075
  elif self._authenticator == USR_PWD_MFA_AUTHENTICATOR:
@@ -1076,14 +1085,14 @@ class SnowflakeConnection:
1076
1085
  self.auth_class = AuthByUsrPwdMfa(
1077
1086
  password=self._password,
1078
1087
  mfa_token=self.rest.mfa_token,
1079
- timeout=self._login_timeout,
1088
+ timeout=self.login_timeout,
1080
1089
  backoff_generator=self._backoff_generator,
1081
1090
  )
1082
1091
  else:
1083
1092
  # okta URL, e.g., https://<account>.okta.com/
1084
1093
  self.auth_class = AuthByOkta(
1085
1094
  application=self.application,
1086
- timeout=self._login_timeout,
1095
+ timeout=self.login_timeout,
1087
1096
  backoff_generator=self._backoff_generator,
1088
1097
  )
1089
1098
 
@@ -1717,12 +1726,7 @@ class SnowflakeConnection:
1717
1726
  for name, value in parameters.items():
1718
1727
  self._session_parameters[name] = value
1719
1728
  if PARAMETER_CLIENT_TELEMETRY_ENABLED == name:
1720
- self.telemetry_enabled = value
1721
- elif PARAMETER_CLIENT_TELEMETRY_OOB_ENABLED == name:
1722
- if value:
1723
- TelemetryService.get_instance().enable()
1724
- else:
1725
- TelemetryService.get_instance().disable()
1729
+ self._server_param_telemetry_enabled = value
1726
1730
  elif PARAMETER_CLIENT_SESSION_KEEP_ALIVE == name:
1727
1731
  # Only set if the local config is None.
1728
1732
  # Always give preference to user config.
@@ -15,7 +15,6 @@ from typing import TYPE_CHECKING, Any
15
15
  from .compat import BASE_EXCEPTION_CLASS
16
16
  from .secret_detector import SecretDetector
17
17
  from .telemetry import TelemetryData, TelemetryField
18
- from .telemetry_oob import TelemetryService
19
18
  from .time_util import get_time_millis
20
19
 
21
20
  if TYPE_CHECKING: # pragma: no cover
@@ -167,11 +166,6 @@ class Error(BASE_EXCEPTION_CLASS):
167
166
  )
168
167
  except AttributeError:
169
168
  logger.debug("Cursor failed to log to telemetry.", exc_info=True)
170
- elif connection is None:
171
- # Send with out-of-band telemetry
172
-
173
- telemetry_oob = TelemetryService.get_instance()
174
- telemetry_oob.log_general_exception(self.__class__.__name__, telemetry_data)
175
169
 
176
170
  def exception_telemetry(
177
171
  self,
@@ -13,7 +13,6 @@ import json
13
13
  import logging
14
14
  import re
15
15
  import time
16
- import traceback
17
16
  import uuid
18
17
  from collections import OrderedDict
19
18
  from threading import Lock
@@ -92,9 +91,7 @@ from .sqlstate import (
92
91
  SQLSTATE_CONNECTION_NOT_EXISTS,
93
92
  SQLSTATE_CONNECTION_REJECTED,
94
93
  SQLSTATE_CONNECTION_WAS_NOT_ESTABLISHED,
95
- SQLSTATE_IO_ERROR,
96
94
  )
97
- from .telemetry_oob import TelemetryService
98
95
  from .time_util import (
99
96
  DEFAULT_MASTER_VALIDITY_IN_SECONDS,
100
97
  TimeoutBackoffCtx,
@@ -230,14 +227,6 @@ def raise_failed_request_error(
230
227
  method: str,
231
228
  response: Response,
232
229
  ) -> None:
233
- TelemetryService.get_instance().log_http_request_error(
234
- f"HttpError{response.status_code}",
235
- url,
236
- method,
237
- SQLSTATE_CONNECTION_WAS_NOT_ESTABLISHED,
238
- ER_FAILED_TO_REQUEST,
239
- response=response,
240
- )
241
230
  Error.errorhandler_wrapper(
242
231
  connection,
243
232
  None,
@@ -568,7 +557,7 @@ class SnowflakeRestful:
568
557
  token=header_token,
569
558
  )
570
559
  if ret.get("success") and ret.get("data", {}).get("sessionToken"):
571
- logger.debug("success: %s", ret)
560
+ logger.debug("success: %s", SecretDetector.mask_secrets(str(ret)))
572
561
  self.update_tokens(
573
562
  ret["data"]["sessionToken"],
574
563
  ret["data"].get("masterToken"),
@@ -577,7 +566,7 @@ class SnowflakeRestful:
577
566
  logger.debug("updating session completed")
578
567
  return ret
579
568
  else:
580
- logger.debug("failed: %s", ret)
569
+ logger.debug("failed: %s", SecretDetector.mask_secrets(str(ret)))
581
570
  err = ret.get("message")
582
571
  if err is not None and ret.get("data"):
583
572
  err += ret["data"].get("errorMessage", "")
@@ -690,6 +679,7 @@ class SnowflakeRestful:
690
679
  headers: dict[str, str],
691
680
  token: str = None,
692
681
  timeout: int | None = None,
682
+ is_fetch_query_status: bool = False,
693
683
  ) -> dict[str, Any]:
694
684
  if "Content-Encoding" in headers:
695
685
  del headers["Content-Encoding"]
@@ -703,6 +693,7 @@ class SnowflakeRestful:
703
693
  headers,
704
694
  timeout=timeout,
705
695
  token=token,
696
+ is_fetch_query_status=is_fetch_query_status,
706
697
  )
707
698
  if ret.get("code") == SESSION_EXPIRED_GS_CODE:
708
699
  try:
@@ -717,7 +708,12 @@ class SnowflakeRestful:
717
708
  )
718
709
  )
719
710
  if ret.get("success"):
720
- return self._get_request(url, headers, token=self.token)
711
+ return self._get_request(
712
+ url,
713
+ headers,
714
+ token=self.token,
715
+ is_fetch_query_status=is_fetch_query_status,
716
+ )
721
717
 
722
718
  return ret
723
719
 
@@ -790,7 +786,13 @@ class SnowflakeRestful:
790
786
  result_url = ret["data"]["getResultUrl"]
791
787
  logger.debug("ping pong starting...")
792
788
  ret = self._get_request(
793
- result_url, headers, token=self.token, timeout=timeout
789
+ result_url,
790
+ headers,
791
+ token=self.token,
792
+ timeout=timeout,
793
+ is_fetch_query_status=bool(
794
+ re.match(r"^/queries/.+/result$", result_url)
795
+ ),
794
796
  )
795
797
  logger.debug("ret[code] = %s", ret.get("code", "N/A"))
796
798
  logger.debug("ping pong done")
@@ -889,6 +891,7 @@ class SnowflakeRestful:
889
891
 
890
892
  full_url = retry_ctx.add_retry_params(full_url)
891
893
  full_url = SnowflakeRestful.add_request_guid(full_url)
894
+ is_fetch_query_status = kwargs.pop("is_fetch_query_status", False)
892
895
  try:
893
896
  return_object = self._request_exec(
894
897
  session=session,
@@ -901,33 +904,13 @@ class SnowflakeRestful:
901
904
  )
902
905
  if return_object is not None:
903
906
  return return_object
907
+ if is_fetch_query_status:
908
+ err_msg = "fetch query status failed and http request returned None, this is usually caused by transient network failures, retrying..."
909
+ logger.info(err_msg)
910
+ raise RetryRequest(err_msg)
904
911
  self._handle_unknown_error(method, full_url, headers, data, conn)
905
- TelemetryService.get_instance().log_http_request_error(
906
- "HttpRequestUnknownError",
907
- full_url,
908
- method,
909
- SQLSTATE_IO_ERROR,
910
- ER_FAILED_TO_REQUEST,
911
- retry_timeout=retry_ctx.timeout,
912
- retry_count=retry_ctx.current_retry_count,
913
- )
914
912
  return {}
915
913
  except RetryRequest as e:
916
- if (
917
- retry_ctx.current_retry_count
918
- == TelemetryService.get_instance().num_of_retry_to_trigger_telemetry
919
- ):
920
- TelemetryService.get_instance().log_http_request_error(
921
- "HttpRequestRetry%dTimes" % retry_ctx.current_retry_count,
922
- full_url,
923
- method,
924
- SQLSTATE_IO_ERROR,
925
- ER_FAILED_TO_REQUEST,
926
- retry_timeout=retry_ctx.timeout,
927
- retry_count=retry_ctx.current_retry_count,
928
- exception=str(e),
929
- stack_trace=traceback.format_exc(),
930
- )
931
914
  cause = e.args[0]
932
915
  if no_retry:
933
916
  self.log_and_handle_http_error_with_cause(
@@ -1001,17 +984,6 @@ class SnowflakeRestful:
1001
984
  ) -> None:
1002
985
  cause = e.args[0]
1003
986
  logger.error(cause, exc_info=True)
1004
- TelemetryService.get_instance().log_http_request_error(
1005
- "HttpRequestRetryTimeout" if timed_out else f"HttpRequestError: {cause}",
1006
- full_url,
1007
- method,
1008
- SQLSTATE_IO_ERROR,
1009
- ER_FAILED_TO_REQUEST,
1010
- retry_timeout=retry_timeout,
1011
- retry_count=retry_count,
1012
- exception=str(e),
1013
- stack_trace=traceback.format_exc(),
1014
- )
1015
987
  if isinstance(cause, Error):
1016
988
  Error.errorhandler_wrapper_from_cause(conn, cause)
1017
989
  else:
@@ -1149,15 +1121,6 @@ class SnowflakeRestful:
1149
1121
  raw_ret.close() # ensure response is closed
1150
1122
  except SSLError as se:
1151
1123
  logger.debug("Hit non-retryable SSL error, %s", str(se))
1152
- TelemetryService.get_instance().log_http_request_error(
1153
- "CertificateException%s" % str(se),
1154
- full_url,
1155
- method,
1156
- SQLSTATE_CONNECTION_WAS_NOT_ESTABLISHED,
1157
- ER_FAILED_TO_REQUEST,
1158
- exception=se,
1159
- stack_trace=traceback.format_exc(),
1160
- )
1161
1124
 
1162
1125
  except (
1163
1126
  BadStatusLine,
@@ -1190,15 +1153,6 @@ class SnowflakeRestful:
1190
1153
  )
1191
1154
  raise RetryRequest(err)
1192
1155
  except Exception as err:
1193
- TelemetryService.get_instance().log_http_request_error(
1194
- "HttpException%s" % str(err),
1195
- full_url,
1196
- method,
1197
- SQLSTATE_CONNECTION_WAS_NOT_ESTABLISHED,
1198
- ER_FAILED_TO_REQUEST,
1199
- exception=err,
1200
- stack_trace=traceback.format_exc(),
1201
- )
1202
1156
  raise err
1203
1157
 
1204
1158
  def make_requests_session(self) -> Session:
@@ -13,7 +13,6 @@ import re
13
13
  import sys
14
14
  import tempfile
15
15
  import time
16
- import traceback
17
16
  from base64 import b64decode, b64encode
18
17
  from datetime import datetime, timezone
19
18
  from logging import getLogger
@@ -56,7 +55,6 @@ from snowflake.connector.errorcode import (
56
55
  )
57
56
  from snowflake.connector.errors import RevocationCheckError
58
57
  from snowflake.connector.network import PYTHON_CONNECTOR_USER_AGENT
59
- from snowflake.connector.telemetry_oob import TelemetryService
60
58
 
61
59
  from . import constants
62
60
  from .backoff_policies import exponential_backoff
@@ -250,15 +248,6 @@ class OCSPTelemetryData:
250
248
  is_oob_telemetry=True,
251
249
  )
252
250
 
253
- telemetry_client = TelemetryService.get_instance()
254
- telemetry_client.log_ocsp_exception(
255
- event_type,
256
- telemetry_data,
257
- exception=str(exception),
258
- stack_trace=traceback.format_exc(),
259
- urgent=urgent,
260
- )
261
-
262
251
  return telemetry_data
263
252
  # To be updated once Python Driver has out of band telemetry.
264
253
  # telemetry_client = TelemetryClient()
@@ -31,12 +31,12 @@ def _resolve_platform_dirs() -> PlatformDirsProto:
31
31
  "appname": "snowflake",
32
32
  "appauthor": False,
33
33
  }
34
- snowflake_home = os.path.expanduser(
34
+ snowflake_home = pathlib.Path(
35
35
  os.environ.get("SNOWFLAKE_HOME", "~/.snowflake/"),
36
- )
37
- if os.path.exists(snowflake_home):
36
+ ).expanduser()
37
+ if snowflake_home.exists():
38
38
  return SFPlatformDirs(
39
- snowflake_home,
39
+ str(snowflake_home),
40
40
  **platformdir_kwargs,
41
41
  )
42
42
  else:
@@ -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, 0, None)
3
+ VERSION = (3, 12, 1, None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: snowflake-connector-python
3
- Version: 3.12.0
3
+ Version: 3.12.1
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -40,7 +40,7 @@ License-File: LICENSE.txt
40
40
  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
- Requires-Dist: cryptography<43.0.0,>=3.1.0
43
+ Requires-Dist: cryptography>=3.1.0
44
44
  Requires-Dist: pyOpenSSL<25.0.0,>=16.2.0
45
45
  Requires-Dist: pyjwt<3.0.0
46
46
  Requires-Dist: pytz
@@ -85,6 +85,15 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
85
85
 
86
86
  # Release Notes
87
87
 
88
+ - v3.12.1(August 20,2024)
89
+ - Fixed a bug that logged the session token when renewing a session.
90
+ - Fixed a bug where disabling client telemetry did not work.
91
+ - Fixed a bug where passing `login_timeout` as a string raised a `TypeError` during the login retry step.
92
+ - Use `pathlib` instead of `os` for default config file location resolution.
93
+ - Removed upper `cryptogaphy` version pin.
94
+ - Removed reference to script `snowflake-export-certs` (its backing module was already removed long ago)
95
+ - Enhanced retry mechanism for handling transient network failures during query result polling when no server response is received.
96
+
88
97
  - v3.12.0(July 24,2024)
89
98
  - Set default connection timeout of 10 seconds and socket read timeout of 10 minutes for HTTP calls in file transfer.
90
99
  - Optimized `to_pandas()` performance by fully parallel downloading logic.
@@ -2,4 +2,3 @@
2
2
  snowflake-dump-certs = snowflake.connector.tool.dump_certs:main
3
3
  snowflake-dump-ocsp-response = snowflake.connector.tool.dump_ocsp_response:main
4
4
  snowflake-dump-ocsp-response-cache = snowflake.connector.tool.dump_ocsp_response_cache:main
5
- snowflake-export-certs = snowflake.connector.tool.export_certs:main
@@ -1,6 +1,6 @@
1
1
  asn1crypto<2.0.0,>0.24.0
2
2
  cffi<2.0.0,>=1.9
3
- cryptography<43.0.0,>=3.1.0
3
+ cryptography>=3.1.0
4
4
  pyOpenSSL<25.0.0,>=16.2.0
5
5
  pyjwt<3.0.0
6
6
  pytz