[Distutils] PEP 517: Open questions around artifact export directories

Thomas Kluyver thomas at kluyver.me.uk
Tue Jun 13 05:44:58 EDT 2017

On Tue, Jun 13, 2017, at 02:27 AM, Nick Coghlan wrote:
> Despite being the one to originally propose standardisation on passing
> directory paths around, I'm starting to lean back towards this
> approach.
> My rationale for this doesn't really have a lot to do with topics
> we've discussed so far, and instead asks the question: what would work
> best for an installation frontend that wanted to keep the actual build
> tools off the system doing the installation, while still allowing for
> transparent "from sdist" installations?

I think that we're discovering a variety of reasons why an unpacked
distribution may not be clearly preferable to an archive. In the absence
of a clear benefit, I think it's advantageous to say that the archive is
the canonical interchange format which different tools produce and
consume. This is more compelling for wheels than for sdists, since the
wheel format is more precisely specified, but it seems more internally
consistent to say that they both build archives.

I've updated the PR to specify zip archives for build_wheel and .tar.gz
archives for build_sdist.

>>    2) Specify that the wheel generation hook, metadata hook, and sdist
>>    hook return the name of path that they created as a unicode string.
>>    Rationale: fixes a point of ambiguity in the current spec.
> And still leaves the door open to supporting multiple wheels in the
> future by returning a list instead of string.

This makes sense to me, and I've added that to the PR.

I have currently specified that they should return only the basename of
the file/directory they create, not the full path. I don't think there's
any particular reason to prefer one or the other, but it needs to be
specified. Does anyone think there's a concrete reason they should be
full paths?

Finally, I noticed while updating the PEP that there's a section showing
how simple a PEP 517 backend can be, with a tiny working example.
Following our discussions, that example is incomplete (it's missing at
least the sdist hook). Do we want to:

1. Make the example complete again, which would make it much less
2. Remove the whole section about how easy it is to implement a backend
(it's not a very convincing example anyway, because it requires the user
to manually do most of the work in preparing a wheel).
(3. Try to actually make it simple to implement a backend ;-)


More information about the Distutils-SIG mailing list