Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jtpio/ipylab
Control JupyterLab from Python Notebooks with Jupyter Widgets 🧪 ☢️ 🐍
https://github.com/jtpio/ipylab
jupyter jupyterlab jupyterlab-extension python widgets
Last synced: 10 days ago
JSON representation
Control JupyterLab from Python Notebooks with Jupyter Widgets 🧪 ☢️ 🐍
- Host: GitHub
- URL: https://github.com/jtpio/ipylab
- Owner: jtpio
- License: bsd-3-clause
- Created: 2019-11-15T19:52:12.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-04-06T06:39:52.000Z (7 months ago)
- Last Synced: 2024-04-14T17:24:55.781Z (7 months ago)
- Topics: jupyter, jupyterlab, jupyterlab-extension, python, widgets
- Language: TypeScript
- Homepage:
- Size: 1.91 MB
- Stars: 177
- Watchers: 8
- Forks: 13
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-jupyter-resources - GitHub - 36% open · ⏱️ 25.08.2022): (JupyterLab扩展)
- best-of-jupyter - GitHub - 60% open · ⏱️ 15.10.2024): (JupyterLab Extensions)
README
# ipylab
![Github Actions Status](https://github.com/jtpio/ipylab/workflows/Build/badge.svg)
[![JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge-launch.svg)](https://ipylab.readthedocs.io/en/latest/lite/lab)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jtpio/ipylab/main?urlpath=lab/tree/examples/widgets.ipynb)
[![Conda Version](https://img.shields.io/conda/vn/conda-forge/ipylab.svg)](https://anaconda.org/conda-forge/ipylab)
[![pypi](https://img.shields.io/pypi/v/ipylab.svg)](https://pypi.python.org/pypi/ipylab)
[![npm](https://img.shields.io/npm/v/ipylab.svg)](https://www.npmjs.com/package/ipylab)Control JupyterLab from Python notebooks.
The goal is to provide access to most of the JupyterLab environment from Python notebooks. 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## Try it online
Try it in your browser with Binder:
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jtpio/ipylab/main?urlpath=lab/tree/examples/widgets.ipynb)
Or with [JupyterLite](https://github.com/jupyterlite/jupyterlite):
[![JupyterLite](https://jupyterlite.rtfd.io/en/latest/_static/badge-launch.svg)](https://ipylab.readthedocs.io/en/latest/lite/lab)
## Examples
### Add Jupyter Widgets to the JupyterLab interface
![widgets-panels](https://user-images.githubusercontent.com/591645/80025074-59104280-84e0-11ea-9766-0cb49cba285a.gif)
### Execute Commands
![command-registry](https://user-images.githubusercontent.com/591645/80026017-beb0fe80-84e1-11ea-842d-fa3bf5bc4a9b.gif)
### Custom Python Commands and Command Palette
![custom-commands](https://user-images.githubusercontent.com/591645/80026023-c1135880-84e1-11ea-9e83-fdb739659357.gif)
### Build small applications
![ipytree-example](https://user-images.githubusercontent.com/591645/80026006-b8bb1d80-84e1-11ea-87cc-86495186b938.gif)
### Compatibility with RetroLab
A subset of the features can be used in RetroLab:
![retrolab-example](https://user-images.githubusercontent.com/591645/141700044-3c39661a-8a9a-4e6b-a031-03724e0df25b.gif)
## Installation
You can install using `pip`:
```bash
pip install ipylab
```Or with `mamba` / `conda`:
```bash
mamba install -c conda-forge ipylab
```## Running the examples locally
To try out the examples locally, the recommended way is to create a new environment with the dependencies:
```bash
# 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
```## Under the hood
`ipylab` can be seen as a proxy from Python to JupyterLab over Jupyter Widgets:
![ipylab-diagram](./docs/ipylab.png)
## Development
```bash
# create a new conda environment
mamba create -n ipylab -c conda-forge jupyter-packaging nodejs python -y# activate the environment
conda activate ipylab# install the Python package
python -m pip install -e ".[dev]"# link the extension files
jupyter labextension develop . --overwrite# compile the extension
jlpm && jlpm run build
```## Related projects
There are a couple of projects that also enable interacting with the JupyterLab environment from Python notebooks:
- [wxyz](https://github.com/deathbeds/wxyz): experimental widgets (including `DockPanel`)
- [jupyterlab-sidecar](https://github.com/jupyter-widgets/jupyterlab-sidecar): add widgets to the JupyterLab right area
- [jupyterlab_commands](https://github.com/timkpaine/jupyterlab_commands): add arbitrary Python commands to the jupyterlab command palette