On behalf of the PyPA, I am pleased to announce that we have just released pip 20.2, a new version of pip. You can install it by running python -m pip install --upgrade pip.
The highlights for this release are:
- The beta of the next-generation dependency resolver is available - Faster installations from wheel files - Improved handling of wheels containing non-ASCII file contents - Faster pip list using parallelized network operations - Installed packages now contain metadata about whether they were directly requested by the user (PEP 376’s REQUESTED file)
The new dependency resolver is *off by default* because it is *not yet ready for everyday use*. The new dependency resolver is significantly stricter and more consistent when it receives incompatible instructions, and reduces support for certain kinds of constraints files, so some workarounds and workflows may break. Please test it with the --use-feature=2020-resolver flag. Please see our guide on how to test and migrate, and how to report issues https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-2-2020. We are preparing to change the default dependency resolution behavior and make the new resolver the default in pip 20.3 (in October 2020).
This release also partially optimizes pip’s network usage during installation (as part of a Google Summer of Code project by McSinyx https://summerofcode.withgoogle.com/projects/#5428041779511296). Please test it with pip install --use-feature=fast-deps ... and report bugs to the issue tracker https://github.com/pypa/pip/issues/new?template=bug-report.md. This functionality is *still experimental* and *not ready for everyday use*.
You can find more details (including deprecations and removals) in the changelog https://pip.pypa.io/en/stable/news/.
As with all pip releases, a significant amount of the work was contributed by pip’s user community. Huge thanks to all who have contributed, whether through code, documentation, issue reports and/or discussion. Your help keeps pip improving, and is hugely appreciated.
Specific thanks go to Mozilla (through its Mozilla Open Source Support https://www.mozilla.org/en-US/moss/ Awards) and to the Chan Zuckerberg Initiative https://chanzuckerberg.com/eoss/ DAF, an advised fund of Silicon Valley Community Foundation, for their funding that enabled substantial work on the new resolver.
In case you want a broader view of what the team's been doing, we posted a midyear report on the Python Software Foundation blog: https://pyfound.blogspot.com/2020/07/pip-team-midyear-report.html
Also, I'd love input from y'all on this question on performance for the new resolver https://github.com/pypa/pip/issues/8664 : what level of performance is acceptable for pip, and are we there yet?
Our new dependency resolver may make pip a bit slower than it used to be.
[Later data shows: yeah.]
Therefore I believe we need to pull together some extremely rough speed tests and decide what level of speed is acceptable, then build some automated testing to check whether we are meeting those marks.
Another question arising from that issue: is it appropriate to tell more of our users to use `--no-deps` to speed up performance? I think a lot of our users would benefit from using `--no-deps` for a lot of their use cases, but don't know about it.
pip 20.2.4 is out right now and has a bunch of performance improvements compared to previous 20.2.x releases, so it's worth trying out. We intend on releasing pip 20.3, with the new dependency resolver as default, next week, maybe Wednesday or Thursday the 28th or 29th of October.