object_inspect may call user-defined functions that wedge the kernel
- Langage dominant
- Python
- Étoiles
- 734
- Forks
- 412
- Merge moyen
- 1 j 5 h
- PR mergées (30 j)
- 8
Description
Actions that induce object inspection, e.g., shift-tab after a variable, may call user-defined functions that take a long time to complete. When that happens, the kernel is wedged. Subsequent code execution blocks waiting for the inspect reply, kernel interrupt doesn't unblock, meaning that a kernel process restart is required to proceed.
An example follows:

This example shows the back-to-back completion time for an object inspect triggered by shift-tab. I recorded the demo from a Jupyterlab frontend started on `try.jupyter.org`. The issue applies to vanilla Jupyter as well.
In this example, `Slow` is an object with a `__repr__` that takes 1 second. `__repr__` seems to be called multiple times during inspection, meaning that the end-to-end time to inspect an object with a 1 second `__repr__` is ~10 seconds.
Of course, increasing the `sleep` increases the delay.
I suspect there's a fundamental tradeoff between the information available in object inspection and reliability. To avoid becoming wedged, object inspection and code completion should avoid calling any user-defined functions. But, that will limit available information.
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.