Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# ones.
extensions = [
"ablog",
"jupyterlite_sphinx",
"myst_nb",
"numpydoc",
"sphinx.ext.autodoc",
Expand Down Expand Up @@ -111,6 +112,7 @@
"binderhub_url": "https://mybinder.org",
"colab_url": "https://colab.research.google.com/",
"deepnote_url": "https://deepnote.com/",
"retrolite_url": "/lite/retro/notebooks/",
"notebook_interface": "jupyterlab",
"thebe": True,
# "jupyterhub_url": "https://datahub.berkeley.edu", # For testing
Expand Down Expand Up @@ -153,6 +155,9 @@
"https://doi.org", # These don't resolve properly and cause SSL issues
]

# JupyterLite Configuration
jupyterlite_contents = ["./docs/"]


def setup(app):
# -- To demonstrate ReadTheDocs switcher -------------------------------------
Expand Down
50 changes: 50 additions & 0 deletions docs/launch.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,56 @@ html_theme_options = {
This will create a new Deepnote project every time you click the launch button.
```

## JupyterLite and RetroLite

```{admonition} Experimental!
:class: warning
Behavior and configuration of JupyterLite may change over time!
```

[JupyterLite](https://jupyterlite.readthedocs.io/) allows you to run a Jupyter environment entirely in the browser via [WebAssembly](https://webassembly.org/) and [Pyodide](https://pyodide.org/en/stable/).

To use JupyterLite in your launch buttons, you'll first need to take these steps:

1. **Install [`jupyterlite-sphinx`](https://jupyterlite-sphinx.readthedocs.io/)** by
[following the installation instructions](https://jupyterlite-sphinx.readthedocs.io/en/latest/installation.html).
2. **Configure JupyterLite Sphinx to use your site content as a folder**.
You can configure JupyterLite Sphinx to look for notebooks in a specified directory.
Put the notebooks you wish to expose in that directory, and [follow these configuration instructions](https://jupyterlite-sphinx.readthedocs.io/en/latest/configuration.html#jupyterlite-content).


### Retrolite

To add [RetroLite](https://jupyterlite-sphinx.readthedocs.io/en/latest/retrolite.html) links to your page, add the following configuration:

```python
html_theme_options = {
...
"launch_buttons": {
"retrolite_url": "/lite/retro/notebooks/"
},
...
}
```

There are two different interfaces that you can activate with JupyterLite, each is described below.

### JupyterLab

To add JupyterLab via JupyterLite to your launch buttons, use the following configuration:

```python
html_theme_options = {
...
"launch_buttons": {
"jupyterlite_url": "/lite/lab/notebooks/"
},
...
}
```

Where `notebooks/` is a folder with a collection of Jupyter Notebooks you'd like to serve with JupyterLite.


## Live code cells with Thebe

Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ doc = [
"ablog~=0.10.13",
"ipywidgets",
"folium",
"jupyterlite-sphinx",
"numpy",
"matplotlib",
"numpydoc",
Expand Down
15 changes: 15 additions & 0 deletions src/sphinx_book_theme/header_buttons/launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ def add_launch_buttons(
binderhub_url = launch_buttons.get("binderhub_url", "").strip("/")
colab_url = launch_buttons.get("colab_url", "").strip("/")
deepnote_url = launch_buttons.get("deepnote_url", "").strip("/")
# retrolite_url could be absolute but without a domain, so we only
# strip trailing slashes, not leading ones
retrolite_url = launch_buttons.get("retrolite_url", "").rstrip("/")
if binderhub_url:
url = (
f"{binderhub_url}/v2/gh/{org}/{repo}/{branch}?"
Expand Down Expand Up @@ -161,6 +164,18 @@ def add_launch_buttons(
}
)

if retrolite_url:
url = f"{retrolite_url}?path={path_rel_repo}"
launch_buttons_list.append(
{
"type": "link",
"text": "RetroLite",
"tooltip": "Launch via RetroLite",
"icon": "_static/images/logo_jupyterlite.svg",
"url": url,
}
)

# Add thebe flag in context
if launch_buttons.get("thebe", False):
launch_buttons_list.append(
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions tests/sites/base/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"jupyterhub_url": "https://datahub.berkeley.edu",
"colab_url": "https://colab.research.google.com",
"deepnote_url": "https://deepnote.com",
"retrolite_url": "/lite/retro/notebooks/",
"notebook_interface": "jupyterlab",
"thebe": True,
},
Expand Down