feat: Thread safe kernel side Output widget #3759
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
Working on support the output widget in solara:
I found out about the hooks in ipykernel ipython/ipykernel#115
This approach will probably be better way forward.
The issue
Without a frontend, the output widget does not work. We had to work around that for Voila voila-dashboards/voila#91 (now ported to nbclient jupyter/nbclient#68 ).
Futhermore, the frontend is not aware of threads, causing all kinds of issues, e.g.:
Output.clear_output()
in a thread does not block until the output is cleared #3260This does require ipython/ipykernel#1110, so even if we go forward with this, the old code will have to stay in.
Testing and ipykernel
This solution only works with ipykernel/ipython, and I am not sure how to test this. Also, this goes against the direction of begin independent of a particular implementation. For instance, I am not sure xeus-kernel could support this (cc @martinRenou ).