On Mon, Dec 22, 2014 at 12:20 PM, Marcus Smith
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"
This makes sense if you view "1.7" as encompassing all of the releases 1.7.0, 1.7.1, 1.7.2, etc. (and their variants). It's a bit like the "significant digits" of a number. [1] You want the release to be bigger than all releases of that type. --Chris [1] http://en.wikipedia.org/wiki/Significant_figures
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-...
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
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig