2121 runs-on : ubuntu-latest
2222 steps :
2323 - name : Checkout source
24- uses : actions/checkout@v4.2 .2
24+ uses : actions/checkout@v6.0 .2
2525 - name : Set up Python 3.14 for linting
2626 uses : actions/setup-python@v5.6.0
2727 with :
@@ -34,12 +34,11 @@ jobs:
3434 run : |-
3535 # stop the build if there are Python syntax errors or undefined names
3636 flake8 ./src/xdoctest --count --select=E9,F63,F7,F82 --show-source --statistics
37- - name : Typecheck with mypy
37+ - name : Typecheck
3838 run : |-
39- python -m pip install mypy
39+ python -m pip install ty
4040 pip install -r requirements/runtime.txt
41- mypy --install-types --non-interactive ./src/xdoctest
42- mypy ./src/xdoctest
41+ ty check ./src/xdoctest
4342 build_and_test_sdist :
4443 # #
4544 # Build the pure python package from source and test it in the
@@ -49,16 +48,16 @@ jobs:
4948 runs-on : ubuntu-latest
5049 steps :
5150 - name : Checkout source
52- uses : actions/checkout@v4.2 .2
51+ uses : actions/checkout@v6.0 .2
5352 - name : Set up Python 3.14
5453 uses : actions/setup-python@v5.6.0
5554 with :
5655 python-version : ' 3.14'
5756 - name : Upgrade pip
5857 run : |-
5958 python -m pip install pip uv -U
60- python -m uv pip install -r requirements/tests.txt
61- python -m uv pip install -r requirements/runtime.txt
59+ python -m pip install --prefer-binary -r requirements/tests.txt
60+ python -m pip install --prefer-binary -r requirements/runtime.txt
6261 - name : Build sdist
6362 shell : bash
6463 run : |-
6968 - name : Install sdist
7069 run : |-
7170 ls -al wheelhouse
72- python -m uv pip install wheelhouse/xdoctest*.tar.gz -v
71+ python -m pip install --prefer-binary wheelhouse/xdoctest*.tar.gz -v
7372 - name : Test minimal loose sdist
7473 env : {}
7574 run : |-
@@ -101,7 +100,7 @@ jobs:
101100 echo "MOD_DPATH = $MOD_DPATH"
102101 python -m pytest --verbose --cov=xdoctest $MOD_DPATH ../tests
103102 cd ..
104- - uses : actions/upload-artifact@v4.4 .0
103+ - uses : actions/upload-artifact@v6.0 .0
105104 name : Upload sdist artifact
106105 with :
107106 name : sdist_wheels
@@ -124,9 +123,9 @@ jobs:
124123 - auto
125124 steps :
126125 - name : Checkout source
127- uses : actions/checkout@v4.2 .2
126+ uses : actions/checkout@v6.0 .2
128127 - name : Set up QEMU
129- uses : docker/setup-qemu-action@v3.0 .0
128+ uses : docker/setup-qemu-action@v3.7 .0
130129 if : runner.os == 'Linux' && matrix.arch != 'auto'
131130 with :
132131 platforms : all
@@ -144,7 +143,7 @@ jobs:
144143 - name : Show built files
145144 shell : bash
146145 run : ls -la wheelhouse
147- - uses : actions/upload-artifact@v4.4 .0
146+ - uses : actions/upload-artifact@v6.0 .0
148147 name : Upload wheels artifact
149148 with :
150149 name : wheels-${{ matrix.os }}-${{ matrix.arch }}
@@ -291,14 +290,14 @@ jobs:
291290 arch : auto
292291 steps :
293292 - name : Checkout source
294- uses : actions/checkout@v4.2 .2
293+ uses : actions/checkout@v6.0 .2
295294 - name : Enable MSVC 64bit
296295 uses : ilammy/msvc-dev-cmd@v1
297296 if : ${{ startsWith(matrix.os, 'windows-') }}
298297 with :
299298 arch : ${{ contains(matrix.os, 'arm') && 'arm64' || 'x64' }}
300299 - name : Set up QEMU
301- uses : docker/setup-qemu-action@v3.0 .0
300+ uses : docker/setup-qemu-action@v3.7 .0
302301 if : runner.os == 'Linux' && matrix.arch != 'auto'
303302 with :
304303 platforms : all
@@ -327,13 +326,29 @@ jobs:
327326 echo "Installing helpers: setuptools"
328327 python -m uv pip install setuptools>=0.8 setuptools_scm wheel build -U
329328 echo "Installing helpers: tomli and pkginfo"
330- python -m uv pip install tomli pkginfo
329+ python -m uv pip install tomli pkginfo packaging
331330 export WHEEL_FPATH=$(python -c "if 1:
332331 import pathlib
332+ from packaging import tags
333+ from packaging.utils import parse_wheel_filename
333334 dist_dpath = pathlib.Path('wheelhouse')
334- candidates = list(dist_dpath.glob('xdoctest*.whl'))
335- candidates += list(dist_dpath.glob('xdoctest*.tar.gz'))
336- fpath = sorted(candidates)[-1]
335+ wheels = sorted(dist_dpath.glob('xdoctest*.whl'))
336+ if wheels:
337+ sys_tags = set(tags.sys_tags())
338+ matching = []
339+ for w in wheels:
340+ try:
341+ _, _, _, wheel_tags = parse_wheel_filename(w.name)
342+ except Exception:
343+ continue
344+ if any(t in sys_tags for t in wheel_tags):
345+ matching.append(w)
346+ fpath = sorted(matching or wheels)[-1]
347+ else:
348+ sdists = sorted(dist_dpath.glob('xdoctest*.tar.gz'))
349+ if not sdists:
350+ raise SystemExit('No wheel artifacts found in wheelhouse')
351+ fpath = sdists[-1]
337352 print(str(fpath).replace(chr(92), chr(47)))
338353 ")
339354 export MOD_VERSION=$(python -c "if 1:
@@ -348,7 +363,7 @@ jobs:
348363 echo "INSTALL_EXTRAS=$INSTALL_EXTRAS"
349364 echo "UV_RESOLUTION=$UV_RESOLUTION"
350365 echo "MOD_VERSION=$MOD_VERSION"
351- python -m uv pip install "xdoctest[$INSTALL_EXTRAS]==$MOD_VERSION" -f wheelhouse
366+ python -m pip install --prefer-binary "xdoctest[$INSTALL_EXTRAS]==$MOD_VERSION" -f wheelhouse
352367 echo "Install finished."
353368 - name : Test wheel ${{ matrix.install-extras }}
354369 shell : bash
@@ -396,7 +411,7 @@ jobs:
396411 echo '### The cwd should now have a coverage.xml'
397412 ls -altr
398413 pwd
399- - uses : codecov/codecov-action@v5.4.3
414+ - uses : codecov/codecov-action@v5.5.2
400415 name : Codecov Upload
401416 with :
402417 file : ./coverage.xml
@@ -410,7 +425,7 @@ jobs:
410425 - build_purepy_wheels
411426 steps :
412427 - name : Checkout source
413- uses : actions/checkout@v4.2 .2
428+ uses : actions/checkout@v6.0 .2
414429 - uses : actions/download-artifact@v4.1.8
415430 name : Download wheels
416431 with :
@@ -467,7 +482,7 @@ jobs:
467482 ots stamp wheelhouse/*.whl wheelhouse/*.tar.gz wheelhouse/*.asc
468483 ls -la wheelhouse
469484 twine upload --username __token__ --password "$TWINE_PASSWORD" --repository-url "$TWINE_REPOSITORY_URL" wheelhouse/*.whl wheelhouse/*.tar.gz --skip-existing --verbose || { echo "failed to twine upload" ; exit 1; }
470- - uses : actions/upload-artifact@v4.4 .0
485+ - uses : actions/upload-artifact@v6.0 .0
471486 name : Upload deploy artifacts
472487 with :
473488 name : deploy_artifacts
@@ -486,7 +501,7 @@ jobs:
486501 - build_purepy_wheels
487502 steps :
488503 - name : Checkout source
489- uses : actions/checkout@v4.2 .2
504+ uses : actions/checkout@v6.0 .2
490505 - uses : actions/download-artifact@v4.1.8
491506 name : Download wheels
492507 with :
@@ -543,7 +558,7 @@ jobs:
543558 ots stamp wheelhouse/*.whl wheelhouse/*.tar.gz wheelhouse/*.asc
544559 ls -la wheelhouse
545560 twine upload --username __token__ --password "$TWINE_PASSWORD" --repository-url "$TWINE_REPOSITORY_URL" wheelhouse/*.whl wheelhouse/*.tar.gz --skip-existing --verbose || { echo "failed to twine upload" ; exit 1; }
546- - uses : actions/upload-artifact@v4.4 .0
561+ - uses : actions/upload-artifact@v6.0 .0
547562 name : Upload deploy artifacts
548563 with :
549564 name : deploy_artifacts
@@ -563,7 +578,7 @@ jobs:
563578 - live_deploy
564579 steps :
565580 - name : Checkout source
566- uses : actions/checkout@v4.2 .2
581+ uses : actions/checkout@v6.0 .2
567582 - uses : actions/download-artifact@v4.1.8
568583 name : Download artifacts
569584 with :
@@ -617,4 +632,4 @@ jobs:
617632# --secret=EROTEMIC_TWINE_USERNAME=$EROTEMIC_TWINE_USERNAME \
618633# --secret=EROTEMIC_CI_SECRET=$EROTEMIC_CI_SECRET \
619634# --secret=EROTEMIC_TEST_TWINE_USERNAME=$EROTEMIC_TEST_TWINE_USERNAME \
620- # --secret=EROTEMIC_TEST_TWINE_PASSWORD=$EROTEMIC_TEST_TWINE_PASSWORD
635+ # --secret=EROTEMIC_TEST_TWINE_PASSWORD=$EROTEMIC_TEST_TWINE_PASSWORD
0 commit comments