This is an automated email from the ASF dual-hosted git repository.

elizabeth pushed a commit to branch elizabeth/tune-logging
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ede5398aee70304112ff50d18670b0e55246679b
Author: Elizabeth Thompson <[email protected]>
AuthorDate: Wed May 15 14:49:06 2024 -0700

    warning emits an error
---
 superset/utils/pandas_postprocessing/compare.py      | 11 +++++++++--
 .../unit_tests/pandas_postprocessing/test_compare.py | 20 +++++++++++++++++++-
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/superset/utils/pandas_postprocessing/compare.py 
b/superset/utils/pandas_postprocessing/compare.py
index b20682027f..ab2a3a3a57 100644
--- a/superset/utils/pandas_postprocessing/compare.py
+++ b/superset/utils/pandas_postprocessing/compare.py
@@ -15,16 +15,22 @@
 # specific language governing permissions and limitations
 # under the License.
 from typing import Optional
+import warnings
 
 import pandas as pd
 from flask_babel import gettext as _
 from pandas import DataFrame
+from pandas.errors import PerformanceWarning
 
 from superset.constants import PandasPostprocessingCompare
-from superset.exceptions import InvalidPostProcessingError
+from superset.exceptions import InvalidPostProcessingError, 
PandasProcessingException, SupersetException
 from superset.utils.core import TIME_COMPARISON
 from superset.utils.pandas_postprocessing.utils import validate_column_args
 
+import logging
+
+logger = logging.getLogger(__name__)
+
 
 @validate_column_args("source_columns", "compare_columns")
 def compare(  # pylint: disable=too-many-arguments
@@ -81,5 +87,6 @@ def compare(  # pylint: disable=too-many-arguments
         df = pd.concat([df, diff_df], axis=1)
 
     if drop_original_columns:
-        df = df.drop(source_columns + compare_columns, axis=1)
+        with warnings.catch_warnings(action='ignore', 
category=PerformanceWarning):
+            df = df.drop(source_columns + compare_columns, axis=1)
     return df
diff --git a/tests/unit_tests/pandas_postprocessing/test_compare.py 
b/tests/unit_tests/pandas_postprocessing/test_compare.py
index 9da8a31535..4e70748f74 100644
--- a/tests/unit_tests/pandas_postprocessing/test_compare.py
+++ b/tests/unit_tests/pandas_postprocessing/test_compare.py
@@ -14,13 +14,18 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+from unittest.mock import patch
 import pandas as pd
+import pytest
+from pandas.errors import PerformanceWarning
+
 
 from superset.constants import PandasPostprocessingCompare as PPC
+from superset.exceptions import PandasProcessingException
 from superset.utils import pandas_postprocessing as pp
 from superset.utils.pandas_postprocessing.utils import FLAT_COLUMN_SEPARATOR
 from tests.unit_tests.fixtures.dataframes import multiple_metrics_df, 
timeseries_df2
-
+from superset.utils.pandas_postprocessing.compare import logger
 
 def test_compare_should_not_side_effect():
     _timeseries_df2 = timeseries_df2.copy()
@@ -229,3 +234,16 @@ def test_compare_after_pivot():
             }
         )
     )
+def test_exception_called(mocker):
+    drop_mock = mocker.patch("pandas.core.frame.DataFrame.drop")
+    drop_mock.side_effect = PerformanceWarning("warning message")
+    
+    with pytest.raises(PandasProcessingException):
+        pp.compare(
+            df=timeseries_df2,
+            source_columns=["y"],
+            compare_columns=["z"],
+            compare_type=PPC.DIFF,
+            drop_original_columns=True,
+        )
+    

Reply via email to