5
5
[tox]
6
6
requires =
7
7
tox>=4
8
+ tox-uv
8
9
envlist =
9
10
# No preinstallations
10
- py3{9,10,11,12,13}-none
11
- # Minimum Python
12
- py39-{min,full}
13
- # x86 support range
14
- py3{9,10,11}-{full,pre}-{x86,x64}
15
- py3{9,10,11}-pre-{x86,x64}
16
- # x64-only range
17
- py3{12,13}-{full,pre}-x64
18
- # Special environment for numpy 2.0-dev testing
19
- py313-dev-x64
11
+ py3{9,10,11,12,13,13t}-none
12
+ # Minimum Python with minimum deps
13
+ py39-min
14
+ # Run full and pre dependencies against all archs
15
+ py3{9,10,11,12,13,13t}-{full,pre}-{x86,x64,arm64}
20
16
install
21
17
doctest
22
18
style
@@ -31,12 +27,12 @@ python =
31
27
3.11: py311
32
28
3.12: py312
33
29
3.13: py313
30
+ 3.13t: py313t
34
31
35
32
[gh-actions:env]
36
33
DEPENDS =
37
- none: none, install
34
+ none: none
38
35
pre: pre
39
- dev: dev
40
36
full: full, install
41
37
min: min
42
38
@@ -48,14 +44,8 @@ ARCH =
48
44
[testenv]
49
45
description = Pytest with coverage
50
46
labels = test
51
- install_command =
52
- python -I -m pip install -v \
53
- dev: --only-binary numpy,scipy,h5py \
54
- !dev: --only-binary numpy,scipy,h5py,pillow,matplotlib \
55
- pre,dev: --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
56
- {opts} {packages}
57
47
pip_pre =
58
- pre,dev : true
48
+ pre: true
59
49
pass_env =
60
50
# getpass.getuser() sources for Windows:
61
51
LOGNAME
@@ -70,41 +60,45 @@ pass_env =
70
60
NO_COLOR
71
61
CLICOLOR
72
62
CLICOLOR_FORCE
63
+ # uv needs help in this case
64
+ py313t-x86: UV_PYTHON
73
65
set_env =
74
- py313: PYTHON_GIL =0
75
- extras = test
66
+ pre: PIP_EXTRA_INDEX_URL =https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
67
+ pre: UV_EXTRA_INDEX_URL =https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
68
+ py313t: PYTHONGIL ={env:PYTHONGIL:0}
69
+ extras =
70
+ test
71
+
72
+ # Simple, thanks Hugo and Paul
73
+ !none: dicomfs
74
+ !none: indexed_gzip
75
+
76
+ # Minimum dependencies
77
+ min: minc2
78
+ min: spm
79
+ min: viewers
80
+ min: zstd
81
+
82
+ # Matplotlib has wheels for everything except win32 (x86)
83
+ {full,pre}-{x,arm}64: viewers
84
+
85
+ # Nightly, but not released cp313t wheels for: scipy
86
+ # When released, remove the py3* line and add full to the pre line
87
+ py3{9,10,11,12,13}-full-{x,arm}64: spm
88
+ pre-{x,arm}64: spm
89
+
90
+ # No cp313t wheels for: h5py, pyzstd
91
+ py3{9,10,11,12,13}-{full,pre}-{x,arm}64: minc2
92
+ py3{9,10,11,12,13}-{full,pre}-{x,arm}64: zstd
93
+
94
+ # win32 (x86) wheels still exist for scipy+py39
95
+ py39-full-x86: spm
96
+
76
97
deps =
77
- # General minimum dependencies: pin based on API usage
78
- # matplotlib 3.5 requires packaging 20
79
- min: packaging ==20
80
- min: importlib_resources ==5.12; python_version < '3.12'
81
- min: typing_extensions ==4.6; python_version < '3.13'
82
- # NEP29/SPEC0 + 1yr: Test on minor release series within the last 3 years
83
- # We're extending this to all optional dependencies
84
- # This only affects the range that we test on; numpy is the only non-optional
85
- # dependency, and will be the only one to affect pip environment resolution.
86
- min: numpy ==1.22
87
- min: h5py ==3.5
88
- min: indexed_gzip ==1.6
89
- min: matplotlib ==3.5
90
- min: pillow ==8.4
91
- min: pydicom ==2.3
92
- min: pyzstd ==0.15.2
93
- min: scipy ==1.8
94
- # Numpy 2.0 is a major breaking release; we cannot put much effort into
95
- # supporting until it's at least RC stable
96
- dev: numpy >=2.1.dev0
97
- # Scipy stopped producing win32 wheels at py310
98
- py39-full-x86,x64,arm64: scipy >=1.8
99
- # Matplotlib depends on scipy, so cannot be built for py310 on x86
100
- py39-full-x86,x64,arm64: matplotlib >=3.5
101
- # h5py stopped producing win32 wheels at py39
102
- {full,pre}-{x64,arm64}: h5py >=3.5
103
- full,pre,dev: pillow >=8.4
104
- full,pre: indexed_gzip >=1.6
105
- full,pre,dev: pyzstd >=0.15.2
106
- full,pre: pydicom >=2.3
107
- dev: pydicom @ git+https://github.com/pydicom/pydicom.git@main
98
+ pre: pydicom @ git+https://github.com/pydicom/pydicom.git@main
99
+
100
+ uv_resolution =
101
+ min: lowest-direct
108
102
109
103
commands =
110
104
pytest --doctest-modules --doctest-plus \
@@ -118,7 +112,6 @@ description = Install and verify import succeeds
118
112
labels = test
119
113
deps =
120
114
extras =
121
- install_command = python -I -m pip install {opts} {packages}
122
115
commands =
123
116
python -c " import nibabel; print(nibabel.__version__)"
124
117
0 commit comments