[Distutils] name of the dependency problem

Robin Becker robin at reportlab.com
Wed Apr 15 13:09:04 CEST 2015

After again finding that pip doesn't have a correct dependency resolution 
solution a colleage and I discussed the nature of the problem. We examined the 
script capture of our install and it seems as though when presented with

level 0 A
   A level 1  1.4<= C

level 0 B
   B level 1  1.6<= C <1.7

pip manages to download version 1.8 of C(Django) using A's requirement, but 
never even warns us that the B requirement of C was violated. Surely even in the 
absence of a resolution pip could raise a warning at the end.

Anyhow after some discussion I realize I don't even know the name of the problem 
that pip should try to solve, is there some tree / graph problem that 
corresponds? Searching on dependency seems to lead to topological sorts of one 
kind or another, but here we seem to have nodes with discrete values attached so 
in the above example we might have (assuming only singleton A & B)

R --> A
R --> B

A --> C-1.4
A --> C-1.6
A --> C-1.6.11
A --> C-1.7
A --> C-1.8

B --> C-1.6
B --> C-1.6.11

so looking at C equivalent nodes seems to allow a solution set. Are there any 
real problem descriptions / solutions to this kind of problem?
Robin Becker

More information about the Distutils-SIG mailing list