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). * https://python.zulipchat.com/#narrow/stream/218659-pip-development/topic/Resolver.20and.20Testing/near/193347324 - 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