This is mostly a heads up for redistributors, since I can’t really figure out any other good place to put this. There’s been a bunch of discussion around this in pip’s issue tracker, and I figured that this is important enough to call out in a more “visible” spot.
The upcoming pip release will have rich
vendored in it. You should be able to find references to most of the discussion and lists of things we’re going to be doing around this in this issue: Adopt rich, for handling terminal output · Issue #10461 · pypa/pip · GitHub.
The main thing I want to say is: I’d strongly encourage redistributors to NOT reach out asking Rich to switch to setuptools. Rich is packaged with Poetry[1] and I expect other projects that pip vendors to also start moving to other build backends over the next year. Pulling back any part of the Python ecosystem that uses newer build systems is NOT the solution here. FWIW, even if the maintainers of Rich are very accomodating and change their entire workflows to use setuptools… in a few months, when packaging
will move away from setuptools, I’m unlikely to be as accomodating[2].
Also, I don’t think there’s any version of this where pip drops this dependency either[2:1] – I don’t think it is reasonable to block significant UI/UX improvements in pip, for being accomodating toward redistributors who aren’t ready for handling pyproject.toml-based projects and don’t do what we recommend in our vendoring policy.
Rather, I encourage any such redistributors to fill in the gaps in tooling they have, so that it can deal with pyproject.toml-based projects. build
(Python API and CLI) should have everything necessary to generate wheels from pyproject.toml-based projects and installer
(Python API) should have everything necessary to install them in a way that pip would[3]. If there’s something missing in these projects, please reach out to those projects on their issue trackers and talk to their maintainers there. Let’s not have an extended discussion about them here.
PS: I strongly encourage everyone to start saying pyproject.toml-based projects, rather than using a PEP 517 to identify the newer build system interface; especially since we now have two PEPs that specify it (PEP 517 and PEP 660). Or more, if you wanna include stuff like PEP 518 and PEP 621. And, if you know what each of those numbers refer to without looking it up, then… you’ll hopefully also understand why this is bad for communication with a wider audience and how using the file as the identifier can help.