setting_node_widget

setting_node_widget#

Full path: exa.common.helpers.widgets.setting_node_widget

Lazy Jupyter renderer for SettingNode built from stock ipywidgets.

A SettingNode tree can be huge (tens of thousands of settings for a 50+ qubit system), and rendering the whole tree up front is slow and produces a very large DOM. This builds a collapsible view from stock ipywidgets: each subtree is a Button (styled as a summary row) plus a hidden VBox body that is only built the first time the user opens it, and wide levels are paginated with a “Show more” button, so the initial display cost is proportional to the root level alone.

It uses only core ipywidgets (Button/VBox/HTML), which are bundled into the Jupyter frontends (incl. VS Code) - no custom JavaScript, no bundling, no comm wiring. Styling is done through our own scoped CSS classes (exa-*) rather than the frontend’s internal widget classes, so it is stable across frontends.

This module imports ipywidgets at import time. It is imported lazily by exa.common.helpers.notebook_helper.repr_mimebundle(), which falls back to a static summary when ipywidgets is missing, so importing exa.common.data.setting_node never requires ipywidgets.

Functions

build_setting_node_widget(node)

Build a lazy, collapsible ipywidgets view of node.