WASM#
This guide will help you get started contributing to Panel in the browser including panel convert
.
Build pyodide wheels#
You can build the smaller wheels for Pyodide using
python scripts/build_pyodide_wheels.py
The wheels are saved to panel/dist/wheels
You can confirm they have been build using ls
.
$ ls panel/dist/wheels
bokeh-3.3.0-py3-none-any.whl panel-1.3.1.post2+g2327be04-py3-none-any.whl
You can add an output path like .
and the flag --no-deps
after the first build to speed up
the process when iterating.
python scripts/build_pyodide_wheels.py . --no-deps
Manual Testing#
You can convert and test Panel apps manually using the convert_apps
function. You will have to use the arguments panel_version='local'
and inline=True
.
Create the files app.py
and convert.py
in the root of the project.
app.py
import panel as pn
button = pn.widgets.Button(name="Click Me!")
pn.Row(button, pn.bind(lambda c: c, button.param.clicks)).servable();
convert.py
from pathlib import Path
from panel.io.convert import convert_apps
app_path = Path("app.py")
if __name__=="__main__":
convert_apps(
apps=[app_path],
dest_path=app_path.parent,
runtime="pyodide",
build_pwa=False,
prerender=True,
build_index=False,
panel_version="local", # required for manual testing
inline=True, # required for manual testing
compiled=False,
)
To convert the app.py
to app.html
run
python convert.py
To test in the browser you will have to copy (or build) the .whl
files to .
cp /home/jovyan/repos/private/panel/panel/dist/wheels/* .
Now you can run the http.server
python -m http.server
Finally you can open http://localhost:8000/app.html.
When you are done testing remember to delete your temporary files.
Automated tests#
You can add or update the pytests for panel convert
in the
panel/tests/ui/io/test_convert.py
file.