You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While investigating the recent issue with Setuptools 78.x, it occurred to me that when Pip builds a wheel, the default output doesn't actually describe the build dependencies:
Etc. With --verbose we find out the version of setuptools that was used in the isolated build environment, but we also get many more pages of output describing the entire (error-free) build process, as well as details about the build environment creation process.
It would also be nice for the output to be clearer about the fact that these installations are for a temporary build environment.
Describe the solution you'd like
We should just be able to see something like:
Collecting requests
Downloading requests-2.32.3.tar.gz (131 kB)
Setting up isolated (temporary) build environment ...
Installing build dependencies ...
Successfully installed setuptools-78.0.2
# possibly other things listed here, if pyproject.toml demanded them.
... done
Getting requirements to build wheel ...
# possibly other things listed here, if the PEP 517 hooks trigger such installation.
... done
... done
Preparing metadata (pyproject.toml) ... done
It would also be nice for the output to be clearer about the fact that these installations are for a temporary build environment.
Tthere's an important balance here, we don't want people to misinterpret this as those build dependencies are being installed into their current environment, or to be too verbose so the logs become less useful to casual readers.
IMO, I think your example is too vebose, but think exposing the build dependency name and versions makes sense, e.g.
Installing build dependencies into isolated build environment: setuptools-78.0.1
I'm generally in favour, specifically with @notatallshaw's suggestion.
This is somewhat complicated by the fact pip calls itself in a subprocess to install build dependencies so the root pip process won't have access to sufficient state to reproduce a similar successfully installed message. We'd have to extract the message from the pip subprocess which is fragile. It's probably best to do this on a "best-effort" basis with a fallback to the status quo if it breaks due to unexpected output (until #9081 which would sidestep this issue is resolved).
Also, this is impossible:
Installing build dependencies into isolated build environment: setuptools-78.0.1
The root pip process won't know exactly what packages (and especially versions!) are going to be installed in the build environment. I suppose the solution is to replace the done with setuptools-78.0.1 although that's a bit janky... I just don't want to add a ton of additional lines to pip's output here.
What's the problem this feature will solve?
While investigating the recent issue with Setuptools 78.x, it occurred to me that when Pip builds a wheel, the default output doesn't actually describe the build dependencies:
Etc. With
--verbose
we find out the version ofsetuptools
that was used in the isolated build environment, but we also get many more pages of output describing the entire (error-free) build process, as well as details about the build environment creation process.It would also be nice for the output to be clearer about the fact that these installations are for a temporary build environment.
Describe the solution you'd like
We should just be able to see something like:
Alternative Solutions
N/A
Additional context
N/A
Code of Conduct
The text was updated successfully, but these errors were encountered: