Move Jupyter UI and glTF I/O dependencies to optional extras in wheels
Hi Kaolin team 👋 First off, thank you for your work on Kaolin — it's a fantastic resource for 3D deep learning.
We've noticed that the prebuilt wheels pull in several non-essential packages. To help reduce installation footprint and avoid dependency conflicts in production CUDA environments, would it be possible to move optional functionality into extras and gate their imports? Examples include:
- Jupyter/UI: ipycanvas, ipyevents, entrypoints (via jupyter-client)
- glTF I/O: pygltflib, dataclasses-json, typing-inspect
✅ Suggested Solution It would be great if these were moved to optional extras in the setup.py. For instance:
extras_require={
"jupyter": ["ipycanvas", "ipyevents", "jupyter-client"],
...
}
This way, users could install only what they need:
pip install kaolin[jupyter]
🙏 Why This Helps
- Smaller, faster installs in headless/CUDA servers
- Fewer dependency conflicts with enterprise environments
Thanks again 🙌
Hi @petrav-canva In theory I understand how this could help, in practice for us that means I need to build wheels for every optional tag, and then test every single of those wheels. As a reference, we generated 272 wheels for v0.18.0, making it 3 tags (jupyter / IO / All), would make it 816.
If anything I wish to reduce the number of wheels 😂
I'm willing to explore alternative to solve your problem tho.
Another solution for you is to install kaolin with --no-dependencies argument, and then install the dependencies that you want manually (although there is a chance that kaolin might throw some ImportError).
FYI: Using "extras" won't increase the number of wheels you need to build or distribute. Extras are not part of the wheel tags.
Extras are used at installation time (not build time) to activate transitive dependencies.
@groodt Thanks for info, I would still need to create multiple docker image for each tag to get tested but that is indeed better than building all Kaolin multiple times. I'll explore but I'm afraid that might be quite some work on our CI scripts.
Stale issue, please reopen if still relevant