pypa/pip

pip 20.2 release (Q3 2020)

pradyunsg opened this issue Β· 48 comments

Another quarter! Another release!

There has definitely been enough work done to justify a release (we have had funded developer time!).

As always, we need a release manager for this release, from @pypa/pip-committers.

As has been the case for the past few releases (#7531 (comment)), I'd happy to be the release manager for this release as well. I'll be a bit more preemptive this time and self-assign myself as the RM for pip 20.2. Holler here if you're opposed to me being the RM. πŸ˜‰

Mapping the path from status quo, to where we want to be for the release:

  • #8591 -- I need to update vendored packages
  • #6998 -- a gone_in="20.2" deprecation that needs to be completed.
  • #5216 (comment) -- no longer a blocker IMO.
  • #8593 -- would be a good idea to not ship a broken link. :)

Other than that, looking at the new resolver work that's due for pip 20.2:

  • #8546 -- would be fixed by #8594
  • We still need a NEWS / Changelog entry for the new resolver presented behind --use-feature=2020-resolver.

(I think that's all?)

Right now, I think #6998 and the changelog entry are the only items that need to be done and haven't had someone take them up. @pypa/pip-team Any takers?

@pradyunsg we could add #8369 which is the easiest of the setup.py install deprecations. The others need more work.

Sounds good to me!

I'm hoping #8601 (or something similar) can be included to make it easier to use the new resolver 🀞

Just did another pass with help from @brainwane. Looks like we should be on track for a release on Monday. :)

In terms of TODOs before the release, there's:

  • finishing up #8594 (which closes #8546, wrapping up #8513) -- that's a TODO for me.
  • accepting/rejecting #8601 -- need @pypa/pip-committers' inputs/reviews on that. :)
  • finishing up documentation/announcement prep for the new resolver.

Thinking that I'd work over the weekend was a bad idea, especially since #8594 needed a lot more wrangling with the test suite than I had expected.

Once that and #8491 are merged, I'll make the release.

@pradyunsg here's a draft release announcement for email/Discourse - what do you think? In particular, if you think the highlights are off, please speak up.


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:

  • Implement PEP 376, REQUESTED metadata, so it can be easier to
    discover which distributions were installed by the user and which
    distributions were installed as dependencies

  • Parallelize the networking operations done by pip list --outdated
    and pip list --uptodate

  • Log debugging information about pip in pip install --verbose, and
    add a subcommand debug to pip config

  • Allow specifying --prefer-binary option in a requirements file

  • Install wheel files directly instead of extracting them to a temp
    directory

  • Support --use-feature in requirements files

  • The beta version of pip's next-generation dependency resolver

The new resolver is off by default because it is not yet ready for everyday use. Please test it with the --use-feature=2020-resolver flag. The new 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 see our guide on how to test and migrate, and how to report issues. We are preparing to release pip 20.3, with the new resolver on by default, in October.

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.

Do we want to also ask for feedback on --use-feature=fast-deps that can be combined with --use-feature=2020-resolver ?

Do we want to also ask for feedback on --use-feature=fast-deps that can be combined with --use-feature=2020-resolver ?

I think so. Let's add a couple of sentences about it. :)

@brainwane and I collaborated on the email here. I think we're good to go -- now for me to make the release... after I eat breakfast. :)

Made the release!

  • Uploaded to PyPI
  • Updated get-pip.py
  • Posted on discuss.python.org
  • Posted on distutils-sig

And, because I'm thinking of automating this process everytime I go through it, I wrote a script and used that for making this release.

# make-release.sh

tag=$1

# be on latest master
nox -s prepare-release -- $tag
git push origin HEAD

echo "File the PR and merge it."
read -n 1

git pull upstream master --ff-only
git push origin $tag --no-verify
git push upstream $tag --no-verify

rm -r build/ dist/ || true
nox -s build-release -- $tag
nox -s upload-release -- $tag

cd ../get-pip

git checkout master
git reset --hard HEAD
git pull upstream master
pip install -r requirements.txt
curl -X PURGE https://pypi.org/simple/pip/
invoke generate
git add .
git commit -m "Update to $tag"
git tag $tag  # this should change to `git tag -s -m "$tag" $tag` in the future

git push origin master $tag
git push upstream master $tag

@pypa/pip-committers There's no "embargo" on master -- it's open for merging PRs as usual. I'll cherry-pick bugfixes as needed.

I just tweeted; also today I'll send a bunch of announcement emails and do other publicity.

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

Pradyun already announced on Discourse and distutils-sig.

I've now announced:

I still need to do devpi-dev, python-dev, the psf-community & psf-volunteers lists, Carpentries-discuss, and the newsletters (Import Python, Python Weekly, and Pycoders weekly). I'll do those today.

There are many other venues I'd also like to hit but I think they'll have to wait till next week because I have other commitments today & tomorrow.

Looks like we have at least a few reasons to make a bugfix release:

I'd like to wait over the weekend to give some more time for bug reports / PRs / reviews to roll in. Let me know if there's anything else I've missed that should be included in a bugfix release. If everything works out, I'll make a bugfix release on Monday. :)

I've now announced on/to:

@pradyunsg if possible I think we also need to do some changelog/towncrier magic, because right now the #8459 NEWS entry does not specifically mention ResolutionImpossible and I think it should.

And maybe we should have some NEWS entries for #8377 #8546 and #8513 too.

OK, answered @zooba's question on python-dev; the Python team should bundle the 20.2 bugfix release (20.2.1?) in Python 3.9.

Just spoke with Pradyun - looks like he wants to make the bugfix release within the next few hours.

@pradyunsg Please also review & merge #8688 before the bugfix release.

If #8678 is ready can that go in too? :)

I’m adding it into the 20.2.1 milestone so we don’t forget.

Thanks for flagging that @rouge8 and for adding it to the milestone @uranusjr! ^.^

I've got everything in the 20.2.1 milestone merged/closed now, except for the PR that I just filed. I'll do the release engineering work once that's merged. :)

pip 20.2.1 has been released, and get-pip.py has been updated.

As I'd thought might be the case, we need to tweak our bugfix release process, to handle news/ properly. Filed #8693 to cleanup news/ after the 20.2.1 release.

There's 2 more PRs that are outstanding in the 20.2.2 release milestone. Once those are merged, I'll cut the 20.2.2 release. And then, I think this release cycle is basically done.

Holler here if there's anything else you'd like to see included in the 20.2 release cycle as a bugfix. :)

To fellow maintainers in pypa/pip-team (not mentioned to avoid noisy notifications) -- if there's changes you want to see included in the 20.2.2 release, please make sure that the corresponding PR is in the 20.2.2 milestone (even if it's already merged) and let me know here that you've added it. :)

For easier reference, the two outstanding PRs are #8702 (a regression fix to how pip searches installed distributions) and #8687 (reduce keyring usage).

I just merged #8702 right now, so that leaves on #8687. :)

#8687 appears to be out of scope for a hotfix version and would be more qualified for a minor release.

@jessecooper as I noted in #8687 (comment), it's a substantial enough improvement that I don't think it should wait for 3 months until 20.3.

The discussion over at #8687 reached a concensus/conclusion. We're ready to go for 20.2.2. I'll cut the release in a bit. :)

pip 20.2.2 has been released (#8746 for the release PR).

@pradyunsg I can understand not wanting to wait 3 months to get something out but regardless of how substantial the improvement I don't think it should delay the release of a hotfix for a regression as that has a larger impact to the overall Python community. Either way, thank you guys for getting this release out it is greatly appreciated.

#8752 is a PR in line for a 20.2.3 release. I'll cut the release sometime tomorrow for it. Holler here if there's more stuff for the 20.2.3 bugfix. :)

Something to consider for 20.2.3, but not urgent: #8778.

I'mma cut 20.2.3 with #8778 and #8752 later tonight/early tomorrow. Let me know if anyone has any concerns with that. :)

No one hollered, and I missed my reminder again. Oops.

With #8853, I reckon this release cycle has run long enough and we can wrap it up now! Onward to 20.3!

@pradyunsg this is my own fault for doing things in the wrong order, but per https://discuss.python.org/t/an-update-on-pip-and-dependency-resolution/1898/11 would it be easy to make a 20.2.4 point release, mostly for the sake of updating the front page of pip.pypa.io?

Can do! Let me know which PRs you'd want to include on top of 20.2.3 (likely all documentation-only?) and I'll cut the 20.2.4 release with those updates. :)

@pradyunsg Right - #8942 (not yet merged), #8807, and #8933. And if you've made any improvements to performance related to #8664 it's probably worth including those as well.

Or you could just merge #8942 and cut a release of master!

In today's meeting @pradyunsg and I decided that

  • there will be a 20.2.4 release sometime before Oct 15th, ideally sooner (before the 20.3 release #8936 which will probably be in the second half of the month)
  • since there are some things in master that should not go out in a point release, 20.2.4 will be cut off 20.2.3 rather than off master
  • 20.2.4 will bundle docs & performance improvements, including those listed above, and ideally the resolution to #8664 as well

Per conversation with @pradyunsg just now -- things to include in 20.2.4:

docs:

  • #8942 (how to default to new resolver)
  • #8807 (ux docs)
  • #8933 (index page about resolver and UX work)

additional docs suggestions:

performance:

#8990 is the 20.2.4 release PR. Some changes listed in the previous comment were already part of other 20.2 releases. The exact list for the 20.2.4 release is available in the PR.

Alrighty! pip 20.2.4 has been out for 3 hours now, and seems to have been well received so far (i.e. no new bug reports). As mentioned, the changelog has the list of exact changed included in the bugfix, and so does #8990. :)

Gonna wrap this up proper, and focus on getting to out 20.3 later this month!