PEP 771: Default Extras for Python Software Packages (Round 2)

Hi Paul,

Thanks for the thoughtful response. We are in sync that we want to work toward a good solution for all parties.

I haven’t read all of the responses since yesterday but I will do my best to explain my earlier comment re: “nice to have” dependencies.

I’m going to use napari as an example as it is cited in the PEP.

napari users: Users are typically bioscience researchers (and sometimes geoscience) who need n-dimensional visualization (such as researching cancer cells and layers). Some are computational scientists who have familiarity in using command line tools and programming. Another group are bench scientists who typically are using napari as an application, and they are not experienced with the command line or programming.

Ways napari is used: Library. Application. Application with plugins. Plugins are napari written and community developed.

Link to current optional dependencies: napari/pyproject.toml at e845801ec8dcb54909eaaf616c90b4412f30ec4f · napari/napari · GitHub

Tool expectations of users: Users will use pip, conda, uv, and pixi to install the library and application. We do have an application bundle as well but it is less well maintained (developer time limitations).

OS support and GPUs: Windows is frequently used by bench scientists. Mac and Linux are also used. GPUs are typically used by all.

Recent release note: Gives a sense of the complexity of the project. Release 0.6.0 · napari/napari · GitHub

Our explanation of installation: How to install napari — napari and
Choosing a different Qt backend We currently recommend pip install napari[all]. [all] currently is an optional dependency that installs napari, pyqt5, and a limited set of optional dependencies. Installing as pip install napari would not provide the user with Qt.

tldr;
Suffice it to say, that there is a lot of complexity and permutations with OS/GPU/Qt/Python versions. My hope is that we can continue to improve the experience for users and maintainers as well as packaging tool creators. Having standards is helping. I personally view this PEP (in it’s current or future form) as a way to help reduce complexity. (As an aside, I am hopeful that wheel-next and variants will help as well.)

3 Likes