Resolver Dev Syncup (22 April 2020)
Participants: Paul, Pradyun, Tzu-ping
Agenda
- Goals
- When will we be "done"?
- Paul: IMO, the first key milestone is when all the tests pass. After that, I think depends on user survey feedback.
- Paul: Also, how does "when all the tests pass" link to Ilan's work? Do we expect him to deliver new tests for additional resolution scenarios? I thought he was going to...
- Pradyun: I think we do, yea. There's a whole bunch of issues we've got in zazo's issue tracker, that really need to move into a YAML test.
- Remaining functionality (prioritization)
- (from last week)
user installs (may be solved by https://github.com/pypa/pip/pull/7997 )
- upgrade strategy (need to emit a warning/error for this)
TP: I want to replace it with a new flag --strategy ( https://github.com/pypa/pip/issues/8085 )
- Two existing, plus "install minimum possible version". Implement the mechanism, decide on how to expose it later.
- "install minimum possible version" -- new feature, not on roadmap for resolver, may never happen :P
- constraints (has error message)
wheel cache ( https://github.com/pypa/pip/pull/8066 )
- error messages (see below)
- circular dependency (has error message)
General principle, we should implement the mechanisms and leave UX for follow-up discussions.
"What are we allowed to upgrade":
- - Internal inconsistencies in what the user asks for - just reject (easy) - Request conflicts with what's installed, and no --upgrade flag - can just reject as well - When we can upgrade, --upgrade is too blunt a tool, we need to know *what* we are allowed to upgrade
- - Initially, pass into the API a list of individual packages we're allowed to upgrade. Work out how to present that as a UI later
Everyone likes XPath we should do more of that! (NOT!!!!)
Talked about hypothesis for testing the resolver / resolvelib.
Talked about tests
- Slowness
- Get to upgrade to virtualenv 20
- Caching wheels generated during tests -- for Windows antivirus!!!
- TODO: TP to write short summary on importlib-metadata thing and explain what he wants, maybe the GSoC student can help on the work.
- Windows CI boxes: do they allow symlinks?
- TODO: Need to check this (Pradyun).
- Error messages
- Paul getting frustrated at the complexity of the problem.
- Need more points of contact / discussions with UX team would be good.
Talked about https://pypistats.org/packages/pip, and how sharing it with the UX folks helped
- Visualizing graph exploration
- Pradyun spent some time on this -- got tied up in other work, so it's on the back burner
- Augumenting REQUESTED as a distributed MANIFEST
- Store some decomposed form of a requirement?
- Whatever we come up with in the [metadata] table discussion?
- PEP 610 + new resolver ( https://github.com/pypa/pip/pull/8005 )
- Broader discussions:
pip inspect: bundle together all environment introspection functionality into a single command.
- pip check, pip list, pip freeze, pip show
- new feature requests we've seen: "tree view"
- Pradyun: [describes the above]
- Paul: Makes sense.
- Tzu-Ping: Makes sense.
- Paul: We can probably do something similar to this for pip's index interaction stuff.
Pradyun: That's TP's proposal for a 'pip discover' command! We can make something like pip index for that!
- Talked about pip wheel
- Let Paul come up with a paragraph to redescribe what wheel does and fix the docs and the command description
pip search: https://github.com/pypa/pip/issues/5216