We have a potential solution from node which is to allow limited globs in version matches 1.0.* On Feb 25, 2013 3:04 PM, "Carl Meyer" <c...@oddbird.net> wrote:
> On 02/23/2013 08:08 PM, Nick Coghlan wrote: > > On Sun, Feb 24, 2013 at 4:43 AM, Daniel Holth <dho...@gmail.com> wrote: > >> There simply must be a way to spell "equals" that means "equals". It > will be > >> used when that so-called security release broke my application that > >> integrates said library in a way that doesn't even expose the flaw. > >> > >> Plone depends on hundreds of libraries that probably only use >= or no > >> version at all in their setup.py. Then the buildout.cfg ships with the > == > >> versions of all the libraries that the Plone release team actually > tested. > >> == is not the common plague that you fear. > > > > The core problem with making "==" strict is that it either makes "!=" > > useless by allowing "(!=1.3)" to match "1.3.1", or it breaks the > > invariant that "!=" is the logical inverse of "==", by having both > > "(==1.3)" and "(!=1.3)" reject "1.3.1". I don't consider either > > acceptable, which is why I switched the PEP to simple string prefix > > matching for both > [snip] > > If a true exact version match is needed in order to be completely > > certain about avoiding potentially broken upstream releases, then you > > can use "(X.Y, < X.Y.post0)" rather than "(==X.Y)". Really though, > > that level of pre-emptive quality assurance is better handled by using > > a private curated index (or even a per-application index) where you > > don't allow new versions to be uploaded until you've already tested > > them. > > If PEP 426 dependency version requirements are meant to support > applications as well as libraries, I very much agree with Daniel that a > real, strict == is critical, and should be the default behavior of ==. I > don't think "it makes != useless" is a sufficient argument to make == > behave surprisingly; in my experience, the need for != is quite rare, > and it makes more sense to require multi-clause workarounds for !=, > rather than for the simple "this is what I want, don't you dare pick > anything else" case, which is quite common. > > If you are dead-set against making == strict by default, then I think we > need a (gulp) === or similar. Requiring multi-clause workarounds or > curated package archives for strict dependency pinning is unacceptable, > IMO. > > Carl > _______________________________________________ > Distutils-SIG maillist - Distutils-SIG@python.org > http://mail.python.org/mailman/listinfo/distutils-sig >
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig