Skip to content

Commit c523cf6

Browse files
duytnguyendtnpllim
andauthored
Nested helpers don't overwrite helper reference (#1546)
* Don't overwrite helper reference * Add Changelog * Update Changelog * Update CHANGES.rst Co-authored-by: P. L. Lim <[email protected]> * Add nested_helper cubeviz test * Remove unneeded import Co-authored-by: P. L. Lim <[email protected]>
1 parent 00ed1ee commit c523cf6

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

CHANGES.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ Cubeviz
5252

5353
- Fixed validation message of moment number in moment map plugin. [#1536]
5454

55+
- Fixed ``viewer.jdaviz_helper`` returning Specviz helper instead of Cubeviz helper after Specviz
56+
helper is called via ``Cubeviz.specviz``. Now ``viewer.jdaviz_helper`` always returns the Cubeviz helper. [#1546]
57+
5558
Imviz
5659
^^^^^
5760

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
def test_nested_helper(cubeviz_helper):
2+
'''Ensures the Cubeviz helper is always returned, even after the Specviz helper is called'''
3+
# Force Specviz helper to instantiate
4+
cubeviz_helper.specviz
5+
6+
assert cubeviz_helper.app._jdaviz_helper == cubeviz_helper
7+
8+
# The viewers also have a callthrough to the app's _jdaviz_helper attribute
9+
spec_viewer = cubeviz_helper.app.get_viewer('spectrum-viewer')
10+
assert spec_viewer.jdaviz_helper == cubeviz_helper

jdaviz/core/helpers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ def __init__(self, app=None, verbosity='warning', history_verbosity='info'):
5353

5454
# give a reference from the app back to this config helper. These can be accessed from a
5555
# viewer via viewer.jdaviz_app and viewer.jdaviz_helper
56-
self.app._jdaviz_helper = self
56+
# if the helper has already been set, this is probably a nested viz tool. Don't overwrite
57+
if not hasattr(self.app, '_jdaviz_helper'):
58+
self.app._jdaviz_helper = self
5759

5860
self.app.hub.subscribe(self, SubsetCreateMessage,
5961
handler=lambda msg: self._propagate_callback_to_viewers('_on_subset_create', msg)) # noqa

0 commit comments

Comments
 (0)