@webknjaz's ramblings

pip-tools: From Jazzband to PyPA

written by Sviatoslav on

pip-tools v7.7.0 is out, and it's the first release we've shipped from its new home under the Python Packaging Authority. Stephen usually writes the release notes and I usually procrastinate plan to write something "later". But a move like this doesn't happen every decade (well, almost exactly once a decade), so here's my half of the story.

Nine and a half years of jazz 🎷

Vincent moved pip-tools into Jazzband back in February 2017. Jazzband's idea was simple and kind of radical: anyone who joined got push access, and projects were looked after by the crowd. It worked surprisingly well for a long time. I became one of the project leads in June 2025, and Stephen followed in August.

I'll admit something. I used to argue against moving pip-tools to the PyPA. My worry was that it would make it harder for new people to get involved, since Jazzband gave anybody a way in. That argument stopped mattering pretty quickly.

The music stops

On March 14, 2026, Jannis published Sunsetting Jazzband along with a wind-down plan. He gave three reasons:

Django projects had Django Commons to go to. Projects like pip-tools didn't have a designated successor, so we had to pick one ourselves.

Democracy, the mailing list edition πŸ—³οΈ

I opened "🎺 Life after Jazzband 🎷" the same evening. Stephen and I had met in person the year before and found we agreed on most things about maintenance, so we didn't need much discussion. On March 19, I started a vote on the pypa-committers list. I pitched pip-tools as an early DIY lock file implementation that Dependabot relies on and that inspired parts of uv.

Then came the bureaucratic hiccup: Stephen couldn't vote. He wasn't on the mailing list, even though he's a PyPA committer. Dustin fixed that in about five minutes. On April 2, I declared the vote passed with fourteen +1s and no objections.

We also checked with the emeritus leads still listed in Jazzband. Vincent Philippon, David Genest and Albert Tugushev all gave the move their blessing. Vincent's reply is worth reading; it ends with "many joyful tears". Hugo reminded everyone that pip-tools is used to release CPython itself, no pressure πŸ˜….

…and then we waited

Agreeing to move is the easy part. Actually moving required the Jazzband side to hand things over, and the wind-down plan scheduled transfers for June through December. After a chat at EuroPython, Jannis came back in October and said, roughly, "let's just do it now". So we did.

The actual move 🚚

Here's what happened, roughly in order:

All the bookkeeping is in jazzband/help#435. Jannis was extremely thorough on his end, down to reconciling fourteen upload records nobody but him remembered existed.

So what changes for you?

Almost nothing:

v7.7.0 is also the first real end-to-end test of the new release pipeline. If you're reading this, it probably worked 🀞.

The interesting changes are in the release itself: Python 3.15 support, dropping 3.9, a new pip-tools[stable] extra and more. Stephen covers them in the changelog. Go read that instead of my ramblings.

Thanks πŸ’œ

Thank you, Jannis, for a decade of Jazzband and for such a careful handover. Thanks to Pradyun, Dustin, Jacob and Hugo for doing the behind-the-scenes work. Thanks to everyone on pypa-committers who voted, and to the emeritus maintainers for so many years of work.

And thanks, Stephen, for doing most of the heavy lifting, as usual. If you'd like to keep him going, here's his sponsors page. Mine is right here, too.

See you in the new home! πŸ––