2525 - uses : taiki-e/install-action@cargo-llvm-cov
2626
2727 - name : install uv
28- uses : astral-sh/setup-uv@v6
28+ uses : astral-sh/setup-uv@v7
2929
3030 - name : install deps
3131 run : uv sync --group testing
9292 key : test-v3
9393
9494 - name : install uv
95- uses : astral-sh/setup-uv@v6
95+ uses : astral-sh/setup-uv@v7
9696 with :
9797 python-version : ${{ matrix.python-version }}
9898
@@ -130,7 +130,7 @@ jobs:
130130 uses : Swatinem/rust-cache@v2
131131
132132 - name : install uv
133- uses : astral-sh/setup-uv@v6
133+ uses : astral-sh/setup-uv@v7
134134
135135 - name : install deps
136136 run : uv sync --group testing
@@ -153,7 +153,7 @@ jobs:
153153 - uses : actions/checkout@v5
154154
155155 - name : install uv
156- uses : astral-sh/setup-uv@v6
156+ uses : astral-sh/setup-uv@v7
157157
158158 - name : install deps
159159 run : uv sync --group testing
@@ -196,7 +196,7 @@ jobs:
196196 - uses : actions/checkout@v5
197197
198198 - name : install uv
199- uses : astral-sh/setup-uv@v6
199+ uses : astral-sh/setup-uv@v7
200200 with :
201201 python-version : ${{ matrix.python-version }}
202202
@@ -235,7 +235,7 @@ jobs:
235235 uses : Swatinem/rust-cache@v2
236236
237237 - name : install uv
238- uses : astral-sh/setup-uv@v6
238+ uses : astral-sh/setup-uv@v7
239239
240240 - name : install deps
241241 run : |
@@ -249,7 +249,7 @@ jobs:
249249
250250 # Run pytest with lax xfail because we often add tests to pydantic
251251 # which xfail on a pending release of pydantic-core
252- - run : uv run --no-sync pytest --override-ini=xfail_strict=False
252+ - run : uv run --no-sync pytest --override-ini=xfail_strict=False -k 'not test_check_pydantic_core_version'
253253 working-directory : pydantic
254254 env :
255255 PYDANTIC_PRIVATE_ALLOW_UNHANDLED_SCHEMA_TYPES : 1
@@ -272,12 +272,12 @@ jobs:
272272 uses : Swatinem/rust-cache@v2
273273
274274 # used to lint js code
275- - uses : actions/setup-node@v5
275+ - uses : actions/setup-node@v6
276276 with :
277277 node-version : " 18"
278278
279279 - name : install uv
280- uses : astral-sh/setup-uv@v6
280+ uses : astral-sh/setup-uv@v7
281281
282282 - name : install deps
283283 run : |
@@ -337,15 +337,15 @@ jobs:
337337 actions-cache-folder : emsdk-cache
338338
339339 - name : install uv
340- uses : astral-sh/setup-uv@v6
340+ uses : astral-sh/setup-uv@v7
341341
342342 - name : install deps
343343 run : uv sync --group wasm
344344
345345 - name : build wheels
346346 run : make build-wasm
347347
348- - uses : actions/setup-node@v5
348+ - uses : actions/setup-node@v6
349349 with :
350350 node-version : " 18"
351351
@@ -357,7 +357,7 @@ jobs:
357357 ls -lh dist/
358358 ls -l dist/
359359
360- - uses : actions/upload-artifact@v4
360+ - uses : actions/upload-artifact@v5
361361 with :
362362 name : wasm_wheels
363363 path : dist
@@ -396,7 +396,7 @@ jobs:
396396 command : sdist
397397 args : --out dist
398398 rust-toolchain : stable
399- - uses : actions/upload-artifact@v4
399+ - uses : actions/upload-artifact@v5
400400 with :
401401 name : pypi_files_sdist
402402 path : dist
@@ -409,34 +409,41 @@ jobs:
409409 fail-fast : false
410410 matrix :
411411 os : [linux, macos, windows]
412- target : [x86_64, aarch64 ]
412+ target : [undefined ]
413413 manylinux : [auto]
414414 include :
415- # manylinux for various platforms, plus pypy and graalpy on major architectures
415+ # manylinux for various platforms
416+ # x86_64 and aarch64 are PGO optimized below
416417 - os : linux
417418 manylinux : auto
418419 target : i686
419- - os : linux
420- manylinux : auto
421- target : aarch64
422- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 pypy3.10 pypy3.11 graalpy3.11 graalpy3.12
423420 - os : linux
424421 manylinux : auto
425422 target : armv7
426- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14
423+ interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 3.14t
427424 - os : linux
428425 manylinux : auto
429426 target : ppc64le
430- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14
427+ interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 3.14t
431428 - os : linux
432429 manylinux : auto
433430 target : s390x
434- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14
431+ interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 3.14t
435432 - os : linux
436433 manylinux : auto
437434 target : x86_64
438435 interpreter : pypy3.10 pypy3.11 graalpy3.11 graalpy3.12
439436
437+ # manylinux pypy and graalpy on major architectures
438+ - os : linux
439+ manylinux : auto
440+ target : x86_64
441+ interpreter : graalpy3.11 graalpy3.12
442+ - os : linux
443+ manylinux : auto
444+ target : aarch64
445+ interpreter : graalpy3.11 graalpy3.12
446+
440447 # musllinux
441448 - os : linux
442449 manylinux : musllinux_1_1
@@ -453,32 +460,32 @@ jobs:
453460 # arm pypy and older pythons which can't be run on the arm hardware for PGO
454461 - os : macos
455462 target : x86_64
456- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 pypy3.10 pypy3.11 graalpy3.11 graalpy3.12
463+ interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 3.14t pypy3.10 pypy3.11 graalpy3.11 graalpy3.12
457464 - os : macos
458465 target : aarch64
459466 interpreter : 3.9 pypy3.10 pypy3.11 graalpy3.11 graalpy3.12
460467
461468 # windows;
462469 # x86_64 pypy builds are not PGO optimized
463470 # i686 not supported by pypy
464- # aarch64 only 3.11 and up, also not PGO optimized
471+ # windows 11 arm supports 3.11 and up, not PGO optimized for now
465472 - os : windows
466473 target : x86_64
467474 interpreter : pypy3.10 pypy3.11
468475 - os : windows
469476 target : i686
470477 python-architecture : x86
471- interpreter : 3.9 3.10 3.11 3.12 3.13 3.14
478+ interpreter : 3.9 3.10 3.11 3.12 3.13 3.14 3.14t
472479 - os : windows
473480 target : aarch64
474- interpreter : 3.11 3.12 3.13 3.14
481+ runs-on : windows-11-arm
482+ interpreter : " 3.11 3.12 3.13 3.14 3.14t"
475483
476484 exclude :
477- # See above; disabled for now.
478- - os : windows
479- target : aarch64
485+ # was just a dummy variable to set a default value for target
486+ - target : undefined
480487
481- runs-on : ${{ ( matrix.os == 'linux' && 'ubuntu') || matrix.os }}-latest
488+ runs-on : ${{ matrix.runs-on || format('{0}-latest', ( matrix.os == 'linux' && 'ubuntu') || matrix.os) }}
482489 steps :
483490 - uses : actions/checkout@v5
484491
@@ -495,49 +502,46 @@ jobs:
495502 with :
496503 target : ${{ matrix.target }}
497504 manylinux : ${{ matrix.manylinux }}
498- args : --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.14 pypy3.10 pypy3.11' }}
505+ args : --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.14 3.14t pypy3.10 pypy3.11' }}
499506 rust-toolchain : stable
500507 docker-options : -e CI
501508
502509 - run : ${{ (matrix.os == 'windows' && 'dir') || 'ls -lh' }} dist/
503510
504511 - run : twine check --strict dist/*
505512
506- - uses : actions/upload-artifact@v4
513+ - uses : actions/upload-artifact@v5
507514 with :
508515 name : pypi_files_${{ matrix.os }}_${{ matrix.target }}_${{ matrix.interpreter || 'all' }}_${{ matrix.manylinux }}
509516 path : dist
510517
511518 build-pgo :
512- name : build pgo-optimized on ${{ matrix.os }} / ${{ matrix.interpreter }}
519+ name : build pgo-optimized on ${{ matrix.platform. os }} / ${{ matrix.interpreter }}
513520 # only run on push to main and on release
514521 if : startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')
515522 strategy :
516523 fail-fast : false
517524 matrix :
518- os : [linux, windows, macos]
519- interpreter :
520- ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"]
521- include :
522- # standard runners with override for macos arm
523- - os : linux
524- runs-on : ubuntu-latest
525- - os : windows
526- ls : dir
527- runs-on : windows-latest
528- - os : macos
529- runs-on : macos-latest
525+ platform :
526+ [
527+ { os: linux, runs-on: ubuntu-latest },
528+ { os: linux_aarch64, runs-on: ubuntu-24.04-arm },
529+ { os: windows, runs-on: windows-latest },
530+ { os: macos, runs-on: macos-latest },
531+ ]
532+ interpreter : ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
530533 exclude :
531534 # macos arm only supported from 3.10 and up
532- - os : macos
535+ - platform :
536+ os : macos
533537 interpreter : " 3.9"
534538
535- runs-on : ${{ matrix.runs-on }}
539+ runs-on : ${{ matrix.platform. runs-on }}
536540 steps :
537541 - uses : actions/checkout@v5
538542
539543 - name : install uv
540- uses : astral-sh/setup-uv@v6
544+ uses : astral-sh/setup-uv@v7
541545 with :
542546 python-version : ${{ matrix.interpreter }}
543547
@@ -555,11 +559,11 @@ jobs:
555559 interpreter : ${{ matrix.interpreter }}
556560 rust-toolchain : ${{ steps.rust-toolchain.outputs.name }}
557561
558- - run : ${{ matrix.ls || 'ls -lh' }} dist/
562+ - run : ${{ (startsWith( matrix.platform.os, 'windows') && 'dir') || 'ls -lh' }} dist/
559563
560- - uses : actions/upload-artifact@v4
564+ - uses : actions/upload-artifact@v5
561565 with :
562- name : pypi_files_${{ matrix.os }}_${{ matrix.interpreter }}
566+ name : pypi_files_${{ matrix.platform. os }}_${{ matrix.interpreter }}
563567 path : dist
564568
565569 inspect-pypi-assets :
@@ -570,7 +574,7 @@ jobs:
570574 - uses : actions/checkout@v5
571575
572576 - name : get dist artifacts
573- uses : actions/download-artifact@v5
577+ uses : actions/download-artifact@v6
574578 with :
575579 pattern : pypi_files_*
576580 merge-multiple : true
@@ -611,7 +615,7 @@ jobs:
611615 - uses : actions/checkout@v5
612616
613617 - name : get dist artifacts
614- uses : actions/download-artifact@v5
618+ uses : actions/download-artifact@v6
615619 with :
616620 pattern : pypi_files_linux_*
617621 merge-multiple : true
@@ -666,10 +670,10 @@ jobs:
666670 - uses : actions/checkout@v5
667671
668672 - name : install uv
669- uses : astral-sh/setup-uv@v6
673+ uses : astral-sh/setup-uv@v7
670674
671675 - name : get dist artifacts
672- uses : actions/download-artifact@v5
676+ uses : actions/download-artifact@v6
673677 with :
674678 pattern : pypi_files_*
675679 merge-multiple : true
@@ -694,22 +698,25 @@ jobs:
694698 steps :
695699 - uses : actions/checkout@v5
696700
697- - uses : astral-sh/setup-uv@v6
701+ - uses : astral-sh/setup-uv@v7
698702
699703 - name : check package version
700704 run : uv run .github/check_version.py
701705
702706 - name : get dist artifacts
703- uses : actions/download-artifact@v5
707+ uses : actions/download-artifact@v6
704708 with :
705709 pattern : pypi_files_*
706710 merge-multiple : true
707711 path : dist
708712
713+ - name : Test wheels integrity
714+ run : for whl in dist/*.whl; do unzip -qt "$whl"; done
715+
709716 - run : uv publish --trusted-publishing always
710717
711718 - name : get wasm dist artifacts
712- uses : actions/download-artifact@v5
719+ uses : actions/download-artifact@v6
713720 with :
714721 name : wasm_wheels
715722 path : wasm
0 commit comments