voila-dashboards / voici

Voici turns any Jupyter Notebook into a static web application
https://voici.readthedocs.io/
Other
152 stars 8 forks source link

bqplot widgets not triggering observe method when run in voici #121

Open JuanCab opened 1 month ago

JuanCab commented 1 month ago

Executive Summary

bqplot widgets when run in voici don't trigger observe when their attributes change so there can be no reaction by external functions to interactions with the bqplot widgets. This only appears to occur when run inside a Voici environment and the same code works properly in JupyterLab and Voila.

Description

I have an interactive plot (generated via bqplot) consisting of a Scatter object and a Line object where the idea is you can drag the points in the Scatter object and the Line object changes to continue connecting those points. The notebook with this plot runs flawlessly in Jupyter lab and voila. However, in voici, I can drag the points in the Scatter object, but the Line connecting the points does NOT update.

Update 7/25/2024: I have now also confirmed that a plot set up with bq.interacts.HandDraw have a similar problem, when hand drawing on the graph, the plot changes but no signal is sent via the observe function, so no other functions can react to the changes.

NOTE: Since this could be a bqplot issue, I have also filed an issue with bqplot, it is issue #1647 in their repo.

Reproduce

I have created a short notebook index.ipynb that illustrates the problem. Since the environment might be crucial, I created a repo containing the notebook as well as the environment.yml file necessary to test it both in voila and voici here.

Expected behavior

The expected behavior (seen in both Jupyter lab and Voila) is that dragging points on the Figure shown should result in not only the points moving, but also the line connecting the points getting updated. The line does NOT update when this same notebook is run in Voici. Again, this appears to be because bqplot widgets run inside of Voici do NOT trigger the observe method and thus can't call outside functions to respond.

Context

Troubleshoot Output
$PATH:
    /Users/_username_/miniforge3/envs/test_bqplot_voici/bin
    /Users/_username_/miniforge3/condabin
    /Users/_username_/bin
    /usr/local/bin
    /opt/homebrew/bin
    /opt/homebrew/sbin
    /usr/local/bin
    /System/Cryptexes/App/usr/bin
    /usr/bin
    /bin
    /usr/sbin
    /sbin
    /Applications/GPAC.app/Contents/MacOS
    /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
    /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
    /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
    /opt/X11/bin
    /Library/Apple/usr/bin
    /Users/_username_/.cargo/bin
    /usr/local/sbin
    /Applications/iTerm.app/Contents/Resources/utilities
    /usr/X11R6/bin
    /Users/_username_/tools

sys.path:
    /Users/_username_/miniforge3/envs/test_bqplot_voici/bin
    /Users/_username_/miniforge3/envs/test_bqplot_voici/lib/python312.zip
    /Users/_username_/miniforge3/envs/test_bqplot_voici/lib/python3.12
    /Users/_username_/miniforge3/envs/test_bqplot_voici/lib/python3.12/lib-dynload
    /Users/_username_/miniforge3/envs/test_bqplot_voici/lib/python3.12/site-packages

sys.executable:
    /Users/_username_/miniforge3/envs/test_bqplot_voici/bin/python

sys.version:
    3.12.4 | packaged by conda-forge | (main, Jun 17 2024, 10:13:44) [Clang 16.0.6 ]

platform.platform():
    macOS-14.5-arm64-arm-64bit

which -a jupyter:
    /Users/_username_/miniforge3/envs/test_bqplot_voici/bin/jupyter

pip list:
    Package                   Version
    ------------------------- -------------------
    anyio                     4.4.0
    appdirs                   1.4.4
    appnope                   0.1.4
    argon2-cffi               23.1.0
    argon2-cffi-bindings      21.2.0
    arrow                     1.3.0
    astropy                   6.1.1
    astropy-iers-data         0.2024.7.22.0.34.13
    asttokens                 2.4.1
    async-lru                 2.0.4
    attrs                     23.2.0
    Babel                     2.14.0
    beautifulsoup4            4.12.3
    bleach                    6.1.0
    bqplot                    0.12.43
    Brotli                    1.1.0
    cached-property           1.5.2
    certifi                   2024.7.4
    cffi                      1.16.0
    charset-normalizer        3.3.2
    click                     8.1.7
    cloudpickle               3.0.0
    comm                      0.2.2
    contourpy                 1.2.1
    cycler                    0.12.1
    debugpy                   1.8.2
    decorator                 5.1.1
    defusedxml                0.7.1
    doit                      0.36.0
    empack                    4.0.0
    entrypoints               0.4
    exceptiongroup            1.2.2
    executing                 2.0.1
    fastjsonschema            2.20.0
    fonttools                 4.53.1
    fqdn                      1.5.1
    h11                       0.14.0
    h2                        4.1.0
    hpack                     4.0.0
    httpcore                  1.0.5
    httpx                     0.27.0
    hyperframe                6.0.1
    idna                      3.7
    importlib_metadata        8.0.0
    importlib_resources       6.4.0
    ipydatawidgets            4.3.2
    ipykernel                 6.29.5
    ipysheet                  0.7.0
    ipython                   8.26.0
    ipywidgets                8.1.3
    isoduration               20.11.0
    jedi                      0.19.1
    Jinja2                    3.1.4
    json5                     0.9.25
    jsonpointer               3.0.0
    jsonschema                4.23.0
    jsonschema-specifications 2023.12.1
    jupyter                   1.0.0
    jupyter_client            8.6.2
    jupyter-console           6.6.3
    jupyter_core              5.7.2
    jupyter-events            0.10.0
    jupyter-lsp               2.2.5
    jupyter_server            2.14.2
    jupyter_server_terminals  0.5.3
    jupyterlab                4.2.4
    jupyterlab_pygments       0.3.0
    jupyterlab_server         2.27.3
    jupyterlab_widgets        3.0.11
    jupyterlite-core          0.3.0
    jupyterlite_xeus          0.1.9
    kiwisolver                1.4.5
    markdown-it-py            3.0.0
    MarkupSafe                2.1.5
    matplotlib                3.9.1
    matplotlib-inline         0.1.7
    mdurl                     0.1.2
    mistune                   3.0.2
    munkres                   1.1.4
    nbclient                  0.10.0
    nbconvert                 7.16.4
    nbformat                  5.10.4
    nest_asyncio              1.6.0
    networkx                  3.3
    notebook                  7.2.1
    notebook_shim             0.2.4
    numpy                     2.0.0
    overrides                 7.7.0
    packaging                 24.1
    pandas                    2.2.2
    pandocfilters             1.5.0
    parso                     0.8.4
    pexpect                   4.9.0
    pickleshare               0.7.5
    pillow                    10.4.0
    pip                       24.0
    pkgutil_resolve_name      1.3.10
    platformdirs              4.2.2
    prometheus_client         0.20.0
    prompt_toolkit            3.0.47
    pscript                   0.7.7
    psutil                    6.0.0
    ptyprocess                0.7.0
    pure_eval                 0.2.3
    pycparser                 2.22
    pyerfa                    2.0.1.4
    Pygments                  2.18.0
    pyobjc-core               10.3.1
    pyobjc-framework-Cocoa    10.3.1
    pyparsing                 3.1.2
    PySocks                   1.7.1
    python-dateutil           2.9.0
    python-json-logger        2.0.7
    pythreejs                 2.4.2
    pytz                      2024.1
    PyYAML                    6.0.1
    pyzmq                     26.0.3
    qtconsole                 5.5.2
    QtPy                      2.4.1
    referencing               0.35.1
    requests                  2.32.3
    rfc3339-validator         0.1.4
    rfc3986-validator         0.1.1
    rich                      13.7.1
    rpds-py                   0.19.0
    Send2Trash                1.8.3
    setuptools                71.0.4
    shellingham               1.5.4
    six                       1.16.0
    sniffio                   1.3.1
    soupsieve                 2.5
    stack-data                0.6.2
    terminado                 0.18.1
    tinycss2                  1.3.0
    tomli                     2.0.1
    tornado                   6.4.1
    traitlets                 5.14.3
    traittypes                0.2.1
    typer                     0.12.3
    typer-slim                0.12.3
    types-python-dateutil     2.9.0.20240316
    typing_extensions         4.12.2
    typing-utils              0.1.0
    tzdata                    2024.1
    uri-template              1.3.0
    urllib3                   2.2.2
    voici                     0.6.1
    voici-core                0.6.1
    voila                     0.5.7
    wcwidth                   0.2.13
    webcolors                 24.6.0
    webencodings              0.5.1
    websocket-client          1.8.0
    websockets                12.0
    wheel                     0.43.0
    widgetsnbextension        4.0.11
    zipp                      3.19.2
    zstandard                 0.23.0

conda list:
    # packages in environment at /Users/_username_/miniforge3/envs/test_bqplot_voici:
    #
    # Name                    Version                   Build  Channel
    anyio                     4.4.0              pyhd8ed1ab_0    conda-forge
    appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
    appnope                   0.1.4              pyhd8ed1ab_0    conda-forge
    argon2-cffi               23.1.0             pyhd8ed1ab_0    conda-forge
    argon2-cffi-bindings      21.2.0          py312h02f2b3b_4    conda-forge
    arrow                     1.3.0              pyhd8ed1ab_0    conda-forge
    astropy                   6.1.1           py312hbebd99a_0    conda-forge
    astropy-iers-data         0.2024.7.22.0.34.13    pyhd8ed1ab_0    conda-forge
    asttokens                 2.4.1              pyhd8ed1ab_0    conda-forge
    async-lru                 2.0.4              pyhd8ed1ab_0    conda-forge
    attrs                     23.2.0             pyh71513ae_0    conda-forge
    babel                     2.14.0             pyhd8ed1ab_0    conda-forge
    beautifulsoup4            4.12.3             pyha770c72_0    conda-forge
    bleach                    6.1.0              pyhd8ed1ab_0    conda-forge
    bqplot                    0.12.43            pyhd8ed1ab_0    conda-forge
    brotli                    1.1.0                hb547adb_1    conda-forge
    brotli-bin                1.1.0                hb547adb_1    conda-forge
    brotli-python             1.1.0           py312h9f69965_1    conda-forge
    bzip2                     1.0.8                h99b78c6_7    conda-forge
    ca-certificates           2024.7.4             hf0a4a13_0    conda-forge
    cached-property           1.5.2                hd8ed1ab_1    conda-forge
    cached_property           1.5.2              pyha770c72_1    conda-forge
    certifi                   2024.7.4           pyhd8ed1ab_0    conda-forge
    cffi                      1.16.0          py312h8e38eb3_0    conda-forge
    charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
    click                     8.1.7           unix_pyh707e725_0    conda-forge
    cloudpickle               3.0.0              pyhd8ed1ab_0    conda-forge
    comm                      0.2.2              pyhd8ed1ab_0    conda-forge
    contourpy                 1.2.1           py312h0fef576_0    conda-forge
    cycler                    0.12.1             pyhd8ed1ab_0    conda-forge
    debugpy                   1.8.2           py312h5c2e7bc_0    conda-forge
    decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
    defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
    doit                      0.36.0             pyhd8ed1ab_0    conda-forge
    empack                    4.0.0              pyhd8ed1ab_0    conda-forge
    entrypoints               0.4                pyhd8ed1ab_0    conda-forge
    exceptiongroup            1.2.2              pyhd8ed1ab_0    conda-forge
    executing                 2.0.1              pyhd8ed1ab_0    conda-forge
    fonttools                 4.53.1          py312h7e5086c_0    conda-forge
    fqdn                      1.5.1              pyhd8ed1ab_0    conda-forge
    freetype                  2.12.1               hadb7bae_2    conda-forge
    h11                       0.14.0             pyhd8ed1ab_0    conda-forge
    h2                        4.1.0              pyhd8ed1ab_0    conda-forge
    hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
    httpcore                  1.0.5              pyhd8ed1ab_0    conda-forge
    httpx                     0.27.0             pyhd8ed1ab_0    conda-forge
    hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
    idna                      3.7                pyhd8ed1ab_0    conda-forge
    importlib-metadata        8.0.0              pyha770c72_0    conda-forge
    importlib_metadata        8.0.0                hd8ed1ab_0    conda-forge
    importlib_resources       6.4.0              pyhd8ed1ab_0    conda-forge
    ipydatawidgets            4.3.2              pyhc268e32_0    conda-forge
    ipykernel                 6.29.5             pyh57ce528_0    conda-forge
    ipysheet                  0.7.0              pyhd8ed1ab_0    conda-forge
    ipython                   8.26.0             pyh707e725_0    conda-forge
    ipywidgets                8.1.3              pyhd8ed1ab_0    conda-forge
    isoduration               20.11.0            pyhd8ed1ab_0    conda-forge
    jedi                      0.19.1             pyhd8ed1ab_0    conda-forge
    jinja2                    3.1.4              pyhd8ed1ab_0    conda-forge
    json5                     0.9.25             pyhd8ed1ab_0    conda-forge
    jsonpointer               3.0.0           py312h81bd7bf_0    conda-forge
    jsonschema                4.23.0             pyhd8ed1ab_0    conda-forge
    jsonschema-specifications 2023.12.1          pyhd8ed1ab_0    conda-forge
    jsonschema-with-format-nongpl 4.23.0               hd8ed1ab_0    conda-forge
    jupyter                   1.0.0             pyhd8ed1ab_10    conda-forge
    jupyter-lsp               2.2.5              pyhd8ed1ab_0    conda-forge
    jupyter_client            8.6.2              pyhd8ed1ab_0    conda-forge
    jupyter_console           6.6.3              pyhd8ed1ab_0    conda-forge
    jupyter_core              5.7.2           py312h81bd7bf_0    conda-forge
    jupyter_events            0.10.0             pyhd8ed1ab_0    conda-forge
    jupyter_server            2.14.2             pyhd8ed1ab_0    conda-forge
    jupyter_server_terminals  0.5.3              pyhd8ed1ab_0    conda-forge
    jupyterlab                4.2.4              pyhd8ed1ab_0    conda-forge
    jupyterlab_pygments       0.3.0              pyhd8ed1ab_1    conda-forge
    jupyterlab_server         2.27.3             pyhd8ed1ab_0    conda-forge
    jupyterlab_widgets        3.0.11             pyhd8ed1ab_0    conda-forge
    jupyterlite-core          0.3.0              pyhd8ed1ab_0    conda-forge
    jupyterlite-xeus          0.1.9              pyhd8ed1ab_0    conda-forge
    kiwisolver                1.4.5           py312h389731b_1    conda-forge
    krb5                      1.21.3               h237132a_0    conda-forge
    lcms2                     2.16                 ha0e7c42_0    conda-forge
    lerc                      4.0.0                h9a09cb3_0    conda-forge
    libblas                   3.9.0           22_osxarm64_openblas    conda-forge
    libbrotlicommon           1.1.0                hb547adb_1    conda-forge
    libbrotlidec              1.1.0                hb547adb_1    conda-forge
    libbrotlienc              1.1.0                hb547adb_1    conda-forge
    libcblas                  3.9.0           22_osxarm64_openblas    conda-forge
    libcxx                    18.1.8               h167917d_0    conda-forge
    libdeflate                1.20                 h93a5062_0    conda-forge
    libedit                   3.1.20191231         hc8eb9b7_2    conda-forge
    libexpat                  2.6.2                hebf3989_0    conda-forge
    libffi                    3.4.2                h3422bc3_5    conda-forge
    libgfortran               5.0.0           13_2_0_hd922786_3    conda-forge
    libgfortran5              13.2.0               hf226fd6_3    conda-forge
    libjpeg-turbo             3.0.0                hb547adb_1    conda-forge
    liblapack                 3.9.0           22_osxarm64_openblas    conda-forge
    libopenblas               0.3.27          openmp_h517c56d_1    conda-forge
    libpng                    1.6.43               h091b4b1_0    conda-forge
    libsodium                 1.0.18               h27ca646_1    conda-forge
    libsqlite                 3.46.0               hfb93653_0    conda-forge
    libtiff                   4.6.0                h07db509_3    conda-forge
    libwebp-base              1.4.0                h93a5062_0    conda-forge
    libxcb                    1.16                 hf2054a2_0    conda-forge
    libzlib                   1.3.1                hfb2fe0b_1    conda-forge
    llvm-openmp               18.1.8               hde57baf_0    conda-forge
    markdown-it-py            3.0.0              pyhd8ed1ab_0    conda-forge
    markupsafe                2.1.5           py312he37b823_0    conda-forge
    matplotlib                3.9.1           py312h1f38498_0    conda-forge
    matplotlib-base           3.9.1           py312h32d6e5a_0    conda-forge
    matplotlib-inline         0.1.7              pyhd8ed1ab_0    conda-forge
    mdurl                     0.1.2              pyhd8ed1ab_0    conda-forge
    micromamba                1.5.8                         0    conda-forge
    mistune                   3.0.2              pyhd8ed1ab_0    conda-forge
    munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
    nbclient                  0.10.0             pyhd8ed1ab_0    conda-forge
    nbconvert                 7.16.4               hd8ed1ab_1    conda-forge
    nbconvert-core            7.16.4             pyhd8ed1ab_1    conda-forge
    nbconvert-pandoc          7.16.4               hd8ed1ab_1    conda-forge
    nbformat                  5.10.4             pyhd8ed1ab_0    conda-forge
    ncurses                   6.5                  hb89a1cb_0    conda-forge
    nest-asyncio              1.6.0              pyhd8ed1ab_0    conda-forge
    networkx                  3.3                pyhd8ed1ab_1    conda-forge
    notebook                  7.2.1              pyhd8ed1ab_0    conda-forge
    notebook-shim             0.2.4              pyhd8ed1ab_0    conda-forge
    numpy                     2.0.0           py312hb544834_0    conda-forge
    openjpeg                  2.5.2                h9f1df11_0    conda-forge
    openssl                   3.3.1                hfb2fe0b_2    conda-forge
    overrides                 7.7.0              pyhd8ed1ab_0    conda-forge
    packaging                 24.1               pyhd8ed1ab_0    conda-forge
    pandas                    2.2.2           py312h8ae5369_1    conda-forge
    pandoc                    3.2.1                hce30654_0    conda-forge
    pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
    parso                     0.8.4              pyhd8ed1ab_0    conda-forge
    pexpect                   4.9.0              pyhd8ed1ab_0    conda-forge
    pickleshare               0.7.5                   py_1003    conda-forge
    pillow                    10.4.0          py312h39b1d8d_0    conda-forge
    pip                       24.0               pyhd8ed1ab_0    conda-forge
    pkgutil-resolve-name      1.3.10             pyhd8ed1ab_1    conda-forge
    platformdirs              4.2.2              pyhd8ed1ab_0    conda-forge
    prometheus_client         0.20.0             pyhd8ed1ab_0    conda-forge
    prompt-toolkit            3.0.47             pyha770c72_0    conda-forge
    prompt_toolkit            3.0.47               hd8ed1ab_0    conda-forge
    pscript                   0.7.7              pyhd8ed1ab_0    conda-forge
    psutil                    6.0.0           py312h7e5086c_0    conda-forge
    pthread-stubs             0.4               h27ca646_1001    conda-forge
    ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
    pure_eval                 0.2.3              pyhd8ed1ab_0    conda-forge
    pycparser                 2.22               pyhd8ed1ab_0    conda-forge
    pyerfa                    2.0.1.4         py312hbebd99a_1    conda-forge
    pygments                  2.18.0             pyhd8ed1ab_0    conda-forge
    pyobjc-core               10.3.1          py312hbb55c70_0    conda-forge
    pyobjc-framework-cocoa    10.3.1          py312hbb55c70_0    conda-forge
    pyparsing                 3.1.2              pyhd8ed1ab_0    conda-forge
    pysocks                   1.7.1              pyha2e5f31_6    conda-forge
    python                    3.12.4          h30c5eda_0_cpython    conda-forge
    python-dateutil           2.9.0              pyhd8ed1ab_0    conda-forge
    python-fastjsonschema     2.20.0             pyhd8ed1ab_0    conda-forge
    python-json-logger        2.0.7              pyhd8ed1ab_0    conda-forge
    python-tzdata             2024.1             pyhd8ed1ab_0    conda-forge
    python_abi                3.12                    4_cp312    conda-forge
    pythreejs                 2.4.2              pyh1d7be83_0    conda-forge
    pytz                      2024.1             pyhd8ed1ab_0    conda-forge
    pyyaml                    6.0.1           py312h02f2b3b_1    conda-forge
    pyzmq                     26.0.3          py312hfa13136_0    conda-forge
    qhull                     2020.2               h420ef59_5    conda-forge
    qtconsole-base            5.5.2              pyha770c72_0    conda-forge
    qtpy                      2.4.1              pyhd8ed1ab_0    conda-forge
    readline                  8.2                  h92ec313_1    conda-forge
    referencing               0.35.1             pyhd8ed1ab_0    conda-forge
    requests                  2.32.3             pyhd8ed1ab_0    conda-forge
    rfc3339-validator         0.1.4              pyhd8ed1ab_0    conda-forge
    rfc3986-validator         0.1.1              pyh9f0ad1d_0    conda-forge
    rich                      13.7.1             pyhd8ed1ab_0    conda-forge
    rpds-py                   0.19.0          py312h552d48e_0    conda-forge
    send2trash                1.8.3              pyh31c8845_0    conda-forge
    setuptools                71.0.4             pyhd8ed1ab_0    conda-forge
    shellingham               1.5.4              pyhd8ed1ab_0    conda-forge
    six                       1.16.0             pyh6c4a22f_0    conda-forge
    sniffio                   1.3.1              pyhd8ed1ab_0    conda-forge
    soupsieve                 2.5                pyhd8ed1ab_1    conda-forge
    stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
    terminado                 0.18.1             pyh31c8845_0    conda-forge
    tinycss2                  1.3.0              pyhd8ed1ab_0    conda-forge
    tk                        8.6.13               h5083fa2_1    conda-forge
    tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
    tornado                   6.4.1           py312h7e5086c_0    conda-forge
    traitlets                 5.14.3             pyhd8ed1ab_0    conda-forge
    traittypes                0.2.1              pyh9f0ad1d_2    conda-forge
    typer                     0.12.3             pyhd8ed1ab_0    conda-forge
    typer-slim                0.12.3             pyhd8ed1ab_0    conda-forge
    typer-slim-standard       0.12.3               hd8ed1ab_0    conda-forge
    types-python-dateutil     2.9.0.20240316     pyhd8ed1ab_0    conda-forge
    typing-extensions         4.12.2               hd8ed1ab_0    conda-forge
    typing_extensions         4.12.2             pyha770c72_0    conda-forge
    typing_utils              0.1.0              pyhd8ed1ab_0    conda-forge
    tzdata                    2024a                h0c530f3_0    conda-forge
    uri-template              1.3.0              pyhd8ed1ab_0    conda-forge
    urllib3                   2.2.2              pyhd8ed1ab_1    conda-forge
    voici                     0.6.1              pyhd8ed1ab_0    conda-forge
    voici_core                0.6.1              pyhd8ed1ab_0    conda-forge
    voila                     0.5.7              pyhd8ed1ab_1    conda-forge
    wcwidth                   0.2.13             pyhd8ed1ab_0    conda-forge
    webcolors                 24.6.0             pyhd8ed1ab_0    conda-forge
    webencodings              0.5.1              pyhd8ed1ab_2    conda-forge
    websocket-client          1.8.0              pyhd8ed1ab_0    conda-forge
    websockets                12.0            py312he37b823_0    conda-forge
    wheel                     0.43.0             pyhd8ed1ab_1    conda-forge
    widgetsnbextension        4.0.11             pyhd8ed1ab_0    conda-forge
    xorg-libxau               1.0.11               hb547adb_0    conda-forge
    xorg-libxdmcp             1.1.3                h27ca646_0    conda-forge
    xz                        5.2.6                h57fd34a_0    conda-forge
    yaml                      0.2.5                h3422bc3_2    conda-forge
    zeromq                    4.3.5                hcc0f68c_4    conda-forge
    zipp                      3.19.2             pyhd8ed1ab_0    conda-forge
    zstandard                 0.23.0          py312h721a963_0    conda-forge
    zstd                      1.5.6                hb46c0d2_0    conda-forge

conda env:
    name: test_bqplot_voici
    channels:
      - conda-forge
    dependencies:
      - anyio=4.4.0=pyhd8ed1ab_0
      - appdirs=1.4.4=pyh9f0ad1d_0
      - appnope=0.1.4=pyhd8ed1ab_0
      - argon2-cffi=23.1.0=pyhd8ed1ab_0
      - argon2-cffi-bindings=21.2.0=py312h02f2b3b_4
      - arrow=1.3.0=pyhd8ed1ab_0
      - astropy=6.1.1=py312hbebd99a_0
      - astropy-iers-data=0.2024.7.22.0.34.13=pyhd8ed1ab_0
      - asttokens=2.4.1=pyhd8ed1ab_0
      - async-lru=2.0.4=pyhd8ed1ab_0
      - attrs=23.2.0=pyh71513ae_0
      - babel=2.14.0=pyhd8ed1ab_0
      - beautifulsoup4=4.12.3=pyha770c72_0
      - bleach=6.1.0=pyhd8ed1ab_0
      - bqplot=0.12.43=pyhd8ed1ab_0
      - brotli=1.1.0=hb547adb_1
      - brotli-bin=1.1.0=hb547adb_1
      - brotli-python=1.1.0=py312h9f69965_1
      - bzip2=1.0.8=h99b78c6_7
      - ca-certificates=2024.7.4=hf0a4a13_0
      - cached-property=1.5.2=hd8ed1ab_1
      - cached_property=1.5.2=pyha770c72_1
      - certifi=2024.7.4=pyhd8ed1ab_0
      - cffi=1.16.0=py312h8e38eb3_0
      - charset-normalizer=3.3.2=pyhd8ed1ab_0
      - click=8.1.7=unix_pyh707e725_0
      - cloudpickle=3.0.0=pyhd8ed1ab_0
      - comm=0.2.2=pyhd8ed1ab_0
      - contourpy=1.2.1=py312h0fef576_0
      - cycler=0.12.1=pyhd8ed1ab_0
      - debugpy=1.8.2=py312h5c2e7bc_0
      - decorator=5.1.1=pyhd8ed1ab_0
      - defusedxml=0.7.1=pyhd8ed1ab_0
      - doit=0.36.0=pyhd8ed1ab_0
      - empack=4.0.0=pyhd8ed1ab_0
      - entrypoints=0.4=pyhd8ed1ab_0
      - exceptiongroup=1.2.2=pyhd8ed1ab_0
      - executing=2.0.1=pyhd8ed1ab_0
      - fonttools=4.53.1=py312h7e5086c_0
      - fqdn=1.5.1=pyhd8ed1ab_0
      - freetype=2.12.1=hadb7bae_2
      - h11=0.14.0=pyhd8ed1ab_0
      - h2=4.1.0=pyhd8ed1ab_0
      - hpack=4.0.0=pyh9f0ad1d_0
      - httpcore=1.0.5=pyhd8ed1ab_0
      - httpx=0.27.0=pyhd8ed1ab_0
      - hyperframe=6.0.1=pyhd8ed1ab_0
      - idna=3.7=pyhd8ed1ab_0
      - importlib-metadata=8.0.0=pyha770c72_0
      - importlib_metadata=8.0.0=hd8ed1ab_0
      - importlib_resources=6.4.0=pyhd8ed1ab_0
      - ipydatawidgets=4.3.2=pyhc268e32_0
      - ipykernel=6.29.5=pyh57ce528_0
      - ipysheet=0.7.0=pyhd8ed1ab_0
      - ipython=8.26.0=pyh707e725_0
      - ipywidgets=8.1.3=pyhd8ed1ab_0
      - isoduration=20.11.0=pyhd8ed1ab_0
      - jedi=0.19.1=pyhd8ed1ab_0
      - jinja2=3.1.4=pyhd8ed1ab_0
      - json5=0.9.25=pyhd8ed1ab_0
      - jsonpointer=3.0.0=py312h81bd7bf_0
      - jsonschema=4.23.0=pyhd8ed1ab_0
      - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0
      - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_0
      - jupyter=1.0.0=pyhd8ed1ab_10
      - jupyter-lsp=2.2.5=pyhd8ed1ab_0
      - jupyter_client=8.6.2=pyhd8ed1ab_0
      - jupyter_console=6.6.3=pyhd8ed1ab_0
      - jupyter_core=5.7.2=py312h81bd7bf_0
      - jupyter_events=0.10.0=pyhd8ed1ab_0
      - jupyter_server=2.14.2=pyhd8ed1ab_0
      - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0
      - jupyterlab=4.2.4=pyhd8ed1ab_0
      - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1
      - jupyterlab_server=2.27.3=pyhd8ed1ab_0
      - jupyterlab_widgets=3.0.11=pyhd8ed1ab_0
      - jupyterlite-core=0.3.0=pyhd8ed1ab_0
      - jupyterlite-xeus=0.1.9=pyhd8ed1ab_0
      - kiwisolver=1.4.5=py312h389731b_1
      - krb5=1.21.3=h237132a_0
      - lcms2=2.16=ha0e7c42_0
      - lerc=4.0.0=h9a09cb3_0
      - libblas=3.9.0=22_osxarm64_openblas
      - libbrotlicommon=1.1.0=hb547adb_1
      - libbrotlidec=1.1.0=hb547adb_1
      - libbrotlienc=1.1.0=hb547adb_1
      - libcblas=3.9.0=22_osxarm64_openblas
      - libcxx=18.1.8=h167917d_0
      - libdeflate=1.20=h93a5062_0
      - libedit=3.1.20191231=hc8eb9b7_2
      - libexpat=2.6.2=hebf3989_0
      - libffi=3.4.2=h3422bc3_5
      - libgfortran=5.0.0=13_2_0_hd922786_3
      - libgfortran5=13.2.0=hf226fd6_3
      - libjpeg-turbo=3.0.0=hb547adb_1
      - liblapack=3.9.0=22_osxarm64_openblas
      - libopenblas=0.3.27=openmp_h517c56d_1
      - libpng=1.6.43=h091b4b1_0
      - libsodium=1.0.18=h27ca646_1
      - libsqlite=3.46.0=hfb93653_0
      - libtiff=4.6.0=h07db509_3
      - libwebp-base=1.4.0=h93a5062_0
      - libxcb=1.16=hf2054a2_0
      - libzlib=1.3.1=hfb2fe0b_1
      - llvm-openmp=18.1.8=hde57baf_0
      - markdown-it-py=3.0.0=pyhd8ed1ab_0
      - markupsafe=2.1.5=py312he37b823_0
      - matplotlib=3.9.1=py312h1f38498_0
      - matplotlib-base=3.9.1=py312h32d6e5a_0
      - matplotlib-inline=0.1.7=pyhd8ed1ab_0
      - mdurl=0.1.2=pyhd8ed1ab_0
      - micromamba=1.5.8=0
      - mistune=3.0.2=pyhd8ed1ab_0
      - munkres=1.1.4=pyh9f0ad1d_0
      - nbclient=0.10.0=pyhd8ed1ab_0
      - nbconvert=7.16.4=hd8ed1ab_1
      - nbconvert-core=7.16.4=pyhd8ed1ab_1
      - nbconvert-pandoc=7.16.4=hd8ed1ab_1
      - nbformat=5.10.4=pyhd8ed1ab_0
      - ncurses=6.5=hb89a1cb_0
      - nest-asyncio=1.6.0=pyhd8ed1ab_0
      - networkx=3.3=pyhd8ed1ab_1
      - notebook=7.2.1=pyhd8ed1ab_0
      - notebook-shim=0.2.4=pyhd8ed1ab_0
      - numpy=2.0.0=py312hb544834_0
      - openjpeg=2.5.2=h9f1df11_0
      - openssl=3.3.1=hfb2fe0b_2
      - overrides=7.7.0=pyhd8ed1ab_0
      - packaging=24.1=pyhd8ed1ab_0
      - pandas=2.2.2=py312h8ae5369_1
      - pandoc=3.2.1=hce30654_0
      - pandocfilters=1.5.0=pyhd8ed1ab_0
      - parso=0.8.4=pyhd8ed1ab_0
      - pexpect=4.9.0=pyhd8ed1ab_0
      - pickleshare=0.7.5=py_1003
      - pillow=10.4.0=py312h39b1d8d_0
      - pip=24.0=pyhd8ed1ab_0
      - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
      - platformdirs=4.2.2=pyhd8ed1ab_0
      - prometheus_client=0.20.0=pyhd8ed1ab_0
      - prompt-toolkit=3.0.47=pyha770c72_0
      - prompt_toolkit=3.0.47=hd8ed1ab_0
      - pscript=0.7.7=pyhd8ed1ab_0
      - psutil=6.0.0=py312h7e5086c_0
      - pthread-stubs=0.4=h27ca646_1001
      - ptyprocess=0.7.0=pyhd3deb0d_0
      - pure_eval=0.2.3=pyhd8ed1ab_0
      - pycparser=2.22=pyhd8ed1ab_0
      - pyerfa=2.0.1.4=py312hbebd99a_1
      - pygments=2.18.0=pyhd8ed1ab_0
      - pyobjc-core=10.3.1=py312hbb55c70_0
      - pyobjc-framework-cocoa=10.3.1=py312hbb55c70_0
      - pyparsing=3.1.2=pyhd8ed1ab_0
      - pysocks=1.7.1=pyha2e5f31_6
      - python=3.12.4=h30c5eda_0_cpython
      - python-dateutil=2.9.0=pyhd8ed1ab_0
      - python-fastjsonschema=2.20.0=pyhd8ed1ab_0
      - python-json-logger=2.0.7=pyhd8ed1ab_0
      - python-tzdata=2024.1=pyhd8ed1ab_0
      - python_abi=3.12=4_cp312
      - pythreejs=2.4.2=pyh1d7be83_0
      - pytz=2024.1=pyhd8ed1ab_0
      - pyyaml=6.0.1=py312h02f2b3b_1
      - pyzmq=26.0.3=py312hfa13136_0
      - qhull=2020.2=h420ef59_5
      - qtconsole-base=5.5.2=pyha770c72_0
      - qtpy=2.4.1=pyhd8ed1ab_0
      - readline=8.2=h92ec313_1
      - referencing=0.35.1=pyhd8ed1ab_0
      - requests=2.32.3=pyhd8ed1ab_0
      - rfc3339-validator=0.1.4=pyhd8ed1ab_0
      - rfc3986-validator=0.1.1=pyh9f0ad1d_0
      - rich=13.7.1=pyhd8ed1ab_0
      - rpds-py=0.19.0=py312h552d48e_0
      - send2trash=1.8.3=pyh31c8845_0
      - setuptools=71.0.4=pyhd8ed1ab_0
      - shellingham=1.5.4=pyhd8ed1ab_0
      - six=1.16.0=pyh6c4a22f_0
      - sniffio=1.3.1=pyhd8ed1ab_0
      - soupsieve=2.5=pyhd8ed1ab_1
      - stack_data=0.6.2=pyhd8ed1ab_0
      - terminado=0.18.1=pyh31c8845_0
      - tinycss2=1.3.0=pyhd8ed1ab_0
      - tk=8.6.13=h5083fa2_1
      - tomli=2.0.1=pyhd8ed1ab_0
      - tornado=6.4.1=py312h7e5086c_0
      - traitlets=5.14.3=pyhd8ed1ab_0
      - traittypes=0.2.1=pyh9f0ad1d_2
      - typer=0.12.3=pyhd8ed1ab_0
      - typer-slim=0.12.3=pyhd8ed1ab_0
      - typer-slim-standard=0.12.3=hd8ed1ab_0
      - types-python-dateutil=2.9.0.20240316=pyhd8ed1ab_0
      - typing-extensions=4.12.2=hd8ed1ab_0
      - typing_extensions=4.12.2=pyha770c72_0
      - typing_utils=0.1.0=pyhd8ed1ab_0
      - tzdata=2024a=h0c530f3_0
      - uri-template=1.3.0=pyhd8ed1ab_0
      - urllib3=2.2.2=pyhd8ed1ab_1
      - voici=0.6.1=pyhd8ed1ab_0
      - voici_core=0.6.1=pyhd8ed1ab_0
      - voila=0.5.7=pyhd8ed1ab_1
      - wcwidth=0.2.13=pyhd8ed1ab_0
      - webcolors=24.6.0=pyhd8ed1ab_0
      - webencodings=0.5.1=pyhd8ed1ab_2
      - websocket-client=1.8.0=pyhd8ed1ab_0
      - websockets=12.0=py312he37b823_0
      - wheel=0.43.0=pyhd8ed1ab_1
      - widgetsnbextension=4.0.11=pyhd8ed1ab_0
      - xorg-libxau=1.0.11=hb547adb_0
      - xorg-libxdmcp=1.1.3=h27ca646_0
      - xz=5.2.6=h57fd34a_0
      - yaml=0.2.5=h3422bc3_2
      - zeromq=4.3.5=hcc0f68c_4
      - zipp=3.19.2=pyhd8ed1ab_0
      - zstandard=0.23.0=py312h721a963_0
      - zstd=1.5.6=hb46c0d2_0
    prefix: /Users/_username_/miniforge3/envs/test_bqplot_voici
Browser Output The following messages appear in the Javascript Console linked to `python.js:8`:
ERROR: received bad message: No such comm registered: ce4c666c-9c57-4620-8bce-9a00befc2777
xpython.js:8 Message type: comm_msg

If using JupyterLab

Installed Labextensions
JupyterLab v4.2.4
/Users/juan/miniforge3/envs/test_bqplot_voici/share/jupyter/labextensions
        jupyterlab_pygments v0.3.0 enabled OK (python, jupyterlab_pygments)
        bqplot v0.5.44 enabled  X (python, bqplot)
        jupyterlab-datawidgets v7.1.2 enabled OK
        jupyter-threejs v2.4.1 enabled OK (python, pythreejs)
        ipysheet v0.7.0 enabled  X (python, ipysheet)
        @jupyter-notebook/lab-extension v7.2.1 enabled OK
        @voila-dashboards/jupyterlab-preview v2.3.7 enabled OK (python, voila)
        @jupyter-widgets/jupyterlab-manager v5.0.11 enabled OK (python, jupyterlab_widgets)
        @jupyterlite/xeus v0.1.9 enabled OK (python, jupyterlite_xeus)

   The following extensions may be outdated or specify dependencies that are incompatible with the current version of jupyterlab:
        bqplot
        ipysheet

   If you are a user, check if an update is available for these packages.
   If you are a developer, re-run with `--verbose` flag for more details.

Other labextensions (built into JupyterLab)
   app dir: /Users/juan/miniforge3/envs/test_bqplot_voici/share/jupyter/lab
lhegstrom commented 3 days ago

Any updates or thoughts on this?

I ran into a nearly identical error when using toggle buttons to control a matplotlib plot. It works perfectly in a normal ipynb as well as with voila. But, does not work after compiling(?not sure if that's technically correct) to a voici project. Weirdly - every other widget works as expected when attaching observers -- it's only these toggle boxes that seem to be not attaching.

Browser console output attached:

Screenshot 2024-09-03 at 14 01 52
martinRenou commented 3 days ago

@jtpio looking at the traceback here, could it be related to the coincident error we had?

jtpio commented 3 days ago

@jtpio looking at the traceback here, could it be related to the coincident error we had?

It is indeed the same error message as originally reported in https://github.com/jupyterlite/jupyterlite/issues/1424. Although not sure if it's just noise, there is another error coming from xpython.js it seems.