Kitware / trame-jupyter-extension

Jupyter extension for trame client/server communication
BSD 3-Clause "New" or "Revised" License
10 stars 0 forks source link

Broken with the jupyter base-botebook Docker image #6

Open banesullivan opened 10 months ago

banesullivan commented 10 months ago

I can't quite pin down the reason this is failing, but using the jupyter/base-notebook:python-3.10 base docker image, the examples here fail to work with a JS console error of:

trame::jupyter-comm::close FIXME
chunk-vendors.74a8bb6a.js:1 Missing header for received binary message

Originally found in https://github.com/pyvista/pyvista/pull/5288

To reproduce, use this Dockerfile:

FROM jupyter/base-notebook:python-3.10
RUN pip install trame trame_vtk trame_vuetify trame_jupyter_extension

Then run the example: examples/test_trame_jupyter_comm.ipynb

banesullivan commented 10 months ago

If instead I build my own JupyterLab docker image, all works fine:

FROM python:3.11-slim

# Set non-root user
ARG NB_USER=jovyan
ARG NB_UID=1000
ENV USER ${NB_USER}
ENV NB_UID ${NB_UID}
ENV HOME /home/${NB_USER}
ENV PATH="/home/${NB_USER}/.local/bin:$PATH"
RUN adduser --disabled-password \
    --gecos "Default user" \
    --uid ${NB_UID} \
    ${NB_USER}
WORKDIR ${HOME}
USER ${NB_USER}

RUN pip install trame trame_vtk trame_vuetify trame_jupyter_extension

EXPOSE 8888
ENTRYPOINT [ "jupyter", "lab" ]
CMD ["--port=8888", "--no-browser", "--ip=0.0.0.0"]
jourdain commented 10 months ago

FYI, it should be pip install trame trame-vtk trame-vuetify trame_jupyter_extension

banesullivan commented 10 months ago

I'm about 90% sure it doesn't matter as pip will resolve - or _ as the same when installing from PyPI. Is there an edge case I'm missing? I'm searching around but can't find a PEP outlining this...

if so, I feel like the distribution name for this package should be changed to match the convention set by the rest of the Trame ecosystem

banesullivan commented 10 months ago

Also FWIW, PyPI shows it as:

Screenshot 2023-12-05 at 7 50 33 PM

and if we look at the wheel files on PyPI for a package like trame-vtk the distname is converted to underscores: https://pypi.org/project/trame-vtk/#files

Screenshot 2023-12-05 at 7 51 02 PM
jourdain commented 10 months ago

Yes, I got confused from the generated readme... We should use -.

banesullivan commented 10 months ago

Maybe this provides some insight? I pip freeze in both images and this is the diff:

