Skip to content

Jupyterlab widget not working with jupyterlab 2.0.0 or 2.0.1 #981

Closed
@igorbb

Description

Bug Report

Steps to Reproduce:

Installation using

jupyter labextension install @jupyter-widgets/jupyterlab-manager 
jupyter labextension install @finos/perspective-jupyterlab

It seems this does not install the latest version of @finos/perspective-jupyterlab it should be 0.4.5?

$ jupyter labextension list
JupyterLab v2.0.1
Known labextensions:
   app dir: /oneoff/.conda/envs/micro-alpha/share/jupyter/lab
        @finos/perspective-jupyterlab v0.3.9  enabled  OK
        @jupyter-widgets/jupyterlab-manager v2.0.0  enabled  OK
        jupyter-matplotlib v0.7.2  enabled  OK

A simple notebook with the code in one cell

from datetime import date, datetime
import numpy as np
import pandas as pd
import perspective
data = pd.DataFrame({
    "int": np.arange(100),
    "float": [i * 1.5 for i in range(100)],
    "bool": [True for i in range(100)],
    "date": [date.today() for i in range(100)],
    "datetime": [datetime.now() for i in range(100)],
    "string": [str(i) for i in range(100)]
})
psp = perspective.PerspectiveWidget(data)
psp

Expected Result:

Should show a widget ?

Actual Result:

Cell output:

Error displaying widget: model not found

A browser console

DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
index.js:8 Registered perspective-computed-column
index.js:8 Registered perspective-row
index.js:8 Registered perspective-viewer
index.js:1 Registered perspective-hypergrid
index.js:1 Registered perspective-d3fc-chart
index.js:1 Registered perspective-highcharts
index.js:8 Conflicting plugin name "X Bar Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Y Bar Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Y Line Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Y Scatter Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Y Area Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "X/Y Scatter Chart", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Treemap", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Sunburst", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:8 Conflicting plugin name "Heatmap", qualifying with id
registerPlugin @ index.js:8
t.a @ index.js:29
e.exports @ index.js:29
n @ index.js:29
e.exports @ index.js:29
(anonymous) @ index.js:29
n @ index.js:1
(anonymous) @ index.js:8
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
n @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
OrB5 @ index.js:1
a @ bootstrap:84
o @ index.out.js:1022
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:276 Plugin '@finos/perspective-jupyterlab' failed to activate.
(anonymous) @ index.js:276
Promise.catch (async)
(anonymous) @ index.js:275
e.start @ index.js:274
o @ index.out.js:1059
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:277 Error: No provider for: jupyter.extensions.jupyterWidgetRegistry.
    at u.e.resolveRequiredService (index.js:191)
    at index.js:149
    at Array.map (<anonymous>)
    at u.e.activatePlugin (index.js:149)
    at index.js:275
    at Array.map (<anonymous>)
    at u.e.start (index.js:274)
    at o (index.out.js:1059)
(anonymous) @ index.js:277
Promise.catch (async)
(anonymous) @ index.js:275
e.start @ index.js:274
o @ index.out.js:1059
load (async)
ANye @ index.out.js:1105
a @ bootstrap:84
0 @ main.415f6731bf868c505884.js:1
a @ bootstrap:84
r @ bootstrap:45
i @ bootstrap:32
(anonymous) @ vendors~main.0871fff4484841fb1df5.js:2
index.js:50 Starting application in workspace: "/lab"
default.js:50 Starting WebSocket: ws://localhost:8888/api/kernels/0b39be42-b0dc-4e23-b78b-791d2dbcd642
default.js:50 Starting WebSocket: ws://localhost:8888/api/kernels/0b39be42-b0dc-4e23-b78b-791d2dbcd642
manager-base.js:274 Could not instantiate widget
(anonymous) @ manager-base.js:274
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
a @ manager-base.js:18
Promise.then (async)
s @ manager-base.js:19
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e._make_model @ manager-base.js:258
(anonymous) @ manager-base.js:247
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e.new_model @ manager-base.js:233
e.handle_comm_open @ manager-base.js:145
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
async function (async)
_handleCommOpen @ default.js:980
_handleMessage @ default.js:1123
async function (async)
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91
utils.js:119 Error: Could not create a model.
    at n (utils.js:119)
    at async _handleCommOpen (manager.js:62)
    at async f._handleCommOpen (default.js:980)
    at async f._handleMessage (default.js:1122)
