From 22eb1c3fdba7e34897ab40758a3d05a4a6912f59 Mon Sep 17 00:00:00 2001 From: minhtuevo Date: Wed, 20 Nov 2024 23:26:15 -0800 Subject: [PATCH] More efficient check --- fiftyone/operators/types.py | 20 +++++++++------ .../{view_tests.py => types_tests.py} | 25 ++++++++++++++++--- 2 files changed, 33 insertions(+), 12 deletions(-) rename tests/unittests/operators/{view_tests.py => types_tests.py} (54%) diff --git a/fiftyone/operators/types.py b/fiftyone/operators/types.py index 34c0c4fde26..1539a45d278 100644 --- a/fiftyone/operators/types.py +++ b/fiftyone/operators/types.py @@ -252,7 +252,6 @@ def btn( name, label, icon=None, - icon_variant=None, variant=None, disabled=False, on_click=None, @@ -297,7 +296,6 @@ def btn( btn = Button( href=href, icon=icon, - icon_variant=icon_variant, icon_position=icon_position, disabled=disabled, label=label, @@ -1857,7 +1855,7 @@ def __init__(self, row, column, **kwargs): self.column = column def clone(self): - clone = Tooltip(self.row, self. column, **self._kwargs) + clone = Tooltip(self.row, self.column, **self._kwargs) return clone def to_json(self): @@ -1877,6 +1875,7 @@ def __init__(self, **kwargs): self.columns = kwargs.get("columns", []) self.row_actions = kwargs.get("row_actions", []) self.tooltips = kwargs.get("tooltips", []) + self._tooltip_map = {} def keys(self): return [column.key for column in self.columns] @@ -1907,14 +1906,16 @@ def add_row_action( ) self.row_actions.append(row_action) return row_action - + def add_tooltip(self, row, column, value, **kwargs): - for tooltip in self.tooltips: - if tooltip.row == row and tooltip.column == column: - raise ValueError(f"Tooltip for row '{row}' and column '{column}' already exists") + if (row, column) in self._tooltip_map: + raise ValueError( + f"Tooltip for row '{row}' and column '{column}' already exists" + ) tooltip = Tooltip(row=row, column=column, value=value, **kwargs) self.tooltips.append(tooltip) + self._tooltip_map[(row, column)] = tooltip return tooltip def clone(self): @@ -1922,6 +1923,10 @@ def clone(self): clone.columns = [column.clone() for column in self.columns] clone.row_actions = [action.clone() for action in self.row_actions] clone.tooltips = [tooltip.clone() for tooltip in self.tooltips] + clone._tooltip_map = { + (tooltip.row, tooltip.column): tooltip + for tooltip in clone.tooltips + } return clone def to_json(self): @@ -2311,7 +2316,6 @@ class StatusButtonView(View): """ def __init__(self, **kwargs): - print("Status Button View is new") super().__init__(**kwargs) diff --git a/tests/unittests/operators/view_tests.py b/tests/unittests/operators/types_tests.py similarity index 54% rename from tests/unittests/operators/view_tests.py rename to tests/unittests/operators/types_tests.py index 2cf9d94dcbc..88945ec92c1 100644 --- a/tests/unittests/operators/view_tests.py +++ b/tests/unittests/operators/types_tests.py @@ -15,12 +15,29 @@ def test_table_view_basic(self): mock_on_click = lambda: None - table.add_row_action("action1", on_click=mock_on_click, icon="icon1", color="primary", tooltip="Action 1") - table.add_row_action("action2", on_click=mock_on_click, icon="icon2", color="secondary", tooltip="Action 2") + table.add_row_action( + "action1", + on_click=mock_on_click, + icon="icon1", + color="primary", + tooltip="Action 1", + ) + table.add_row_action( + "action2", + on_click=mock_on_click, + icon="icon2", + color="secondary", + tooltip="Action 2", + ) with self.assertRaises(ValueError): - table.add_row_action("action1", on_click=mock_on_click, icon="icon3", color="primary", - tooltip="Action 3") + table.add_row_action( + "action1", + on_click=mock_on_click, + icon="icon3", + color="primary", + tooltip="Action 3", + ) table.add_tooltip(1, 1, "Tooltip 1") table.add_tooltip(1, 2, "Tooltip 2")