Description
Over the last few months, I've been using setup.cfg
more, and I find the syntax and types and such to be super counter-intuitive. I don't find TOML to be a breeze per se, but it's at least a lot clearer to me how to specify a string, a list, etc. We also hear a lot of cries to move towards supporting pyproject.toml
as the "one file" for setup configuration, in favor of setup.cfg
. I'm not terribly opposed to this, but I want to open up the discussion for a few options:
- Add
pyproject.toml
as the one true way to do declarative builds, moving allsetuptools
configuration over there and deprecatingsetup.cfg
(partially what is discussed in Merge setup.cfg spec with pyproject.toml one and deprecate setup.py and setup.cfgย #1160, and if we decide on that option we can move over to that issue). - Add
pyproject.toml
as a second supported way to do a declarative configuration, alongsidesetup.cfg
. - Stay the course with
setup.cfg
indefinitely.
I am deeply concerned with the large amount of churn that we're introducing into the Python packaging space, so I don't want to make a lot of changes for the sake of changes, but I do think that at least having the option to use a pyproject.toml
would be a real benefit, so I'm basically in favor of option 2.
I think the biggest downside of option 2 is that it means maintaining, testing and documenting three separate locations for all of our options - how to do it in setup.cfg
, how to do it in pyproject.toml
, and how to do it in setup.py
. I think the hard part is going from 1 way to do everything to 2 ways. Our documentation is a mess anyway, but my beautiful vision for the future is that all our examples have "tabs" that allow you to toggle them between setup.cfg
and setup.py
. Adding a pyproject.toml
in there would probably not be the worst thing.