n @ utils.js:119
Promise.catch (async)
e.handle_comm_open @ manager-base.js:150
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
async function (async)
_handleCommOpen @ default.js:980
_handleMessage @ default.js:1123
async function (async)
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91
default.js:987 Exception opening new comm
_handleCommOpen @ default.js:987
async function (async)
_handleCommOpen @ default.js:980
_handleMessage @ default.js:1123
async function (async)
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91
default.js:99 Error: Module @finos/perspective-jupyterlab, semver range ~0.4 is not registered as a widget module
    at b.loadClass (manager.js:319)
    at b.<anonymous> (manager-base.js:264)
    at s (manager-base.js:45)
    at Object.next (manager-base.js:26)
    at manager-base.js:20
    at new Promise (<anonymous>)
    at Rtm6.D (manager-base.js:16)
    at b.e._make_model (manager-base.js:258)
    at b.<anonymous> (manager-base.js:247)
    at s (manager-base.js:45)
(anonymous) @ default.js:99
Promise.catch (async)
_onWSMessage @ default.js:96
renderer.js:45 Error: Module @finos/perspective-jupyterlab, semver range ~0.4 is not registered as a widget module
    at b.loadClass (manager.js:319)
    at b.<anonymous> (manager-base.js:264)
    at s (manager-base.js:45)
    at Object.next (manager-base.js:26)
    at manager-base.js:20
    at new Promise (<anonymous>)
    at Rtm6.D (manager-base.js:16)
    at b.e._make_model (manager-base.js:258)
    at b.<anonymous> (manager-base.js:247)
    at s (manager-base.js:45)
renderModel @ renderer.js:45
async function (async)
renderModel @ renderer.js:30
createRenderedMimetype @ widget.js:429
createOutputItem @ widget.js:401
_insertOutput @ widget.js:384
onModelChanged @ widget.js:216
f @ index.js:478
c @ index.js:435
e.emit @ index.js:108
_onListChanged @ model.js:231
f @ index.js:478
c @ index.js:435
e.emit @ index.js:108
push @ observablelist.js:135
_add @ model.js:207
add @ model.js:128
_onIOPub @ widget.js:91
_handleIOPub @ future.js:216
async function (async)
_handleIOPub @ future.js:212
handleMsg @ future.js:186
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91
manager.js:319 Uncaught (in promise) Error: Module @finos/perspective-jupyterlab, semver range ~0.4 is not registered as a widget module
    at b.loadClass (manager.js:319)
    at b.<anonymous> (manager-base.js:264)
    at s (manager-base.js:45)
    at Object.next (manager-base.js:26)
    at manager-base.js:20
    at new Promise (<anonymous>)
    at Rtm6.D (manager-base.js:16)
    at b.e._make_model (manager-base.js:258)
    at b.<anonymous> (manager-base.js:247)
    at s (manager-base.js:45)
loadClass @ manager.js:319
(anonymous) @ manager-base.js:264
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e._make_model @ manager-base.js:258
(anonymous) @ manager-base.js:247
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e.new_model @ manager-base.js:233
e.handle_comm_open @ manager-base.js:145
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
Promise.then (async)
e.register_model @ manager-base.js:209
register_model @ manager.js:383
(anonymous) @ manager-base.js:249
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e.new_model @ manager-base.js:233
e.handle_comm_open @ manager-base.js:145
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
async function (async)
_handleCommOpen @ default.js:980
_handleMessage @ default.js:1123
async function (async)
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91
manager.js:319 Uncaught (in promise) Error: Module @finos/perspective-jupyterlab, semver range ~0.4 is not registered as a widget module
    at b.loadClass (manager.js:319)
    at b.<anonymous> (manager-base.js:264)
    at s (manager-base.js:45)
    at Object.next (manager-base.js:26)
    at manager-base.js:20
    at new Promise (<anonymous>)
    at Rtm6.D (manager-base.js:16)
    at b.e._make_model (manager-base.js:258)
    at b.<anonymous> (manager-base.js:247)
    at s (manager-base.js:45)
