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
[Bug]: pypy3.9 wheel has hidden dependency on numpy>=1.23.0 #25811
Comments
pypy3.8 wheel doesn't have this problem |
We use cibuildwheel and oldest-supported-numpy to build the wheels matplotlib/.github/workflows/cibuildwheel.yml Lines 124 to 133 in b3bd929
In turn it looks like there are not pinnings for numpy in oldest-supported-numpy (see https://github.com/scipy/oldest-supported-numpy/blob/b0b3376f6838abd91a9988b936f70939d4acb775/setup.cfg) so we ended up with an un-constrained numpy used in the build. There do not appear to be any wheels for numpy and pypy39 which is probably why it is not pinned. I think this is another example of the problems inherent in wheels (wheels do not have enough metadata to encode ABI constraints only known at build time) and the way that wheels are built (every project builds and publishes on their own). See https://pypackaging-native.github.io for a lot more details (and other problems!). I'm inclined to say the course of action here is to pull our wheels for pypy39 and stop building them until numpy first publishes wheels. |
I put this on the agenda for today's developer call. |
That sounds about right to me. I suspect numpy 1.25.0 will have a wheel for PyPy 3.9 - @mattip is this on your radar? |
pypi does not let you yank by file, only whole releases. We have questionable pypy39 wheels up for 3.6.0, 3.6.1, 3.6.2, 6.6.3, 3.7.0, and 3.7.1 . |
FWIW, NumPy has been able to build PyPy3.9 for some time, since we've had to build it in the process of building our wheels. I can't say whether the tests would work though. |
Can we pin and make |
Yes. PyPy3.9 is tested in CI, I will submit a PR to create wheels on I see matplotlib has a 32-bit wheel for linux. Does that pin to a version of NumPy that still had 32-bit linux wheels (I think the last one was 1.21)? So the proposal to create Going forward, I would suggest you not create 32-bit wheels for PyPy. |
On main we no longer build 32 bit wheels and will not publish them in the future. |
My thought on So on our end we could spin up envs for each mpl version where we can have a built-from-sdist numpy of the version we want, create a new ( Perhaps the preferred wheel filename change would actually be https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-format |
PyPy3.9 wheels already are uploaded to https://anaconda.org/scipy-wheels-nightly/numpy/files and will be part of the next release. |
Bug summary
The pypy3.9 wheel indicates dependency on numpy >=1.20.0, but in fact needs numpy >=1.23.0
Code for reproduction
Actual outcome
Expected outcome
Additional information
works around the problem
Operating system
No response
Matplotlib Version
3.7.1
Matplotlib Backend
No response
Python version
No response
Jupyter version
No response
Installation
pip
The text was updated successfully, but these errors were encountered: