EMAworkbench icon indicating copy to clipboard operation
EMAworkbench copied to clipboard

Install dependencies based on core, dev, doc or test use case

Open EwoutH opened this issue 2 years ago • 3 comments

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.

EwoutH avatar May 18 '22 10:05 EwoutH

a PR on this would be very welcome

quaquel avatar May 18 '22 11:05 quaquel

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:

  1. The main setup.py file
  2. A separate setup.cfg file
  3. A seperate pyproject.toml file
  4. 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.

EwoutH avatar May 18 '22 13:05 EwoutH

it seems the pyproject.toml is the new standard, so my hunch would be to got with that to also future proof the solution.

quaquel avatar May 18 '22 13:05 quaquel