Thoth's Dependency Monkey computing possible package combinations occurring in software stacks

Hi all,

as part of an already shared project Thoth in another topic, we would like to share yet another open-source project born at Red Hat. The project is called “Dependency Monkey”. It can compute all the possible combinations of packages that can occur in a resolved software stack and verify the given stack works well by running an application on a service called Amun.

The resolution process respects Python package dependency specifications and is reusing resolver implementation available in Thoth’s server-side resolver. This also gives an ability to additionally configure how the resolution process should look like using software stack resolution pipeline which configuration can be supplied (e.g. resolve TensorFlow with with specific NumPy versions respecting version range specification in the whole dependency graph created out of all the direct dependencies).

We were able to generate quite a few software stacks meeting desired criteria which were run in a cluster; some of the configuration options are available in thoth-station/dependency-monkey-zoo repository (mostly stacks checking TensorFlow performance) and made some datasets available to the community (see also Kaggle datasets). We found some issues in packages that were not spotted by Python package maintainers or performed performance related inspections of Python software.

The project is used as a knowledge aggregation task for Thoth’s server side resolver so the resolution can prioritize more performing software stacks or Python packages that do not cause runtime/buildtime issues.

If you find the project useful, feel free to contact us for possible cooperation (or directly use it in your own deployment). If you want to experiment with datasets we produce, check Kaggle datasets or thoth-station/datasets repository.

On behalf Thoth team,


See the linked article for a high level overview of this service with a video walk-through. Do not hesitate to contact us if you find the service useful and would like to combine efforts in some way.