EMAworkbench
EMAworkbench copied to clipboard
Install dependencies based on core, dev, doc or test use case
Currently everything in requirements.txt is always installed no matter the use case. For essential usage (core) a lot less dependencies are needed than for development or docs generation. sphinx and nbsphinx (and pyscaffold?) are for example only needed when building docs. The jupyter and ipython stuff is also only needed in some cases.
I was thinking of using Extras as defined in PEP 508.
Suggested options for PyPI:
-
pip install ema-workbench
installs the ema-workbench and core dependencies (numpy etc.) -
pip install ema-workbench[jupyter]
installs all the Jupyter stuff to run in notebooks including parallel -
pip install ema-workbench[dev]
installs everything needed for development and testing -
pip install ema-workbench[docs]
installs everything for doc generation -
pip install ema-workbench[all]
installs a superset of all of the above.
Combinations can be used, like pip install ema-workbench[jupyter,dev]
.
I need a bit of time to sort out how to structure all this, but if agreed this is useful I can create a draft PR.
a PR on this would be very welcome
I found a project that has quite a nice setup, pyimgui. Most of the stuff is in the setup.py
and a bit in pyproject.toml
.
What would you prefer, dependencies defined in:
- The main
setup.py
file - A separate
setup.cfg
file - A seperate
pyproject.toml
file - Separate files like
dev-requirements.txt
,jupyter-requirements.txt
, etc.
I think a separate setup.cfg
is the most clean. It's also an old method however, pyproject.toml
seems the new standard according to PEP 518 and PEP 621.
See also: setuptools: Optional dependencies.
it seems the pyproject.toml
is the new standard, so my hunch would be to got with that to also future proof the solution.