jtpio / ipylab

Control JupyterLab from Python Notebooks with Jupyter Widgets 🧪 ☢️ 🐍
BSD 3-Clause "New" or "Revised" License
199 stars 13 forks source link

Purpose and Use Cases for ipylab #134

Open jpcaram opened 1 year ago

jpcaram commented 1 year ago

It's unclear to me what the purpose of this library is. I'm not sure what would be the right use cases. Is it supposed to be an alternative to writing a Jupyter Frontend plugin? How is it better or worse than writing a plugin? Is it just a proof of concept? The motivation for my question(s) is about making the best use of it.

I believe an answer to this question could be part of the description of the library.

Furthermore, what is the expected or planned future for the library? It seems that is is missing some pieces for it to be appropriate for a production environment, like a Jupyter Server extension that loads a Python kernel, or a way to remove widgets when a kernel is stopped, just to mention a few that come to mind.

Thanks!

jtpio commented 12 months ago

It started as a proof of concept for providing a bridge between notebooks and the JupyterLab UI. To make it possible to control the UI from a notebook using Python.

In a way it's possible to build small apps with it (like the filebrowser example), but it can quickly become limited because not all the JupyterLab frontend API is exposed.

Currently it would still be better to write a proper JupyterLab extension for production use.

jpcaram commented 11 months ago

Hi @jtpio, I think there is a legitimate use case(s). Any time when a UI components is directly tied to what you are doing in your notebook. Such UI element may not make any sense without specific code running in a Python kernel, so a Jupyter plugin wouldn't be the right approach. Too much unnecessary work.

For example, imagine I have an object that is the main thing I'm working around in a notebook. It may be useful to have some sort of dashboard for this object on the left panel. This dashboard could have a visual summary of the object's state and "quick action" buttons.

This specific example requires little more than creating an ipywidget. Just the ability to place it in the left panel. But it's just an example. Having the ability to add menu items, running Jupyter commands, etc. would be nice.

In summary, my hope is that you would continue the work. At least make it look like an important component of the Jupyter ecosystem so others would be interested in contributing.

psychemedia commented 7 months ago

I wonder if another use for ipylab is as a way of writing scripts whose execution might be controlled by a Playwright test script? Eg a notebook scripts a set of operations in a notebook, and the Playwright script loads the notebook and executes one cell at a time before grabbing a screenshot, testing the state of a UI element, etc?