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

aminghadersohi pushed a commit to branch oss-101877
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 22d1d3a87813218cc7b36023b1e5a0a178408617
Author: Amin Ghadersohi <[email protected]>
AuthorDate: Wed May 20 23:21:57 2026 +0000

    refactor(mcp): extract _add_xy_limits helper and move series_limit tests
    
    Extract row/series limit assignment into a private helper to keep
    map_xy_config within the McCabe complexity threshold, removing the
    noqa: C901 suppression. Move series_limit schema tests out of
    TestRowLimit and into a dedicated TestSeriesLimit class.
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 superset/mcp_service/chart/chart_utils.py          | 13 +++--
 .../mcp_service/chart/test_chart_schemas.py        | 68 ++++++++++++----------
 2 files changed, 44 insertions(+), 37 deletions(-)

diff --git a/superset/mcp_service/chart/chart_utils.py 
b/superset/mcp_service/chart/chart_utils.py
index f62d65df816..3bd24e42385 100644
--- a/superset/mcp_service/chart/chart_utils.py
+++ b/superset/mcp_service/chart/chart_utils.py
@@ -648,7 +648,13 @@ def _resolve_default_x_axis(
     return config.model_copy(update={"x": 
ColumnRef(name=dataset.main_dttm_col)})
 
 
-def map_xy_config(  # noqa: C901
+def _add_xy_limits(form_data: Dict[str, Any], config: XYChartConfig) -> None:
+    form_data["row_limit"] = config.row_limit
+    if config.series_limit is not None:
+        form_data["series_limit"] = config.series_limit
+
+
+def map_xy_config(
     config: XYChartConfig, dataset_id: int | str | None = None
 ) -> Dict[str, Any]:
     """Map XY chart config to form_data with defensive validation."""
@@ -712,10 +718,7 @@ def map_xy_config(  # noqa: C901
     if x_is_temporal:
         _ensure_temporal_adhoc_filter(form_data, config.x.name)
 
-    form_data["row_limit"] = config.row_limit
-
-    if config.series_limit is not None:
-        form_data["series_limit"] = config.series_limit
+    _add_xy_limits(form_data, config)
 
     # Add stacking configuration
     if getattr(config, "stacked", False):
diff --git a/tests/unit_tests/mcp_service/chart/test_chart_schemas.py 
b/tests/unit_tests/mcp_service/chart/test_chart_schemas.py
index 2d91cdd0048..d6f549c9af1 100644
--- a/tests/unit_tests/mcp_service/chart/test_chart_schemas.py
+++ b/tests/unit_tests/mcp_service/chart/test_chart_schemas.py
@@ -452,6 +452,42 @@ class TestRowLimit:
                 row_limit=100000,
             )
 
+    def test_table_chart_default_row_limit(self) -> None:
+        """Test that TableChartConfig has default row_limit of 1000."""
+        config = TableChartConfig(
+            chart_type="table",
+            columns=[ColumnRef(name="product")],
+        )
+        assert config.row_limit == 1000
+
+    def test_table_chart_custom_row_limit(self) -> None:
+        """Test that TableChartConfig accepts custom row_limit."""
+        config = TableChartConfig(
+            chart_type="table",
+            columns=[ColumnRef(name="product")],
+            row_limit=500,
+        )
+        assert config.row_limit == 500
+
+    def test_table_chart_row_limit_validation(self) -> None:
+        """Test that TableChartConfig rejects invalid row_limit."""
+        with pytest.raises(ValidationError):
+            TableChartConfig(
+                chart_type="table",
+                columns=[ColumnRef(name="product")],
+                row_limit=0,
+            )
+        with pytest.raises(ValidationError):
+            TableChartConfig(
+                chart_type="table",
+                columns=[ColumnRef(name="product")],
+                row_limit=100000,
+            )
+
+
+class TestSeriesLimit:
+    """Test series_limit field on XYChartConfig."""
+
     def test_xy_chart_series_limit_default_none(self) -> None:
         """Test that XYChartConfig series_limit defaults to None."""
         config = XYChartConfig(
@@ -489,38 +525,6 @@ class TestRowLimit:
                 series_limit=10001,
             )
 
-    def test_table_chart_default_row_limit(self) -> None:
-        """Test that TableChartConfig has default row_limit of 1000."""
-        config = TableChartConfig(
-            chart_type="table",
-            columns=[ColumnRef(name="product")],
-        )
-        assert config.row_limit == 1000
-
-    def test_table_chart_custom_row_limit(self) -> None:
-        """Test that TableChartConfig accepts custom row_limit."""
-        config = TableChartConfig(
-            chart_type="table",
-            columns=[ColumnRef(name="product")],
-            row_limit=500,
-        )
-        assert config.row_limit == 500
-
-    def test_table_chart_row_limit_validation(self) -> None:
-        """Test that TableChartConfig rejects invalid row_limit."""
-        with pytest.raises(ValidationError):
-            TableChartConfig(
-                chart_type="table",
-                columns=[ColumnRef(name="product")],
-                row_limit=0,
-            )
-        with pytest.raises(ValidationError):
-            TableChartConfig(
-                chart_type="table",
-                columns=[ColumnRef(name="product")],
-                row_limit=100000,
-            )
-
 
 class TestTableChartConfigExtraFields:
     """Test TableChartConfig rejects unknown fields."""

Reply via email to