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,14 @@ 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 : |-
3939 python -m pip install mypy
4040 pip install -r requirements/runtime.txt
41- mypy --install-types --non-interactive ./src/xdoctest
4241 mypy ./src/xdoctest
42+ python -m pip install ty
43+ pip install -r requirements/runtime.txt
44+ ty check ./src/xdoctest
4345 build_and_test_sdist :
4446 # #
4547 # Build the pure python package from source and test it in the
@@ -49,16 +51,16 @@ jobs:
4951 runs-on : ubuntu-latest
5052 steps :
5153 - name : Checkout source
52- uses : actions/checkout@v4.2 .2
54+ uses : actions/checkout@v6.0 .2
5355 - name : Set up Python 3.14
5456 uses : actions/setup-python@v5.6.0
5557 with :
5658 python-version : ' 3.14'
5759 - name : Upgrade pip
5860 run : |-
5961 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
62+ python -m pip install --prefer-binary -r requirements/tests.txt
63+ python -m pip install --prefer-binary -r requirements/runtime.txt
6264 - name : Build sdist
6365 shell : bash
6466 run : |-
6971 - name : Install sdist
7072 run : |-
7173 ls -al wheelhouse
72- python -m uv pip install wheelhouse/xdoctest*.tar.gz -v
74+ python -m pip install --prefer-binary wheelhouse/xdoctest*.tar.gz -v
7375 - name : Test minimal loose sdist
7476 env : {}
7577 run : |-
@@ -101,7 +103,7 @@ jobs:
101103 echo "MOD_DPATH = $MOD_DPATH"
102104 python -m pytest --verbose --cov=xdoctest $MOD_DPATH ../tests
103105 cd ..
104- - uses : actions/upload-artifact@v4.4 .0
106+ - uses : actions/upload-artifact@v6.0 .0
105107 name : Upload sdist artifact
106108 with :
107109 name : sdist_wheels
@@ -124,9 +126,9 @@ jobs:
124126 - auto
125127 steps :
126128 - name : Checkout source
127- uses : actions/checkout@v4.2 .2
129+ uses : actions/checkout@v6.0 .2
128130 - name : Set up QEMU
129- uses : docker/setup-qemu-action@v3.0 .0
131+ uses : docker/setup-qemu-action@v3.7 .0
130132 if : runner.os == 'Linux' && matrix.arch != 'auto'
131133 with :
132134 platforms : all
@@ -144,7 +146,7 @@ jobs:
144146 - name : Show built files
145147 shell : bash
146148 run : ls -la wheelhouse
147- - uses : actions/upload-artifact@v4.4 .0
149+ - uses : actions/upload-artifact@v6.0 .0
148150 name : Upload wheels artifact
149151 with :
150152 name : wheels-${{ matrix.os }}-${{ matrix.arch }}
@@ -291,14 +293,14 @@ jobs:
291293 arch : auto
292294 steps :
293295 - name : Checkout source
294- uses : actions/checkout@v4.2 .2
296+ uses : actions/checkout@v6.0 .2
295297 - name : Enable MSVC 64bit
296298 uses : ilammy/msvc-dev-cmd@v1
297299 if : ${{ startsWith(matrix.os, 'windows-') }}
298300 with :
299301 arch : ${{ contains(matrix.os, 'arm') && 'arm64' || 'x64' }}
300302 - name : Set up QEMU
301- uses : docker/setup-qemu-action@v3.0 .0
303+ uses : docker/setup-qemu-action@v3.7 .0
302304 if : runner.os == 'Linux' && matrix.arch != 'auto'
303305 with :
304306 platforms : all
@@ -327,13 +329,29 @@ jobs:
327329 echo "Installing helpers: setuptools"
328330 python -m uv pip install setuptools>=0.8 setuptools_scm wheel build -U
329331 echo "Installing helpers: tomli and pkginfo"
330- python -m uv pip install tomli pkginfo
332+ python -m uv pip install tomli pkginfo packaging
331333 export WHEEL_FPATH=$(python -c "if 1:
332334 import pathlib
335+ from packaging import tags
336+ from packaging.utils import parse_wheel_filename
333337 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]
338+ wheels = sorted(dist_dpath.glob('xdoctest*.whl'))
339+ if wheels:
340+ sys_tags = set(tags.sys_tags())
341+ matching = []
342+ for w in wheels:
343+ try:
344+ _, _, _, wheel_tags = parse_wheel_filename(w.name)
345+ except Exception:
346+ continue
347+ if any(t in sys_tags for t in wheel_tags):
348+ matching.append(w)
349+ fpath = sorted(matching or wheels)[-1]
350+ else:
351+ sdists = sorted(dist_dpath.glob('xdoctest*.tar.gz'))
352+ if not sdists:
353+ raise SystemExit('No wheel artifacts found in wheelhouse')
354+ fpath = sdists[-1]
337355 print(str(fpath).replace(chr(92), chr(47)))
338356 ")
339357 export MOD_VERSION=$(python -c "if 1:
@@ -348,7 +366,7 @@ jobs:
348366 echo "INSTALL_EXTRAS=$INSTALL_EXTRAS"
349367 echo "UV_RESOLUTION=$UV_RESOLUTION"
350368 echo "MOD_VERSION=$MOD_VERSION"
351- python -m uv pip install "xdoctest[$INSTALL_EXTRAS]==$MOD_VERSION" -f wheelhouse
369+ python -m pip install --prefer-binary "xdoctest[$INSTALL_EXTRAS]==$MOD_VERSION" -f wheelhouse
352370 echo "Install finished."
353371 - name : Test wheel ${{ matrix.install-extras }}
354372 shell : bash
@@ -396,7 +414,7 @@ jobs:
396414 echo '### The cwd should now have a coverage.xml'
397415 ls -altr
398416 pwd
399- - uses : codecov/codecov-action@v5.4.3
417+ - uses : codecov/codecov-action@v5.5.2
400418 name : Codecov Upload
401419 with :
402420 file : ./coverage.xml
@@ -410,7 +428,7 @@ jobs:
410428 - build_purepy_wheels
411429 steps :
412430 - name : Checkout source
413- uses : actions/checkout@v4.2 .2
431+ uses : actions/checkout@v6.0 .2
414432 - uses : actions/download-artifact@v4.1.8
415433 name : Download wheels
416434 with :
@@ -467,7 +485,7 @@ jobs:
467485 ots stamp wheelhouse/*.whl wheelhouse/*.tar.gz wheelhouse/*.asc
468486 ls -la wheelhouse
469487 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
488+ - uses : actions/upload-artifact@v6.0 .0
471489 name : Upload deploy artifacts
472490 with :
473491 name : deploy_artifacts
@@ -486,7 +504,7 @@ jobs:
486504 - build_purepy_wheels
487505 steps :
488506 - name : Checkout source
489- uses : actions/checkout@v4.2 .2
507+ uses : actions/checkout@v6.0 .2
490508 - uses : actions/download-artifact@v4.1.8
491509 name : Download wheels
492510 with :
@@ -543,7 +561,7 @@ jobs:
543561 ots stamp wheelhouse/*.whl wheelhouse/*.tar.gz wheelhouse/*.asc
544562 ls -la wheelhouse
545563 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
564+ - uses : actions/upload-artifact@v6.0 .0
547565 name : Upload deploy artifacts
548566 with :
549567 name : deploy_artifacts
@@ -563,7 +581,7 @@ jobs:
563581 - live_deploy
564582 steps :
565583 - name : Checkout source
566- uses : actions/checkout@v4.2 .2
584+ uses : actions/checkout@v6.0 .2
567585 - uses : actions/download-artifact@v4.1.8
568586 name : Download artifacts
569587 with :
@@ -617,4 +635,4 @@ jobs:
617635# --secret=EROTEMIC_TWINE_USERNAME=$EROTEMIC_TWINE_USERNAME \
618636# --secret=EROTEMIC_CI_SECRET=$EROTEMIC_CI_SECRET \
619637# --secret=EROTEMIC_TEST_TWINE_USERNAME=$EROTEMIC_TEST_TWINE_USERNAME \
620- # --secret=EROTEMIC_TEST_TWINE_PASSWORD=$EROTEMIC_TEST_TWINE_PASSWORD
638+ # --secret=EROTEMIC_TEST_TWINE_PASSWORD=$EROTEMIC_TEST_TWINE_PASSWORD
0 commit comments