-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
BLD: Add Python 3.11 builds to CI #23637
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
BLD: Add Python 3.11 builds to CI #23637
Conversation
The 3.11 builds are slow at the moment (on my fork to see that here will need the "Run cibuildwheel" label added) (and so maybe this shouldn't be merged yet?) given that both Lines 307 to 311 in 276436a
are not pure-Python and so have wheels that need to be built and neither of them have Python 3.11 wheels out as of 2022-08-16 (though they are both in a good position for their next release given contourpy/contourpy#151 and nucleic/kiwi#153). edit: I take that back! I wrote this commit last night and in that time |
With cibuildwheel v2.9.0, CPython 3.11 wheels are now built (by default) and as NumPy now has CPython 3.11 wheels out as of NumPy v1.23.2, matplotlib can build CPython 3.11 wheels (though as of 2022-08-16 contourpy does not have 3.11 wheels yet). - c.f. https://github.com/pypa/cibuildwheel/releases/tag/v2.9.0
fa76b6e
to
84e82a2
Compare
Note that lack of
in a clean venv takes 25 seconds on my dev machine, and less than 18 seconds if |
Yup, you're very right and I was just coming back here after testing this myself to comment a similar thing. $ docker run --rm -ti python:3.11.0rc1-bullseye /bin/bash
root@5b71d1f2c405:/# python -m venv venv && . venv/bin/activate
(venv) root@5b71d1f2c405:/# python -m pip --quiet install --upgrade pip setuptools wheel
(venv) root@5b71d1f2c405:/# time python -m pip install --no-binary contourpy contourpy
Collecting contourpy
Downloading contourpy-1.0.4.tar.gz (12.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.2/12.2 MB 22.3 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Collecting numpy>=1.16
Downloading numpy-1.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.0/17.0 MB 21.6 MB/s eta 0:00:00
Building wheels for collected packages: contourpy
Building wheel for contourpy (pyproject.toml) ... done
Created wheel for contourpy: filename=contourpy-1.0.4-cp311-cp311-linux_x86_64.whl size=254190 sha256=aec204ffc9cef62f736cc0469dcc842636571c6b7dcd9c8a95a85d1f044b4741
Stored in directory: /root/.cache/pip/wheels/52/10/34/903aecdade518daec5468b58437fb4e2a85b22a9c7b19c82f7
Successfully built contourpy
Installing collected packages: numpy, contourpy
Successfully installed contourpy-1.0.4 numpy-1.23.2
real 0m13.112s
user 0m41.278s
sys 0m1.843s
(venv) root@5b71d1f2c405:/# time python -m pip install --no-binary kiwisolver kiwisolver
Collecting kiwisolver
Downloading kiwisolver-1.4.4.tar.gz (97 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.1/97.1 kB 7.7 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: kiwisolver
Building wheel for kiwisolver (pyproject.toml) ... done
Created wheel for kiwisolver: filename=kiwisolver-1.4.4-cp311-cp311-linux_x86_64.whl size=1414328 sha256=ca7ac0512764ba62b79b9a21e939056fb12d1b5a0613e517e8dc2881db46951b
Stored in directory: /root/.cache/pip/wheels/84/c8/da/eeada8f730a7ebb3492827ae6ea103997d42430e4766201d8e
Successfully built kiwisolver
Installing collected packages: kiwisolver
Successfully installed kiwisolver-1.4.4
real 0m12.259s
user 0m11.049s
sys 0m0.770s
(venv) root@5b71d1f2c405:/# So I guess the build for |
Thanks @matthewfeickert ! I must have miss-read the release notes on the cibuildwheel update as I thought we were already doing this :/ |
I think we both did, as I had just seen the release note comment
and (unreasonably) assumed that things would be extra magically taken care of somehow. Then I noticed that there weren't matplotlib/.github/workflows/cibuildwheel.yml Lines 68 to 71 in 9f5c041
that there is never a default and so this needed to get added. This all makes sense to me from a workflow pattern as you want to ensure that you're building the wheels you think you are and so explicitly stating them seems good to my mind. 👍 |
Should this be backported to 3.5.3? To enable 3.11 wheels? For example, #23645. (I do not know how the release build-process works...) |
I'm inclined not, we have historically not gone back and rebuilt wheels after the fact. If we do 3.5.4 we should re-consider. |
PR Summary
With
cibuildwheel
v2.9.0
, CPython 3.11 wheels are now built (by default) and as NumPy now has CPython 3.11 wheels out as of NumPy v1.23.2, matplotlib can build CPython 3.11 wheels (though as of 2022-08-16contourpy
does not have 3.11 wheels yet).PR Checklist
Tests and Styling
pytest
passes).flake8-docstrings
and runflake8 --docstring-convention=all
).Documentation
doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).