[Distutils] PEP440: foo-X.Y.Z does not satisfy "foo>X.Y"?

Marcus Smith qwcode at gmail.com
Mon Dec 22 21:20:32 CET 2014


In PEP440,  foo-X.Y.Z does not satisfy the specifier  "foo>X.Y" (although
it satisfies "foo>=X.Y")

for example,  foo-1.7.2 will not satisfy  "foo>1.7", but it will satisfy
"foo>=1.7"

for '>' and '<', PEP440 states that they are "interpreted as implying the
prefix based version exclusion clause != V.*"

the rationale from Donald for this is explained here:
https://bitbucket.org/pypa/setuptools/issue/301/101-in-requirementparse-foo-10-results

in brief, this was done to avoid pre-releases (i.e. something like
"foo-1.7a1") satisfying "foo<1.7".

It seems to me we've just traded one confusion for another, and this seems
worse (to me at least, although I'm trying to let it sink in)

1.7.2 is greater than 1.7, and the specifiers should honor that.  It's hard
to accept otherwise.

Yes, it's true in the past, when people would get a pre-release installed
(for example 1.7a1), when they really wanted something in the 1.6.X series,
that was also confusing.  But now that pip now excludes pre-releases by
default, it seems that confusion is mostly solved practically speaking, so
why solve it (and create a new confusion)?

Marcus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20141222/1d35ef09/attachment-0001.html>


More information about the Distutils-SIG mailing list