[Distutils] tourist here, with a dumb RTFM question

Erik Bray erik.m.bray at gmail.com
Thu Mar 27 01:23:23 CET 2014


On Sat, Mar 8, 2014 at 10:49 AM, Daniel Holth <dholth at gmail.com> wrote:
> Some packaging systems do not have the same 1:1 source : distribution
> relationship that is so prominent in the distutils model. This should
> probably change long term.

A common (I think?) example of this, which comes up in Astropy, is
pacakges containing Cython modules.  We don't keep the generated C
files in version control.  But we *do* make sure that when running
sdist that the Cython modules are collected and the C modules
generated and added to the manifest so that end users do not need
Cython to `pip install astropy`.  As long as their C compiler works it
can build the generated C modules without Cython.

Right now that's easy enough to do by extending the relevant distutils
commands.  Definitely a distinction to keep in mind in the future
though.

Erik

> On Sat, Mar 8, 2014 at 9:53 AM, Michael Bayer <mike_mp at zzzcomputing.com> wrote:
>>
>> On Mar 8, 2014, at 9:19 AM, Jason R. Coombs <jaraco at jaraco.com> wrote:
>>
>>
>>
>> From: Distutils-SIG
>> [mailto:distutils-sig-bounces+jaraco=jaraco.com at python.org] On Behalf Of
>> Marcus Smith
>> Sent: Thursday, 06 March, 2014 16:16
>> To: DistUtils mailing list
>> Subject: Re: [Distutils] tourist here, with a dumb RTFM question
>>
>>
>>
>>
>>
>> On Thu, Mar 6, 2014 at 10:37 AM, Michael Bayer <mike_mp at zzzcomputing.com>
>> wrote:
>>
>>
>> On Mar 6, 2014, at 1:07 PM, Daniel Holth <dholth at gmail.com> wrote:
>>
>>> pje said:
>>>
>>> The "Feature()" facility was never completely implemented or
>>> supported, and even if it were, it should be deprecated now, as it
>>> will not be compatible with the coming packaging systems based on PEP
>>> 426. If you need separate features, use separate distributions and
>>> "extras" instead.
>>
>> wait, ok this is that thing.  "separate distributions" means....
>>
>>
>> SQLAlchemy-0.9.3-nocext.tar.gz
>> SQLAlchemy-0.9.3-cext.tar.gz
>>
>>
>> I'm new to understanding setuptools "Feature" myself, so don't crank too
>> much, if I get anything wrong.
>>
>> afaik, it means something like:
>>
>> SQLAlchemy-X.Y.tar.gz
>> SQLAlchemy-cext-X.Y.tar.gz
>>
>> i.e. isolating the feature into a separate project.
>>
>> and then instead of having the handy  "--with-cext" option,  it has to be
>> "pip install SQLAlchemy[SQLAlchemy-cext]
>>
>> PJ, Jason: can you clarify what the alternative is supposed to look like?
>>
>> I'm new to understanding Features as well, but based on PJ's post, I would
>> agree with Marcus here. This is how I interpreted the use of extras to
>> supersede Features. I see a lot of advantages to this approach over
>> build-time selection. Because it decouples the main project from the
>> C-extension speedups, it gives the installer control over what behavior is
>> present. It also gives deployment tools visibility over what capability is
>> present (with features, it's harder to tell if the C-extension speedups are
>> present; with extras, one can query pkg_resources).
>>
>>
>>
>> If there's an easy way to do this from setup.py it wouldn't be so bad:
>>
>> python setup.py --without-cext sdist upload
>>
>> python setup.py sdist upload
>>
>> but it still seems kind of strange to deliver the exact same source files
>> with some flag somewhere different?   I'd assume that flag is in setup.cfg,
>> which means, it's a setup.py flag in any case!   not to mention its still
>> needed as part of the "sdist" and other commands to build dists.
>>
>> I think the issue of "you should have individual projects on pypi with
>> different options to make life easier for builders" is orthogonal to
>> "setup.py should or should not support flags".
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Distutils-SIG maillist  -  Distutils-SIG at python.org
>> https://mail.python.org/mailman/listinfo/distutils-sig
>>
>>
>>
>> _______________________________________________
>> Distutils-SIG maillist  -  Distutils-SIG at python.org
>> https://mail.python.org/mailman/listinfo/distutils-sig
>>
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> https://mail.python.org/mailman/listinfo/distutils-sig


More information about the Distutils-SIG mailing list