From 562ae28d66e075cd4a9c7ec4ee05351b94d5b940 Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Fri, 31 Oct 2025 10:48:04 +0100 Subject: [PATCH 1/4] Fix #791 on upstream repo --- great_tables/_helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/great_tables/_helpers.py b/great_tables/_helpers.py index 8fef0f2eb..be68a246a 100644 --- a/great_tables/_helpers.py +++ b/great_tables/_helpers.py @@ -1375,8 +1375,8 @@ def nanoplot_options( show_reference_area = True if show_reference_area is None else show_reference_area show_vertical_guides = True if show_vertical_guides is None else show_vertical_guides show_y_axis_guide = True if show_y_axis_guide is None else show_y_axis_guide - - interactive_data_values = interactive_data_values or True + + interactive_data_values = True if interactive_data_values is None else interactive_data_values # y_val_fmt_fn, y_axis_fmt_fn, and y_ref_line_fmt_fn # are not assigned to a default value From cd7b56fbd781be22a4563510d9485644f1fbda2b Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Fri, 31 Oct 2025 17:55:05 +0100 Subject: [PATCH 2/4] Refactor pipe function to use Concatenate in type hints Updated the pipe function signature to use Concatenate for better type hinting. --- great_tables/_pipe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/great_tables/_pipe.py b/great_tables/_pipe.py index f7dff7a30..5e9920399 100644 --- a/great_tables/_pipe.py +++ b/great_tables/_pipe.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Callable -from typing_extensions import ParamSpec +from typing_extensions import ParamSpec, Concatenate if TYPE_CHECKING: from .gt import GT @@ -10,7 +10,7 @@ P = ParamSpec("P") -def pipe(self: "GT", func: Callable[P, "GT"], *args: P.args, **kwargs: P.kwargs) -> "GT": +def pipe(self: "GT", func: Callable[Concatenate["GT", P], "GT"], *args: P.args, **kwargs: P.kwargs) -> "GT": """ Provide a structured way to chain a function for a GT object. From e208915396d25b6226128e83ccfb4350149b414f Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Fri, 13 Feb 2026 13:48:33 -0500 Subject: [PATCH 3/4] Add tests for nanoplot interactive option --- tests/test__utils_nanoplots.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test__utils_nanoplots.py b/tests/test__utils_nanoplots.py index 6ba4d3830..4aca71047 100644 --- a/tests/test__utils_nanoplots.py +++ b/tests/test__utils_nanoplots.py @@ -2061,3 +2061,17 @@ def test_noerror_list_of_strings() -> None: show_data_area=False, ), ) + + +def test_nanoplot_options_interactive_data_values(): + # When interactive_data_values is not set, it should default to True + opts_default = nanoplot_options() + assert opts_default["interactive_data_values"] is True + + # When explicitly set to False, it should be respected (not overridden) + opts_false = nanoplot_options(interactive_data_values=False) + assert opts_false["interactive_data_values"] is False + + # When explicitly set to True, it should remain True + opts_true = nanoplot_options(interactive_data_values=True) + assert opts_true["interactive_data_values"] is True From 60f996a57360b60d8432cbddee330bff3ee87c91 Mon Sep 17 00:00:00 2001 From: Michael Chow Date: Mon, 2 Mar 2026 14:04:51 -0500 Subject: [PATCH 4/4] tests: test interactive_data_values svg --- tests/test__utils_nanoplots.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test__utils_nanoplots.py b/tests/test__utils_nanoplots.py index 4aca71047..d964332d7 100644 --- a/tests/test__utils_nanoplots.py +++ b/tests/test__utils_nanoplots.py @@ -1984,6 +1984,22 @@ def test_nanoplot_unknown_plot_type(): _generate_nanoplot(y_vals=[1, 2, 3], plot_type="unknown") +@pytest.mark.parametrize("interactive_data_values", [True, False]) +def test_generate_nanoplot_interactive_data_values_toggles_hover_css(interactive_data_values): + svg = _generate_nanoplot( + y_vals=[1.0, 2.0, 3.0], + interactive_data_values=interactive_data_values, + ) + + assert _is_nanoplot_output(svg) + + if interactive_data_values: + assert ".vert-line:hover rect" in svg + else: + assert ":hover" not in svg + assert ".vert-line rect" in svg + + @pytest.mark.parametrize( "n, bool_", [