70 packages in total use setuptools' "extras" feature

I thought this list might be of interest to the people here. Surprisingly not many packages rely on (not declare) setuptools' "extras" feature [bit.ly/setuptools-extras]. http://paste.pocoo.org/raw/154703/ -srid

I know at least one package not in your list: zope.component [1]. [1] - http://svn.zope.org/zope.component/trunk/setup.py?rev=105736&view=markup Sridhar Ratnakumar a écrit :
I thought this list might be of interest to the people here. Surprisingly not many packages rely on (not declare) setuptools' "extras" feature [bit.ly/setuptools-extras].
http://paste.pocoo.org/raw/154703/
-srid _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig
-- Cordialement, KiOrKY GPG Key FingerPrint: 0x1A1194B7681112AF

On Thu, Dec 3, 2009 at 1:05 PM, kiorky <kiorky@cryptelium.net> wrote:
I know at least one package not in your list: zope.component [1].
Indeed. Many z3c.* and zope.* packages provide extras that aren't referenced by other packages directly, but are referenced from buildout configurations or similar. It would be interesting to have a good way to judge the uptake for this feature, but I'm afraid this measure says little beyond "they are used." -Fred -- Fred L. Drake, Jr. <fdrake at gmail.com> "Chaos is the score upon which reality is written." --Henry Miller

Hi, On Thu, Dec 3, 2009 at 19:05, kiorky <kiorky@cryptelium.net> wrote:
I know at least one package not in your list: zope.component [1].
It does have a few extras (zcml being the most notable one probably), but I don't think it depends on any extras. Other packages may, however, depend on zope.component [zcml].
[1] - http://svn.zope.org/zope.component/trunk/setup.py?rev=105736&view=markup
Sridhar Ratnakumar a écrit :
I thought this list might be of interest to the people here. Surprisingly not many packages rely on (not declare) setuptools' "extras" feature [bit.ly/setuptools-extras].
http://paste.pocoo.org/raw/154703/
-srid _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig
-- Cordialement, KiOrKY GPG Key FingerPrint: 0x1A1194B7681112AF
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig

Attila Oláh a écrit :
It does have a few extras (zcml being the most notable one probably), but I don't think it depends on any extras. Other packages may, however, depend on zope.component [zcml]. There are many, and as i say, and i know many others packages using extras which are not yet in the list.
-- Cordialement, KiOrKY GPG Key FingerPrint: 0x1A1194B7681112AF

On 12/3/2009 10:16 AM, kiorky wrote:
Attila Oláh a écrit :
It does have a few extras (zcml being the most notable one probably), but I don't think it depends on any extras. Other packages may, however, depend on zope.component [zcml]. There are many, and as i say, and i know many others packages using extras which are not yet in the list. Do you have anything particular in mind? What I did was a ``grep "^.*[a-zA-Z]\["`` in the requires.txt of (almost) all the packages in PyPI.
-srid

