snowflake-connector-python 3.17.0__tar.gz → 3.17.2__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 (259) hide show
  1. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/DESCRIPTION.md +8 -0
  2. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/PKG-INFO +9 -1
  3. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/_auth.py +2 -2
  4. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/okta.py +3 -1
  5. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/webbrowser.py +8 -6
  6. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/workload_identity.py +3 -1
  7. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/pandas_tools.py +27 -22
  8. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/platform_detection.py +31 -28
  9. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/session_manager.py +59 -36
  10. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/version.py +1 -1
  11. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/wif_util.py +3 -1
  12. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/PKG-INFO +9 -1
  13. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/CONTRIBUTING.md +0 -0
  14. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/LICENSE.txt +0 -0
  15. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/MANIFEST.in +0 -0
  16. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/NOTICE +0 -0
  17. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/README.md +0 -0
  18. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/SECURITY.md +0 -0
  19. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/pyproject.toml +0 -0
  20. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/setup.cfg +0 -0
  21. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/setup.py +0 -0
  22. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/__init__.py +0 -0
  23. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/_query_context_cache.py +0 -0
  24. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/_sql_util.py +0 -0
  25. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/_utils.py +0 -0
  26. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/arrow_context.py +0 -0
  27. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/__init__.py +0 -0
  28. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/_http_server.py +0 -0
  29. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/_oauth_base.py +0 -0
  30. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/by_plugin.py +0 -0
  31. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/default.py +0 -0
  32. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/idtoken.py +0 -0
  33. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/keypair.py +0 -0
  34. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/no_auth.py +0 -0
  35. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/oauth.py +0 -0
  36. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/oauth_code.py +0 -0
  37. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/oauth_credentials.py +0 -0
  38. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/pat.py +0 -0
  39. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
  40. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/azure_storage_client.py +0 -0
  41. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/backoff_policies.py +0 -0
  42. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/bind_upload_agent.py +0 -0
  43. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/cache.py +0 -0
  44. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/compat.py +0 -0
  45. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/config_manager.py +0 -0
  46. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/connection.py +0 -0
  47. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/connection_diagnostic.py +0 -0
  48. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/constants.py +0 -0
  49. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/converter.py +0 -0
  50. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/converter_issue23517.py +0 -0
  51. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/converter_null.py +0 -0
  52. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/converter_snowsql.py +0 -0
  53. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/cursor.py +0 -0
  54. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/dbapi.py +0 -0
  55. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/description.py +0 -0
  56. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/direct_file_operation_utils.py +0 -0
  57. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/encryption_util.py +0 -0
  58. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/errorcode.py +0 -0
  59. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/errors.py +0 -0
  60. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/externals_utils/__init__.py +0 -0
  61. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/externals_utils/externals_setup.py +0 -0
  62. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/feature.py +0 -0
  63. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/file_compression_type.py +0 -0
  64. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/file_lock.py +0 -0
  65. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/file_transfer_agent.py +0 -0
  66. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/file_util.py +0 -0
  67. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/gcs_storage_client.py +0 -0
  68. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/gzip_decoder.py +0 -0
  69. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/interval_util.py +0 -0
  70. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/local_storage_client.py +0 -0
  71. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/log_configuration.py +0 -0
  72. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/logging_utils/__init__.py +0 -0
  73. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/logging_utils/filters.py +0 -0
  74. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
  75. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
  76. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
  77. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
  78. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
  79. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
  80. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
  81. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
  82. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
  83. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
  84. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
  85. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
  86. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
  87. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
  88. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.cpp +0 -0
  89. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecFloatConverter.hpp +0 -0
  90. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
  91. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
  92. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
  93. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
  94. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
  95. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
  96. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
  97. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
  98. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
  99. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.cpp +0 -0
  100. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntervalConverter.hpp +0 -0
  101. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
  102. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
  103. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
  104. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
  105. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
  106. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
  107. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
  108. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
  109. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
  110. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
  111. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
  112. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
  113. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
  114. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
  115. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
  116. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
  117. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
  118. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
  119. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
  120. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
  121. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
  122. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
  123. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
  124. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
  125. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
  126. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
  127. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
  128. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
  129. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
  130. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
  131. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
  132. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
  133. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
  134. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
  135. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
  136. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
  137. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
  138. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
  139. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
  140. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
  141. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
  142. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
  143. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
  144. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
  145. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
  146. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
  147. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
  148. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
  149. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
  150. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
  151. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
  152. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
  153. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
  154. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
  155. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
  156. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
  157. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
  158. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
  159. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
  160. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
  161. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
  162. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
  163. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
  164. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
  165. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/network.py +0 -0
  166. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/ocsp_asn1crypto.py +0 -0
  167. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/ocsp_snowflake.py +0 -0
  168. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/options.py +0 -0
  169. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/proxy.py +0 -0
  170. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/py.typed +0 -0
  171. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/result_batch.py +0 -0
  172. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/result_set.py +0 -0
  173. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/s3_storage_client.py +0 -0
  174. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/secret_detector.py +0 -0
  175. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/sf_dirs.py +0 -0
  176. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/sfbinaryformat.py +0 -0
  177. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/sfdatetime.py +0 -0
  178. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/snow_logging.py +0 -0
  179. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/sqlstate.py +0 -0
  180. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/ssd_internal_keys.py +0 -0
  181. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/ssl_wrap_socket.py +0 -0
  182. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/storage_client.py +0 -0
  183. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/telemetry.py +0 -0
  184. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/telemetry_oob.py +0 -0
  185. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/test_util.py +0 -0
  186. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/time_util.py +0 -0
  187. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/token_cache.py +0 -0
  188. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/tool/__init__.py +0 -0
  189. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/tool/dump_certs.py +0 -0
  190. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
  191. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
  192. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/tool/probe_connection.py +0 -0
  193. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/url_util.py +0 -0
  194. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/util_text.py +0 -0
  195. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/__init__.py +0 -0
  196. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
  197. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
  198. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
  199. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
  200. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
  201. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/api.py +0 -0
  202. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/auth.py +0 -0
  203. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/certs.py +0 -0
  204. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/compat.py +0 -0
  205. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
  206. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
  207. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/help.py +0 -0
  208. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
  209. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/models.py +0 -0
  210. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
  211. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
  212. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/structures.py +0 -0
  213. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/requests/utils.py +0 -0
  214. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
  215. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
  216. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
  217. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
  218. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
  219. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
  220. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
  221. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/_appengine_environ.py +0 -0
  222. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/__init__.py +0 -0
  223. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/bindings.py +0 -0
  224. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/low_level.py +0 -0
  225. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/appengine.py +0 -0
  226. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/ntlmpool.py +0 -0
  227. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
  228. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/securetransport.py +0 -0
  229. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
  230. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
  231. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
  232. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
  233. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/packages/__init__.py +0 -0
  234. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/packages/backports/__init__.py +0 -0
  235. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/packages/backports/makefile.py +0 -0
  236. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/packages/backports/weakref_finalize.py +0 -0
  237. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/packages/six.py +0 -0
  238. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
  239. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/request.py +0 -0
  240. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
  241. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
  242. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
  243. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
  244. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/queue.py +0 -0
  245. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
  246. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
  247. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
  248. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
  249. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
  250. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
  251. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
  252. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
  253. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
  254. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
  255. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
  256. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
  257. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
  258. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/requires.txt +0 -0
  259. {snowflake_connector_python-3.17.0 → snowflake_connector_python-3.17.2}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
