Skip to content

Drop the #6988 teardown-ordering caveat once holoviews ships the fix #1244

Description

@SimonHeybrock

holoviz/holoviews#6988 was fixed upstream on 2026-08-19. The fix is not in a release yet: the latest is v1.23.1 (2026-07-02), and we pin holoviews==1.23.1.

The bug: _WeakSubscriber.__bool__ returns False for param-method subscribers, which defeats Plot.cleanup()'s owner filter, so cleanup severs every weakly-wrapped plot-refresh subscriber on the streams it touches, not just its own.

We do not have a workaround for this in the sense of extra code -- we have a constraint on the order of operations, plus comments explaining it. Once a release carries the fix and we bump the pin:

  • Drop the ordering caveat from CellWidget.dispose's docstring in src/ess/livedata/dashboard/widgets/cell.py ("Any change to teardown must keep that order (sever first, render the replacement after) until #6988 is fixed"). Teardown of a displaced cell would no longer be able to sever a survivor's subscriptions, so the invariant stops being load-bearing.
  • Revisit the same reasoning in Pop a cell's plot out into a floating window #1152 (pop-out windows), which has to argue the same all-or-nothing severing in plot_popout.py, plot_grid_tabs.py and .claude/rules/dashboard-widgets.md. Closing a pop-out unsubscribing the grid cell behind it is exactly the failure #6988 causes.

Explicitly not in scope: the plot.cleanup() block in CellWidget.dispose itself stays. That exists because of holoviz/panel#8710 (GridSpec never cleans up removed children), which is still open, and its TODO is already pointed there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:dashboardPanel/Bokeh/HoloViews UI, plotting, frontend configupstreamBlocked on Panel, Bokeh, HoloViews or another dependency

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions