ipython / ipython/ipykernel

Blocking cell execution waiting for Widget interaction

Đang mở
#311 3 bình luận 6 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
734
Fork
412
Merge trung bình
1 ngày 5 giờ
Pull request đã merge (30 ngày)
8

Mô tả

Hi all,

I am interested in blocking further cell execution in a Jupyter notebook until some sort of widget interaction has occurred. For instance, letting a user perform a "cell -> run all" command, then displaying a dropdown widget in one cell, and blocking in the next cell until the user has selected an option from that dropdown list.

In a regular notebook setup, widget changes (`comm_msg` over zeromq) won't be picked up by the kernel because it's blocking until the cell is completely executed. If an [Asynchronous Loop](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Asynchronous.html) is involved, then all cells will be executed (from the "cell -> run all") command immediately if they aren't written in an async fashion.

One option is to override the `kernel.shell_handlers` functions to 'capture' the `execute_request` messages coming in on the stream while letting the `comm_msg` events go through, then to 'replay' the `execute_request` messages after the fact. If I go with that pattern ([example](https://github.com/kafonek/widget_demos/blob/master/captured%20kernel%20events.ipynb), how do I make the output show up in the output cells for the original input cells instead of all in a single cell where the 'replay' happens?

A second option is to have the `ipykernel` listen for `execute_request` and `comm_*` events on different streams. There's been discussion of that idea (@dsblank @AlexTugarev https://github.com/ipython/ipykernel/issues/65, @jasongrout https://github.com/jupyter/jupyter_client/issues/285), but it doesn't look like the issue has moved forward. I don't understand the entire front-end/back-end system to know how significant that change would be. Is this issue a non-starter (https://github.com/ipython/ipykernel/pull/302)?

Thanks.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.