[Distutils] Reverse dependencies

Phillip J. Eby pje at telecommunity.com
Mon May 14 01:45:32 CEST 2007


At 11:30 PM 5/13/2007 +0100, Martin Aspeli wrote:
>I won't pretend to have thought this through to very end, but I don't
>quite understand why this should be so hard, then.
>
>The algorithm would be something like:
>
>   - I support platform Plone, version >= 3.0.1 and < 4
>   - I am looking for package your.package, version >= 1.0
>         - The most recent version that satisfies this is 2.1
>         - Version 2.1 declares it supports Plone >=4, can't use that
>         - The second-most-recent version that satisfies 
> your.package >= 1.0 is 2.0
>         - Version 2.0 declares it supports Plone 3.9, okay, we can use that
>
>         - Repeat check for Zope

This isn't actually any different than a backtracking dependency 
search.  The only thing that makes it (potentially) simpler is that 
it could simply allow backing off only for immediate dependencies, 
rather than backtracking transitive dependencies.

That is, while selecting the "best version available" of a package, 
we could check its immediate dependencies for conflict with all known 
dependencies, and automatically back off.

Practically speaking, however, it's still considerably more complex 
than the existing algorithm -- and still not certain to produce valid results.


>One difference to straight dependencies, by the way, is the case where
>you support (or a package is known to work with) a platform, without
>necessarily needing to depend on it. That may be useful metadata.

Useful for what? 



More information about the Distutils-SIG mailing list