From 0e08625e50a2b1c02515f1553b46c1e476845c52 Mon Sep 17 00:00:00 2001 From: gensyn Date: Fri, 3 Jul 2026 15:58:30 +0200 Subject: [PATCH 1/3] Cleaned up code for image support --- actions/cores/base_core/base_core.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/actions/cores/base_core/base_core.py b/actions/cores/base_core/base_core.py index 5c6a421..2b42d10 100644 --- a/actions/cores/base_core/base_core.py +++ b/actions/cores/base_core/base_core.py @@ -117,7 +117,11 @@ def on_change_domain(self, _, domain, old_domain): if entity and self.track_entity: self.plugin_base.backend.remove_tracked_entity(entity, self.refresh) self.settings.reset(domain) + # save entities from the combo to a temporary variable to keep them alive while we clear the combo + _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] self.entity_combo.remove_all_items() + # now the entities can be removed + del _temp_keep_alive self._last_loaded_entities = None if domain: From 4a03dfd1b3b701e9d23de68cbdecce7ee5042f56 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Jul 2026 14:06:47 +0000 Subject: [PATCH 2/3] Make keep-alive logic defensive with try/except for TypeError --- actions/cores/base_core/base_core.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/actions/cores/base_core/base_core.py b/actions/cores/base_core/base_core.py index 2b42d10..41e2887 100644 --- a/actions/cores/base_core/base_core.py +++ b/actions/cores/base_core/base_core.py @@ -118,7 +118,10 @@ def on_change_domain(self, _, domain, old_domain): self.plugin_base.backend.remove_tracked_entity(entity, self.refresh) self.settings.reset(domain) # save entities from the combo to a temporary variable to keep them alive while we clear the combo - _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] + try: + _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] + except TypeError: + _temp_keep_alive = [] self.entity_combo.remove_all_items() # now the entities can be removed del _temp_keep_alive From 38c0836fdb9e5f88918194d794362ac062540a9a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Jul 2026 14:08:54 +0000 Subject: [PATCH 3/3] Fix tests: configure entity_combo mock with get_n_items returning 0 --- actions/cores/base_core/base_core.py | 5 +---- .../cores/base_core/test_base_core_on_change_domain.py | 5 +++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/actions/cores/base_core/base_core.py b/actions/cores/base_core/base_core.py index 41e2887..2b42d10 100644 --- a/actions/cores/base_core/base_core.py +++ b/actions/cores/base_core/base_core.py @@ -118,10 +118,7 @@ def on_change_domain(self, _, domain, old_domain): self.plugin_base.backend.remove_tracked_entity(entity, self.refresh) self.settings.reset(domain) # save entities from the combo to a temporary variable to keep them alive while we clear the combo - try: - _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] - except TypeError: - _temp_keep_alive = [] + _temp_keep_alive = [self.entity_combo.get_item(i) for i in range(self.entity_combo.get_n_items())] self.entity_combo.remove_all_items() # now the entities can be removed del _temp_keep_alive diff --git a/test/actions/cores/base_core/test_base_core_on_change_domain.py b/test/actions/cores/base_core/test_base_core_on_change_domain.py index 8e34a95..faff3a6 100644 --- a/test/actions/cores/base_core/test_base_core_on_change_domain.py +++ b/test/actions/cores/base_core/test_base_core_on_change_domain.py @@ -58,6 +58,7 @@ def test_on_change_domain_no_entity(self, set_enabled_disabled_mock, load_entiti entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -89,6 +90,7 @@ def test_on_change_domain_enity_not_tracked(self, set_enabled_disabled_mock, loa entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -120,6 +122,7 @@ def test_on_change_domain_no_new_domain(self, set_enabled_disabled_mock, load_en entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = None @@ -151,6 +154,7 @@ def test_on_change_domain_success(self, set_enabled_disabled_mock, load_entities entity_combo_mock = Mock() entity_combo_mock.remove_all_items = remove_all_items_mock + entity_combo_mock.get_n_items = Mock(return_value=0) domain = "light" @@ -180,6 +184,7 @@ def test_on_change_domain_resets_entity_cache(self, set_enabled_disabled_mock, l settings_mock.reset = Mock() entity_combo_mock = Mock() + entity_combo_mock.get_n_items = Mock(return_value=0) instance = BaseCore(Mock(), True) instance.initialized = True