[Distutils] Finishing PEP 345

"Martin v. Löwis" martin at v.loewis.de
Thu Dec 24 09:22:10 CET 2009

> Some applications doesn't care about the micro version, but will care about
> the minor version because those can introduce API and syntax changes.
> e.g. If at some point I have a Python 2.6 program that uses the "with"
> keyword, and I don't want to introduce a __future__ import in my code,
> I'll just use :
> Requires-Python: 2.6
> And I will not care much about the micro version in that case, since
> Python will not change its syntax/API in a micro release.

I think that's a mistake. Specifying "2.6" is equivalent to specifying
"==2.6". With your proposed meaning of "==", either == is not
transitive, or all versions compare equal. As 2.6==2.6.1 and 2.6==2.6.2,
we get (with transitive ==), 2.6.1==2.6.2.

Furthermore, if the same wildcarding applies to major versions as well,

Requires-Python: 3

means any 3.x, then we have 3==3.1, 3==3.2, 3.1==3.1.3, 3.2==3.2.4,
and, transitively, 3.1.3==3.2.4. This is undesirable.

>>>> Does that apply to all PEP 386 version numbers?
>>> Not sure what you mean here,
>> If I specify
>> Requires-Dist: zope.interface (3.6)
>> and I have zope.interface 3.6.1b4, is the requirement satisfied?
>> What if I have 3.6b4: is it then satisfied?
> 3.6 would include all 3.6.x releases as well. So 3.6b4 is excluded
> since it does not belong to the 3.6 series, but 3.6.1b4 is included.

Please define "belongs to the 3.6 series". In PEP 386 terminology,
I would expect that this means "the 'version' part is 3.6", so
3.6b4 *does* belong to the 3.6 series.


More information about the Distutils-SIG mailing list