-
Notifications
You must be signed in to change notification settings - Fork 252
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
packaging.tags does not support *-none-any
wheels for non-py*
interpreter tags
#311
Comments
This is a tricky situation, because the PyPy wheel is special — it does not contain the C extension. We do not want this being picked up by anything except pypy. Unfortunately, after pip version 19.3.1 (and until at least version 20.1.1), pip will not pick up the `pp3-none-any.whl` tag (see https://github.com/pypa/pip/issues/8347 ), so pypy users with a recent version of pip will get the sdist (which is our only alternative really anyway). We'll ship these wheels anyway, since this seems to be an issue with pip, and this is indeed the proper tag for PyPy 3 wheels.
This seems to be an issue with >>>> from packaging import tags
>>>> for t in tags.generic_tags(): print(t)
pp36-pypy36_pp73-manylinux2014_x86_64
pp36-pypy36_pp73-manylinux2010_x86_64
pp36-pypy36_pp73-manylinux1_x86_64
pp36-pypy36_pp73-linux_x86_64
pp36-none-manylinux2014_x86_64
pp36-none-manylinux2010_x86_64
pp36-none-manylinux1_x86_64
pp36-none-linux_x86_64
>>>> for t in tags.compatible_tags(): print(t)
[... snip]
py36-none-any
py3-none-any
py35-none-any
py34-none-any
py33-none-any
py32-none-any
py31-none-any
py30-none-any It only lists |
Hm, this was apparently done deliberately, based on the idea that @brettcannon Is this use case, where I have a PyPy-specific build not using any version-specific features of PyPy, something you considered already? Is there a workaround? If not, I think it would be a good idea to add support for at least (P.S. We can probably move this issue over to pypa/packaging, since it seems this was a deliberate choice over there.) |
This is basically pypa/pip#7629? |
It is, indeed. Closing as a duplicate of pypa/pip#7629. If someone understands this issue well enough, they're welcome to make a pip-specific fix for this change. There's an approach that there's reasonable consensus on, and a PR for that which needs updating -- pypa/pip#7655. |
They are both caused by #184, but I feel each tag should be discussed separately. |
I'd bundle them together TBH -- pypa/pip#7629 is the right place within pip's issue tracker for discussing the PyPy tags w/ |
@pradyunsg I'm having a bit of trouble disentangling them, but it seems from the description of pypa/pip#7655 that these are "legacy" wheel tags for specific binaries. I do not think " |
Moved as requested, and, well, /cc @mattip @brettcannon for thoughts. :) |
Three things. One, @pganssle why don't you want CPython users to use the pure Python wheel and have to build from source otherwise? If the pure Python wheel is good enough for PyPy why isn't it good enough for e.g. Alpine users? And if they really care about performance couldn't they choose to skip the wheel to build from source? Two, using And three, if you add
I still don't think the ABI-agnostic interpreter versions are worth it, but people keep bringing them up just often enough I'm going to stop arguing against them if we can agree as to where they should land in the order and someone submits a PR for whatever we agree to. |
This is because the pure python version isn't just "good enough" for PyPy, it's better, but only on PyPy, because PyPy needs to use the cpyext compatibility layer in order to make use of any C extensions, which is dramatically slower than JIT-compiled PyPy code. See the benchmarks in the PyPy support PR; generally the pure Python version is ~10x faster (here's one example):
Those numbers are reversed on other platforms, and I would prefer other platforms to build from source. If I want to add the ability to opportunistically fall back to the pure python library on musl, etc, I'll put that in the
I am not sufficiently familiar with the issues of ordering (and in my case it doesn't matter, since I won't be shipping any
By that ordering, I think (though I could be wrong) it would go:
|
One other wrinkle in this (and one of the reasons I dropped support for this tag that I just remembered), is there is no consistent way to get the Lines 776 to 787 in 59e1488
You will notice it reads from the So to make this work you will either have to special-case PyPy for interpreter version support (which we just stopped doing at PyPy's request), or someone will have to introduce some other way to consistently get the interpreter version as discrete components (possibly config variables for the major and minor versions separately which may help with #308 |
Due to this continuing to come up, if someone wanted to added a |
*-none-any
wheels for non-py*
interpreter tags
Environment
Description
It appears that
pip
does not considerpp3-none-any
a valid wheel tag on PyPy 3 afterpip==19.3.1
. This is a problem for the PEP 615 backport, since it has both a C and a pure Python implementation, and I want to ship a wheel containing only the pure Python implementation only for PyPy (anyone else who doesn't have a wheel should fall back to the sdist).Here is a minimal reproducing bash script, which downloads an arbitrary universal wheel and renames it to end with
pp3-none-any.whl
:Expected behavior
The expected behavior is to install the
pp3
wheel when on PyPy, which was the behavior in 19.3.1:It's possible that this is another manifestation of pypa/pip#7629.
The text was updated successfully, but these errors were encountered: