voila-dashboards / voici

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

`voici build --help` command fails #130

Open sapristi opened 2 weeks ago

sapristi commented 2 weeks ago

Description

When running voici build --help, the command fails with the error KeyError: 'VoilaConfiguration' (see full output below)/

Reproduce

Context

Troubleshoot Output
❯ pdm run jupyter troubleshoot
$PATH:
    /home/sapristi/dev/tests_voici/.venv/bin
    /home/sapristi/.opam/alife/bin
    /home/sapristi/.local/share/pnpm
    /home/sapristi/.miniforge3/bin
    /home/sapristi/.cargo/bin
    /home/sapristi/.local/share/pnpm
    /home/sapristi/.opam/alife/bin
    /home/sapristi/.local/bin
    /usr/local/bin
    /usr/bin
    /bin
    /usr/local/sbin
    /usr/lib/jvm/default/bin
    /usr/bin/site_perl
    /usr/bin/vendor_perl
    /usr/bin/core_perl
    /usr/lib/rustup/bin
    /var/lib/snapd/snap/bin
    /home/sapristi/dev/tests_voici/.venv/bin

sys.path:
    /home/sapristi/dev/tests_voici/.venv/bin
    /usr/lib/python312.zip
    /usr/lib/python3.12
    /usr/lib/python3.12/lib-dynload
    /home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages

sys.executable:
    /home/sapristi/dev/tests_voici/.venv/bin/python

sys.version:
    3.12.5 (main, Aug  9 2024, 08:20:41) [GCC 14.2.1 20240805]

platform.platform():
    Linux-5.15.167-1-MANJARO-x86_64-with-glibc2.40

which -a jupyter:
    /home/sapristi/dev/tests_voici/.venv/bin/jupyter
    /home/sapristi/dev/tests_voici/.venv/bin/jupyter

pip list:
    Package                   Version
    ------------------------- --------------
    anyio                     4.6.0
    appdirs                   1.4.4
    argon2-cffi               23.1.0
    argon2-cffi-bindings      21.2.0
    arrow                     1.3.0
    asttokens                 2.4.1
    attrs                     24.2.0
    babel                     2.16.0
    beautifulsoup4            4.12.3
    bleach                    6.1.0
    certifi                   2024.8.30
    cffi                      1.17.1
    charset-normalizer        3.3.2
    click                     8.1.7
    cloudpickle               3.0.0
    debugpy                   1.8.6
    decorator                 5.1.1
    defusedxml                0.7.1
    doit                      0.36.0
    empack                    4.0.2
    executing                 2.1.0
    fastjsonschema            2.20.0
    fqdn                      1.5.1
    idna                      3.10
    importlib_metadata        8.5.0
    ipython                   8.28.0
    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_client            8.6.3
    jupyter_core              5.7.2
    jupyter-events            0.10.0
    jupyter_server            2.14.2
    jupyter_server_terminals  0.5.3
    jupyterlab_pygments       0.3.0
    jupyterlab_server         2.27.3
    jupyterlite-core          0.4.2
    jupyterlite_xeus          2.0.0
    markdown-it-py            3.0.0
    MarkupSafe                2.1.5
    matplotlib-inline         0.1.7
    mdurl                     0.1.2
    mistune                   3.0.2
    nbclient                  0.10.0
    nbconvert                 7.16.4
    nbformat                  5.10.4
    networkx                  3.3
    overrides                 7.7.0
    packaging                 24.1
    pandocfilters             1.5.1
    parso                     0.8.4
    pexpect                   4.9.0
    pip                       24.2
    platformdirs              4.3.6
    prometheus_client         0.21.0
    prompt_toolkit            3.0.48
    ptyprocess                0.7.0
    pure_eval                 0.2.3
    pycparser                 2.22
    Pygments                  2.18.0
    python-dateutil           2.9.0.post0
    python-json-logger        2.0.7
    PyYAML                    6.0.2
    pyzmq                     26.2.0
    referencing               0.35.1
    requests                  2.32.3
    rfc3339-validator         0.1.4
    rfc3986-validator         0.1.1
    rich                      13.9.2
    rpds-py                   0.20.0
    Send2Trash                1.8.3
    shellingham               1.5.4
    six                       1.16.0
    sniffio                   1.3.1
    soupsieve                 2.6
    stack-data                0.6.3
    terminado                 0.18.1
    tinycss2                  1.3.0
    tornado                   6.4.1
    traitlets                 5.14.3
    typer                     0.12.5
    types-python-dateutil     2.9.0.20241003
    typing_extensions         4.12.2
    uri-template              1.3.0
    urllib3                   2.2.3
    voici                     0.7.1
    voici-core                0.7.1
    voila                     0.5.7
    wcwidth                   0.2.13
    webcolors                 24.8.0
    webencodings              0.5.1
    websocket-client          1.8.0
    websockets                13.1
    xeus-python               0.15.12
    xeus-python-shell         0.5.0
    zipp                      3.20.2