```diff 3,5c3,6 < anyio==4.1.0 < argon2-cffi==23.1.0 < argon2-cffi-bindings==21.2.0 --- > alembic @ file:///home/conda/feedstock_root/build_artifacts/alembic_1684377053240/work > anyio @ file:///home/conda/feedstock_root/build_artifacts/anyio_1666191106763/work/dist > argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1640817743617/work > argon2-cffi-bindings @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi-bindings_1666850768662/work 7,21c8,36 < asttokens==2.4.1 < async-lru==2.0.4 < attrs==23.1.0 < Babel==2.13.1 < beautifulsoup4==4.12.2 < bleach==6.1.0 < certifi==2023.11.17 < cffi==1.16.0 < charset-normalizer==3.3.2 < comm==0.2.0 < debugpy==1.8.0 < decorator==5.1.1 < defusedxml==0.7.1 < executing==2.0.1 < fastjsonschema==2.19.0 --- > asttokens @ file:///home/conda/feedstock_root/build_artifacts/asttokens_1670263926556/work > async-generator==1.10 > async-lru @ file:///home/conda/feedstock_root/build_artifacts/async-lru_1676985229141/work > async-timeout==4.0.3 > attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1683424013410/work > Babel @ file:///home/conda/feedstock_root/build_artifacts/babel_1677767029043/work > backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work > backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1618230623929/work > beautifulsoup4 @ file:///home/conda/feedstock_root/build_artifacts/beautifulsoup4_1680888073205/work > bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1674535352125/work > blinker @ file:///home/conda/feedstock_root/build_artifacts/blinker_1681349778161/work > boltons @ file:///home/conda/feedstock_root/build_artifacts/boltons_1677499911949/work > certifi==2023.5.7 > certipy==0.1.3 > cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1671179353105/work > charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1678108872112/work > colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1666700638685/work > comm @ file:///home/conda/feedstock_root/build_artifacts/comm_1679481329611/work > conda==23.3.1 > conda-package-handling @ file:///home/conda/feedstock_root/build_artifacts/conda-package-handling_1669907009957/work > conda_package_streaming @ file:///home/conda/feedstock_root/build_artifacts/conda-package-streaming_1685101166527/work > cryptography @ file:///home/conda/feedstock_root/build_artifacts/cryptography-split_1681508581703/work > debugpy @ file:///home/conda/feedstock_root/build_artifacts/debugpy_1680755465990/work > decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work > defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work > entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work > executing @ file:///home/conda/feedstock_root/build_artifacts/executing_1667317341051/work > fastjsonschema @ file:///home/conda/feedstock_root/build_artifacts/python-fastjsonschema_1684761244589/work/dist > flit_core @ file:///home/conda/feedstock_root/build_artifacts/flit-core_1684084314667/work/source/flit_core 24,26c39,45 < idna==3.6 < ipykernel==6.27.1 < ipython==8.18.1 --- > greenlet @ file:///home/conda/feedstock_root/build_artifacts/greenlet_1684082927543/work > idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1663625384323/work > importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1682176699712/work > importlib-resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1676919000169/work > ipykernel @ file:///home/conda/feedstock_root/build_artifacts/ipykernel_1684162692319/work > ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1683225895562/work > ipython-genutils==0.2.0 28,45c47,69 < jedi==0.19.1 < Jinja2==3.1.2 < json5==0.9.14 < jsonpointer==2.4 < jsonschema==4.20.0 < jsonschema-specifications==2023.11.2 < jupyter-events==0.9.0 < jupyter-lsp==2.2.1 < jupyter_client==8.6.0 < jupyter_core==5.5.0 < jupyter_server==2.12.0 < jupyter_server_terminals==0.4.4 < jupyterlab==4.0.9 < jupyterlab_pygments==0.3.0 < jupyterlab_server==2.25.2 < MarkupSafe==2.1.3 < matplotlib-inline==0.1.6 < mistune==3.0.2 --- > jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1669134318875/work > Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1654302431367/work > json5 @ file:///home/conda/feedstock_root/build_artifacts/json5_1600692310011/work > jsonpatch @ file:///home/conda/feedstock_root/build_artifacts/jsonpatch_1632759296524/work > jsonpointer==2.0 > jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema-meta_1669810440410/work > jupyter-events @ file:///home/conda/feedstock_root/build_artifacts/jupyter_events_1673559782596/work > jupyter-lsp @ file:///home/conda/feedstock_root/build_artifacts/jupyter-lsp-meta_1682370147108/work/jupyter-lsp > jupyter-telemetry @ file:///home/conda/feedstock_root/build_artifacts/jupyter_telemetry_1605173804246/work > jupyter_client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1681432441054/work > jupyter_core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1678994169527/work > jupyter_server @ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_1685051725700/work > jupyter_server_terminals @ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_terminals_1673491454549/work > jupyterhub @ file:///home/conda/feedstock_root/build_artifacts/jupyterhub-feedstock_1681987563299/work > jupyterlab @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_1685445186010/work > jupyterlab-pygments @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1649936611996/work > jupyterlab_server @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_server_1681424698040/work > libmambapy @ file:///home/conda/feedstock_root/build_artifacts/mamba-split_1680791035685/work/libmambapy > Mako @ file:///home/conda/feedstock_root/build_artifacts/mako_1668568582731/work > mamba @ file:///home/conda/feedstock_root/build_artifacts/mamba-split_1680791035685/work/mamba > MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1674135787083/work > matplotlib-inline @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-inline_1660814786464/work > mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1675771498296/work 47,82c71,124 < nbclient==0.9.0 < nbconvert==7.12.0 < nbformat==5.9.2 < nest-asyncio==1.5.8 < notebook_shim==0.2.3 < overrides==7.4.0 < packaging==23.2 < pandocfilters==1.5.0 < parso==0.8.3 < pexpect==4.9.0 < platformdirs==4.1.0 < prometheus-client==0.19.0 < prompt-toolkit==3.0.41 < psutil==5.9.6 < ptyprocess==0.7.0 < pure-eval==0.2.2 < pycparser==2.21 < Pygments==2.17.2 < python-dateutil==2.8.2 < python-json-logger==2.0.7 < PyYAML==6.0.1 < pyzmq==25.1.2 < referencing==0.31.1 < requests==2.31.0 < rfc3339-validator==0.1.4 < rfc3986-validator==0.1.1 < rpds-py==0.13.2 < Send2Trash==1.8.2 < six==1.16.0 < sniffio==1.3.0 < soupsieve==2.5 < stack-data==0.6.3 < terminado==0.18.0 < tinycss2==1.2.1 < tornado==6.4 < traitlets==5.14.0 --- > nbclassic @ file:///home/conda/feedstock_root/build_artifacts/nbclassic_1683202081046/work > nbclient @ file:///home/conda/feedstock_root/build_artifacts/nbclient_1684790896106/work > nbconvert @ file:///home/conda/feedstock_root/build_artifacts/nbconvert-meta_1683636231832/work > nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1679336765223/work > nest-asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1664684991461/work > notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1680870634737/work > notebook_shim @ file:///home/conda/feedstock_root/build_artifacts/notebook-shim_1682360583588/work > oauthlib @ file:///home/conda/feedstock_root/build_artifacts/oauthlib_1666056362788/work > overrides @ file:///home/conda/feedstock_root/build_artifacts/overrides_1666057828264/work > packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1681337016113/work > pamela==1.0.0 > pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work > parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1638334955874/work > pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work > pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work > pkgutil_resolve_name @ file:///home/conda/feedstock_root/build_artifacts/pkgutil-resolve-name_1633981968097/work > platformdirs @ file:///home/conda/feedstock_root/build_artifacts/platformdirs_1683850015520/work > pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1667232663820/work > prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1684970902412/work > prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1677600924538/work > psutil @ file:///home/conda/feedstock_root/build_artifacts/psutil_1681775027942/work > ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl > pure-eval @ file:///home/conda/feedstock_root/build_artifacts/pure_eval_1642875951954/work > pycosat @ file:///home/conda/feedstock_root/build_artifacts/pycosat_1666836542287/work > pycparser @ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work > pycurl==7.45.1 > Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1681904169130/work > PyJWT @ file:///home/conda/feedstock_root/build_artifacts/pyjwt_1683676063469/work > pyOpenSSL @ file:///home/conda/feedstock_root/build_artifacts/pyopenssl_1680037383858/work > pyrsistent @ file:///home/conda/feedstock_root/build_artifacts/pyrsistent_1672681463845/work > PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1661604839144/work > python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work > python-json-logger @ file:///home/conda/feedstock_root/build_artifacts/python-json-logger_1677079630776/work > pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1680088766131/work > PyYAML @ file:///home/conda/feedstock_root/build_artifacts/pyyaml_1666772395347/work > pyzmq @ file:///home/conda/feedstock_root/build_artifacts/pyzmq_1679316826707/work > requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1684774241324/work > rfc3339-validator @ file:///home/conda/feedstock_root/build_artifacts/rfc3339-validator_1638811747357/work > rfc3986-validator @ file:///home/conda/feedstock_root/build_artifacts/rfc3986-validator_1598024191506/work > ruamel.yaml @ file:///home/conda/feedstock_root/build_artifacts/ruamel.yaml_1685436008195/work > ruamel.yaml.clib @ file:///home/conda/feedstock_root/build_artifacts/ruamel.yaml.clib_1670412719074/work > Send2Trash @ file:///home/conda/feedstock_root/build_artifacts/send2trash_1682601222253/work > six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work > sniffio @ file:///home/conda/feedstock_root/build_artifacts/sniffio_1662051266223/work > soupsieve @ file:///home/conda/feedstock_root/build_artifacts/soupsieve_1658207591808/work > SQLAlchemy @ file:///home/conda/feedstock_root/build_artifacts/sqlalchemy_1684569061937/work > stack-data @ file:///home/conda/feedstock_root/build_artifacts/stack_data_1669632077133/work > terminado @ file:///home/conda/feedstock_root/build_artifacts/terminado_1670253674810/work > tinycss2 @ file:///home/conda/feedstock_root/build_artifacts/tinycss2_1666100256010/work > tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1644342247877/work > toolz @ file:///home/conda/feedstock_root/build_artifacts/toolz_1657485559105/work > tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1684150054582/work > tqdm @ file:///home/conda/feedstock_root/build_artifacts/tqdm_1677948868469/work > traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1675110562325/work 89a132,133 > typing-utils @ file:///home/conda/feedstock_root/build_artifacts/typing_utils_1622899189314/work > typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1685045523825/work 91,92c135,136 < urllib3==2.1.0 < wcwidth==0.2.12 --- > urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1683161174614/work > wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1673864653149/work 95c139 < websocket-client==1.7.0 --- > websocket-client @ file:///home/conda/feedstock_root/build_artifacts/websocket-client_1684708148666/work 97a142,143 > zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1677313463193/work > zstandard==0.19.0 ```