@@ -7,6 +7,14 @@ https://docs.snowflake.com/
7
7
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
8
8
 
9
9
  # Release Notes
10
+ - v3.17.2(August 23,2025)
11
+ - Fixed a bug where platform_detection was retrying failed requests with warnings to non-existent endpoints.
12
+ - Added disabling endpoint-based platform detection by setting `platform_detection_timeout_seconds` to zero.
13
+
14
+ - v3.17.1(August 17,2025)
15
+ - Added `infer_schema` parameter to `write_pandas` to perform schema inference on the passed data.
16
+ - Namespace `snowlake` reverted back to non-module.
17
+
10
18
  - v3.17.0(August 16,2025)
11
19
  - Added in-band HTTP exception telemetry.
12
20
  - Added an `unsafe_skip_file_permissions_check` flag to skip file permission checks on the cache and configuration.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-connector-python
3
- Version: 3.17.0
3
+ Version: 3.17.2
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -86,6 +86,14 @@ https://docs.snowflake.com/
86
86
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
87
87
 
88
88
  # Release Notes
89
+ - v3.17.2(August 23,2025)
90
+ - Fixed a bug where platform_detection was retrying failed requests with warnings to non-existent endpoints.
91
+ - Added disabling endpoint-based platform detection by setting `platform_detection_timeout_seconds` to zero.
92
+
93
+ - v3.17.1(August 17,2025)
94
+ - Added `infer_schema` parameter to `write_pandas` to perform schema inference on the passed data.
95
+ - Namespace `snowlake` reverted back to non-module.
96
+
89
97
  - v3.17.0(August 16,2025)
