On Sun, Jun 24, 2018 at 10:50 AM Nathaniel Smith <n...@pobox.com> wrote:
> To go a bit against the grain here, I think at this point I'd suggest > that if "build-system.requires" is missing, it should be silently > treated as if it had been set to ["setuptools", "wheel"]. Reasoning: > > - Implementing this should require only a trivial amount of code, now > and in the long run. In particular, I'm *not* suggesting that if the > "build-system.requires" key is missing then we should act like > pyproject.toml is missing altogether -- that's a much more complex > legacy code path that we'd like to eventually remove. I'm suggesting > we literally do something like: > > try: > requires = config["build-system"]["requires"] > except KeyError: > requires = ["setuptools", "wheel"] > > and then treat them exactly the same from then on. > Defaulting to this behavior means that the way source distribution is built changes (build isolation is enabled by pip) because configuration for a tool was added. This is surprising for users since one of things this means is they need to have provide wheels (so that pip that can find/use them) for `setuptools` and `wheel` to install packages. We've had multiple users report this on pip's tracker. Having users specify their build-requirements explicitly is a stronger opt-in that can used to explain the behavior in this case as that project using PEP 518 and build-isolation vs that project has configuration for towncrier. :) The only other option is falling back to legacy behavior in this case, which obviously isn't what we want here. - Not doing this breaks a number of real projects. Sometimes this is > justifiable because we have to break things to make progress, but it > always creates busywork and pisses people off, so we should only do it > when we have a good reason. In this case providing a default value is > pretty trivial, and will prevent a lot of frustrated queries about why > it's mandatory. > > - Providing a default doesn't really compromise the final vision for > the feature: we envision that eventually, pretty much every project > will be specifying this explicitly, and won't *want* to leave it > blank. There isn't any other meaning we want to assign to this being > left blank. > > - We're soon going to have to jump through all these hoops *anyway* > for the PEP 517 "build-system.build-backend" key. If it's missing, > then we're going to want to default it to "setuptools" (once > setuptools exports a PEP 517 build backend), which means we're going > to be hardcoding some defaults and knowledge of setuptools into the > pyproject.toml defaults. So we might as well do this for both keys in > the same way. > > -n Pradyun
-- Distutils-SIG mailing list -- distutils-sig@python.org To unsubscribe send an email to distutils-sig-le...@python.org https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/ Message archived at https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/WNGISFXZ4JDSD32KZS35FUD5NPTK4DCQ/