Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
WinPython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
Another good benchmark to trying to resolve apache-airflow[all]==1.10.13 using the state of PyPi on 2020-12-02, I give instructions here on how to reproduce that workflow: https://github.com/pypa/pip/issues/11836. Including a benchmark how how many extra packages your resolver should visit.
Pip separates out the resolution logic into a library called resolvelib. It had been discovered that there was a logical error under certain circumstances, and also there was a known better backtracking technique it could employ called backjumping. Both of these were recently fixed and implemented in resolvelib, which were then vendored in to Pip 23.1.
I was looking into this recently, but I'm not an expert. Poetry uses a library called mixology that implements a dependency resolution algorithm called PubGrub. There's a nice explainer here that touches on how PubGrub handles backtracking.
Feel free to share the resolver you wrote and we can test it on real world scenarios that are very difficult, here's a fun one that I remember: https://github.com/winpython/winpython/blob/master/Qt5_requirements64.txt