[Distutils] PEP 517: Open questions around artifact export directories
p.f.moore at gmail.com
Sat Jun 10 05:05:14 EDT 2017
On 10 June 2017 at 04:32, Nick Coghlan <ncoghlan at gmail.com> wrote:
> While I'm open to being persuaded otherwise, my current thinking is
> that these concerns could be suitably addressed by making the
> following amendments:
> 1. Move all artifact naming responsibilities to the frontend. All
> backend hooks would just write files in the defined format into the
> directory supplied by the frontend (and those directories would have
> no defined naming scheme - they're just a staging area for the backend
> to pass content to the frontend)
> 2. Change the names of the artifact hooks to be "export_sdist_content"
> and "export_wheel_content" to emphasise that backends are responsible
> for generating the artifact *contents*, not the artifacts themselves
> 3. Change the optional metadata preparation hook to be
> "prepare_wheel_metadata" for consistency with "prepare_build_files".
> This gives us a consistent naming scheme where the "export_*" hooks
> are required, but each has an optional "prepare_*" counterpart that
> backends may implement as a more efficient alternative when the full
> artifact contents aren't (or may not be) needed.
In particular, I think that by making frontends responsible for
packaging and naming wheels and sdists, we centralise responsibility
for following those parts of the relevant standards, which is one less
thing for (multiple) backends to track.
My only reservation is that if anyone is looking to create a PEP 517
wrapper around legacy setuptools/distutils (at the moment, we haven't
really touched on how we maintain support for setuptools-based
projects, other than an assumed "keep all the code round until no-one
uses setuptools any more") then that wrapper will need to build the
artifacts as files (because that's what setuptools does), then unpack
them only to have the frontend repack them. But that's a relatively
minor price to pay.
More information about the Distutils-SIG