Skip to content

Commit 7e0e509

Browse files
authored
Merge pull request #1453 from nipy/ci/uv-setup
chore(ci): Use tox-gh-actions and setup-uv more directly
2 parents 3898955 + 2e7e8b5 commit 7e0e509

File tree

5 files changed

+88
-1057
lines changed

5 files changed

+88
-1057
lines changed

.github/workflows/test.yml

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -205,41 +205,21 @@ jobs:
205205
with:
206206
submodules: recursive
207207
fetch-depth: 0
208-
- name: Install the latest version of uv
208+
- name: Setup uv and Python ${{ matrix.python-version }}
209209
uses: astral-sh/setup-uv@v7
210-
- name: Set up Python ${{ matrix.python-version }}
211-
if: "!endsWith(matrix.python-version, 't')"
210+
with:
211+
python-version: ${{ matrix.python-version }}
212+
activate-environment: ${{ matrix.architecture != 'x86' }}
213+
- name: Setup 32-bit Python ${{ matrix.python-version }}
214+
if: matrix.architecture == 'x86'
212215
uses: actions/setup-python@v6
213216
with:
214217
python-version: ${{ matrix.python-version }}
215218
architecture: ${{ matrix.architecture }}
216-
allow-prereleases: true
217-
- name: Set up Python ${{ matrix.python-version }}
218-
if: endsWith(matrix.python-version, 't')
219-
run: |
220-
echo "UV_PYTHON=${IMPL}-${VERSION}-${OS%-*}-${ARCH}-${LIBC}" >> $GITHUB_ENV
221-
source $GITHUB_ENV
222-
uv python install $UV_PYTHON
223-
env:
224-
IMPL: cpython
225-
VERSION: ${{ matrix.python-version }}
226-
# uv expects linux|macos|windows, we can drop the -* but need to rename ubuntu
227-
OS: ${{ matrix.os == 'ubuntu-latest' && 'linux' ||
228-
startsWith(matrix.os, 'macos') && 'macos' ||
229-
matrix.os }}
230-
# uv expects x86, x86_64, aarch64 (among others)
231-
ARCH: ${{ matrix.architecture == 'x64' && 'x86_64' ||
232-
matrix.architecture == 'arm64' && 'aarch64' ||
233-
matrix.architecture }}
234-
# windows and macos have no options, gnu is the only option for the archs
235-
LIBC: ${{ matrix.os == 'ubuntu-latest' && 'gnu' || 'none' }}
236219
- name: Display Python version
237220
run: python -c "import sys; print(sys.version)"
238221
- name: Install tox
239-
run: |
240-
uv tool install -v tox \
241-
--with=tox-uv \
242-
--with=git+https://github.com/effigies/tox-gh-actions@abiflags
222+
run: uv tool install -v tox --with=tox-uv --with=tox-gh-actions
243223
- name: Show tox config
244224
run: tox c
245225
- name: Setup test suite

nibabel/pydicom_compat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from __future__ import annotations
2424

2525
import warnings
26-
from typing import Callable
26+
from collections.abc import Callable
2727

2828
from .deprecated import deprecate_with_version
2929
from .optpkg import optional_package

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ authors = [{ name = "NiBabel developers", email = "neuroimaging@python.org" }]
99
maintainers = [{ name = "Christopher Markiewicz" }]
1010
readme = "README.rst"
1111
license = "MIT"
12-
requires-python = ">=3.9"
12+
requires-python = ">=3.10"
1313
dependencies = [
1414
"numpy >=1.25",
1515
"packaging >=20",
@@ -22,7 +22,6 @@ classifiers = [
2222
"Intended Audience :: Science/Research",
2323
"Operating System :: OS Independent",
2424
"Programming Language :: Python",
25-
"Programming Language :: Python :: 3.9",
2625
"Programming Language :: Python :: 3.10",
2726
"Programming Language :: Python :: 3.11",
2827
"Programming Language :: Python :: 3.12",

tox.ini

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ requires =
88
tox-uv
99
envlist =
1010
# No preinstallations
11-
py3{9,10,11,12,13,13t}-none
11+
py3{10-12}-none
12+
py3{13-14}{,t}-none
1213
# Minimum Python with minimum deps
13-
py3{9,10}-min
14+
py310-min
1415
# Run full and pre dependencies against all archs
15-
py3{9,10,11,12,13,13t}-{full,pre}-{x86,x64,arm64}
16+
py3{10-12}-{full,pre}-{x86,x64,arm64}
17+
py3{13-14}{,t}-{full,pre}-{x86,x64,arm64}
1618
# Python development versions
17-
py3{14,14t}-pre-{x64,arm64}
19+
py315{,t}-pre-{x64,arm64}
1820
install
1921
doctest
2022
style
@@ -24,7 +26,6 @@ skip_missing_interpreters = true
2426
# Configuration that allows us to split tests across GitHub runners effectively
2527
[gh-actions]
2628
python =
27-
3.9: py39
2829
3.10: py310
2930
3.11: py311
3031
3.12: py312
@@ -37,7 +38,7 @@ python =
3738
DEPENDS =
3839
none: none
3940
pre: pre
40-
full: full, install
41+
full: full
4142
min: min
4243

4344
ARCH =
@@ -64,13 +65,11 @@ pass_env =
6465
NO_COLOR
6566
CLICOLOR
6667
CLICOLOR_FORCE
67-
# uv needs help in this case
68-
py313t-x86: UV_PYTHON
6968
set_env =
7069
pre: PIP_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
7170
pre: UV_INDEX=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
7271
pre: UV_INDEX_STRATEGY=unsafe-best-match
73-
py3{13,14}t: PYTHONGIL={env:PYTHONGIL:0}
72+
py3{13-15}t: PYTHONGIL={env:PYTHONGIL:0}
7473
extras =
7574
test
7675

@@ -90,11 +89,8 @@ extras =
9089
{full,pre}-{x,arm}64: spm
9190

9291
# No free-threaded wheels for: h5py
93-
py3{9,10,11,12,13}-{full,pre}-{x,arm}64: minc2
94-
py314-pre-{x,arm}64: minc2
95-
96-
# win32 (x86) wheels still exist for scipy+py39
97-
py39-full-x86: spm
92+
py3{10-14}-{full,pre}-{x,arm}64: minc2
93+
py315-pre-{x,arm}64: minc2
9894

9995
deps =
10096
pre: pydicom @ git+https://github.com/pydicom/pydicom.git@main
@@ -109,7 +105,7 @@ commands =
109105
--durations=20 --durations-min=1.0 \
110106
--pyargs nibabel {posargs:-n auto}
111107

112-
[testenv:py3{9,10,11,12,13,13t,14,14t}-{full,none}-{x,arm}64]
108+
[testenv:py3{10-15}{,t}-{full,none}-{x,arm}64]
113109
runner = uv-venv-lock-runner
114110

115111
[testenv:install]

0 commit comments

Comments
 (0)