[Distutils] Adding Provides-Extra as an edit to PEP 345
Erik Bray
erik.m.bray at gmail.com
Mon Jul 9 21:35:43 CEST 2012
On Mon, Jul 9, 2012 at 1:27 PM, Daniel Holth <dholth at gmail.com> wrote:
>> Though in the interest of not having too many different ways to do a
>> similar thing, could this not also be used for tests/docs? Perhaps
>> even "Provides-Extra: tests", and "Provides-Extra: docs" should be
>> reserved names as you suggested. I envision something like:
>
> ...
>
>> Provides-Extra: setup
>> Requires-Dist: mysetuphooks; extra == 'setup'
>>
>> for build-time dependencies. Although in that case, pysetup (or any
>> other installer) would explicitly have to check for this in the
>> metadata before doing anything else. So maybe this example stretches
>> this syntax too far? Plus build-time dependencies are not exactly
>> "extras". It's very much required to do anything with the package.
>
> Pre-built or binary packages won't want to install the build-time
> dependencies. The check for a particular Provides-Extra is trivial,
> just a list membership test.
>
> I expect to see a lot of bugs in packages that require some of their
> build-time dependencies at run time.
Maybe, but wouldn't that be the developer's problem? setup_requires
has the same issue--it does not install the setup requirements into
site-packages. Instead it just does an egg install into the source
directory and activates it on the path. Outside of future setup.py
runs, the setup_requires distributions are not available (you would
have to add them to install_requires too if you need them at runtime).
Under a scheme like this one would have to list that dependency under
Requires-Dist twice: with and without the 'extra' marker. I might
still prefer extending the metadata format to add a
Setup-Requires-Dist or the like.
Erik
More information about the Distutils-SIG
mailing list