Martijn Faassen wrote:
The version requirements in setup.py should always be "open".
The most widely open requirement is this:
zope.foo
but another open requirement is this:
zope.foo >= 1.3
I also don't recall open requirements bringing development to a halt?
I think more specific open requirements (as opposed to the most widely open requirement) can be very useful. Useful to the maintainers of the Zope Framework KGS, the Zope 3 KGS, the Grok KGS, the Zope 2 KGS, and to application specific lists of packages, and users who are developing or testing packages in some other way. I've used this pattern quite successfully when developing a bunch of related packages.
You bring up the case of backporting a fix (a relatively rare occurrence, but it certainly happens):
So, zope.bar 3.2 says it needs zope.foo >= 1.3.
Now you take something from zope.foo 1.3 and also put it in zope.foo 1.2.3 and onwards. zope.bar could now work with zope.foo 1.2 too, and it doesn't declare that it does.
You could release a new minor version of zope.bar 3.2.1 that has a wider specification (if I get the spelling right):
zope.foo >= 1.3, >= 1.2.3
(I'm not sure whether setuptools will consider this an "adjacent redundant condition and resolve this to zope.foo >= 1.2.3..)
Updating that in all packages that depend on zope.foo for just that feature is indeed a bit of a burden. It does make it more likely that when someone does an update they'll get a set of package that work together.
Opinions?
However you need to spell it, what you suggest is correct. cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk