mctools / ncrystal

NCrystal : a library for thermal neutron transport in crystals and other materials
https://mctools.github.io/ncrystal/
Other
41 stars 18 forks source link

Add optional dependencies to pip package #208

Open damskii9992 opened 1 day ago

damskii9992 commented 1 day ago

Installing Ncrystal using pip does not install all of the dependencies necessary to run all the commands of Ncrystal. Users have to try and run the commands to get the errors telling them which packages they need to install in addition to Ncrystal. When users then install these packages they automatically get the newest version which might be broken in Ncrystal. In other words, users have to start debugging Ncrystal to use certain functionalities of Ncrystal.

This problem can be circumvented by having sets of optional pip dependencies with possibly pinned version numbers depending on the functionality in question. Possible suggestions for optional sets are: plotting(matplotlib), composer(spglib), cif and so on. Possibly with an all or dev set containing all the optional dependencies.

An alternative is to simply default to include all dependencies, but that might lead to bloated installations and possible dependency conflicts breaking all of Ncrystal.

tkittel commented 1 day ago

Thanks for the issue and discussion today @damskii9992 ! Indeed, this sounds like a good idea - at least for the PyPI packages.

For my own reference, here are some quick for categories and what they would imply today (in addition to numpy which is always there for convenience, since it is so ubiquitous):