On Sun, Jun 24, 2018 at 8:20 AM Nick Coghlan <ncoghlan@gmail.com> wrote:
On 23 June 2018 at 07:47, Pradyun Gedam <pradyunsg@gmail.com> wrote:
> On Sat, 23 Jun 2018, 03:08 Brett Cannon, <brett@python.org> wrote:
>> The JSON schema is for "illustrative purposes only", so it should not be
>> viewed as part of the spec.
> Yeah, that's exactly what I pointed out to the user in the pip issue tracker
> as well.

Something you may want to consider is that while PEP 518 explicitly
specifies that a missing pyproject.toml should be interpreted as
"build-system.build-requires=['setuptools', 'wheel']", there's nothing
that specifically prohibits an installer from offering a
"default-for-missing-build-requires" setting.

Right now, `pip` effectively defaults that hypothetical setting to
"['setuptools', 'wheel']", with the proposed change being to switch it
to "[]" instead (which better aligns with the intent of PEP 518).

However, the new semantics mean that some sdist releases of some
projects will become uninstallable. Making the installer level setting
explicit rather than hypothetical would allow anyone affected to deal
with that problem without either being stuck on the older version of
pip, or being forced to concurrently upgrade to newer versions of the
affected projects.


Nick Coghlan   |   ncoghlan@gmail.com   |   Brisbane, Australia

​Assuming we are going to disallow missing build-requires,
​I think a better way for this would be to allow a user to override
build-requires on a per-package basis. It'd be a more verbose
and also clearer about which packages are needing some sort
of work-around to install, pushing packages to just directly
specify build-requires in future releases.

This is already a feature request for pip for a different use case
and I think it's a reasonable request.

Sure, it is extra hoops to jump through but in the long term it
makes things fairly frictionless since everyone will start
specifying build-system.requires -- if there's a missing
build-system.requires, use the override mechanism to use
setuptools and wheel (and anything else possibly) to build it.