3232 - run : rustup component add llvm-tools-preview
3333
3434 - name : install uv
35- uses : astral-sh/setup-uv@v5
35+ uses : astral-sh/setup-uv@v6
3636
3737 - name : install deps
3838 run : uv sync --group testing
@@ -63,17 +63,20 @@ jobs:
6363 fail-fast : false
6464 matrix :
6565 python-version :
66- - ' 3.8'
6766 - ' 3.9'
6867 - ' 3.10'
6968 - ' 3.11'
7069 - ' 3.12'
7170 - ' 3.13'
71+ - ' 3.13t'
7272 - ' pypy3.9'
7373 - ' pypy3.10'
7474
7575 runs-on : ubuntu-latest
7676
77+ # TODO: get test suite stable with free-threaded python
78+ continue-on-error : ${{ endsWith(matrix.python-version, 't') }}
79+
7780 steps :
7881 - uses : actions/checkout@v4
7982
8689 key : test-v3
8790
8891 - name : install uv
89- uses : astral-sh/setup-uv@v5
92+ uses : astral-sh/setup-uv@v6
9093 with :
9194 python-version : ${{ matrix.python-version }}
9295
@@ -102,6 +105,8 @@ jobs:
102105 - run : uv run pytest
103106 env :
104107 HYPOTHESIS_PROFILE : slow
108+ # TODO: remove --inline-snapshot=disable after https://github.com/15r10nk/inline-snapshot/issues/192
109+ PYTEST_ADDOPTS : ${{ endsWith(matrix.python-version, 't') && '--parallel-threads=2 --inline-snapshot=disable' || '' }}
105110
106111 test-os :
107112 name : test on ${{ matrix.os }}
@@ -122,7 +127,7 @@ jobs:
122127 uses : Swatinem/rust-cache@v2
123128
124129 - name : install uv
125- uses : astral-sh/setup-uv@v5
130+ uses : astral-sh/setup-uv@v6
126131
127132 - name : install deps
128133 run : uv sync --group testing
@@ -145,7 +150,7 @@ jobs:
145150 - uses : actions/checkout@v4
146151
147152 - name : install uv
148- uses : astral-sh/setup-uv@v5
153+ uses : astral-sh/setup-uv@v6
149154
150155 - name : install deps
151156 run : uv sync --group testing
@@ -188,7 +193,7 @@ jobs:
188193 - uses : actions/checkout@v4
189194
190195 - name : install uv
191- uses : astral-sh/setup-uv@v5
196+ uses : astral-sh/setup-uv@v6
192197 with :
193198 python-version : ${{ matrix.python-version }}
194199
@@ -227,7 +232,7 @@ jobs:
227232 uses : Swatinem/rust-cache@v2
228233
229234 - name : install uv
230- uses : astral-sh/setup-uv@v5
235+ uses : astral-sh/setup-uv@v6
231236
232237 - name : install deps
233238 run : |
@@ -269,7 +274,7 @@ jobs:
269274 node-version : ' 18'
270275
271276 - name : install uv
272- uses : astral-sh/setup-uv@v5
277+ uses : astral-sh/setup-uv@v6
273278
274279 - name : install deps
275280 run : |
@@ -310,10 +315,12 @@ jobs:
310315 - uses : actions/checkout@v4
311316
312317 - name : install rust nightly
313- uses : dtolnay/rust-toolchain@nightly
318+ uses : dtolnay/rust-toolchain@master
314319 with :
315320 components : rust-src
316321 targets : wasm32-unknown-emscripten
322+ # might be able to unpin when pydodide uses emscripten 4, see below
323+ toolchain : nightly-2025-02-17
317324
318325 - name : cache rust
319326 uses : Swatinem/rust-cache@v2
@@ -327,7 +334,7 @@ jobs:
327334 actions-cache-folder : emsdk-cache
328335
329336 - name : install uv
330- uses : astral-sh/setup-uv@v5
337+ uses : astral-sh/setup-uv@v6
331338
332339 - name : install deps
333340 run : uv sync --group wasm
@@ -403,19 +410,19 @@ jobs:
403410 - os : linux
404411 manylinux : auto
405412 target : armv7
406- interpreter : 3.8 3. 9 3.10 3.11 3.12 3.13
413+ interpreter : 3.9 3.10 3.11 3.12 3.13
407414 - os : linux
408415 manylinux : auto
409416 target : ppc64le
410- interpreter : 3.8 3. 9 3.10 3.11 3.12 3.13
417+ interpreter : 3.9 3.10 3.11 3.12 3.13
411418 - os : linux
412419 manylinux : auto
413420 target : s390x
414- interpreter : 3.8 3. 9 3.10 3.11 3.12 3.13
421+ interpreter : 3.9 3.10 3.11 3.12 3.13
415422 - os : linux
416423 manylinux : auto
417424 target : x86_64
418- interpreter : pypy3.9 pypy3.10
425+ interpreter : pypy3.9 pypy3.10 pypy3.11
419426
420427 # musllinux
421428 - os : linux
@@ -435,19 +442,19 @@ jobs:
435442 target : x86_64
436443 - os : macos
437444 target : aarch64
438- interpreter : 3.8 3. 9 pypy3.9 pypy3.10
445+ interpreter : 3.9 pypy3.9 pypy3.10 pypy3.11
439446
440447 # windows;
441448 # x86_64 pypy builds are not PGO optimized
442449 # i686 not supported by pypy
443450 # aarch64 only 3.11 and up, also not PGO optimized
444451 - os : windows
445452 target : x86_64
446- interpreter : pypy3.9 pypy3.10
453+ interpreter : pypy3.9 pypy3.10 pypy3.11
447454 - os : windows
448455 target : i686
449456 python-architecture : x86
450- interpreter : 3.8 3. 9 3.10 3.11 3.12 3.13
457+ interpreter : 3.9 3.10 3.11 3.12 3.13
451458 - os : windows
452459 target : aarch64
453460 interpreter : 3.11 3.12 3.13
@@ -477,10 +484,8 @@ jobs:
477484 with :
478485 target : ${{ matrix.target }}
479486 manylinux : ${{ matrix.manylinux }}
480- args : --release --out dist --interpreter ${{ matrix.interpreter || '3.8 3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10' }}
481- # Limit windows builds to 1.77 to keep Windows 7 support.
482- # FIXME: Unpin when Python 3.8 support is dropped. (3.9 requires Windows 10)
483- rust-toolchain : ${{ (matrix.os == 'windows' && '1.77') || 'stable' }}
487+ args : --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10 pypy3.11' }}
488+ rust-toolchain : stable
484489 docker-options : -e CI
485490
486491 - run : ${{ (matrix.os == 'windows' && 'dir') || 'ls -lh' }} dist/
@@ -500,7 +505,7 @@ jobs:
500505 fail-fast : false
501506 matrix :
502507 os : [linux, windows, macos]
503- interpreter : ['3.8 ', '3.9 ', '3.10 ', '3.11 ', '3.12 ', '3.13 ']
508+ interpreter : ['3.9 ', '3.10 ', '3.11 ', '3.12 ', '3.13 ', '3.13t ']
504509 include :
505510 # standard runners with override for macos arm
506511 - os : linux
@@ -509,11 +514,9 @@ jobs:
509514 ls : dir
510515 runs-on : windows-latest
511516 - os : macos
512- runs-on : macos-latest-xlarge
517+ runs-on : macos-latest
513518 exclude :
514519 # macos arm only supported from 3.10 and up
515- - os : macos
516- interpreter : ' 3.8'
517520 - os : macos
518521 interpreter : ' 3.9'
519522
@@ -522,7 +525,7 @@ jobs:
522525 - uses : actions/checkout@v4
523526
524527 - name : install uv
525- uses : astral-sh/setup-uv@v5
528+ uses : astral-sh/setup-uv@v6
526529 with :
527530 python-version : ${{ matrix.interpreter }}
528531
@@ -531,9 +534,7 @@ jobs:
531534 uses : dtolnay/rust-toolchain@master
532535 with :
533536 components : llvm-tools
534- # Limit windows builds to 1.77 to keep Windows 7 support.
535- # FIXME: Unpin when Python 3.8 support is dropped. (3.9 requires Windows 10)
536- toolchain : ${{ (matrix.os == 'windows' && '1.77') || 'stable' }}
537+ toolchain : stable
537538
538539 - name : Build PGO wheel
539540 id : pgo-wheel
@@ -604,7 +605,7 @@ jobs:
604605 merge-multiple : true
605606 path : dist
606607
607- - uses : uraimo/run-on-arch-action@v2.8 .1
608+ - uses : uraimo/run-on-arch-action@v3.0 .1
608609 name : install & test
609610 with :
610611 arch : ${{ matrix.target }}
@@ -644,7 +645,7 @@ jobs:
644645 - uses : actions/checkout@v4
645646
646647 - name : install uv
647- uses : astral-sh/setup-uv@v5
648+ uses : astral-sh/setup-uv@v6
648649
649650 - name : get dist artifacts
650651 uses : actions/download-artifact@v4
@@ -659,7 +660,7 @@ jobs:
659660
660661 release :
661662 needs : [test-builds-arch, test-builds-os, build-sdist, check]
662- if : success () && startsWith(github.ref, 'refs/tags/')
663+ if : always () && startsWith(github.ref, 'refs/tags/')
663664 runs-on : ubuntu-latest
664665 environment : release
665666
0 commit comments