1515 lint :
1616 runs-on : ubuntu-latest
1717 steps :
18- - uses : actions/checkout@v4
18+ - uses : actions/checkout@v6
1919 - uses : dtolnay/rust-toolchain@stable
2020 with :
2121 components : rustfmt, clippy
5252 rust-target : " x86_64-unknown-linux-gnu" ,
5353 },
5454 {
55- os : " macos-15-intel " ,
56- python-architecture : " x64 " ,
57- rust-target : " x86_64 -apple-darwin" ,
55+ os : " macOS-latest " ,
56+ python-architecture : " arm64 " ,
57+ rust-target : " aarch64 -apple-darwin" ,
5858 },
5959 {
6060 os : " windows-latest" ,
@@ -70,40 +70,32 @@ jobs:
7070 include :
7171 # ubuntu-24.04 does not support 3.7
7272 - python-version : 3.7
73- platform :
74- {
75- os : " ubuntu-22.04" ,
76- python-architecture : " x64" ,
77- rust-target : " x86_64-unknown-linux-gnu" ,
78- }
79- # Older versions of CPython are not available for AArch64.
80- - python-version : 3.12
81- platform :
82- {
83- os : " macOS-latest" ,
84- python-architecture : " arm64" ,
85- rust-target : " aarch64-apple-darwin" ,
86- }
73+ platform : { os: "ubuntu-22.04", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }
74+ # not available on arm64 macOS, test on x64
75+ - python-version : 3.7
76+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
77+ - python-version : 3.8
78+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
79+ - python-version : 3.9
80+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
8781 exclude :
8882 # ubuntu-24.04 does not support 3.7
8983 - python-version : 3.7
90- platform :
91- {
92- os : " ubuntu-latest" ,
93- python-architecture : " x64" ,
94- rust-target : " x86_64-unknown-linux-gnu" ,
95- }
84+ platform : { os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }
85+ # not available on arm64 macOS
86+ - python-version : 3.7
87+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
88+ - python-version : 3.8
89+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
90+ - python-version : 3.9
91+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
92+ # no 32 bit windows PyPy
9693 - python-version : pypy-3.11
97- platform :
98- {
99- os : " windows-latest" ,
100- python-architecture : " x86" ,
101- rust-target : " i686-pc-windows-msvc" ,
102- }
94+ platform : { os: "windows-latest", python-architecture: "x86", rust-target: "i686-pc-windows-msvc" }
10395 steps :
104- - uses : actions/checkout@v4
96+ - uses : actions/checkout@v6
10597 - name : Set up Python ${{ matrix.python-version }}
106- uses : actions/setup-python@v5
98+ uses : actions/setup-python@v6
10799 with :
108100 python-version : ${{ matrix.python-version }}
109101 architecture : ${{ matrix.platform.python-architecture }}
@@ -133,7 +125,7 @@ jobs:
133125 strategy :
134126 fail-fast : ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }}
135127 matrix :
136- python-version : ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
128+ python-version : ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] # last numpy 1 release for 3.12
137129 platform :
138130 [
139131 {
@@ -142,9 +134,9 @@ jobs:
142134 rust-target : " x86_64-unknown-linux-gnu" ,
143135 },
144136 {
145- os : " macos-15-intel " ,
146- python-architecture : " x64 " ,
147- rust-target : " x86_64 -apple-darwin" ,
137+ os : " macOS-latest " ,
138+ python-architecture : " arm64 " ,
139+ rust-target : " aarch64 -apple-darwin" ,
148140 },
149141 {
150142 os : " windows-latest" ,
@@ -160,25 +152,29 @@ jobs:
160152 include :
161153 # ubuntu-24.04 does not support 3.7
162154 - python-version : 3.7
163- platform :
164- {
165- os : " ubuntu-22.04" ,
166- python-architecture : " x64" ,
167- rust-target : " x86_64-unknown-linux-gnu" ,
168- }
155+ platform : { os: "ubuntu-22.04", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }
156+ # not available on arm64 macOS, test on x64
157+ - python-version : 3.7
158+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
159+ - python-version : 3.8
160+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
161+ - python-version : 3.9
162+ platform : { os: "macos-15-intel", python-architecture: "x64", rust-target: "x86_64-apple-darwin" }
169163 exclude :
170164 # ubuntu-24.04 does not support 3.7
171165 - python-version : 3.7
172- platform :
173- {
174- os : " ubuntu-latest" ,
175- python-architecture : " x64" ,
176- rust-target : " x86_64-unknown-linux-gnu" ,
177- }
166+ platform : { os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }
167+ # not available on arm64 macOS
168+ - python-version : 3.7
169+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
170+ - python-version : 3.8
171+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
172+ - python-version : 3.9
173+ platform : { os: "macOS-latest", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
178174 steps :
179- - uses : actions/checkout@v4
175+ - uses : actions/checkout@v6
180176 - name : Set up Python ${{ matrix.python-version }}
181- uses : actions/setup-python@v5
177+ uses : actions/setup-python@v6
182178 with :
183179 python-version : ${{ matrix.python-version }}
184180 architecture : ${{ matrix.platform.python-architecture }}
@@ -203,10 +199,10 @@ jobs:
203199 runs-on : ubuntu-latest
204200 needs : [lint, check-msrv, examples]
205201 steps :
206- - uses : actions/checkout@v4
207- - uses : actions/setup-python@v5
202+ - uses : actions/checkout@v6
203+ - uses : actions/setup-python@v6
208204 with :
209- python-version : " 3.12 "
205+ python-version : " 3.14 "
210206 - uses : messense/maturin-action@v1
211207 with :
212208 target : aarch64
@@ -217,10 +213,10 @@ jobs:
217213 runs-on : ubuntu-latest
218214 needs : [lint, check-msrv, examples]
219215 steps :
220- - uses : actions/checkout@v4
221- - uses : actions/setup-python@v5
216+ - uses : actions/checkout@v6
217+ - uses : actions/setup-python@v6
222218 with :
223- python-version : " 3.12 "
219+ python-version : " 3.14 "
224220 - uses : dtolnay/rust-toolchain@stable
225221 - uses : Swatinem/rust-cache@v2
226222 continue-on-error : true
@@ -235,10 +231,10 @@ jobs:
235231 runs-on : ubuntu-latest
236232 needs : [lint, check-msrv, examples]
237233 steps :
238- - uses : actions/checkout@v4
239- - uses : actions/setup-python@v5
234+ - uses : actions/checkout@v6
235+ - uses : actions/setup-python@v6
240236 with :
241- python-version : " 3.12 "
237+ python-version : " 3.14 "
242238 - uses : dtolnay/rust-toolchain@nightly
243239 - uses : Swatinem/rust-cache@v2
244240 continue-on-error : true
@@ -250,11 +246,11 @@ jobs:
250246 check-msrv :
251247 runs-on : ubuntu-latest
252248 steps :
253- - uses : actions/checkout@v4
249+ - uses : actions/checkout@v6
254250 - name : Set up Python
255- uses : actions/setup-python@v5
251+ uses : actions/setup-python@v6
256252 with :
257- python-version : " 3.12 "
253+ python-version : " 3.14 "
258254 - name : Install Rust
259255260256 - uses : Swatinem/rust-cache@v2
@@ -291,10 +287,10 @@ jobs:
291287 examples :
292288 runs-on : ubuntu-latest
293289 steps :
294- - uses : actions/checkout@v4
295- - uses : actions/setup-python@v5
290+ - uses : actions/checkout@v6
291+ - uses : actions/setup-python@v6
296292 with :
297- python-version : " 3.12 "
293+ python-version : " 3.14 "
298294 - name : Install OpenBLAS
299295 run : sudo apt install --yes libopenblas-dev
300296 - name : Install Rust
@@ -311,10 +307,10 @@ jobs:
311307 runs-on : ubuntu-latest
312308 needs : [lint, check-msrv, examples]
313309 steps :
314- - uses : actions/checkout@v4
315- - uses : actions/setup-python@v5
310+ - uses : actions/checkout@v6
311+ - uses : actions/setup-python@v6
316312 with :
317- python-version : " 3.12 "
313+ python-version : " 3.14 "
318314 - name : Install numpy
319315 run : pip install "numpy" ml_dtypes
320316 - uses : Swatinem/rust-cache@v2
@@ -327,7 +323,7 @@ jobs:
327323 - name : Generate code coverage
328324 run : cargo llvm-cov --all-features --codecov --output-path coverage.json
329325 - name : Upload coverage to Codecov
330- uses : codecov/codecov-action@v4
326+ uses : codecov/codecov-action@v5
331327 with :
332328 file : coverage.json
333329 token : ${{ secrets.CODECOV_TOKEN }}
0 commit comments