[Feat] Remove ipykernel and ipywidgets dependency?
Target Use Case
Hi there! At Streamlit, we bring PyDeck in as a dependency because (1) we love it and use it in the streamlit hello app that most of our users see, and (2) we have a couple of Streamlit commands that depend on it (st.map and st.pydeck_chart), and we'd like to make users' lives easier when using those (i.e. no pip install pydeck required).
However, PyDeck brings in a whole lot of dependencies that cause Streamlit installed size to huge, and causes its installation to be slow (important for CI and production deployments).
This is such a big problem for us that we're currently considering removing PyDeck as a Streamlit dependency altogether ☹️
Meanwhile, it's unclear to me why ipykernel and ipywidgets need to be prod dependencies. My assumption is that those deps are there for Jupyter interop. But is it a common pattern for people to pip install pydeck in an environment where they never did a pip install jupyter first? It's very possible I'm missing something here, though...
Proposal
If the above makes sense to you, then I see two possible solutions:
-
Remove ipykernel and ipywidgets from requirements.txt.
In this case, you'd add those to requirements-dev.txt instead.
-
Create a separate package without those deps
For example
pip install pydeckwould continue bringing in the same deps as today, butpip install pydeck-minimalwould forgoipy*deps.
Thanks!
I think this should be solved by https://github.com/visgl/deck.gl/pull/7125
Ooooh that looks great!