- More dependency categories (and properly supporting ones we actually have):
Recommends
(optional, installed by default), default extras dependencies,Provides
,Obsoletes
Background:
Right now we can only say that one thing depends on another or it doesn’t. We cannot specify many “softer” dependencies such as “this is not critical but it should be provided if possible” or “this can be satisfied with any of (X, Y or Z)”. I would like to discuss a taxonomy of dependencies and get oriented. A few options brought up so far:
-
Obsoletes is not used in
pip
(or by any tool that I know of) (Provides
has related issues) - Opportunistic dependencies are ones where if you fail to install them the install succeeds with just a warning
-
Recommends
: Optional dependencies, installed by default but can be removed with an extra (also opportunistic) - default extras dependencies - dependencies used only if no extras are specified.