Abjad / abjad

Abjad is a Python API for building LilyPond files. Use Abjad to make PDFs of music notation.
https://abjad.github.io
GNU General Public License v3.0
234 stars 41 forks source link

Development dependencies in setup.py #1483

Closed YannickJadoul closed 1 year ago

YannickJadoul commented 1 year ago

I have noticed I'm not the first one to bring it up, but install_requires contains a number of dependencies used for the development of abjad (i.e., Sphinx and extensions, pytest and extensions, isort, black, ...), but unnecessary to simply use the library.

I've found this being addressed and solved in #468, but it seems it was reverted again in #1295 and 3b6d36fcbb0822a6c7c621cee9e4f20b2b2a7c0e. So I was wondering if there was any explicit reason these changes got reverted over the years?

I'm bringing this up because we were considering to depend on abjad for a new Python library we're developing, but then I suddenly noticed my development tools being updated when installing abjad. A few reasons for that:

So, TL;DR: would you accept a PR (I'm happy to create it) that would take the non-runtime, development dependencies out of setup.py's install_requires and into requirements.txt or back into a dev extras_require? Without trying to arrogantly tell you how your Python project should be organized (people have different ways of working and you're doing all the work and making the library freely available, after all!), it would be nice to be able to install and use abjad without installing or affecting the versions of my development tools.

trevorbaca commented 1 year ago

Hi @YannickJadoul yes, if you have time go ahead isolate the development dependencies in a dev extras_require. It's time to go back to allowing a minimal-dependency install for projects that need / want it. Nothing presumptive about the recommendation; you make a good argument to allow other projects to treat Abjad as something close to a library.