From 1617e0381a074ec1895a2535925e08f506310cfd Mon Sep 17 00:00:00 2001 From: John Kew Date: Tue, 9 Sep 2025 13:49:58 -0700 Subject: [PATCH 1/3] NO-SNOW: Configure certain pandas warnings to be print-once --- src/snowflake/connector/pandas_tools.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/snowflake/connector/pandas_tools.py b/src/snowflake/connector/pandas_tools.py index afa3d7d2af..2dfe10ad64 100644 --- a/src/snowflake/connector/pandas_tools.py +++ b/src/snowflake/connector/pandas_tools.py @@ -42,6 +42,23 @@ logger = getLogger(__name__) +class PandasUserOnceWarnings(UserWarning): + """ + User warnings related to pandas operations + that only the user has control over. These + are configured to be printed once and only + once using a warning filter. + """ + + pass + + +# Configure user-pandas warnings to print only once +warnings.simplefilter( + "once", PandasUserOnceWarnings, module="snowflake.connector.pandas_tools" +) + + def chunk_helper( lst: pandas.DataFrame, n: int ) -> Iterator[tuple[int, pandas.DataFrame]]: @@ -397,7 +414,7 @@ def write_pandas( f"Pandas Dataframe has non-standard index of type {str(type(df.index))} which will not be written." f" Consider changing the index to pd.RangeIndex(start=0,...,step=1) or " f"call reset_index() to keep index as column(s)", - UserWarning, + PandasUserOnceWarnings, stacklevel=2, ) @@ -411,7 +428,7 @@ def write_pandas( f"'{use_logical_type=}'. This can result in dateimes " "being incorrectly written to Snowflake. Consider setting " "'use_logical_type = True'", - UserWarning, + PandasUserOnceWarnings, stacklevel=2, ) From c2bc30858a41cd115c70e270ba416f54098c1cd9 Mon Sep 17 00:00:00 2001 From: John Kew Date: Tue, 9 Sep 2025 14:10:17 -0700 Subject: [PATCH 2/3] Update changelog --- DESCRIPTION.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION.md b/DESCRIPTION.md index 4765edf346..69649fa89b 100644 --- a/DESCRIPTION.md +++ b/DESCRIPTION.md @@ -9,6 +9,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne # Release Notes - v3.18.0(TBD) - Added the `workload_identity_impersonation_path` parameter to support service account impersonation for Workload Identity Federation on GCP workloads only + - Print user related pandas warnings only once - v3.17.3(September 02,2025) - Enhanced configuration file permission warning messages. From 2e2aa4cee675b2838153c8dfad30ec90acc2126d Mon Sep 17 00:00:00 2001 From: John Kew Date: Wed, 10 Sep 2025 11:28:16 -0700 Subject: [PATCH 3/3] simplefilter does not support module --- src/snowflake/connector/pandas_tools.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/snowflake/connector/pandas_tools.py b/src/snowflake/connector/pandas_tools.py index 2dfe10ad64..632c9f4ebe 100644 --- a/src/snowflake/connector/pandas_tools.py +++ b/src/snowflake/connector/pandas_tools.py @@ -54,9 +54,7 @@ class PandasUserOnceWarnings(UserWarning): # Configure user-pandas warnings to print only once -warnings.simplefilter( - "once", PandasUserOnceWarnings, module="snowflake.connector.pandas_tools" -) +warnings.simplefilter("once", PandasUserOnceWarnings) def chunk_helper(