[Distutils] Requirent specifiers specified? :)

Jim Fulton jim at zope.com
Thu Jun 22 18:26:53 CEST 2006


On Jun 21, 2006, at 5:11 PM, Phillip J. Eby wrote:

> """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 don't think this is right. :)

If I have a collection of eggs like:

    /home/jim/tmp/dist:
    used 92 available 41345796
    -rw-rw-r--  1 jim jim   671 Jun 19 17:43 demoneeded-1.0-py2.4.egg
    -rw-rw-r--  1 jim jim   672 Jun 19 17:46 demoneeded-1.1-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.2-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.3-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.4-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.5-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.6-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.7-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.8-py2.4.egg
    -rw-rw-r--  1 jim jim   673 Jun 19 17:46 demoneeded-1.9-py2.4.egg

Then:

  >>> import pkg_resources
  >>> e = pkg_resources.Environment(['tmp/dist'])
  >>> ws = pkg_resources.WorkingSet()
 >>> ws.resolve([pkg_resources.Requirement.parse('demoneeded !=1.1,  
<1.4')], e)
[demoneeded 1.3 (/home/jim/tmp/dist/demoneeded-1.3-py2.4.egg)]

When scanning left to right, 1.9 matches !=1.1, so it should match and,
since it is the highest version, it should be returned.  Either your  
description
of the algorithm is incorrect or I'm misunderstanding it.

Jim

--
Jim Fulton			mailto:jim at zope.com		Python Powered!
CTO 				(540) 361-1714			http://www.python.org
Zope Corporation	http://www.zope.com		http://www.zope.org





More information about the Distutils-SIG mailing list