Backend should not say that setuptools is needed to build #1594
Sorry, didn't spot them. Fixed now.
Well, if a frontend is calling the setuptools backend, it's by definition got setuptools installed, and a version that has the backend, so it makes no sense to ask the frontend to install setuptools...
It's up to the project being built to specify setuptools in
This seems fine to me and the logic seems fine, but:
It seems to me that you are saying that
On the other hand, are we entirely sure that no one would want to do a two-stage build, where the requirements are gathered in one environment and then used to build a second environment that may not have
So I guess my question is, what is the downside of keeping
Reading pypa/pip#5743 (comment) (and I did not have time to read the entire thread), it seems to me that this is solving a problem in the implementation of PEP 517 where the
I am not sure if that was resolved in another way as well, but I would think that you would still have the same problem for the
I'll also note that the example in PEP 517 specifically includes
Well, it was specifically in our implementation of build isolation, but yes, how we implemented build isolation did mean that we were subject to this issue. We (specifically @benoit-pierre) modified the isolation implementation to work around the problem.
Fundamentally, pip can't incrementally install a set of requirements into an arbitrary directory. It can install one set of requirements (that's the
On the other hand, though, the section on build environments in PEP 517 states that hooks are always called in an environment that contains the requirements from
True, but (a) it's probably less likely to happen, and (b) there's not much we can do about it, as it certainly is correct for the setuptools
I think that example is wrong, to be honest.
I'm not going to insist that this goes in. We've worked around it in pip, and I'm happy to concede that it's a matter of how you interpret PEP 517, so there's no obviously right answer. I do think that omitting "setuptools" will make it easier for other clients to set up a build environment without getting bogged down in complex corner cases, but that's mostly theoretical at the moment (maybe if someone were motivated to improve the environment isolation code in https://github.com/pypa/pep517 they'd have a view, but that's probably not going to be me ;-))