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

Tarek Ziadé ziade.tarek at gmail.com
Mon Dec 28 10:25:13 CET 2009

On Mon, Dec 28, 2009 at 4:17 AM, Stephen J. Turnbull <stephen at xemacs.org> wrote:
> Ben Finney writes:
>  > 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.
> I really don't think your assessment that a majority agrees with you
> is warranted.  The demand for backward compatibility is so strong that
> (wearing my maintainer hat, in other projects) I actually assume that
> in compatibility claims a bare version number like 3 means >= 3.0.0 to
> my listeners, unless explicitly qualified.
> Therefore, I think there should be no default.  "Explicit is better
> than implicit."

I am with Stephen here: If I read "Requires-Python: 3" outloud, it's
equivalent to,
"my project uses Python 3", and in python-dev, like anywhere else, it includes
all versions of Python 3, unless a specific, explicit version is provided.

> And IMO the choice of "~=" or "=~" for the range match should be
> avoided, since that looks like the regexp search operator in Perl, and
> there "~= 3" would match "3", "3.0.4", and "2.3.5".  The next obvious
> interpretation is "fuzzy match", but that doesn't have an obvious,
> more specific meaning.  The usual comparson operators do have pretty
> obvious interpretations, and are not hard to use.

I think Antoine's proposal is good (using the range when "2.5" is
used, and using 2.5.0 when explicitely
needed), and fixes Martin's concerns.

So I would be in favor of removing ~= and using Antoine's rule;


More information about the Python-Dev mailing list