Jupyter-sphinx enables the rendering of Jupyter interactive widgets in sphinx documentation.
With pip:
pip install jupyter_sphinx
with conda:
conda install jupyter_sphinx -c conda-forge
This extension provides a means of rendering Jupyter interactive widgets within sphinx documentation.
It is derived from the altair
sphinx
extension, which is distributed under the terms of the BSD 3-Clause license.
To enable this extension, add jupyter_sphinx.embed_widgets
to your enabled
extensions in conf.py
.
Two directives are provided: ipywidgets-setup
and ipywidgets-display
.
ipywidgets-setup
code is used to set-up various options
prior to running the display code. For example:
.. ipywidgets-setup::
from ipywidgets import VBox, jsdlink, IntSlider, Button
.. ipywidgets-display::
s1, s2 = IntSlider(max=200, value=100), IntSlider(value=40)
b = Button(icon='legal')
jsdlink((s1, 'value'), (s2, 'max'))
VBox([s1, s2, b])
In the case of the ipywidgets-display
code, if the last statement of the
code-block returns a widget object, it will be rendered.
The directives have the following options:
.. ipywidgets-setup::
:show: # if set, then show the setup code as a code block
from ipywidgets import Button
.. ipywidgets-display::
:hide-code: # if set, then hide the code and only show the widget
:code-below: # if set, then code is below rather than above the widget
:alt: text # alternate text when widget cannot be rendered
Button()
File conf.py
has two extra (optional) configuration options:
jupyter_sphinx_require_url
: url forrequire.js
(if your theme already provides this, set it to False or '')jupyter_sphinx_embed_url
: url for the embedding, if set to None (default) a proper default will be taken from theipywidgets.embed
module.
- For the widgets to be succesfuly rendered, this extension requires an internet connection, since it depends on a cdn-served JavaScript file to be loaded.
- Widgets rendered on the same page use the same widget manager. As a consequence, they can be linked with each other via JavaScript link widgets. However, no kernel is connect and therefore, interaction with the backend will not happen.
We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.
All code is licensed under the terms of the revised BSD license.