DMSC Integration Testing

Last updated: September 25, 2026 08:04:50

Test: codeshelf|loki|run_notebooks|loki-detector-diagnostics

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


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

View job log here


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

View job log here


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

View job log here


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

View job log here


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

View job log here


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