conda list:
    # packages in environment at /home/sapristi/.miniforge3:
    #
    # Name                    Version                   Build  Channel
    _libgcc_mutex             0.1                 conda_forge    conda-forge
    _openmp_mutex             4.5                       2_gnu    conda-forge
    archspec                  0.2.3              pyhd8ed1ab_0    conda-forge
    boltons                   24.0.0             pyhd8ed1ab_0    conda-forge
    brotli-python             1.1.0           py312h2ec8cdc_2    conda-forge
    bzip2                     1.0.8                h4bc722e_7    conda-forge
    c-ares                    1.32.3               h4bc722e_0    conda-forge
    ca-certificates           2024.8.30            hbcca054_0    conda-forge
    certifi                   2024.8.30          pyhd8ed1ab_0    conda-forge
    cffi                      1.17.1          py312h06ac9bb_0    conda-forge
    charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
    colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
    conda                     24.7.1          py312h7900ff3_0    conda-forge
    conda-libmamba-solver     24.7.0             pyhd8ed1ab_0    conda-forge
    conda-package-handling    2.3.0              pyh7900ff3_0    conda-forge
    conda-package-streaming   0.10.0             pyhd8ed1ab_0    conda-forge
    distro                    1.9.0              pyhd8ed1ab_0    conda-forge
    fmt                       10.2.1               h00ab1b0_0    conda-forge
    frozendict                2.4.4           py312h66e93f0_1    conda-forge
    h2                        4.1.0              pyhd8ed1ab_0    conda-forge
    hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
    hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
    icu                       75.1                 he02047a_0    conda-forge
    idna                      3.10               pyhd8ed1ab_0    conda-forge
    jsonpatch                 1.33               pyhd8ed1ab_0    conda-forge
    jsonpointer               3.0.0           py312h7900ff3_1    conda-forge
    keyutils                  1.6.1                h166bdaf_0    conda-forge
    krb5                      1.21.3               h659f571_0    conda-forge
    ld_impl_linux-64          2.40                 hf3520f5_7    conda-forge
    libarchive                3.7.4                hfca40fe_0    conda-forge
    libcurl                   8.10.1               hbbe4b11_0    conda-forge
    libedit                   3.1.20191231         he28a2e2_2    conda-forge
    libev                     4.33                 hd590300_2    conda-forge
    libexpat                  2.6.3                h5888daf_0    conda-forge
    libffi                    3.4.2                h7f98852_5    conda-forge
    libgcc                    14.1.0               h77fa898_1    conda-forge
    libgcc-ng                 14.1.0               h69a702a_1    conda-forge
    libgomp                   14.1.0               h77fa898_1    conda-forge
    libiconv                  1.17                 hd590300_2    conda-forge
    libmamba                  1.5.9                h4cc3d14_0    conda-forge
    libmambapy                1.5.9           py312h7fb9e8e_0    conda-forge
    libnghttp2                1.58.0               h47da74e_1    conda-forge
    libnsl                    2.0.1                hd590300_0    conda-forge
    libsolv                   0.7.30               h3509ff9_0    conda-forge
    libsqlite                 3.46.1               hadc24fc_0    conda-forge
    libssh2                   1.11.0               h0841786_0    conda-forge
    libstdcxx                 14.1.0               hc0a3c3a_1    conda-forge
    libstdcxx-ng              14.1.0               h4852527_1    conda-forge
    libuuid                   2.38.1               h0b41bf4_0    conda-forge
    libxcrypt                 4.4.36               hd590300_1    conda-forge
    libxml2                   2.12.7               he7c6b58_4    conda-forge
    libzlib                   1.3.1                h4ab18f5_1    conda-forge
    lz4-c                     1.9.4                hcb278e6_0    conda-forge
    lzo                       2.10              hd590300_1001    conda-forge
    mamba                     1.5.9           py312h9460a1c_0    conda-forge
    menuinst                  2.1.2           py312h7900ff3_1    conda-forge
    ncurses                   6.5                  he02047a_1    conda-forge
    openssl                   3.3.2                hb9d3cd8_0    conda-forge
    packaging                 24.1               pyhd8ed1ab_0    conda-forge
    pip                       24.2               pyh8b19718_1    conda-forge
    platformdirs              4.3.6              pyhd8ed1ab_0    conda-forge
    pluggy                    1.5.0              pyhd8ed1ab_0    conda-forge
    pybind11-abi              4                    hd8ed1ab_3    conda-forge
    pycosat                   0.6.6           py312h98912ed_0    conda-forge
    pycparser                 2.22               pyhd8ed1ab_0    conda-forge
    pysocks                   1.7.1              pyha2e5f31_6    conda-forge
    python                    3.12.6          hc5c86c4_1_cpython    conda-forge
    python_abi                3.12                    5_cp312    conda-forge
    readline                  8.2                  h8228510_1    conda-forge
    reproc                    14.2.4.post0         hd590300_1    conda-forge
    reproc-cpp                14.2.4.post0         h59595ed_1    conda-forge
    requests                  2.32.3             pyhd8ed1ab_0    conda-forge
    ruamel.yaml               0.18.6          py312h98912ed_0    conda-forge
    ruamel.yaml.clib          0.2.8           py312h98912ed_0    conda-forge
    setuptools                74.1.2             pyhd8ed1ab_0    conda-forge
    tk                        8.6.13          noxft_h4845f30_101    conda-forge
    tqdm                      4.66.5             pyhd8ed1ab_0    conda-forge
    truststore                0.9.2              pyhd8ed1ab_0    conda-forge
    tzdata                    2024a                h8827d51_1    conda-forge
    urllib3                   2.2.3              pyhd8ed1ab_0    conda-forge
    wheel                     0.44.0             pyhd8ed1ab_0    conda-forge
    xz                        5.2.6                h166bdaf_0    conda-forge
    yaml-cpp                  0.8.0                h59595ed_0    conda-forge
    zstandard                 0.23.0          py312hef9b889_1    conda-forge
    zstd                      1.5.6                ha6fb4c9_0    conda-forge

