Test passed, nothing to report
Test: codeshelf|loki|run_notebooks|loki-detector-diagnostics
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-392/codeshelf/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7ff87d8e40e0>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-392/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:128: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7ff87d746540>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T13:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': '76ff7fde-28fb0e95f6facec540d9f5a1_1040078_1042', 'msg_type': 'execute_reply', 'username': 'user...9_7', 'msg_type': 'execute_request', 'username': 'username', 'session': '7853bcee-a3a8b14d81d64a0046bcc0bc', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/2/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-380/codeshelf/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7fddc98280e0>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-380/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:104: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7fddc9589ee0>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T09:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': '41147d8f-d97f4b1ca46576cb7584144f_931256_1046', 'msg_type': 'execute_reply', 'username': 'usern...3_7', 'msg_type': 'execute_request', 'username': 'username', 'session': '427db3e0-dbce18da801d2a8fbe8c0ed4', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-369/codeshelf/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f7bf3ea00e0>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-369/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:104: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7f7bf3c25880>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T09:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': '48bf2bad-24a5f51e126df3c780cf8de1_891973_1046', 'msg_type': 'execute_reply', 'username': 'usern...5_7', 'msg_type': 'execute_request', 'username': 'username', 'session': '64b51fb1-bb24c907b16b2f97cb449bfc', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/.pytest_cache/codeshelf/repo/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7fda90610220>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-360/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:144: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7fda90605b50>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': '03e64377-f9ddb883650adfcd64c8fbef_847500_1046', 'msg_type': 'execute_reply', 'username': 'usern...5_7', 'msg_type': 'execute_request', 'username': 'username', 'session': '1313bc42-9f32abbbbc0ad30164b95184', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/.pytest_cache/codeshelf/repo/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f4392050220>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-353/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:138: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7f4392046870>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': 'b3bda096-3b9c0a1dc480ad3471e33ccb_807892_1046', 'msg_type': 'execute_reply', 'username': 'usern...5_7', 'msg_type': 'execute_request', 'username': 'username', 'session': 'ec1fc481-8608d62cf45a6ec516b3406e', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
from ess.loki.diagnostics import InstrumentView
InstrumentView(dhist, dim='event_time_offset')
------------------
#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
#x1B[32m 2#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
#x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
#x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
#x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
#x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
#x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
#x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m 141#x1B[39m )
#x1B[32m 143#x1B[39m nodes = input_to_nodes(
#x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
#x1B[32m 145#x1B[39m )
#x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
#x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
#x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
#x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
#x1B[32m 175#x1B[39m )
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
#x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
#x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
#x1B[32m 64#x1B[39m ) -> FigureLike:
#x1B[32m 65#x1B[39m view_maker = partial(
#x1B[32m 66#x1B[39m GraphicalView,
#x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
#x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
#x1B[32m 71#x1B[39m )
#x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
#x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
#x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
#x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
#x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
#x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
#x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
#x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
#x1B[32m 26#x1B[39m )
#x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
#x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
#x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
#x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
#x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
#x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
#x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
#x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
#x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
#x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
#x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
#x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
#x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/.pytest_cache/codeshelf/repo/src/loki/notebooks/loki-detector-diagnostics.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7ff869b68220>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-346/test_run_notebooks_loki_detect0')
def test_run_notebooks(
notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
):
> run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)
tests/codeshelf/codeshelf_test.py:10:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/codeshelf/conftest.py:138: in _run_codeshelf_notebook
ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
self.preprocess_cell(cell, resources, index)
.tox/codeshelf-loki/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
cell = self.execute_cell(cell, index, store_history=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7ff869c2e1e0>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '9', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07:...et'"]}], 'source': "from ess.loki.diagnostics import InstrumentView\n\nInstrumentView(dhist, dim='event_time_offset')"}
cell_index = 9
exec_reply = {'header': {'msg_id': 'b5f4bf2f-53b7dadb75283b574feead55_768623_1047', 'msg_type': 'execute_reply', 'username': 'usern...5_7', 'msg_type': 'execute_request', 'username': 'username', 'session': '25a4e157-4be41e2545f8553d87d8625a', ...}, ...}
async def _check_raise_for_error(
self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
) -> None:
if exec_reply is None:
return None
exec_reply_content = exec_reply["content"]
if exec_reply_content["status"] != "error":
return None
cell_allows_errors = (not self.force_raise_errors) and (
self.allow_errors
or exec_reply_content.get("ename") in self.allow_error_names
or "raises-exception" in cell.metadata.get("tags", [])
)
await run_hook(
self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
)
if not cell_allows_errors:
> raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E ------------------
E from ess.loki.diagnostics import InstrumentView
E
E InstrumentView(dhist, dim='event_time_offset')
E ------------------
E
E
E #x1B[31m---------------------------------------------------------------------------#x1B[39m
E #x1B[31mModuleNotFoundError#x1B[39m Traceback (most recent call last)
E #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m ess.loki.diagnostics #x1B[38;5;28;01mimport#x1B[39;00m InstrumentView
E #x1B[32m 2#x1B[39m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m InstrumentView(dhist, dim=#x1B[33m'event_time_offset'#x1B[39m)
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/ess/loki/diagnostics.py:325#x1B[39m, in #x1B[36mInstrumentView.__init__#x1B[39m#x1B[34m(self, data, dim, pixel_size, **kwargs)#x1B[39m
E #x1B[32m 322#x1B[39m to_scatter = #x1B[38;5;28mself#x1B[39m.pre_process_nodes
E #x1B[32m 324#x1B[39m kwargs.setdefault(#x1B[33m'#x1B[39m#x1B[33mcbar#x1B[39m#x1B[33m'#x1B[39m, #x1B[38;5;28;01mTrue#x1B[39;00m)
E #x1B[32m--> #x1B[39m#x1B[32m325#x1B[39m #x1B[38;5;28mself#x1B[39m.fig = #x1B[30;43mpp#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscatter3d#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 326#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mto_scatter#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 327#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpos#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mposition#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 328#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m1.0#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mUnit#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43mcm#x1B[39;49m#x1B[30;43m"#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mif#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mis#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01mNone#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43;01melse#x1B[39;49;00m#x1B[30;43m #x1B[39;49m#x1B[30;43mpixel_size#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 329#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 330#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 332#x1B[39m #x1B[38;5;28mself#x1B[39m._widgets.insert(#x1B[32m0#x1B[39m, #x1B[38;5;28mself#x1B[39m.fig)
E #x1B[32m 334#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mlen#x1B[39m(#x1B[38;5;28mself#x1B[39m.data) > #x1B[32m1#x1B[39m:
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/plotting/_scatter3d.py:147#x1B[39m, in #x1B[36mscatter3d#x1B[39m#x1B[34m(obj, x, y, z, pos, autoscale, camera, cbar, clabel, cmap, cmax, cmin, figsize, logc, nan_color, norm, opacity, perspective, title, vmax, vmin, **kwargs)#x1B[39m
E #x1B[32m 137#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mValueError#x1B[39;00m(
E #x1B[32m 138#x1B[39m #x1B[33m'#x1B[39m#x1B[33mKeyword #x1B[39m#x1B[33m"#x1B[39m#x1B[33max#x1B[39m#x1B[33m"#x1B[39m#x1B[33m detected. Embedding 3D scatter plots inside Matplotlib axes #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 139#x1B[39m #x1B[33m'#x1B[39m#x1B[33mis not supported. See #x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 140#x1B[39m #x1B[33m'#x1B[39m#x1B[33mhttps://scipp.github.io/plopp/customization/subplots.html#FAQ:-subplots-with-3D-scatter-plots#x1B[39m#x1B[33m'#x1B[39m
E #x1B[32m 141#x1B[39m )
E #x1B[32m 143#x1B[39m nodes = input_to_nodes(
E #x1B[32m 144#x1B[39m obj, processor=partial(_preprocess_scatter, x=x, y=y, z=z, pos=pos)
E #x1B[32m 145#x1B[39m )
E #x1B[32m--> #x1B[39m#x1B[32m147#x1B[39m fig = #x1B[30;43mscatter3dfigure#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 148#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 149#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 150#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 151#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 152#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mautoscale#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 153#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcamera#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 154#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 155#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mclabel#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 156#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 157#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 158#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcmap#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 159#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mfigsize#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 160#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mlogc#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 161#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnan_color#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 162#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mnorm#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 163#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mopacity#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 164#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mperspective#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 165#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mtitle#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 166#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmax#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 167#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mvmin#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 168#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E #x1B[32m 169#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E #x1B[32m 170#x1B[39m clip_manager = ClippingManager(fig)
E #x1B[32m 171#x1B[39m fig.toolbar[#x1B[33m'#x1B[39m#x1B[33mcut3d#x1B[39m#x1B[33m'#x1B[39m] = ToggleTool(
E #x1B[32m 172#x1B[39m callback=clip_manager.toggle_visibility,
E #x1B[32m 173#x1B[39m icon=#x1B[33m'#x1B[39m#x1B[33mcrop#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 174#x1B[39m tooltip=#x1B[33m'#x1B[39m#x1B[33mHide/show spatial cutting tool#x1B[39m#x1B[33m'#x1B[39m,
E #x1B[32m 175#x1B[39m )
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/figures.py:72#x1B[39m, in #x1B[36mscatter3dfigure#x1B[39m#x1B[34m(x, y, z, cbar, *nodes, **kwargs)#x1B[39m
E #x1B[32m 62#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mscatter3dfigure#x1B[39m(
E #x1B[32m 63#x1B[39m *nodes: Node, x: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m, y: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m, z: #x1B[38;5;28mstr#x1B[39m = #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m, cbar: #x1B[38;5;28mbool#x1B[39m = #x1B[38;5;28;01mFalse#x1B[39;00m, **kwargs
E #x1B[32m 64#x1B[39m ) -> FigureLike:
E #x1B[32m 65#x1B[39m view_maker = partial(
E #x1B[32m 66#x1B[39m GraphicalView,
E #x1B[32m 67#x1B[39m dims={#x1B[33m'#x1B[39m#x1B[33mx#x1B[39m#x1B[33m'#x1B[39m: x, #x1B[33m'#x1B[39m#x1B[33my#x1B[39m#x1B[33m'#x1B[39m: y, #x1B[33m'#x1B[39m#x1B[33mz#x1B[39m#x1B[33m'#x1B[39m: z},
E #x1B[32m (...)#x1B[39m#x1B[32m 70#x1B[39m colormapper=cbar,
E #x1B[32m 71#x1B[39m )
E #x1B[32m---> #x1B[39m#x1B[32m72#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mbackends#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mgroup#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m3d#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mname#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mfigure#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E #x1B[32m 73#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43mview_maker#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnodes#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mx#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43my#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mz#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcbar#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m
E #x1B[32m 74#x1B[39m #x1B[30;43m #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/backends/pythreejs/figure.py:23#x1B[39m, in #x1B[36mFigure.__init__#x1B[39m#x1B[34m(self, View, *args, **kwargs)#x1B[39m
E #x1B[32m 20#x1B[39m #x1B[38;5;28mself#x1B[39m.toolbar = make_toolbar_canvas3d(view=#x1B[38;5;28mself#x1B[39m.view)
E #x1B[32m 21#x1B[39m #x1B[38;5;28mself#x1B[39m.left_bar = VBar([#x1B[38;5;28mself#x1B[39m.toolbar])
E #x1B[32m 22#x1B[39m #x1B[38;5;28mself#x1B[39m.right_bar = VBar(
E #x1B[32m---> #x1B[39m#x1B[32m23#x1B[39m [#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mview#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcolormapper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mto_widget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m)#x1B[39;49m]
E #x1B[32m 24#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mself#x1B[39m.view.colormapper #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m #x1B[38;5;28;01mNone#x1B[39;00m
E #x1B[32m 25#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m []
E #x1B[32m 26#x1B[39m )
E #x1B[32m 27#x1B[39m #x1B[38;5;28mself#x1B[39m.bottom_bar = HBar()
E #x1B[32m 28#x1B[39m #x1B[38;5;28mself#x1B[39m.top_bar = HBar([#x1B[38;5;28mself#x1B[39m.view.canvas._title])
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/graphics/colormapper.py:226#x1B[39m, in #x1B[36mColorMapper.to_widget#x1B[39m#x1B[34m(self)#x1B[39m
E #x1B[32m 222#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mto_widget#x1B[39m(#x1B[38;5;28mself#x1B[39m):
E #x1B[32m 223#x1B[39m #x1B[38;5;250m #x1B[39m#x1B[33;03m"""#x1B[39;00m
E #x1B[32m 224#x1B[39m #x1B[33;03m Convert the colorbar into a widget for use with other ``ipywidgets``.#x1B[39;00m
E #x1B[32m 225#x1B[39m #x1B[33;03m """#x1B[39;00m
E #x1B[32m--> #x1B[39m#x1B[32m226#x1B[39m #x1B[38;5;28;01mfrom#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01m.#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mwidgets#x1B[39;00m#x1B[34;01m.#x1B[39;00m#x1B[34;01mhoverbutton#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[38;5;28;01mimport#x1B[39;00m HoverButtonWidget
E #x1B[32m 228#x1B[39m #x1B[38;5;28mself#x1B[39m.widget = HoverButtonWidget(log_value=#x1B[38;5;28mself#x1B[39m._logc)
E #x1B[32m 229#x1B[39m #x1B[38;5;28mself#x1B[39m._update_colorbar_widget()
E
E #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/4/dmsc-nightly/dmsc-nightly/.tox/codeshelf-loki/lib/python3.12/site-packages/plopp/widgets/hoverbutton.py:3#x1B[39m
E #x1B[32m 1#x1B[39m #x1B[38;5;66;03m# SPDX-License-Identifier: BSD-3-Clause#x1B[39;00m
E #x1B[32m 2#x1B[39m #x1B[38;5;66;03m# Copyright (c) 2026 Scipp contributors (https://github.com/scipp)#x1B[39;00m
E #x1B[32m----> #x1B[39m#x1B[32m3#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01manywidget#x1B[39;00m
E #x1B[32m 4#x1B[39m #x1B[38;5;28;01mimport#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mtraitlets#x1B[39;00m
E #x1B[32m 7#x1B[39m #x1B[38;5;28;01mclass#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34;01mHoverButtonWidget#x1B[39;00m(anywidget.AnyWidget):
E
E #x1B[31mModuleNotFoundError#x1B[39m: No module named 'anywidget'
.tox/codeshelf-loki/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError