[Distutils] fix setup_requires by allowing it in setup.cfg or a setup_requires.txt

Daniel Holth dholth at gmail.com
Thu May 15 21:46:10 CEST 2014


On Thu, May 15, 2014 at 2:38 PM, Donald Stufft <donald at stufft.io> wrote:
>
> On May 15, 2014, at 1:55 PM, Daniel Holth <dholth at gmail.com> wrote:
>
>> This is not a hole.
>>
>> Historically there has been VERY STRONG resistance to any practical,
>> incremental improvements to packaging. Instead we are expected to come
>> up with something that is ideal and fully formed. The results is that
>> packaging is not often improved.
>>
>> The proposal is just a way to make setup.py work a little better. We
>> are going to have setup.py forever, but we hope it will not be the
>> primary way to make new packages. We are going to have lists of
>> requirements forever. We are going to need setup & build requirements
>> specifications that actually work. Allowing a list of requirements in
>> setup.cfg or a text file is a very simple way to move in the right
>> direction.
>
> I'm completely for incremental improvements *which move us closer towards the
> final end goal*. Hacking in this support is not that.
>
> It'll only reasonably work in pip 1.6+ and won't in older versions of pip nor
> easy_install, zc.buildout, or direct setup.py invocations. This represents an
> official recommended backwards compatibility break. It is much better to be
> able to work on either new formats or improvements to the existing formats
> which don't require changing the fundamental API contract of the old formats.
>
> Hacking it in by the project creating a fake setup.py that does the work is
> a much better solution since it doesn't break the API contracts and it doesn't
> represent another pseudo format that we'll have to support indefinitely.

I think it's unfair to say that a single field in a simple text file
constitutes a pseudo-format from which you can extrapolate limitless
amounts of future pain and pip-maintaining difficulty, or that
including a list of requirements in a text file is a hack at all. It
is just the simplest thing that could possibly work.

In the meantime the present duress continues: people continue to write
setup.py that is only able to use setuptools + distutils, continue to
have a more difficult time practically attempting to write setuptools
replacements that might have setup-requires dependencies, while
waiting for vaporware.

But it's probably a good idea to write the boilerplate setup.py that
will make setup_requires actually work. If it is popular then the
installers will eventually be forced to support the format in order to
be able to impose their own policies on setup-requires dependency
installs.


More information about the Distutils-SIG mailing list