conda env:
    name: base
    channels:
     - conda-forge
    dependencies:
     - _libgcc_mutex=0.1=conda_forge
     - _openmp_mutex=4.5=2_gnu
     - archspec=0.2.3=pyhd8ed1ab_0
     - boltons=24.0.0=pyhd8ed1ab_0
     - brotli-python=1.1.0=py312h2ec8cdc_2
     - bzip2=1.0.8=h4bc722e_7
     - c-ares=1.32.3=h4bc722e_0
     - ca-certificates=2024.8.30=hbcca054_0
     - certifi=2024.8.30=pyhd8ed1ab_0
     - cffi=1.17.1=py312h06ac9bb_0
     - charset-normalizer=3.3.2=pyhd8ed1ab_0
     - colorama=0.4.6=pyhd8ed1ab_0
     - conda=24.7.1=py312h7900ff3_0
     - conda-libmamba-solver=24.7.0=pyhd8ed1ab_0
     - conda-package-handling=2.3.0=pyh7900ff3_0
     - conda-package-streaming=0.10.0=pyhd8ed1ab_0
     - distro=1.9.0=pyhd8ed1ab_0
     - fmt=10.2.1=h00ab1b0_0
     - frozendict=2.4.4=py312h66e93f0_1
     - h2=4.1.0=pyhd8ed1ab_0
     - hpack=4.0.0=pyh9f0ad1d_0
     - hyperframe=6.0.1=pyhd8ed1ab_0
     - icu=75.1=he02047a_0
     - idna=3.10=pyhd8ed1ab_0
     - jsonpatch=1.33=pyhd8ed1ab_0
     - jsonpointer=3.0.0=py312h7900ff3_1
     - keyutils=1.6.1=h166bdaf_0
     - krb5=1.21.3=h659f571_0
     - ld_impl_linux-64=2.40=hf3520f5_7
     - libarchive=3.7.4=hfca40fe_0
     - libcurl=8.10.1=hbbe4b11_0
     - libedit=3.1.20191231=he28a2e2_2
     - libev=4.33=hd590300_2
     - libexpat=2.6.3=h5888daf_0
     - libffi=3.4.2=h7f98852_5
     - libgcc=14.1.0=h77fa898_1
     - libgcc-ng=14.1.0=h69a702a_1
     - libgomp=14.1.0=h77fa898_1
     - libiconv=1.17=hd590300_2
     - libmamba=1.5.9=h4cc3d14_0
     - libmambapy=1.5.9=py312h7fb9e8e_0
     - libnghttp2=1.58.0=h47da74e_1
     - libnsl=2.0.1=hd590300_0
     - libsolv=0.7.30=h3509ff9_0
     - libsqlite=3.46.1=hadc24fc_0
     - libssh2=1.11.0=h0841786_0
     - libstdcxx=14.1.0=hc0a3c3a_1
     - libstdcxx-ng=14.1.0=h4852527_1
     - libuuid=2.38.1=h0b41bf4_0
     - libxcrypt=4.4.36=hd590300_1
     - libxml2=2.12.7=he7c6b58_4
     - libzlib=1.3.1=h4ab18f5_1
     - lz4-c=1.9.4=hcb278e6_0
     - lzo=2.10=hd590300_1001
     - mamba=1.5.9=py312h9460a1c_0
     - menuinst=2.1.2=py312h7900ff3_1
     - ncurses=6.5=he02047a_1
     - openssl=3.3.2=hb9d3cd8_0
     - packaging=24.1=pyhd8ed1ab_0
     - pip=24.2=pyh8b19718_1
     - platformdirs=4.3.6=pyhd8ed1ab_0
     - pluggy=1.5.0=pyhd8ed1ab_0
     - pybind11-abi=4=hd8ed1ab_3
     - pycosat=0.6.6=py312h98912ed_0
     - pycparser=2.22=pyhd8ed1ab_0
     - pysocks=1.7.1=pyha2e5f31_6
     - python=3.12.6=hc5c86c4_1_cpython
     - python_abi=3.12=5_cp312
     - readline=8.2=h8228510_1
     - reproc=14.2.4.post0=hd590300_1
     - reproc-cpp=14.2.4.post0=h59595ed_1
     - requests=2.32.3=pyhd8ed1ab_0
     - ruamel.yaml=0.18.6=py312h98912ed_0
     - ruamel.yaml.clib=0.2.8=py312h98912ed_0
     - setuptools=74.1.2=pyhd8ed1ab_0
     - tk=8.6.13=noxft_h4845f30_101
     - tqdm=4.66.5=pyhd8ed1ab_0
     - truststore=0.9.2=pyhd8ed1ab_0
     - tzdata=2024a=h8827d51_1
     - urllib3=2.2.3=pyhd8ed1ab_0
     - wheel=0.44.0=pyhd8ed1ab_0
     - xz=5.2.6=h166bdaf_0
     - yaml-cpp=0.8.0=h59595ed_0
     - zstandard=0.23.0=py312hef9b889_1
     - zstd=1.5.6=ha6fb4c9_0
    prefix: /home/sapristi/.miniforge3