At 10:21 AM 12/3/2009 -0800, Sridhar Ratnakumar wrote:
Do you have anything particular in mind? What I did was a ``grep "^.*[a-zA-Z]\["`` in the requires.txt of (almost) all the packages in PyPI.
Do note that this won't tell you about end users' use of extras. The main use case described in the documentation for extras is allowing users to install optional support for things. That means you're more likely to see them in buildout configurations (which won't be found on PyPI), and manual installation steps (which aren't recorded anywhere).

On Thu, Dec 3, 2009 at 20:05, P.J. Eby <pje@telecommunity.com> wrote:
At 10:21 AM 12/3/2009 -0800, Sridhar Ratnakumar wrote:
Do you have anything particular in mind? What I did was a ``grep "^.*[a-zA-Z]\["`` in the requires.txt of (almost) all the packages in PyPI.
Do note that this won't tell you about end users' use of extras.
The main use case described in the documentation for extras is allowing users to install optional support for things. That means you're more likely to see them in buildout configurations (which won't be found on PyPI), and manual installation steps (which aren't recorded anywhere).
I have to agree with that. One common example are packages that use PasteScript/PasteDeploy and different configuration for development and deployment, putting only the configuration files (etc/*.ini) in the extras, so installing a deployment-version of the package wold only require installing the "deploy" extra. Another example is putting all the test files in the "test" extra, which is almost never required as a dependency, but is used by buildbots, developers, etc.

On Thu, Dec 3, 2009 at 1:05 PM, P.J. Eby <pje@telecommunity.com> wrote:
At 10:21 AM 12/3/2009 -0800, Sridhar Ratnakumar wrote:
Do you have anything particular in mind? What I did was a ``grep "^.*[a-zA-Z]\["`` in the requires.txt of (almost) all the packages in PyPI.
Do note that this won't tell you about end users' use of extras.
The main use case described in the documentation for extras is allowing users to install optional support for things. That means you're more likely to see them in buildout configurations (which won't be found on PyPI), and manual installation steps (which aren't recorded anywhere).
Incidentally, I never got around to implementing extras in pip, and no one has asked about it so far. (Though I guess pip generally encourages people handle transitive dependencies explicitly; i.e., if you want zope.component with zcml, then install zope.component and zope.component.zcml.) -- Ian Bicking | http://blog.ianbicking.org | http://topplabs.org/civichacker

Wouldn't it require zope.component to be a namespace package? Extras allw you to add extra files (subpackages) withot making the container package a namespace-package, it seems to me. On 12/3/09, Ian Bicking <ianb@colorstudy.com> wrote:
On Thu, Dec 3, 2009 at 1:05 PM, P.J. Eby <pje@telecommunity.com> wrote:
At 10:21 AM 12/3/2009 -0800, Sridhar Ratnakumar wrote:
Do you have anything particular in mind? What I did was a ``grep "^.*[a-zA-Z]\["`` in the requires.txt of (almost) all the packages in PyPI.
Do note that this won't tell you about end users' use of extras.
The main use case described in the documentation for extras is allowing users to install optional support for things. That means you're more likely to see them in buildout configurations (which won't be found on PyPI), and manual installation steps (which aren't recorded anywhere).
Incidentally, I never got around to implementing extras in pip, and no one has asked about it so far. (Though I guess pip generally encourages people handle transitive dependencies explicitly; i.e., if you want zope.component with zcml, then install zope.component and zope.component.zcml.)
-- Ian Bicking | http://blog.ianbicking.org | http://topplabs.org/civichacker _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig
-- Sent from my mobile device

At 09:53 PM 12/3/2009 +0100, Attila Oláh wrote:
Wouldn't it require zope.component to be a namespace package? Extras allw you to add extra files (subpackages) withot making the container package a namespace-package, it seems to me.
No, they don't. Extras just cause a project to pull in additional dependencies, not additional *files*.

On Thu, Dec 3, 2009 at 3:21 PM, P.J. Eby <pje@telecommunity.com> wrote:
At 09:53 PM 12/3/2009 +0100, Attila Oláh wrote:
Wouldn't it require zope.component to be a namespace package? Extras allw you to add extra files (subpackages) withot making the container package a namespace-package, it seems to me.
No, they don't. Extras just cause a project to pull in additional dependencies, not additional *files*.
The basic advantage, I guess, is the indirection; you can require zope.component[zcml], and the maintainers of zope.component determine what is necessary to provide that functionality. And from the changelog it seems they have updated that to depend on different things over time. Though I suspect that was actually a kind of misfeature of extras... some library X requires zope.component[zcml], but in fact only requires a subset of that functionality, and some framework F requires library X, which draws in zope.component[zcml], which in turn requires oodles of other things, and there is pushback from F to zope.component (maybe involving library X maintainers, or not) to reduce the dependencies to what is more strictly required. All of which requires lots of tedious communication and negotiation, which I don't think is really that helpful for anyone, and is why I prefer a more manual assembling of sets of libraries, and am not a fan of Setuptools runtime checking. My general feeling is that these dependencies should only be loosely trusted; only actual testing can confirm that an update is correct for a developer's use case. -- Ian Bicking | http://blog.ianbicking.org | http://topplabs.org/civichacker
participants (6)
-
Attila Oláh
-
Fred Drake
-
Ian Bicking
-
kiorky
-
P.J. Eby
-
Sridhar Ratnakumar