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

Chris Jerdonek chris.jerdonek at gmail.com
Mon Dec 22 21:34:17 CET 2014


On Mon, Dec 22, 2014 at 12:20 PM, Marcus Smith <qwcode at gmail.com> wrote:
> 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-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
>
>
>
>
>
>
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> https://mail.python.org/mailman/listinfo/distutils-sig
>


More information about the Distutils-SIG mailing list