[Distutils] Requirent specifiers specified? :)
Phillip J. Eby
pje at telecommunity.com
Wed Jun 21 23:11:16 CEST 2006
At 04:52 PM 6/21/2006 -0400, Jim Fulton wrote:
> >>> ws.resolve([pkg_resources.Requirement.parse('demoneeded >1.1, <1.6,
> ==1.8')], e)
>[demoneeded 1.8 (/home/jim/tmp/dist/demoneeded-1.8-py2.4.egg)]
>
>Hm, here the ==1.8 seems to have been or-ed with the result of anding >1.1
>and <1.6.
Yes.
> >>> ws.resolve([pkg_resources.Requirement.parse('demoneeded
> <1.1, >1.6')], e)
>[demoneeded 1.9 (/home/jim/tmp/dist/demoneeded-1.9-py2.4.egg)]
> >>> ws.resolve([pkg_resources.Requirement.parse('demoneeded !=1.8,
> ==1.8')], e)
>[demoneeded 1.9 (/home/jim/tmp/dist/demoneeded-1.9-py2.4.egg)]
>
>I really don't know what's going on with these. :)
>
>Are the rules for combining specifiers specified anywhere?
I was going to say, of course, and give you a link, but I'm surprised to
discover there's nothing I can find. Which is weird because I *know* I
wrote something. However I suspect it was originally on the PythonEggs
wiki page, and it didn't get transferred to the PkgResources or setuptools
pages before being deleted.
Ah, yes, that's in fact the case. Here's the missing paragraph, grabbed
from the wiki history:
"""Requirement strings basically consist of a distribution name, an
optional list of "options" (more on this in a moment), and a
comma-separated list of zero or more version conditions. Version conditions
basically specify ranges of valid versions, using comparison operators. The
version conditions you supply are sorted into ascending version order, and
then scanned left to right until the package's version falls between a pair
of > or >= and < or <= conditions, or exactly matches a == or != condition."""
I'll have to insert this back in the docs somewhere. Thanks for alerting
me to it.
More information about the Distutils-SIG
mailing list