46
46
- uses : actions/setup-python@v5
47
47
name : Install Python
48
48
with :
49
- python-version : 3.9
49
+ python-version : ' 3.10 '
50
50
51
51
# Something changed somewhere that prevents the downloaded-at-build-time
52
52
# licenses from being included in built wheels, so pre-download them so
@@ -100,7 +100,15 @@ jobs:
100
100
CIBW_AFTER_BUILD : >-
101
101
twine check {wheel} &&
102
102
python {package}/ci/check_wheel_licenses.py {wheel}
103
- CIBW_CONFIG_SETTINGS : setup-args="--vsenv"
103
+ # On Windows, we explicitly request MSVC compilers (as GitHub Action runners have
104
+ # MinGW on PATH that would be picked otherwise), switch to a static build for
105
+ # runtimes, but use dynamic linking for `VCRUNTIME140.dll`, `VCRUNTIME140_1.dll`,
106
+ # and the UCRT. This avoids requiring specific versions of `MSVCP140.dll`, while
107
+ # keeping shared state with the rest of the Python process/extensions.
108
+ CIBW_CONFIG_SETTINGS_WINDOWS : >-
109
+ setup-args="--vsenv"
110
+ setup-args="-Db_vscrt=mt"
111
+ setup-args="-Dcpp_link_args=['ucrt.lib','vcruntime.lib','/nodefaultlib:libucrt.lib','/nodefaultlib:libvcruntime.lib']"
104
112
CIBW_MANYLINUX_X86_64_IMAGE : manylinux2014
105
113
CIBW_SKIP : " *-musllinux_aarch64"
106
114
CIBW_TEST_COMMAND : >-
@@ -116,7 +124,7 @@ jobs:
116
124
cibw_archs : " aarch64"
117
125
- os : windows-latest
118
126
cibw_archs : " auto64"
119
- - os : macos-12
127
+ - os : macos-13
120
128
cibw_archs : " x86_64"
121
129
- os : macos-14
122
130
cibw_archs : " arm64"
@@ -134,46 +142,64 @@ jobs:
134
142
name : cibw-sdist
135
143
path : dist/
136
144
145
+ - name : Build wheels for CPython 3.13
146
+ uses : pypa/cibuildwheel@ee63bf16da6cddfb925f542f2c7b59ad50e93969 # v2.22.0
147
+ with :
148
+ package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
149
+ env :
150
+ CIBW_BUILD : " cp313-* cp313t-*"
151
+ CIBW_BUILD_FRONTEND :
152
+ " pip; args: --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
153
+ CIBW_FREE_THREADED_SUPPORT : true
154
+ # No free-threading wheels available for aarch64 on Pillow.
155
+ CIBW_TEST_SKIP : " cp313t-manylinux_aarch64"
156
+ # We need pre-releases to get the nightly wheels.
157
+ CIBW_BEFORE_TEST : >-
158
+ pip install --pre
159
+ --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
160
+ contourpy numpy pillow
161
+ CIBW_ARCHS : ${{ matrix.cibw_archs }}
162
+
137
163
- name : Build wheels for CPython 3.12
138
- uses : pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1
164
+ uses : pypa/cibuildwheel@ee63bf16da6cddfb925f542f2c7b59ad50e93969 # v2.22.0
139
165
with :
140
166
package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
141
167
env :
142
168
CIBW_BUILD : " cp312-*"
143
169
CIBW_ARCHS : ${{ matrix.cibw_archs }}
144
170
145
171
- name : Build wheels for CPython 3.11
146
- uses : pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1
172
+ uses : pypa/cibuildwheel@ee63bf16da6cddfb925f542f2c7b59ad50e93969 # v2.22.0
147
173
with :
148
174
package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
149
175
env :
150
176
CIBW_BUILD : " cp311-*"
151
177
CIBW_ARCHS : ${{ matrix.cibw_archs }}
152
178
153
179
- name : Build wheels for CPython 3.10
154
- uses : pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1
180
+ uses : pypa/cibuildwheel@ee63bf16da6cddfb925f542f2c7b59ad50e93969 # v2.22.0
155
181
with :
156
182
package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
157
183
env :
158
184
CIBW_BUILD : " cp310-*"
159
185
CIBW_ARCHS : ${{ matrix.cibw_archs }}
160
186
161
- - name : Build wheels for CPython 3.9
162
- uses : pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1
163
- with :
164
- package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
165
- env :
166
- CIBW_BUILD : " cp39-*"
167
- CIBW_ARCHS : ${{ matrix.cibw_archs }}
168
-
169
187
- name : Build wheels for PyPy
170
- uses : pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1
188
+ uses : pypa/cibuildwheel@ee63bf16da6cddfb925f542f2c7b59ad50e93969 # v2.22.0
171
189
with :
172
190
package-dir : dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
173
191
env :
174
- CIBW_BUILD : " pp39 -*"
192
+ CIBW_BUILD : " pp310 -*"
175
193
CIBW_ARCHS : ${{ matrix.cibw_archs }}
176
- if : matrix.cibw_archs != 'aarch64'
194
+ # Work around for https://github.com/pypa/setuptools/issues/4571
195
+ # This can be removed once kiwisolver has wheels for PyPy 3.10
196
+ # https://github.com/nucleic/kiwi/pull/182
197
+ CIBW_BEFORE_TEST : >-
198
+ export PIP_CONSTRAINT=pypy-constraint.txt &&
199
+ echo "setuptools!=72.2.0" > $PIP_CONSTRAINT &&
200
+ pip install kiwisolver &&
201
+ unset PIP_CONSTRAINT
202
+ if : matrix.cibw_archs != 'aarch64' && matrix.os != 'windows-latest'
177
203
178
204
- uses : actions/upload-artifact@v4
179
205
with :
@@ -203,9 +229,9 @@ jobs:
203
229
run : ls dist
204
230
205
231
- name : Generate artifact attestation for sdist and wheel
206
- uses : actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
232
+ uses : actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
207
233
with :
208
234
subject-path : dist/matplotlib-*
209
235
210
236
- name : Publish package distributions to PyPI
211
- uses : pypa/gh-action-pypi-publish@ec4db0b4ddc65acdf4bff5fa45ac92d78b56bdf0 # v1.9.0
237
+ uses : pypa/gh-action-pypi-publish@15c56dba361d8335944d31a2ecd17d700fc7bcbc # v1.12.2
0 commit comments