Command Line Output
> voici build --help
[VoiciBuildApp] ERROR | Failed collecting help-message for alias 'show_tracebacks', due to: 'VoilaConfiguration'
Traceback (most recent call last):
  File "/home/sapristi/dev/tests_voici/.venv/bin/voici", line 8, in 
    sys.exit(main())
             ^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/jupyter_core/application.py", line 283, in launch_instance
    super().launch_instance(argv=argv, **kwargs)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
    app.initialize(argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/voici_core/app.py", line 122, in initialize
    super().initialize(argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
    return method(app, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/jupyter_core/application.py", line 252, in initialize
    self.parse_command_line(argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
    return method(app, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 857, in parse_command_line
    return self.initialize_subcommand(subc, subargv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
    return method(app, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 721, in initialize_subcommand
    self.subapp.initialize(argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
    return method(app, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/jupyter_core/application.py", line 252, in initialize
    self.parse_command_line(argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
    return method(app, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 869, in parse_command_line
    self.print_help("--help-all" in interpreted_argv)
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 633, in print_help
    print("\n".join(self.emit_help(classes=classes)))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 642, in emit_help
    yield from self.emit_options_help()
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/traitlets/config/application.py", line 595, in emit_options_help
    yield from self.emit_alias_help()
  File "/home/sapristi/dev/tests_voici/.venv/lib/python3.12/site-packages/jupyterlite_core/app.py", line 131, in emit_alias_help
    cls = classdict[classname]
          ~~~~~~~~~^^^^^^^^^^^
KeyError: 'VoilaConfiguration'
martinRenou commented 2 weeks ago

Thanks for opening an issue!

sapristi commented 2 weeks ago

Thank you for this awesome project :D

sapristi commented 2 weeks ago

Notebook is now published, which is great :tada: https://sapristi.github.io/notebooks/voici/render/delaunay.html?