vscode-jupyter: IPyWidgets do not renderer due to a 401 error in webview

Applies To

  • Notebooks (.ipynb files)
  • Interactive Window and/or Cell Scripts (.py files with #%% markers)

What happened?

Recently, support for ipywidgets 8 was added with #8552. After updating to the latest vscode-insiders and the pre-release versions of the Jupyter extension and notebook renderers, all my widgets load properly except for the matplotlib widget. This happens on two different remote machines running Ubuntu Server 22.04.1 LTS. When attempting to plot with %matplotlib widget enabled, I get a window that says, “Click to show javascript error.” Clicking this shows the following:

[Open Browser Console for more detailed log - Double click to close this message]
Failed to load model class 'MPLCanvasModel' from module 'jupyter-matplotlib'
Error: No version of module jupyter-matplotlib is registered
    at ph.loadClass (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4099813)
    at ph.loadClass (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4403287)
    at ph.loadModelClass (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4097773)
    at ph._make_model (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4094616)
    at ph.new_model (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4092246)
    at ph.handle_comm_open (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4091039)
    at https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-renderers-1.0.15/out/node_modules/%40vscode/jupyter-ipywidgets8/dist/ipywidgets.js:2:4402511
    at g._handleCommOpen (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/webviews/webview-side/ipywidgetsKernel/ipywidgetsKernel.js:2:36493)
    at async g._handleMessage (https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/webviews/webview-side/ipywidgetsKernel/ipywidgetsKernel.js:2:38387)

Typically, I work within single folder workspaces for my projects. For this project, it’s located under ~/projects/{my-project}. Interestingly, if I add my home directory (~/) to the project making it a multi-root workspace, the error goes away. I’m guessing this means there is an issue with getting the proper path for the widget when it’s not part of the workspace.

VS Code Version

1.76.0-insider

Jupyter Extension Version

v2023.2.1000451018

Jupyter logs

Visual Studio Code - Insiders (1.76.0-insider, ssh-remote, desktop)
Jupyter Extension Version: 2023.2.1000451018.
Python Extension Version: 2023.3.10411009.
Workspace folder /home/chris/projects/dissertation
User belongs to experiment group 'jupyterTest'
User belongs to experiment group 'jupyterEnhancedDataViewer'
info 00:58:08.060: LSP Notebooks experiment is enabled
info 00:58:09.827: Checking for server existence.
info 00:58:09.828: Connecting to server
info 00:58:09.829: Connecting remote server kernel http://localhost:8889/
Connecting to Jupyter server at http://localhost:8889/
info 00:58:09.829: Creating server with url : http://localhost:8889/
info 00:58:09.842: Server started.
info 00:58:09.842: Creating server with url : http://localhost:8889/
error 00:58:09.909: Error fetching remote kernels: FetchError: request to http://localhost:8889/api/kernels?1676357889847 failed, reason: connect ECONNREFUSED 127.0.0.1:8889
    at ClientRequest.<anonymous> (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:2:1101739)
    at ClientRequest.emit (node:events:526:28)
    at Socket.socketErrorListener (node:_http_client:442:9)
    at Socket.emit (node:events:526:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
error 00:58:09.914: UniversalRemoteKernelFinder: Failed to get kernels without cache FetchError: request to http://localhost:8889/api/kernels?1676357889847 failed, reason: connect ECONNREFUSED 127.0.0.1:8889
    at ClientRequest.<anonymous> (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:2:1101739)
    at ClientRequest.emit (node:events:526:28)
    at Socket.socketErrorListener (node:_http_client:442:9)
    at Socket.emit (node:events:526:28)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
error 00:58:09.914: SessionManager:getKernelSpecs failure:  Error: Poll (@jupyterlab/services:KernelSpecManager#specs) is disposed.
    at e.dispose (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:2:172349)
    at u.dispose (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:2:63778)
    at og.dispose (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:17:267737)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at ug.listKernelsFromConnection (/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/out/extension.node.js:17:280120)
info 00:58:11.149: Process Execution: > ~/projects/dissertation/.venv/bin/python -m pip list
> ~/projects/dissertation/.venv/bin/python -m pip list
info 00:58:13.298: Starting Jupyter Session startUsingPythonInterpreter, .jvsc74a57bd0745fc2478a55d01e9e8f73e185ce59c6d1715f0e50068f228ffdf64af9065568./home/chris/projects/dissertation/.venv/python./home/chris/projects/dissertation/.venv/python.-m#ipykernel_launcher (Python Path: /home/chris/projects/dissertation/.venv, EnvType: Poetry, EnvName: '.venv', Version: 3.10.9 (main, Feb 14 2023, 00:14:45) [GCC 11.3.0]) for '/home/chris/projects/dissertation/notebooks/4-delta/02-nodal-analysis.ipynb' (disableUI=false)
info 00:58:13.344: Process Execution: > ~/projects/dissertation/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
> ~/projects/dissertation/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
info 00:58:13.427: Process Execution: > ~/projects/dissertation/.venv/bin/python -m ipykernel_launcher --ip=127.0.0.1 --stdin=9003 --control=9001 --hb=9000 --Session.signature_scheme="hmac-sha256" --Session.key=b"a7669770-f9dd-4bde-8847-63685719a21d" --shell=9002 --transport="tcp" --iopub=9004 --f=/home/chris/.local/share/jupyter/runtime/kernel-v2-2254992iowHK1Do7DO.json
> ~/projects/dissertation/.venv/bin/python -m ipykernel_launcher --ip=127.0.0.1 --stdin=9003 --control=9001 --hb=9000 --Session.signature_scheme="hmac-sha256" --Session.key=b"a7669770-f9dd-4bde-8847-63685719a21d" --shell=9002 --transport="tcp" --iopub=9004 --f=/home/chris/.local/share/jupyter/runtime/kernel-v2-2254992iowHK1Do7DO.json
info 00:58:13.427: Process Execution: cwd: ~/projects/dissertation/notebooks/4-delta
cwd: ~/projects/dissertation/notebooks/4-delta
info 00:58:13.521: ipykernel version & path 6.21.2, ~/projects/dissertation/.venv/lib/python3.10/site-packages/ipykernel/__init__.py for /home/chris/projects/dissertation/.venv/bin/python
info 00:58:13.921: Started Kernel .venv (Python 3.10.9) (pid: 226449)
error 00:58:13.989: Determined IPyKernel Version [{"name":"stdout","text":"e976ee50-99ed-4aba-9b6b-9dcd5634d07d:IPyWidgets:8.0.4\n","output_type":"stream"}]
error 00:58:13.989: Determined IPyKernel Version and event fired 8
info 00:58:14.476: Process Execution: > ~/projects/dissertation/.venv/bin/python ~/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/pythonFiles/printJupyterDataDir.py
> ~/projects/dissertation/.venv/bin/python ~/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/pythonFiles/printJupyterDataDir.py
error 00:58:17.529: Widget load failure {} {
  className: 'MPLCanvasModel',
  moduleName: 'jupyter-matplotlib',
  moduleVersion: '^0.11',
  cdnsUsed: false,
  isOnline: true,
  timedout: false,
  error: '{}'
}
error 00:58:17.554: Widget load failure {} {
  className: 'ToolbarModel',
  moduleName: 'jupyter-matplotlib',
  moduleVersion: '^0.11',
  cdnsUsed: false,
  isOnline: true,
  timedout: false,
  error: '{}'
}

Coding Language and Runtime Version

Python 3.10.9

Language Extension Version (if applicable)

v2023.3.10411009

Anaconda Version (if applicable)

No response

Running Jupyter locally or remotely?

Remote

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 20 (8 by maintainers)

Most upvoted comments

@christasich ms-toolsai-jupyter-insiders.vsix.zip

You can verify the fix by installing the above VSIX

  • Download the file
  • Extract it
  • Install it in VS Code using the command Install from VSIX
  • Reload VS Code Insiders and test again

ms-toolsai-jupyter-insiders.vsix.zip

This solves it for me. Thank you!

@christasich Thanks for the confirmation, will rope in one of my colleagues who might be able to help here.

@mjbvz

  • The widgets are not working as the file /home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/tmp/scripts/f76072443ec7cd6da4d33ac3ec175e601af62de2b53e33d7feee7be8bec8b7ee/jupyter/nbextensions/jupyter-matplotlib/index.js is not getting loaded by the webview
  • Here is the output from the webview console window preload.js:1963 GET https://vscode-remote+ssh-002dremote-002bbayu.vscode-resource.vscode-cdn.net/home/chris/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.2.1000451018/tmp/scripts/f76072443ec7cd6da4d33ac3ec175e601af62de2b53e33d7feee7be8bec8b7ee/jupyter/nbextensions/jupyter-matplotlib/index.js net::ERR_ABORTED 401
  • The file exists and is registered with VSCode and should work,
  • Any idea why its not working on remote SSH within the webview
  • Apparently when another different directory, then the file gets loaded and widgets work.