Control JupyterLab from Python notebooks.
The goal is to provide access to most of the JupyterLab environment from the Python kernel. For example:
- Adding widgets to the main area
DockPanel
, left, right or top area - Build more advanced interfaces leveraging
SplitPanel
,Toolbar
and other Lumino widgets - Launch arbitrary commands (new terminal, change theme, open file and so on)
- Open a workspace with a specific layout
- Listen to JupyterLab signals (notebook opened, console closed) and trigger Python callbacks
Use pip to install from source.
Download source.
pip install ipylab-2.0.0b5.tar.gz # Update version as required.
The following dependencies are provided as wheels in the pkg directory which include patches to improved the functionality.
Name | Pull request | Status | Modification |
---|---|---|---|
traitlets | #918 | Accepted - pending release | Improved type hints |
ipykernel | #1384 | Waiting review | Based on Anyio version of kernel, modified to execute cells inside a task making it possible to await coroutines inside cells (eg notebook and console cells). |
ipywidgets, jupyterlab-widgets, widgetsnbextension | #3922 + #3921 | Pending review | Provides for widgets comms without needing a notebook or console to be open. Plus fixes for proper garbage collection and widget tooltips |
Use the source distribution to ensure the dependencies are bundled.
hatch build -t sdist
To try out the examples locally, the recommended way is to create a new environment with the dependencies:
# create a new conda environment
conda create -n ipylab-examples -c conda-forge jupyterlab ipylab ipytree bqplot ipywidgets numpy
conda activate ipylab-examples
# start JupyterLab
jupyter lab
ipylab
can be seen as a proxy from Python to JupyterLab over Jupyter Widgets:
# create a new conda environment
conda create -n ipylab -c conda-forge nodejs python=3.11 -y
# activate the environment
conda activate ipylab
# install the Python package
pip install -e .[dev,test]
# link the extension files
jupyter labextension develop . --overwrite
# compile the extension
jlpm clean
jlpm build
# At this point you can run and debug. vscode configs are provided for Firefox and Chrome.
# "Debug Ipylab with Firefox | Chrome"
# pre-commit (optional)
pip install pre-commit
pre-commit run
# or, to install the git hook
pre-commit install
# Use jlpm script to lint the JS
jlpm lint
#or
jlpm lint:check
# Pyright
pip install pyright[nodejs]
pyright
A config file is included to debug ipylab with Firefox or Chrome.
There are a couple of projects that also enable interacting with the JupyterLab environment from Python notebooks:
- wxyz: experimental widgets (including
DockPanel
) - jupyterlab-sidecar: add widgets to the JupyterLab right area
- jupyterlab_commands: add arbitrary Python commands to the jupyterlab command palette