From e0603ecde1124981b87eefe251f16a8939773d54 Mon Sep 17 00:00:00 2001 From: Andy Wickert Date: Tue, 1 Sep 2026 23:06:05 +0200 Subject: [PATCH 1/5] Build the interactive demo with artesian instead of by hand Replaces 43 lines of wheel-building, panel convert invocation and CDN URL rewriting in conf.py with the artesian.sphinxext extension and an artesian_apps entry. The machinery was never GRLP-specific; it is now maintained once, in MNiMORPH/artesian, where its two upstream workarounds (the holoviz bokeh 403, and panel convert failing while exiting 0) are tested. Verified against the previous output: the generated grlp_panel.js is identical once version numbers are normalized. grlp_panel.html differs on 16 lines, all accounted for -- 10 per-build UUIDs and 6 lines of panel's own 1.9.3 to 1.9.4 spinner CSS. Drops the now-unused glob and subprocess imports. --- docs/conf.py | 62 ++++++++++++++++------------------------------------ 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b258a44..9b2e791 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,9 +8,7 @@ environment first. """ -import glob import os -import subprocess import sys # Make the package importable for autodoc when GRLP is not pip-installed @@ -36,48 +34,13 @@ shutil.copyfile(os.path.join(_here, "..", "examples", _nb), os.path.join(_tutorial_dst, _nb)) -# Build the interactive browser demo (docs/interactive.md). `panel convert` -# compiles interactive_demo/grlp_panel.py into a standalone WebAssembly app that -# runs GRLP entirely in the reader's browser via Pyodide. The app and the wheels -# it loads (grlp, built fresh here; panel + bokeh, self-hosted from PyPI) live -# together in _static/interactive/ and are referenced by *relative* URLs, so the -# demo works wherever the docs are served with no external CDN. interactive.md +# The interactive browser demo (docs/interactive.md) is built by artesian, +# which compiles interactive_demo/grlp_panel.py into a standalone WebAssembly +# app running GRLP entirely in the reader's browser via Pyodide. It wheels +# grlp fresh from this source tree, self-hosts the panel and bokeh wheels +# beside the app, and rewrites their CDN URLs to those local copies (the +# holoviz CDN's bokeh wheel 403s). See artesian_apps below; interactive.md # embeds _static/interactive/grlp_panel.html in an