Skip to content
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
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
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@
"binderhub_url": "https://mybinder.org",
"colab_url": "https://colab.research.google.com/",
"deepnote_url": "https://deepnote.com/",
"retrolite_url": "./lite/retro/notebooks/",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we call this jupyterlite_url for now, since that is the "parent" tool, and document how to make it connect w/ retro vs. lab etc in the text below?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking was separate URLs for whether the launch was into retrolab or open notebook in jupyterlab/jupyterlite

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I opened an issue some time ago in jupyterlite repo wrt to having a discrete *lite identities for these two UIs, motivated in part by this PR: jupyterlite/jupyterlite#549

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think where we're heading for the launch button config is to provide a list of configuration snippets that each map onto one button, so I'd imagine this will eventually look like:

"launch_buttons": [
    {"type": "jupyterlite", "root": "/lite", "prefix": "/lab", "name": "Launch JupyterLite"},
    {"type": "jupyterlite", "root": "/lite", "prefix": "/retro", "name": "Launch RetroLite"},
    {"type": "jupyterhub", "url": "https://hub1.myorg.org", "name": "Launch JupyterHub One"},
    {"type": "jupyterhub", "url": "https://hub2.myorg.org", "name": "Launch JupyterHub Two"},
]

So that's why I was thinking we'd just have one name for it, does that make sense or do you think it would make more sense to use type: "jupyterlite" and type: "retrolite"?

"notebook_interface": "jupyterlab",
"thebe": True,
# "jupyterhub_url": "https://datahub.berkeley.edu", # For testing
Expand Down
21 changes: 21 additions & 0 deletions docs/launch.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,27 @@ html_theme_options = {
This will create a new Deepnote project every time you click the launch button.
```

## 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/"
},
...
}
```

```{warning}
This requires installation of [`jupyterlite-sphinx`](https://jupyterlite-sphinx.readthedocs.io/) and the publication of a RetroLite environment as part of your published Jupyter Book environment.

You __must__ also publish the Jupyter Book / JupyterLite environemt via a webserver in order to access the JupyterLite environment.

*As of `jupyterlite-sphinx==0.4.7, you will have to manually ensure that notenook files are copied over to the `_build/html/lite/files` directory in order to work with them in JupyterLite.*
```
Copy link
Member

@choldgraf choldgraf Jun 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## 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/"
},
...
}
```
```{warning}
This requires installation of [`jupyterlite-sphinx`](https://jupyterlite-sphinx.readthedocs.io/) and the publication of a RetroLite environment as part of your published Jupyter Book environment.
You __must__ also publish the Jupyter Book / JupyterLite environemt via a webserver in order to access the JupyterLite environment.
*As of `jupyterlite-sphinx==0.4.7, you will have to manually ensure that notenook files are copied over to the `_build/html/lite/files` directory in order to work with them in JupyterLite.*
```
## JupyterLite and RetroLite
```{warning}
JupyterLite and RetroLite are experimental, and their behavior and configuration may change over time!
Please provide feedback and suggestions.
```
[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/)**. And configure it to publish a JupyterLab environment as part of your published Jupyter Book environment 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).
```
There are two different interfaces that you can activate with JupyterLite, each is described below.
### JupyterLab via JupyterLite
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.
### RetroLab via JupyterLite
RetroLab mimics the classic Jupyter Notebook interface, but using JupyterLab components.
It will be the default Notebook interface in the near future.
To add RetroLab via JupyterLite to your launch buttons, use the following configuration:
```python
html_theme_options = {
...
"launch_buttons": {
"jupyterlite_url": "/lite/retro/notebooks/"
},
...
}
```

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some suggestions to flesh this out a bit more, since most people won't know how to use JupyterLite or what it is

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the URL should be absolute (/lite/retro/notebooks/, without the . prefix) for it to work. This was fixed in my PR


## Live code cells with Thebe

Expand Down
13 changes: 13 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,7 @@ 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 = launch_buttons.get("retrolite_url", "").strip("/")
if binderhub_url:
url = (
f"{binderhub_url}/v2/gh/{org}/{repo}/{branch}?"
Expand Down Expand Up @@ -161,6 +162,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