@@ -65,43 +65,53 @@ jobs:
6565 macos-x86_64 :
6666 if : ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
6767 runs-on : macos-15
68+ strategy :
69+ matrix :
70+ # Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
71+ # which is not available on macos-15 runners
72+ python-version : ["3.11", "3.12", "3.13", "3.14"]
6873 steps :
6974 - uses : actions/checkout@v4.2.2
7075 with :
7176 submodules : recursive
7277 - uses : actions-rust-lang/setup-rust-toolchain@v1.11.0
7378 - uses : actions/setup-python@v5.5.0
7479 with :
75- python-version : ${{ env.PYTHON_VERSION }}
80+ python-version : ${{ matrix.python-version }}
7681 architecture : x64
7782 - name : " Build wheels - x86_64"
7883 uses : PyO3/maturin-action@v1.49.1
7984 with :
8085 target : x86_64
81- args : --release --locked --out dist -i python3
86+ args : --release --locked --out dist -i python${{ matrix.python-version }}
8287 - name : " Upload wheels"
8388 uses : actions/upload-artifact@v4.6.2
8489 with :
85- name : wheels-macos-x86_64
90+ name : wheels-macos-x86_64-py${{ matrix.python-version }}
8691 path : dist
8792
8893 macos-aarch64 :
8994 if : ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
9095 runs-on : macos-15
96+ strategy :
97+ matrix :
98+ # Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
99+ # which is not available on macos-15 runners
100+ python-version : ["3.11", "3.12", "3.13", "3.14"]
91101 steps :
92102 - uses : actions/checkout@v4.2.2
93103 with :
94104 submodules : recursive
95105 - uses : actions-rust-lang/setup-rust-toolchain@v1.11.0
96106 - uses : actions/setup-python@v5.5.0
97107 with :
98- python-version : ${{ env.PYTHON_VERSION }}
108+ python-version : ${{ matrix.python-version }}
99109 architecture : arm64
100110 - name : " Build wheels - aarch64"
101111 uses : PyO3/maturin-action@v1.49.1
102112 with :
103113 target : aarch64
104- args : --release --locked --out dist -i python3
114+ args : --release --locked --out dist -i python${{ matrix.python-version }}
105115 - name : " Test wheel - aarch64"
106116 run : |
107117 pip install ${{ env.PACKAGE_NAME }} --find-links dist/ --force-reinstall
@@ -110,7 +120,7 @@ jobs:
110120 - name : " Upload wheels"
111121 uses : actions/upload-artifact@v4.6.2
112122 with :
113- name : wheels-aarch64-apple-darwin
123+ name : wheels-aarch64-apple-darwin-py${{ matrix.python-version }}
114124 path : dist
115125
116126 windows :
@@ -124,20 +134,21 @@ jobs:
124134 # NOTE: i686 disabled due to poor support in PyArrow and friends.
125135 # - target: i686-pc-windows-msvc
126136 # arch: x86
137+ python-version : ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
127138 steps :
128139 - uses : actions/checkout@v4.2.2
129140 with :
130141 submodules : recursive
131142 - uses : actions-rust-lang/setup-rust-toolchain@v1.11.0
132143 - uses : actions/setup-python@v5.5.0
133144 with :
134- python-version : ${{ env.PYTHON_VERSION }}
145+ python-version : ${{ matrix.python-version }}
135146 architecture : ${{ matrix.platform.arch }}
136147 - name : " Build wheels"
137148 uses : PyO3/maturin-action@v1.49.1
138149 with :
139150 target : ${{ matrix.platform.target }}
140- args : --release --locked --out dist -i python3
151+ args : --release --locked --out dist -i python${{ matrix.python-version }}
141152 - name : " Test wheel"
142153 shell : bash
143154 run : |
@@ -147,25 +158,29 @@ jobs:
147158 - name : " Upload wheels"
148159 uses : actions/upload-artifact@v4.6.2
149160 with :
150- name : wheels-${{ matrix.platform.target }}
161+ name : wheels-${{ matrix.platform.target }}-py${{ matrix.python-version }}
151162 path : dist
152163
153164 windows-aarch64 :
154165 if : ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
155166 runs-on : windows-11-arm
167+ strategy :
168+ matrix :
169+ # Python ARM64 Windows builds started with 3.11
170+ python-version : ["3.11", "3.12", "3.13", "3.14"]
156171 steps :
157172 - uses : actions/checkout@v4.2.2
158173 with :
159174 submodules : recursive
160175 - uses : actions-rust-lang/setup-rust-toolchain@v1.11.0
161176 - uses : actions/setup-python@v5.5.0
162177 with :
163- python-version : ${{ env.PYTHON_VERSION }}
178+ python-version : ${{ matrix.python-version }}
164179 - name : " Build wheels"
165180 uses : PyO3/maturin-action@v1.49.1
166181 with :
167182 target : aarch64-pc-windows-msvc
168- args : --release --locked --out dist -i python3
183+ args : --release --locked --out dist -i python${{ matrix.python-version }}
169184 - name : " Test wheel"
170185 shell : bash
171186 run : |
@@ -175,7 +190,7 @@ jobs:
175190 - name : " Upload wheels"
176191 uses : actions/upload-artifact@v4.6.2
177192 with :
178- name : wheels-aarch64-pc-windows-msvc
193+ name : wheels-aarch64-pc-windows-msvc-py${{ matrix.python-version }}
179194 path : dist
180195
181196 linux :
@@ -199,7 +214,7 @@ jobs:
199214 uses : PyO3/maturin-action@v1.49.1
200215 with :
201216 manylinux : auto
202- args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
217+ args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
203218 before-script-linux : |
204219 # If we're running on rhel centos, install needed packages.
205220 if command -v yum &> /dev/null; then
@@ -253,7 +268,7 @@ jobs:
253268 target : ${{ matrix.platform.target }}
254269 manylinux : auto
255270 docker-options : ${{ matrix.platform.maturin_docker_options }}
256- args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
271+ args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
257272 env :
258273 CARGO_REGISTRIES_CRATES_IO_PROTOCOL : sparse
259274 # Set the CFLAGS for the aarch64 target, defining the ARM architecture
@@ -309,7 +324,7 @@ jobs:
309324 with :
310325 target : ${{ matrix.target }}
311326 manylinux : musllinux_1_2
312- args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
327+ args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
313328 - name : " Test wheel"
314329 if : matrix.target == 'x86_64-unknown-linux-musl'
315330 uses : addnab/docker-run-action@v3
@@ -347,7 +362,7 @@ jobs:
347362 with :
348363 target : ${{ matrix.platform.target }}
349364 manylinux : musllinux_1_2
350- args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
365+ args : --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
351366 - uses : uraimo/run-on-arch-action@v2
352367 name : Test wheel
353368 with :
0 commit comments