# How to reinvent the wheel

**URL:** <https://discuss.python.org/t/how-to-reinvent-the-wheel/54106>\
**Category:** Standards\
**Created:** [May 24, 2024, 4:38am UTC](https://discuss.python.org/t/how-to-reinvent-the-wheel/54106 "2024-05-24T04:38:37Z")\
**Posts on this page:** 1\
**Showing post:** 25

<div class="post-metadata">

**Author:** ![geofft](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/geofft/32/20031_2.png) [@geofft](https://discuss.python.org/u/geofft)\
**Post date:** [May 24, 2024, 7:50pm UTC](https://discuss.python.org/t/how-to-reinvent-the-wheel/54106/25 "2024-05-24T19:50:06Z")

</div>

> [@rgommers](#):
>
> That price is way too high - I’d prefer to see an error when `pip` is too old.

There’s another trick here though! 🙂 An installer that supports `.whl2` will always ignore a `.whl` of the same version. So if you are fine with an error message when pip is too old (instead of a successful install of a 1.0 wheel), you can upload a `.whl` that contains `Wheel-Format: 2.0`, and that will trigger an error message in _current_ versions of pip, while not affecting any versions of pip that support `.whl2`. You don’t have to upload a usable 1.0 wheel.

Uploading tools can maybe even do this automatically; the dummy 2.0 wheel is a small constant. Or maybe Warehouse can inject it into indexes if there’s a `.whl2` but no `.whl`.

> [@rgommers](#):
>
> to avoid a fallback to building from sdist

If we’re talking about 2.0 formats anyway, I think we should make an attempt to solve this problem instead of starting with it as a fixed constraint; it’s a problem worth solving for plenty of other reasons. [Preventing unwanted attempts to build sdists](https://discuss.python.org/t/preventing-unwanted-attempts-to-build-sdists/54169) is my proposal, using the same trick of coming up with a new file extension that existing installers ignore, but there are other proposals too.

---

_[View the full topic](https://discuss.python.org/t/how-to-reinvent-the-wheel/54106)._
