Announcement: pip 20.2 release!

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. 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). Please test it with pip install --use-feature=fast-deps ... and report bugs to the issue tracker. This functionality is still experimental and not ready for everyday use.

You can find more details (including deprecations and removals) in the changelog.

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 Awards) and to the Chan Zuckerberg Initiative DAF, an advised fund of Silicon Valley Community Foundation, for their funding that enabled substantial work on the new resolver.

9 Likes

Congratulations to the contributors of pip that made this release possible with various improvements! My heart is filled with warmth, pride and childlike joy to be part of this process!

While other features, optimizations and bug fixes are really well documented, the fast-deps exprimental feature is not quite. Despite its name, at the time of writing, for most of the cases (where the wheels are small) it does not make the pip install/pip download process any faster. The only case that it might be an optimization is where pip runs into a lot of dependencies conflicts and has to perform a series of backtracking. Edit: see also GH-8670.

Because of this, for the moment this unstable feature is only enabled when the 2020-resolver is used. In order to do so, invoke pip using pip --use-feature=2020-resolver --use-feature=fast-deps ... or (highly unrecommended) pip config edit with

[global]
use-feature =
    2020-resolver
    fast-deps

The purpose of my call for help on testing is solely to discover issues that slipped through the test suit as well as the peer reviewing process. I really appreciate any early input, as it will help me not only correcting my model but also save me from creating burden on the work of the pip team.

3 Likes

:balloon:

Maybe also announce via https://twitter.com/ThePyPA?

Here’s the env var:

export PIP_USE_FEATURE=2020-resolver

Disable it with:

unset PIP_USE_FEATURE
3 Likes

Tweeted; also, today, I’ll do other announcement publicity (emails to various email lists, etc.).

Edited later to add – some other time-sensitive stuff came up, so more announcements will be tomorrow.

2 Likes

Great. I’m going to update my virtuelenv.

Blogged and made some other announcements.

Also, we’ll probably make a bugfix release next week.

1 Like

Bugfix release 20.2.1 is out.