I think this would be useful for numerical codes which can depend on a number of packages as backends, which is becoming more common thanks to the array-api efforts.
If the rule is that all alternatives are equivalent solutions, it would only require a convention that whatever is encountered first is tried first. In the sense that, when building the set of missing dependencies, the first encountered dependency D|E
adds D
to the set, and the second encountered dependency E|D
sees that one of E
and D
is already requested.
If you want to force installation of E
, you can ask for it manually. Similarly, I would expect an extra [with-E]
that specifically depends on E
to force that package.