Conditional package install depending on other packages in environment

Here’s another use case for supporting Provides-Dist (and Obsoletes-Dist):

The opencv-python packages come in multiple flavors and only one of them should be installed as explicitly stated in their documentation. So if an install already has opencv-contrib-python installed, a request to install opencv-python (not an uncommon dependency for other packages) should be ignored as its functionality (and more) is already provided by opencv-contrib-python. Currently, users can end up in an environment with both opencv-python and opencv-contrib-python installed, and depending on order of install all kinds of breakage.

Since opencv-contrib-python provides a superset of opencv-python, being able to specify Obsoletes-Dist and having it honored by the package manager would also be of great use. Then a user or package requesting installation of opencv-contrib-python would lead to opencv-python being removed. That doesn’t cause a loss of functionality and prevents having more than one of the packages installed at a time, as should really be avoided.

For future reference, see also this stackoverflow post hinting at how the tensorflow ecosystem could benefit from this.