Okay, I want to go over my test code to make sure the tests with multiple pip invocations make sense (they probably don't), but I believe I now know which areas of the code need to change.
- Factory.find_candidates needs to attempt to construct a candidate from the constraint, and add it to explicit_candidates. (For this, it will use the first Link, if it exists, and the first ireq, if it exists.)
- It also needs to pass the url constraint info to Factory._iter_found_candidates.
- The Constraint class needs to track and handle Link data.
- check_invalid_constraint_type needs to allow Link data, but specifically disallow the editable flag. The error message should probably be updated, and it'd be nice if I could update the issue number, but I don't think I can...
One major hurdle is handling AlreadyInstalledCandidates. I'll need to investigate that specific area more.
I'll dig into that a bit while this entry publishes.