Skip to content

Commit 1cadced

Browse files
Make add_data robust to child data
1 parent 938c2ec commit 1cadced

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

jdaviz/configs/default/plugins/data_menu/data_menu.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -691,10 +691,17 @@ def add_data(self, *data_labels):
691691
*data_labels : str
692692
The label(s) of the dataset to add to the viewer.
693693
"""
694+
available = self.dataset.choices
695+
696+
for label in data_labels:
697+
parent_label = self.app._get_assoc_data_parent(label)
698+
available += self.app._get_assoc_data_children(parent_label)
699+
694700
unavailable = [data_label for data_label in data_labels
695-
if data_label not in self.dataset.choices]
701+
if data_label not in available]
696702
if len(unavailable):
697-
raise ValueError(f"Data labels {unavailable} not able to be loaded into '{self.viewer_id}'. Must be one of: {self.dataset.choices}") # noqa
703+
raise ValueError(f"Data labels {unavailable} not able to be loaded into '{self.viewer_id}'. Must be one of: {available}") # noqa
704+
698705
for data_label in data_labels:
699706
self._app.add_data_to_viewer(self.viewer_id, data_label)
700707

jdaviz/core/loaders/tests/test_loaders.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,7 @@ def test_load_image_parent_default_auto(self, deconfigged_helper):
813813
ldr.load()
814814

815815
assert len(deconfigged_helper._app.data_collection) == 4
816+
assert len(deconfigged_helper.viewers['Image'].data_menu.data_labels_loaded) == 4
816817
assert deconfigged_helper._app._get_assoc_data_parent('Image[ERR,1]') == 'Image[SCI,1]'
817818
assert deconfigged_helper._app._get_assoc_data_children('Image[SCI,1]') == ['Image[ERR,1]']
818819

@@ -828,6 +829,7 @@ def test_load_image_parent_none(self, deconfigged_helper):
828829
ldr.load()
829830

830831
assert len(deconfigged_helper._app.data_collection) == 4
832+
assert len(deconfigged_helper.viewers['Image'].data_menu.data_labels_loaded) == 4
831833
for label in ('Image[SCI,1]', 'Image[ERR,1]', 'Image[SCI,2]', 'Image[ERR,2]'):
832834
assert deconfigged_helper._app._get_assoc_data_parent(label) is None
833835
assert deconfigged_helper._app._get_assoc_data_children(label) == []
@@ -859,9 +861,14 @@ def test_load_image_auto_parent_existing_in_dc(self, deconfigged_helper, rename)
859861
ldr.importer.extension = 'ERR,2'
860862
ldr.load()
861863

864+
assert len(deconfigged_helper.viewers['Image'].data_menu.data_labels_loaded) == 2
862865
assert deconfigged_helper._app._get_assoc_data_parent('Image[ERR,2]') == primary_label
863866
assert deconfigged_helper._app._get_assoc_data_children(primary_label) == ['Image[ERR,2]']
864867

868+
# This should raise 'Data labels {unavailable} not able to be loaded...'
869+
# if parent child association doesn't work correctly (i.e. the previous behavior)
870+
deconfigged_helper.viewers['Image'].data_menu.add_data('Image[ERR,2]')
871+
865872

866873
def test_load_image_align_by(deconfigged_helper, image_nddata_wcs):
867874
ldr = deconfigged_helper.loaders['object']

0 commit comments

Comments
 (0)