From b968301a12f1cc0ef7e79e1b941b778ef7f6665c Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Sun, 18 Feb 2024 07:24:00 -0500 Subject: [PATCH] fix(duckdb-sql): ignore importlib package errors when importing ibis.snowflake for transpilation (#8389) Fixes an issue where we try to pluck package metadata for a non-existent package (`snowflake-connector-python`) when transpiling from one dialect to another; in this case duckdb sql to snowflake sql. --- ibis/backends/duckdb/tests/test_client.py | 2 -- ibis/backends/snowflake/__init__.py | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ibis/backends/duckdb/tests/test_client.py b/ibis/backends/duckdb/tests/test_client.py index f94241f58c00..6f82c48c2f84 100644 --- a/ibis/backends/duckdb/tests/test_client.py +++ b/ibis/backends/duckdb/tests/test_client.py @@ -190,8 +190,6 @@ def test_insert(con): def test_to_other_sql(con, snapshot): - pytest.importorskip("snowflake.connector") - t = con.table("functional_alltypes") sql = ibis.to_sql(t, dialect="snowflake") diff --git a/ibis/backends/snowflake/__init__.py b/ibis/backends/snowflake/__init__.py index 035325dc851a..3986ea389275 100644 --- a/ibis/backends/snowflake/__init__.py +++ b/ibis/backends/snowflake/__init__.py @@ -38,17 +38,6 @@ from ibis.backends.snowflake.compiler import SnowflakeCompiler from ibis.backends.snowflake.converter import SnowflakePandasData -with warnings.catch_warnings(): - if vparse(importlib.metadata.version("snowflake-connector-python")) >= vparse( - "3.3.0" - ): - warnings.filterwarnings( - "ignore", - message="You have an incompatible version of 'pyarrow' installed", - category=UserWarning, - ) - import snowflake.connector as sc - if TYPE_CHECKING: from collections.abc import Iterable, Iterator, Mapping @@ -222,6 +211,17 @@ def do_connect(self, create_object_udfs: bool = True, **kwargs: Any): Additional arguments passed to the URL constructor. """ + with warnings.catch_warnings(): + if vparse( + importlib.metadata.version("snowflake-connector-python") + ) >= vparse("3.3.0"): + warnings.filterwarnings( + "ignore", + message="You have an incompatible version of 'pyarrow' installed", + category=UserWarning, + ) + import snowflake.connector as sc + connect_args = kwargs.copy() session_parameters = connect_args.pop("session_parameters", {})