@@ -17,17 +17,17 @@ jobs:
1717 strategy :
1818 fail-fast : false
1919 matrix :
20- python-version : ['3.8', '3. 9', '3.10', '3.11', '3.12', '3.13', '3.13t', 'pypy3.9 ']
20+ python-version : ['3.9', '3.10', '3.11', '3.12', '3.13', '3.13t', 'pypy3.11 ']
2121 os : [windows-latest, ubuntu-latest, macos-15-intel, macos-latest]
2222 architecture : ['x86', 'x64']
2323 exclude :
2424 # Only test pypy on Linux
2525 - os : windows-latest
26- python-version : pypy3.9
26+ python-version : pypy3.11
2727 - os : macos-latest
28- python-version : pypy3.9
28+ python-version : pypy3.11
2929 - os : macos-15-intel
30- python-version : pypy3.9
30+ python-version : pypy3.11
3131 # no python builds available on macos 32 bit, arm or x64
3232 - os : macos-latest
3333 architecture : x86
3636 # no python builds available on linux 32 bit
3737 - os : ubuntu-latest
3838 architecture : x86
39- # scipy dropped 32 bit windows builds
40- - os : windows-latest
41- architecture : x86
42- python-version : 3.8
39+ # scipy dropped 32 bit windows builds
4340 - os : windows-latest
4441 architecture : x86
4542 python-version : 3.9
@@ -67,44 +64,24 @@ jobs:
6764 python-version : 3.13t
6865
6966 # These are arm - old versions of Python are not supported
70- - os : macos-latest
71- python-version : 3.8
7267 - os : macos-latest
7368 python-version : 3.9
7469 - os : macos-latest
7570 python-version : 3.10
7671 steps :
7772 - uses : actions/checkout@v4
7873 - name : Set up Python ${{ matrix.python-version }} ${{ matrix.architecture }}
79- uses : actions/setup-python@v5
74+ uses : actions/setup-python@v5
8075 with :
8176 python-version : ${{ matrix.python-version }}
8277 architecture : ${{ matrix.architecture }}
8378
84- - name : cache Linux
85- uses : actions/cache@v4
86- if : startsWith(runner.os, 'Linux')
87- with :
88- path : ~/.cache/pip
89- key : ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
90- restore-keys : |
91- ${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
92- - name : cache MacOS
93- uses : actions/cache@v4
94- if : startsWith(runner.os, 'macOS')
95- with :
96- path : ~/Library/Caches/pip
97- key : ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
98- restore-keys : |
99- ${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
100- - name : cache Windows
101- uses : actions/cache@v4
102- if : startsWith(runner.os, 'Windows')
79+ - name : Install uv
80+ if : matrix.python-version != '3.13t'
81+ uses : astral-sh/setup-uv@v4
10382 with :
104- path : ~\AppData\Local\pip\Cache
105- key : ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
106- restore-keys : |
107- ${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
83+ enable-cache : true
84+ cache-dependency-glob : " pyproject.toml"
10885
10986 - name : Install Ubuntu dependencies
11087 if : startsWith(runner.os, 'Linux')
@@ -116,13 +93,18 @@ jobs:
11693 - name : Install dependencies
11794 run : |
11895 python -c "import platform; print(platform.platform()); print(platform.architecture())"
119- python -m pip install --upgrade pip
120- python -m pip install wheel
121- pip install -r requirements_test.txt
96+ if [[ "${{ matrix.python-version }}" == "3.13t" ]]; then
97+ # Use pip for 3.13t (free-threading) as uv may not fully support it yet
98+ python -m pip install --upgrade pip
99+ pip install -e .[test]
100+ else
101+ uv pip install --system -e .[test]
102+ fi
103+ shell : bash
122104 - name : Add numba
123- if : ${{ !contains(fromJSON('["pypy3.9 ", "3.13t"]'), matrix.python-version) }}
105+ if : ${{ !contains(fromJSON('["pypy3.11 ", "3.13t"]'), matrix.python-version) }}
124106 run : |
125- pip install numba
107+ uv pip install --system -e .[ numba]
126108 - name : Test with pytest
127109 run : |
128110 pytest . -v --cov-report html --cov=fluids --cov-report term-missing -m "not online and not thermo"
0 commit comments