snowflake-connector-python 3.12.3__tar.gz → 3.12.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/DESCRIPTION.md +6 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/PKG-INFO +8 -2
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/README.md +5 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/setup.cfg +1 -1
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/azure_storage_client.py +24 -2
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/network.py +12 -4
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ocsp_asn1crypto.py +17 -1
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/util_text.py +9 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/version.py +1 -1
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/PKG-INFO +8 -2
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/requires.txt +1 -1
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/CONTRIBUTING.md +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/LICENSE.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/MANIFEST.in +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/NOTICE +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/SECURITY.md +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/pyproject.toml +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/setup.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_query_context_cache.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_sql_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/_utils.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/arrow_context.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/_auth.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/by_plugin.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/default.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/idtoken.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/keypair.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/oauth.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/okta.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/usrpwdmfa.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/auth/webbrowser.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/backoff_policies.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/bind_upload_agent.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/cache.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/compat.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/config_manager.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/connection.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/connection_diagnostic.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/constants.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_issue23517.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_null.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/converter_snowsql.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/cursor.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/dbapi.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/description.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/encryption_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/errorcode.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/errors.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/feature.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_compression_type.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_transfer_agent.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/file_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/gcs_storage_client.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/gzip_decoder.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/local_storage_client.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/log_configuration.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ArrayConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BinaryConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/BooleanConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowChunkIterator.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowIterator.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/CArrowTableIterator.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DateConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/DecimalConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FixedSizeListConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/FloatConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IColumnConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/IntConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/LICENSE.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/MapConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/ObjectConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Common.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Python/Helpers.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/SnowflakeType.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/StringConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/TimeStampConverter.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/macros.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/Util/time.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_accessors.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_alloc.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_assert.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_builder.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_emitter.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_endian.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_epilogue.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_flatbuffers.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_identifier.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_iov.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_prologue.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_refmap.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_rtconfig.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_types.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/flatcc_verifier.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/flatcc_portable.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/paligned_alloc.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pattributes.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_pop.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pdiagnostic_push.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pendian_detect.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinline.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pinttypes.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/portable_basic.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstatic_assert.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdalign.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pstdint.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/punaligned.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pversion.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc/portable/pwarnings.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/flatcc.c +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.c +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_arrow_iterator.pyx +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.c +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_device.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.c +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/ArrowIterator/nanoarrow_ipc.h +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.cpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/nanoarrow_cpp/Logging/logging.hpp +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ocsp_snowflake.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/options.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/pandas_tools.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/proxy.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/py.typed +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/result_batch.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/result_set.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/s3_storage_client.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/secret_detector.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sf_dirs.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sfbinaryformat.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sfdatetime.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/snow_logging.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/sqlstate.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ssd_internal_keys.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/ssl_wrap_socket.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/storage_client.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/telemetry.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/telemetry_oob.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/test_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/time_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_certs.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_ocsp_response.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/dump_ocsp_response_cache.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/tool/probe_connection.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/url_util.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/LICENSE +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/__version__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/_internal_utils.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/adapters.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/api.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/auth.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/certs.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/compat.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/cookies.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/exceptions.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/help.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/hooks.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/models.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/sessions.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/status_codes.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/structures.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/requests/utils.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/LICENSE.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/_collections.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/_version.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/connection.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/connectionpool.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_appengine_environ.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/bindings.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/_securetransport/low_level.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/appengine.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/ntlmpool.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/pyopenssl.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/securetransport.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/contrib/socks.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/exceptions.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/fields.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/filepost.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/makefile.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/backports/weakref_finalize.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/packages/six.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/poolmanager.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/request.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/response.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/__init__.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/connection.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/proxy.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/queue.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/request.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/response.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/retry.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssl_.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssl_match_hostname.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/ssltransport.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/timeout.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/url.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake/connector/vendored/urllib3/util/wait.py +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/SOURCES.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/dependency_links.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/entry_points.txt +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/not-zip-safe +0 -0
- {snowflake_connector_python-3.12.3 → snowflake_connector_python-3.12.4}/src/snowflake_connector_python.egg-info/top_level.txt +0 -0
|
@@ -8,6 +8,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
8
8
|
|
|
9
9
|
# Release Notes
|
|
10
10
|
|
|
11
|
+
- v3.12.4(December 3,2024)
|
|
12
|
+
- Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
|
|
13
|
+
- Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
|
|
14
|
+
- Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
|
|
15
|
+
- Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
|
|
16
|
+
|
|
11
17
|
- v3.12.3(October 25,2024)
|
|
12
18
|
- Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
|
|
13
19
|
- Improved error message for SQL execution cancellations caused by timeout.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 3.12.
|
|
3
|
+
Version: 3.12.4
|
|
4
4
|
Summary: Snowflake Connector for Python
|
|
5
5
|
Home-page: https://www.snowflake.com/
|
|
6
6
|
Author: Snowflake, Inc
|
|
@@ -41,7 +41,7 @@ License-File: NOTICE
|
|
|
41
41
|
Requires-Dist: asn1crypto<2.0.0,>0.24.0
|
|
42
42
|
Requires-Dist: cffi<2.0.0,>=1.9
|
|
43
43
|
Requires-Dist: cryptography>=3.1.0
|
|
44
|
-
Requires-Dist: pyOpenSSL<25.0.0,>=
|
|
44
|
+
Requires-Dist: pyOpenSSL<25.0.0,>=22.0.0
|
|
45
45
|
Requires-Dist: pyjwt<3.0.0
|
|
46
46
|
Requires-Dist: pytz
|
|
47
47
|
Requires-Dist: requests<3.0.0
|
|
@@ -85,6 +85,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
85
85
|
|
|
86
86
|
# Release Notes
|
|
87
87
|
|
|
88
|
+
- v3.12.4(December 3,2024)
|
|
89
|
+
- Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
|
|
90
|
+
- Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
|
|
91
|
+
- Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
|
|
92
|
+
- Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
|
|
93
|
+
|
|
88
94
|
- v3.12.3(October 25,2024)
|
|
89
95
|
- Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
|
|
90
96
|
- Improved error message for SQL execution cancellations caused by timeout.
|
|
@@ -81,3 +81,8 @@ conn = snowflake.connector.connect(
|
|
|
81
81
|
)
|
|
82
82
|
conn.telemetry_enabled = False
|
|
83
83
|
```
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## NOTE
|
|
87
|
+
|
|
88
|
+
This library currently does not support GCP regional endpoints. Please ensure that any workloads using through this library do not require support for regional endpoints on GCP. If you have questions about this, please contact [Snowflake Support](https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge).
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
+
import base64
|
|
7
8
|
import json
|
|
8
9
|
import os
|
|
9
10
|
import xml.etree.ElementTree as ET
|
|
@@ -17,6 +18,7 @@ from .compat import quote
|
|
|
17
18
|
from .constants import FileHeader, ResultStatus
|
|
18
19
|
from .encryption_util import EncryptionMetadata
|
|
19
20
|
from .storage_client import SnowflakeStorageClient
|
|
21
|
+
from .util_text import get_md5
|
|
20
22
|
from .vendored import requests
|
|
21
23
|
|
|
22
24
|
if TYPE_CHECKING: # pragma: no cover
|
|
@@ -149,7 +151,7 @@ class SnowflakeAzureRestClient(SnowflakeStorageClient):
|
|
|
149
151
|
)
|
|
150
152
|
)
|
|
151
153
|
return FileHeader(
|
|
152
|
-
digest=r.headers.get(
|
|
154
|
+
digest=r.headers.get(SFCDIGEST),
|
|
153
155
|
content_length=int(r.headers.get("Content-Length")),
|
|
154
156
|
encryption_metadata=encryption_metadata,
|
|
155
157
|
)
|
|
@@ -236,7 +238,27 @@ class SnowflakeAzureRestClient(SnowflakeStorageClient):
|
|
|
236
238
|
part = ET.Element("Latest")
|
|
237
239
|
part.text = block_id
|
|
238
240
|
root.append(part)
|
|
239
|
-
|
|
241
|
+
# SNOW-1778088: We need to calculate the MD5 sum of this file for Azure Blob storage
|
|
242
|
+
new_stream = not bool(self.meta.src_stream or self.meta.intermediate_stream)
|
|
243
|
+
fd = (
|
|
244
|
+
self.meta.src_stream
|
|
245
|
+
or self.meta.intermediate_stream
|
|
246
|
+
or open(self.meta.real_src_file_name, "rb")
|
|
247
|
+
)
|
|
248
|
+
try:
|
|
249
|
+
if not new_stream:
|
|
250
|
+
# Reset position in file
|
|
251
|
+
fd.seek(0)
|
|
252
|
+
file_content = fd.read()
|
|
253
|
+
finally:
|
|
254
|
+
if new_stream:
|
|
255
|
+
fd.close()
|
|
256
|
+
headers = {
|
|
257
|
+
"x-ms-blob-content-encoding": "utf-8",
|
|
258
|
+
"x-ms-blob-content-md5": base64.b64encode(get_md5(file_content)).decode(
|
|
259
|
+
"utf-8"
|
|
260
|
+
),
|
|
261
|
+
}
|
|
240
262
|
azure_metadata = self._prepare_file_metadata()
|
|
241
263
|
headers.update(azure_metadata)
|
|
242
264
|
retry_id = "COMPLETE"
|
|
@@ -481,11 +481,19 @@ class SnowflakeRestful:
|
|
|
481
481
|
HTTP_HEADER_USER_AGENT: PYTHON_CONNECTOR_USER_AGENT,
|
|
482
482
|
}
|
|
483
483
|
try:
|
|
484
|
-
|
|
484
|
+
# SNOW-1763555: inject OpenTelemetry headers if available specifically in WC3 format
|
|
485
|
+
# into our request headers in case tracing is enabled. This should make sure that
|
|
486
|
+
# our requests are accounted for properly if OpenTelemetry is used by users.
|
|
487
|
+
from opentelemetry.trace.propagation.tracecontext import (
|
|
488
|
+
TraceContextTextMapPropagator,
|
|
489
|
+
)
|
|
485
490
|
|
|
486
|
-
inject(headers)
|
|
487
|
-
except
|
|
488
|
-
logger.debug(
|
|
491
|
+
TraceContextTextMapPropagator().inject(headers)
|
|
492
|
+
except Exception:
|
|
493
|
+
logger.debug(
|
|
494
|
+
"Opentelemtry otel injection failed",
|
|
495
|
+
exc_info=True,
|
|
496
|
+
)
|
|
489
497
|
if self._connection.service_name:
|
|
490
498
|
headers[HTTP_HEADER_SERVICE_NAME] = self._connection.service_name
|
|
491
499
|
if method == "post":
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
+
import typing
|
|
8
9
|
from base64 import b64decode, b64encode
|
|
9
10
|
from collections import OrderedDict
|
|
10
11
|
from datetime import datetime, timezone
|
|
@@ -28,6 +29,9 @@ from cryptography.exceptions import InvalidSignature
|
|
|
28
29
|
from cryptography.hazmat.backends import default_backend
|
|
29
30
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
30
31
|
from cryptography.hazmat.primitives.asymmetric import padding, utils
|
|
32
|
+
from cryptography.hazmat.primitives.asymmetric.dsa import DSAPublicKey
|
|
33
|
+
from cryptography.hazmat.primitives.asymmetric.ec import ECDSA, EllipticCurvePublicKey
|
|
34
|
+
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey
|
|
31
35
|
from OpenSSL.SSL import Connection
|
|
32
36
|
|
|
33
37
|
from snowflake.connector.errorcode import (
|
|
@@ -368,9 +372,21 @@ class SnowflakeOCSPAsn1Crypto(SnowflakeOCSP):
|
|
|
368
372
|
hasher = hashes.Hash(chosen_hash, backend)
|
|
369
373
|
hasher.update(data.dump())
|
|
370
374
|
digest = hasher.finalize()
|
|
375
|
+
additional_kwargs: dict[str, typing.Any] = dict()
|
|
376
|
+
if isinstance(public_key, RSAPublicKey):
|
|
377
|
+
additional_kwargs["padding"] = padding.PKCS1v15()
|
|
378
|
+
additional_kwargs["algorithm"] = utils.Prehashed(chosen_hash)
|
|
379
|
+
elif isinstance(public_key, DSAPublicKey):
|
|
380
|
+
additional_kwargs["algorithm"] = utils.Prehashed(chosen_hash)
|
|
381
|
+
elif isinstance(public_key, EllipticCurvePublicKey):
|
|
382
|
+
additional_kwargs["signature_algorithm"] = ECDSA(
|
|
383
|
+
utils.Prehashed(chosen_hash)
|
|
384
|
+
)
|
|
371
385
|
try:
|
|
372
386
|
public_key.verify(
|
|
373
|
-
signature,
|
|
387
|
+
signature,
|
|
388
|
+
digest,
|
|
389
|
+
**additional_kwargs,
|
|
374
390
|
)
|
|
375
391
|
except InvalidSignature:
|
|
376
392
|
raise RevocationCheckError(msg="Failed to verify the signature")
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
+
import hashlib
|
|
8
9
|
import logging
|
|
9
10
|
import random
|
|
10
11
|
import re
|
|
@@ -289,3 +290,11 @@ def random_string(
|
|
|
289
290
|
"""
|
|
290
291
|
random_part = "".join([random.Random().choice(choices) for _ in range(length)])
|
|
291
292
|
return "".join([prefix, random_part, suffix])
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def get_md5(text: str | bytes) -> bytes:
|
|
296
|
+
if isinstance(text, str):
|
|
297
|
+
text = text.encode("utf-8")
|
|
298
|
+
md5 = hashlib.md5()
|
|
299
|
+
md5.update(text)
|
|
300
|
+
return md5.digest()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: snowflake-connector-python
|
|
3
|
-
Version: 3.12.
|
|
3
|
+
Version: 3.12.4
|
|
4
4
|
Summary: Snowflake Connector for Python
|
|
5
5
|
Home-page: https://www.snowflake.com/
|
|
6
6
|
Author: Snowflake, Inc
|
|
@@ -41,7 +41,7 @@ License-File: NOTICE
|
|
|
41
41
|
Requires-Dist: asn1crypto<2.0.0,>0.24.0
|
|
42
42
|
Requires-Dist: cffi<2.0.0,>=1.9
|
|
43
43
|
Requires-Dist: cryptography>=3.1.0
|
|
44
|
-
Requires-Dist: pyOpenSSL<25.0.0,>=
|
|
44
|
+
Requires-Dist: pyOpenSSL<25.0.0,>=22.0.0
|
|
45
45
|
Requires-Dist: pyjwt<3.0.0
|
|
46
46
|
Requires-Dist: pytz
|
|
47
47
|
Requires-Dist: requests<3.0.0
|
|
@@ -85,6 +85,12 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
|
|
|
85
85
|
|
|
86
86
|
# Release Notes
|
|
87
87
|
|
|
88
|
+
- v3.12.4(December 3,2024)
|
|
89
|
+
- Fixed a bug where multipart uploads to Azure would be missing their MD5 hashes.
|
|
90
|
+
- Fixed a bug where OpenTelemetry header injection would sometimes cause Exceptions to be thrown.
|
|
91
|
+
- Fixed a bug where OCSP checks would throw TypeError and make mainly GCP blob storage unreachable.
|
|
92
|
+
- Bumped pyOpenSSL dependency from >=16.2.0,<25.0.0 to >=22.0.0,<25.0.0.
|
|
93
|
+
|
|
88
94
|
- v3.12.3(October 25,2024)
|
|
89
95
|
- Improved the error message for SSL-related issues to provide clearer guidance when an SSL error occurs.
|
|
90
96
|
- Improved error message for SQL execution cancellations caused by timeout.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|