I realized in this discussion I was losing track of which problems under discussion are problems the PEP tried to solve and which possible are solutions are ones the PEP actually proposed. I decided to go back over the PEP and see if I can be more specific about the aspects of it that make me think that the bigger problems are with the installer-index interface and not with the wheel format. A lot of the discussion here has been about the idea of a new .wheel
extension, but actually a lot of the PEP is just proposing standards changes of the form “installers/resolvers MUST do X”. For the most part those make a lot more sense to me, and my question is whether we would even need to do the extension change if those changes were made. Here are some relevant bits from the PEP:
However, resolvers do not currently exclude wheels with an incompatible wheel version. There is also currently no way for a resolver to check a wheel’s version without downloading the wheel directly.
These are problems with resolvers and/or indexes and not with the wheel format. It would be good to fix these problems even if no changes are made to the wheel format.
Resolvers, in the process of selecting a wheel to install, MUST check a candidate wheel’s Wheel-Version
, and ignore incompatible wheel files.
Therefore, installers SHOULD emit a warning if, in the process of resolving packages, they come across an incompatible wheel and skip it.
These changes seemed to have more support in the discussion, and are not actually about the wheel format; they’re just about installer/resolver behavior.
It could take upwards of four years before the majority of users are on updated resolvers, based on current data about PyPI installer usage
To allow for experimentation and faster adoption of 2.0 wheels, this PEP proposes a change to the file extension of the wheel file format, from .whl
to .whlx
for all future wheel versions.
Is the only reason for the extension change to avoid having to wait four years (or more)? It seems a bit odd to me to have borne with all these wheel-related issues for many years and now suddenly decide we have to switch the extension because we can’t wait any longer.
For the goal of experimentation, it seems like it should be possible to set up some kind of test index where people can upload wheels with new versions, test them with new installers, etc.
The main compatibility limitation of this PEP is for projects that start publishing solely new wheels alongside a source distribution. If a user on an older installer tries to install the package, it will fall back to the source distribution, because the resolver will skip all newer wheels.
This is a problem with sdists and installers/resolves, not with the wheel format. The problem has been discussed many times. It would be beneficial to fix the problem of unexpected sdist build attempts even if no changes are made to the wheel format.
Earlier I suggested that we should think about what wheel 2.0 will actually be like before we know if this PEP is a good idea, but now I’m kind of swinging the other way.
What if this PEP removed the proposal to change the wheel extension and just proposed the changes above related to what counts as standards-compliant installer/resolver behavior? (Or this could be broken out into a separate PEP.) It seems like there was much broader consensus in this thread that making those changes is a good idea. In way the PEP currently combines two things: an attempt to fix problems with existing installer assumptions, and an attempt to look forward to a future wheel format. Both may be good, but maybe we can do the former even if we don’t agree about how to do the latter.