loadClass @ manager.js:319
(anonymous) @ manager-base.js:264
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e._make_model @ manager-base.js:258
(anonymous) @ manager-base.js:247
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e.new_model @ manager-base.js:233
e.handle_comm_open @ manager-base.js:145
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
Promise.then (async)
register_model @ manager.js:385
(anonymous) @ manager-base.js:249
s @ manager-base.js:45
(anonymous) @ manager-base.js:26
(anonymous) @ manager-base.js:20
Rtm6.D @ manager-base.js:16
e.new_model @ manager-base.js:233
e.handle_comm_open @ manager-base.js:145
_handleCommOpen @ manager.js:63
_handleCommOpen @ default.js:981
async function (async)
_handleCommOpen @ default.js:980
_handleMessage @ default.js:1123
async function (async)
_handleMessage @ default.js:1087
(anonymous) @ default.js:94
Promise.then (async)
_onWSMessage @ default.js:91

Environment:

A docker container using ubuntu:18.04 and conda enviroment with python 3.7

Additional Context:

When trying to force the latest version of the extension:

$ jupyter labextension install @finos/perspective-jupyterlab@0.4.5
An error occured.
ValueError: 
"@finos/perspective-jupyterlab@0.4.5" is not compatible with the current JupyterLab
Conflicting Dependencies:
JupyterLab              Extension      Package
>=2.0.2 <2.1.0          >=1.2.1 <2.0.0 @jupyterlab/application
See the log file for details:  /tmp/jupyterlab-debug-4ouph3l_.log

And the output of that log is

$ cat  /tmp/jupyterlab-debug-4ouph3l_.log
Node v12.4.0

Yarn configuration loaded.
> /oneoff/.conda/envs/micro-alpha/bin/npm pack @finos/perspective-jupyterlab@0.4.5
npm notice 
npm notice 📦  @finos/perspective-jupyterlab@0.4.5
npm notice === Tarball Contents === 
npm notice 0     package      
npm notice 446B  README.md    
npm notice 0     dist         
npm notice 2.3kB package.json 
npm notice 3.4MB dist/index.js
npm notice === Tarball Details === 
npm notice name:          @finos/perspective-jupyterlab           
npm notice version:       0.4.5                                   
npm notice filename:      finos-perspective-jupyterlab-0.4.5.tgz  
npm notice package size:  1.0 MB                                  
npm notice unpacked size: 3.4 MB                                  
npm notice shasum:        a13a082a0df3c16c3e2c175b7c63b81cfbe27f9a
npm notice integrity:     sha512-mEgVKwZ0ko1cN[...]e5Z/i7F4bV/2A==
npm notice total files:   5                                       
npm notice 
finos-perspective-jupyterlab-0.4.5.tgz

Traceback (most recent call last):

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/debuglog.py", line 47, in debug_logging
    yield

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/labextensions.py", line 93, in start
    ans = self.run_task()

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/labextensions.py", line 149, in run_task
    for i, arg in enumerate(self.extra_args)

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/labextensions.py", line 149, in <listcomp>
    for i, arg in enumerate(self.extra_args)

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/commands.py", line 388, in install_extension
    return handler.install_extension(extension, pin=pin)

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/commands.py", line 603, in install_extension
    info = self._install_extension(extension, tempdir, pin=pin)

  File "/oneoff/.conda/envs/micro-alpha/lib/python3.7/site-packages/jupyterlab/commands.py", line 1550, in _install_extension
    raise ValueError(msg)

ValueError: 
"@finos/perspective-jupyterlab@0.4.5" is not compatible with the current JupyterLab
Conflicting Dependencies:
JupyterLab              Extension      Package
>=2.0.2 <2.1.0          >=1.2.1 <2.0.0 @jupyterlab/application


Exiting application: jupyter

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions