How can build backends avoid breaking users when they make backwards incompatible changes?

To be honest, I believe that the following would be very very useful and would be a tremendous quality of life improvement:

  1. Not hiding warnings.
    This is a well-know and recuring topic of discussion. The snippet in Warnings in backends as suppressed by frontends · Issue #558 · pypa/packaging-problems · GitHub looks like an interesting starting point [1]. It would also be incredible useful in other contexts (e.g. setuptools/setuptools/command/editable_wheel.py at v78.1.0 · pypa/setuptools · GitHub).

  2. Tell the users which packages have been installed via sdist.
    For example, imagine that after running install -r requirements.txt the user get a message like:

    No wheels available for packages ab, bc, cd, de. Installed using sdists.

    Read about potential drawbacks and reproducibility issues in https://packaging.python.org/guides/sdist-drawbacks-and-reproducibility[2].

    That would be great, no?
    Now I don’t mean to put the spot on the colleagues working on frontends. I know that they are very complex to maintain and have problems of their own. I am just mentioning this as brainstorm.

    Possibly a very similar approach could be used to increase visibility on issues that are also dear to frontends, for example, imagine the following:

    Packages ab, bc, cd, de do not contain pyproject.toml.
    Future installations may be impacted by implicit --use-pep517.

    Please read more information about … … …



  1. Alternatively or additionally we can also discuss thinks like adding a build-api hook for the frontend to configure log verbosity and/or a way for the backend to tell the frontend which logger name to subscribe for messages that are essential to be displayed to the user. ↩︎

  2. Hypothetical link, but it is in my mind to start working on something like https://packaging.python.org/guides/sdist-drawbacks-and-reproducibility, if anyone would like to beat me to it, please be my guest. ↩︎

9 Likes