Home > other >  Jupyter Lab controls no longer work ipywidgets with ipympl
Jupyter Lab controls no longer work ipywidgets with ipympl

Time:06-11

I have consistently used the following workflow for fully updating my Jupyter Lab working environments:

$ rmvirtualenv my_env
$ mkvirtualenv --python=`which python` my_env
[my_env] $ pip install -r requirements.txt
[my_env] $ jupyter lab build
[my_env] $ jupyter lab

Recently however, after these steps:

  1. My widgets all become non-functional. I can operate and interact with them, but the figures they control do not change at all.
  2. All of the widget controls move from being above the figure they control to to below it.

Projects in virtualenvs that have not been recently updated in this way continue to work fine, and updating them reliably makes them stop working.

This occurs consistently (I have now ruined half a dozen projects confirming the pattern), and even for notebooks hosted outside my local machine (such as this one hosted on Binder). Control widgets themselves seem to work fine though (e.g., in notebooks like this one) when ipympl is not involved. I have also confirmed that the observed behavior is independent of browser and local machine (at least macOS vs iOS).

Has something about Jupyter Lab, ipywidgets, or ipympl changed recently that might be causing this?


Typical post update (non-working) configuration:

$ jupyter --version
Selected Jupyter core packages...
IPython          : 8.4.0
ipykernel        : 6.13.1
ipywidgets       : 7.7.0
jupyter_client   : 7.3.4
jupyter_core     : 4.10.0
jupyter_server   : 1.17.1
jupyterlab       : 3.4.3
nbclient         : 0.6.4
nbconvert        : 6.5.0
nbformat         : 5.4.0
notebook         : 6.4.12
qtconsole        : not installed
traitlets        : 5.2.2

$ jupyter labextension list 
JupyterLab v3.4.3
/Users/Rax/Documents/Projects/Coding/Python/venvs/picollisions/share/jupyter/labextensions
        jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
        nbdime-jupyterlab v2.1.1 enabled OK
        jupyter-matplotlib v0.11.1 enabled OK
        @jupyterlab/git v0.37.1 enabled OK (python, jupyterlab-git)
        @jupyter-widgets/jupyterlab-manager v3.1.0 enabled OK (python, jupyterlab_widgets)
        @kiteco/jupyterlab-kite v2.0.2 enabled OK (python, jupyterlab_kite)

Other labextensions (built into JupyterLab)
   app dir: /Users/Rax/Documents/Projects/Coding/Python/venvs/picollisions/share/jupyter/lab

Typical pre update (working) configuration:

$ jupyter --version
jupyter core     : 4.7.1
jupyter-notebook : 6.4.3
qtconsole        : not installed
ipython          : 7.26.0
ipykernel        : 6.2.0
jupyter client   : 6.1.12
jupyter lab      : 3.1.10
nbconvert        : 6.1.0
ipywidgets       : 7.6.4
nbformat         : 5.1.3
traitlets        : 5.0.5

jupyter labextension list
JupyterLab v3.1.10
/Users/Rax/Documents/Projects/Coding/Python/venvs/picollisions/share/jupyter/labextensions
        nbdime-jupyterlab v2.1.0 enabled OK
        jupyter-matplotlib v0.9.0 enabled OK
        @jupyterlab/git v0.32.2 enabled OK (python, jupyterlab-git)
        @jupyter-widgets/jupyterlab-manager v3.0.0 enabled OK (python, jupyterlab_widgets)
        @kiteco/jupyterlab-kite v2.0.2 enabled OK (python, jupyterlab_kite)

/usr/local/share/jupyter/labextensions
        jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)

Other labextensions (built into JupyterLab)
   app dir: /Users/Rax/Documents/Projects/Coding/Python/venvs/picollisions/share/jupyter/lab

Typical requirements:

#...
ipywidgets                 
ipympl

jupyterlab >=3.1                
jupyterlab-git                 
jupyterlab-kite >=2.0.2        

(I've tried omitting Kite to see if that was the culprit. In any case it is not present in the Binder versions.)

CodePudding user response:

Note here, there is bug that is getting sorted.

Options for now:

1

As discussed here if you add fig.canvas.draw() as the last line of plot_logisitic, as suggested by @ianhi here your code will work with the package versions giving you problems.
This approach has the added bonus that is in fact, best practice currently anyway & going forward.

2

Use the older versions if you don't want to add that. Current launches from here result in that. The versions of the pertinent items where the original code (without addition of fig.canvas.draw()) works is here.

  • Related