[Python-Dev] Proposing PEP 345 : Metadata for Python Software Packages 1.2

Ben Finney ben+python at benfinney.id.au
Mon Dec 28 02:17:22 CET 2009

Tarek Ziadé <ziade.tarek at gmail.com> writes:

> On Mon, Dec 28, 2009 at 1:41 AM, Sridhar Ratnakumar
> <sridharr at activestate.com> wrote:
> > Also, "Requires-Python: 3" would include all 3.X versions, correct?
> Correct, because, "Requires-Python: 3" is equivalent to
> "Requires-Python: ~= 3" which is equivalent to "Requires-Python:
> 3.x.x"

This is totally counter to conventional comparisons, and is an excellent
example of why the equivalence of ‘3’ to ‘>=3, <4’ is a bad idea.

Instead, the default should be ‘==’. That is, ‘Requires-Python: 3’
should be equivalent to ‘Requires-Python: ==3’; and only “3” or “3.0” or
“3.0.0” etc. will match. I maintain that is what most people will expect
on seeing that syntax.

If a less strict range is desired, the existing comparison operators
‘>’, ‘>=’, ‘<’, ‘<=’ are sufficient, more obvious, and more explicit. In
other words, to get the meaning you desire above, the existing operators
can be used: ‘Requires-Python: >=3, <4’.

 \      “Not using Microsoft products is like being a non-smoker 40 or |
  `\     50 years ago: You can choose not to smoke, yourself, but it's |
_o__)               hard to avoid second-hand smoke.” —Michael Tiemann |
Ben Finney

More information about the Python-Dev mailing list