90
98
  - Added in-band HTTP exception telemetry.
91
99
  - Added an `unsafe_skip_file_permissions_check` flag to skip file permission checks on the cache and configuration.
@@ -128,7 +128,7 @@ class Auth:
128
128
  "SOCKET_TIMEOUT": socket_timeout,
129
129
  "PLATFORM": detect_platforms(
130
130
  platform_detection_timeout_seconds=platform_detection_timeout_seconds,
131
- session_manager=session_manager,
131
+ session_manager=session_manager.clone(max_retries=0),
132
132
  ),
133
133
  },
134
134
  },
@@ -185,7 +185,7 @@ class Auth:
185
185
  self._rest._connection.login_timeout,
186
186
  self._rest._connection._network_timeout,
187
187
  self._rest._connection._socket_timeout,
188
- self._rest._connection._platform_detection_timeout_seconds,
188
+ self._rest._connection.platform_detection_timeout_seconds,
189
189
  session_manager=self._rest.session_manager.clone(use_pooling=False),
190
190
  )
191
191
 
@@ -167,7 +167,9 @@ class AuthByOkta(AuthByPlugin):
167
167
  conn._internal_application_version,
168
168
  conn._ocsp_mode(),
169
169
  conn.login_timeout,
170
- conn._network_timeout,
170
+ conn.network_timeout,
171
+ conn.socket_timeout,
172
+ conn.platform_detection_timeout_seconds,
171
173
  session_manager=conn._session_manager.clone(use_pooling=False),
172
174
  )
173
175
 
@@ -456,12 +456,14 @@ You can close this window now and go back where you started from.
456
456
  body = Auth.base_auth_data(
457
457
  user,
458
458
  account,
459
- conn._rest._connection.application,
460
- conn._rest._connection._internal_application_name,
461
- conn._rest._connection._internal_application_version,
462
- conn._rest._connection._ocsp_mode(),
463
- conn._rest._connection.login_timeout,
464
- conn._rest._connection._network_timeout,
459
+ conn.application,
460
+ conn._internal_application_name,
461
+ conn._internal_application_version,
462
+ conn._ocsp_mode(),
463
+ conn.login_timeout,
464
+ conn.network_timeout,
465
+ conn.socket_timeout,
466
+ conn.platform_detection_timeout_seconds,
465
467
  session_manager=conn.rest.session_manager.clone(use_pooling=False),
466
468
  )
467
469
 
@@ -85,7 +85,9 @@ class AuthByWorkloadIdentity(AuthByPlugin):
85
85
  self.provider,
86
86
  self.entra_resource,
87
87
  self.token,
88
- session_manager=conn._session_manager.clone() if conn else None,
88
+ session_manager=(
89
+ conn._session_manager.clone(max_retries=0) if conn else None
90
+ ),
89
91
  )
90
92
 
91
93
  def reauthenticate(self, **kwargs: typing.Any) -> dict[str, bool]:
@@ -254,6 +254,7 @@ def write_pandas(
254
254
  on_error: str = "abort_statement",
255
255
  parallel: int = 4,
256
256
  quote_identifiers: bool = True,
257
+ infer_schema: bool = False,
257
258
  auto_create_table: bool = False,
258
259
  create_temp_table: bool = False,
259
260
  overwrite: bool = False,
@@ -316,6 +317,8 @@ def write_pandas(
316
317
  quote_identifiers: By default, identifiers, specifically database, schema, table and column names
317
318
  (from df.columns) will be quoted. If set to False, identifiers are passed on to Snowflake without quoting.
318
319
  I.e. identifiers will be coerced to uppercase by Snowflake. (Default value = True)
320
+ infer_schema: Perform explicit schema inference on the data in the DataFrame and use the inferred data types
321
+ when selecting columns from the DataFrame. (Default value = False)
319
322
  auto_create_table: When true, will automatically create a table with corresponding columns for each column in
320
323
  the passed in DataFrame. The table will not be created if it already exists
321
324
  create_temp_table: (Deprecated) Will make the auto-created table as a temporary table
@@ -482,7 +485,7 @@ def write_pandas(
482
485
  num_statements=1,
483
486
  )
484
487
 
485
- if auto_create_table or overwrite:
488
+ if auto_create_table or overwrite or infer_schema:
486
489
  file_format_location = _create_temp_file_format(
487
490
  cursor,
488
491
  database,
@@ -525,27 +528,29 @@ def write_pandas(
525
528
  quote_identifiers,
526
529
  )
527
530
 
528
- iceberg = "ICEBERG " if iceberg_config else ""
529
- iceberg_config_statement = _iceberg_config_statement_helper(
530
- iceberg_config or {}
531
- )
531
+ if auto_create_table or overwrite:
532
+ iceberg = "ICEBERG " if iceberg_config else ""
533
+ iceberg_config_statement = _iceberg_config_statement_helper(
534
+ iceberg_config or {}
535
+ )
536
+
537
+ create_table_sql = (
538
+ f"CREATE {table_type.upper()} {iceberg}TABLE IF NOT EXISTS identifier(?) "
539
+ f"({create_table_columns}) {iceberg_config_statement}"
540
+ f" /* Python:snowflake.connector.pandas_tools.write_pandas() */ "
541
+ )
542
+ params = (target_table_location,)
543
+ logger.debug(
544
+ f"auto creating table with '{create_table_sql}'. params: %s", params
545
+ )
546
+ cursor.execute(
547
+ create_table_sql,
548
+ _is_internal=True,
549
+ _force_qmark_paramstyle=True,
550
+ params=params,
551
+ num_statements=1,
552
+ )
532
553
 
533
- create_table_sql = (
534
- f"CREATE {table_type.upper()} {iceberg}TABLE IF NOT EXISTS identifier(?) "
535
- f"({create_table_columns}) {iceberg_config_statement}"
536
- f" /* Python:snowflake.connector.pandas_tools.write_pandas() */ "
537
- )
538
- params = (target_table_location,)
539
- logger.debug(
540
- f"auto creating table with '{create_table_sql}'. params: %s", params
541
- )
542
- cursor.execute(
543
- create_table_sql,
544
- _is_internal=True,
545
- _force_qmark_paramstyle=True,
546
- params=params,
547
- num_statements=1,
548
- )
549
554
  # need explicit casting when the underlying table schema is inferred
550
555
  parquet_columns = "$1:" + ",$1:".join(
551
556
  f"{quote}{snowflake_col}{quote}::{column_type_mapping[col]}"
@@ -584,7 +589,7 @@ def write_pandas(
584
589
  f"TYPE=PARQUET "
585
590
  f"USE_VECTORIZED_SCANNER={use_vectorized_scanner} "
586
591
  f"COMPRESSION={compression_map[compression]}"
587
- f"{' BINARY_AS_TEXT=FALSE' if auto_create_table or overwrite else ''}"
592
+ f"{' BINARY_AS_TEXT=FALSE' if auto_create_table or overwrite or infer_schema else ''}"
588
593
  f"{sql_use_logical_type}"
589
594
  f") "
590
595
  f"PURGE=TRUE ON_ERROR=?"
@@ -399,7 +399,7 @@ def detect_platforms(
399
399
 
400
400
  if session_manager is None:
401
401
  # This should never happen - we expect session manager to be passed from the outer scope
402
- session_manager = SessionManager(use_pooling=False)
402
+ session_manager = SessionManager(use_pooling=False, max_retries=0)
403
403
 
404
404
  # Run environment-only checks synchronously (no network calls, no threading overhead)
405
405
  platforms = {
@@ -411,33 +411,36 @@ def detect_platforms(
411
411
  }
412
412
 
413
413
  # Run network-calling functions in parallel
414
- with ThreadPoolExecutor(max_workers=6) as executor:
415
- futures = {
416
- "is_ec2_instance": executor.submit(
417
- is_ec2_instance, platform_detection_timeout_seconds
418
- ),
419
- "has_aws_identity": executor.submit(
420
- has_aws_identity, platform_detection_timeout_seconds
421
- ),
422
- "is_azure_vm": executor.submit(
423
- is_azure_vm, platform_detection_timeout_seconds, session_manager
424
- ),
425
- "has_azure_managed_identity": executor.submit(
426
- has_azure_managed_identity,
427
- platform_detection_timeout_seconds,
428
- session_manager,
429
- ),
430
- "is_gce_vm": executor.submit(
431
- is_gce_vm, platform_detection_timeout_seconds, session_manager
432
- ),
433
- "has_gcp_identity": executor.submit(
434
- has_gcp_identity,
435
- platform_detection_timeout_seconds,
436
- session_manager,
437
- ),
438
- }
439
-
440
- platforms.update({key: future.result() for key, future in futures.items()})
414
+ if platform_detection_timeout_seconds != 0.0:
415
+ with ThreadPoolExecutor(max_workers=6) as executor:
416
+ futures = {
417
+ "is_ec2_instance": executor.submit(
418
+ is_ec2_instance, platform_detection_timeout_seconds
419
+ ),
420
+ "has_aws_identity": executor.submit(
421
+ has_aws_identity, platform_detection_timeout_seconds
422
+ ),
423
+ "is_azure_vm": executor.submit(
424
+ is_azure_vm, platform_detection_timeout_seconds, session_manager
425
+ ),
426
+ "has_azure_managed_identity": executor.submit(
427
+ has_azure_managed_identity,
428
+ platform_detection_timeout_seconds,
429
+ session_manager,
430
+ ),
431
+ "is_gce_vm": executor.submit(
432
+ is_gce_vm, platform_detection_timeout_seconds, session_manager
433
+ ),
434
+ "has_gcp_identity": executor.submit(
435
+ has_gcp_identity,
436
+ platform_detection_timeout_seconds,
437
+ session_manager,
438
+ ),
439
+ }
440
+
441
+ platforms.update(
442
+ {key: future.result() for key, future in futures.items()}
443
+ )
441
444
 
442
445
  detected_platforms = []
443
446
  for platform_name, detection_state in platforms.items():
@@ -16,7 +16,7 @@ from .vendored.requests import Response, Session
16
16
  from .vendored.requests.adapters import BaseAdapter, HTTPAdapter
17
17
  from .vendored.requests.exceptions import InvalidProxyURL
18
18
  from .vendored.requests.utils import prepend_scheme_if_needed, select_proxy
19
- from .vendored.urllib3 import PoolManager
19
+ from .vendored.urllib3 import PoolManager, Retry
20
20
  from .vendored.urllib3.poolmanager import ProxyManager
21
21
  from .vendored.urllib3.util.url import parse_url
22
22
 
@@ -119,7 +119,7 @@ class HttpConfig:
119
119
  default_factory=ProxySupportAdapterFactory
120
120
  )
121
121
  use_pooling: bool = True
122
- max_retries: int | None = REQUESTS_RETRY
122
+ max_retries: int | Retry | None = REQUESTS_RETRY
123
123
  proxy_host: str | None = None
124
124
  proxy_port: str | None = None
125
125
  proxy_user: str | None = None
@@ -129,6 +129,22 @@ class HttpConfig:
129
129
  """Return a new HttpConfig with overrides applied."""
130
130
  return replace(self, **overrides)
131
131
 
132
+ def get_adapter(self, **override_adapter_factory_kwargs) -> HTTPAdapter:
133
+ # We pass here only chosen attributes as kwargs to make the arguments received by the factory as compliant with the HttpAdapter constructor interface as possible.
134
+ # We could consider passing the whole HttpConfig as kwarg to the factory if necessary in the future.
135
+ attributes_for_adapter_factory = frozenset(
136
+ {
137
+ "max_retries",
138
+ }
139
+ )
140
+
141
+ self_kwargs_for_adapter_factory = {
142
+ attr_name: getattr(self, attr_name)
143
+ for attr_name in attributes_for_adapter_factory
144
+ }
145
+ self_kwargs_for_adapter_factory.update(override_adapter_factory_kwargs)
146
+ return self.adapter_factory(**self_kwargs_for_adapter_factory)
147
+
132
148
 
133
149
  class SessionPool:
134
150
  """
@@ -185,6 +201,40 @@ class SessionPool:
185
201
  self._idle_sessions.clear()
186
202
 
187
203
 
204
+ class _ConfigDirectAccessMixin(abc.ABC):
205
+ @property
206
+ @abc.abstractmethod
207
+ def config(self) -> HttpConfig: ...
208
+
209
+ @config.setter
210
+ @abc.abstractmethod
211
+ def config(self, value) -> HttpConfig: ...
212
+
213
+ @property
214
+ def use_pooling(self) -> bool:
215
+ return self.config.use_pooling
216
+
217
+ @use_pooling.setter
218
+ def use_pooling(self, value: bool) -> None:
219
+ self.config = self.config.copy_with(use_pooling=value)
220
+
221
+ @property
222
+ def adapter_factory(self) -> Callable[..., HTTPAdapter]:
223
+ return self.config.adapter_factory
224
+
225
+ @adapter_factory.setter
226
+ def adapter_factory(self, value: Callable[..., HTTPAdapter]) -> None:
227
+ self.config = self.config.copy_with(adapter_factory=value)
228
+
229
+ @property
230
+ def max_retries(self) -> Retry | int:
231
+ return self.config.max_retries
232
+
233
+ @max_retries.setter
234
+ def max_retries(self, value: Retry | int) -> None:
235
+ self.config = self.config.copy_with(max_retries=value)
236
+
237
+
188
238
  class _RequestVerbsUsingSessionMixin(abc.ABC):
189
239
  """
190
240
  Mixin that provides HTTP methods (get, post, put, etc.) mirroring requests.Session, maintaining their default argument behavior (e.g., HEAD uses allow_redirects=False).
@@ -295,7 +345,7 @@ class _RequestVerbsUsingSessionMixin(abc.ABC):
295
345
  return session.delete(url, headers=headers, timeout=timeout, **kwargs)
296
346
 
297
347
 
298
- class SessionManager(_RequestVerbsUsingSessionMixin):
348
+ class SessionManager(_RequestVerbsUsingSessionMixin, _ConfigDirectAccessMixin):
299
349
  """
300
350
  Central HTTP session manager that handles all external requests from the Snowflake driver.
301
351
 
@@ -362,22 +412,6 @@ class SessionManager(_RequestVerbsUsingSessionMixin):
362
412
  self._cfg.proxy_password,
363
413
  )
364
414
 
365
- @property
366
- def use_pooling(self) -> bool:
367
- return self._cfg.use_pooling
368
-
369
- @use_pooling.setter
370
- def use_pooling(self, value: bool) -> None:
371
- self._cfg = self._cfg.copy_with(use_pooling=value)
372
-
373
- @property
374
- def adapter_factory(self) -> Callable[..., HTTPAdapter]:
375
- return self._cfg.adapter_factory
376
-
377
- @adapter_factory.setter
378
- def adapter_factory(self, value: Callable[..., HTTPAdapter]) -> None:
379
- self._cfg = self._cfg.copy_with(adapter_factory=value)
380
-
381
415
  @property
382
416
  def sessions_map(self) -> dict[str, SessionPool]:
383
417
  return self._sessions_map
@@ -403,9 +437,7 @@ class SessionManager(_RequestVerbsUsingSessionMixin):
403
437
  def _mount_adapters(self, session: requests.Session) -> None:
404
438
  try:
405
439
  # Its important that each separate session manager creates its own adapters - because they are storing internally PoolManagers - which shouldn't be reused if not in scope of the same adapter.
406
- adapter = self._cfg.adapter_factory(
407
- max_retries=self._cfg.max_retries or REQUESTS_RETRY
408
- )
440
+ adapter = self._cfg.get_adapter()
409
441
  if adapter is not None:
410
442
  session.mount("http://", adapter)
411
443
  session.mount("https://", adapter)
@@ -473,27 +505,18 @@ class SessionManager(_RequestVerbsUsingSessionMixin):
473
505
 
474
506
  def clone(
475
507
  self,
476
- *,
477
- use_pooling: bool | None = None,
478
- adapter_factory: AdapterFactory | None = None,
508
+ **http_config_overrides,
479
509
  ) -> SessionManager:
480
510
  """Return a new *stateless* SessionManager sharing this instance’s config.
481
511
 
482
- "Shallow" means the configuration object (HttpConfig) is reused as-is,
512
+ "Shallow clone" - the configuration object (HttpConfig) is reused as-is,
483
513
  while *stateful* aspects such as the per-host SessionPool mapping are
484
514
  reset, so the two managers do not share live `requests.Session`
485
515
  objects.
486
- Optional *use_pooling* / *adapter_factory* overrides create a modified
487
- copy of the config before instantiation.
516
+ Optional kwargs (e.g. *use_pooling* / *adapter_factory* / max_retries etc.) - overrides to create a modified
517
+ copy of the HttpConfig before instantiation.
488
518
  """
489
-
490
- overrides: dict[str, Any] = {}
491
- if use_pooling is not None:
492
- overrides["use_pooling"] = use_pooling
493
- if adapter_factory is not None:
494
- overrides["adapter_factory"] = adapter_factory
495
-
496
- return SessionManager.from_config(self._cfg, **overrides)
519
+ return SessionManager.from_config(self._cfg, **http_config_overrides)
497
520
 
498
521
  def __getstate__(self):
499
522
  state = self.__dict__.copy()
@@ -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, 17, 0, None)
3
+ VERSION = (3, 17, 2, None)
@@ -303,7 +303,9 @@ def create_attestation(
303
303
  """
304
304
  entra_resource = entra_resource or DEFAULT_ENTRA_SNOWFLAKE_RESOURCE
305
305
  session_manager = (
306
- session_manager.clone() if session_manager else SessionManager(use_pooling=True)
306
+ session_manager.clone()
307
+ if session_manager
308
+ else SessionManager(use_pooling=True, max_retries=0)
307
309
  )
308
310
 
309
311
  if provider == AttestationProvider.AWS:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-connector-python
3
- Version: 3.17.0
3
+ Version: 3.17.2
4
4
  Summary: Snowflake Connector for Python
5
5
  Home-page: https://www.snowflake.com/
6
6
  Author: Snowflake, Inc
@@ -86,6 +86,14 @@ https://docs.snowflake.com/
86
86
  Source code is also available at: https://github.com/snowflakedb/snowflake-connector-python
87
87
 
88
88
  # Release Notes
89
+ - v3.17.2(August 23,2025)
90
+ - Fixed a bug where platform_detection was retrying failed requests with warnings to non-existent endpoints.
91
+ - Added disabling endpoint-based platform detection by setting `platform_detection_timeout_seconds` to zero.
92
+
93
+ - v3.17.1(August 17,2025)
94
+ - Added `infer_schema` parameter to `write_pandas` to perform schema inference on the passed data.
95
+ - Namespace `snowlake` reverted back to non-module.
96
+
89
97
  - v3.17.0(August 16,2025)
90
98
  - Added in-band HTTP exception telemetry.
91
99
  - Added an `unsafe_skip_file_permissions_check` flag to skip file permission checks on the cache and configuration.