artesian is public, has 27 tests, and nothing runs them.
This matters more here than for a typical package. A good share of what artesian does is work around current upstream behaviour:
- the holoviz CDN's bokeh wheel returns HTTP 403, so wheel URLs are rewritten to co-located copies;
panel convert can print a failure and still exit 0;
panel convert executes the app in the building environment, so the model must be importable there;
- Sphinx copies only
html_static_path directories, so output elsewhere silently 404s.
Every one of those is a fact about a specific version of panel, bokeh, or Pyodide. When upstream changes — including when they fix something and a workaround becomes wrong — we want to find out from CI, not from a reader hitting a broken demo.
Suggested scope
- Run
pytest on push and pull request across the supported Python versions.
- A scheduled run (weekly) that does a real end-to-end build of
examples/hillslope.py against the latest panel/bokeh, not a pin. This is the job that catches upstream drift; the unit tests will not.
- Optionally assert the two properties most likely to break silently: that the built page exists, and that no absolute wheel URL survives in the generated JS.
Why it is worth doing before applying artesian to more models
Each additional model that depends on artesian multiplies the cost of an undetected upstream break.
🤖 Generated with Claude Code
artesianis public, has 27 tests, and nothing runs them.This matters more here than for a typical package. A good share of what artesian does is work around current upstream behaviour:
panel convertcan print a failure and still exit 0;panel convertexecutes the app in the building environment, so the model must be importable there;html_static_pathdirectories, so output elsewhere silently 404s.Every one of those is a fact about a specific version of panel, bokeh, or Pyodide. When upstream changes — including when they fix something and a workaround becomes wrong — we want to find out from CI, not from a reader hitting a broken demo.
Suggested scope
pyteston push and pull request across the supported Python versions.examples/hillslope.pyagainst the latest panel/bokeh, not a pin. This is the job that catches upstream drift; the unit tests will not.Why it is worth doing before applying artesian to more models
Each additional model that depends on artesian multiplies the cost of an undetected upstream break.
🤖 Generated with Claude Code