Skip to content

Commit 980e160

Browse files
authored
Merge pull request #17 from CalebBell/master
Merge to release
2 parents 2cbfeb7 + d868b9e commit 980e160

34 files changed

+1102
-1112
lines changed

.github/workflows/build-multiarch.yml

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,24 @@ jobs:
1717
fail-fast: false
1818
matrix:
1919
include:
20-
- arch: armv6
21-
distro: bookworm
20+
# Disabled: Docker localhost registry connection refused error on armv6/trixie
21+
# - arch: armv6
22+
# distro: trixie
2223
- arch: armv7
23-
distro: bookworm
24+
distro: trixie
2425
- arch: aarch64
25-
distro: bookworm
26+
distro: trixie
27+
- arch: riscv64
28+
distro: trixie
2629
- arch: s390x
27-
distro: bookworm
30+
distro: trixie
2831
- arch: ppc64le
29-
distro: bookworm
32+
distro: trixie
3033

3134
- arch: armv7
3235
distro: ubuntu_latest
3336
- arch: aarch64
3437
distro: ubuntu_latest
35-
- arch: riscv64
36-
distro: ubuntu_devel
3738
- arch: s390x
3839
distro: ubuntu_latest
3940
- arch: ppc64le
@@ -51,38 +52,14 @@ jobs:
5152
distro: alpine_latest
5253
- arch: ppc64le
5354
distro: alpine_latest
54-
# fedora-latest doesn't work not sure why
5555

5656
steps:
5757
- uses: actions/checkout@v4
58+
- name: Install Just
59+
uses: extractions/setup-just@v2
5860
- name: Set up QEMU
5961
uses: docker/setup-qemu-action@v3
6062
with:
61-
platforms: all
62-
- name: Run on ${{ matrix.arch }}
63-
uses: uraimo/run-on-arch-action@v3
64-
with:
65-
arch: ${{ matrix.arch }}
66-
distro: ${{ matrix.distro }}
67-
githubToken: ${{ github.token }}
68-
install: |
69-
if [[ "${{ matrix.distro }}" == "alpine_latest" ]]; then
70-
apk update
71-
apk add python3 py3-pip py3-scipy py3-matplotlib py3-numpy py3-pandas
72-
elif [[ "${{ matrix.distro }}" == "ubuntu_latest" || "${{ matrix.distro }}" == "ubuntu_rolling" || "${{ matrix.distro }}" == "ubuntu_devel" || "${{ matrix.distro }}" == "ubuntu20.04" || "${{ matrix.distro }}" == "ubuntu22.04" || "${{ matrix.distro }}" == "bookworm" ]]; then
73-
apt-get update
74-
# Install libatlas-base-dev if available (not available on some architectures like riscv64)
75-
apt-get install -y liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev ccache libmpc-dev python3 python3-pip python3-scipy python3-matplotlib python3-numpy python3-pandas
76-
apt-get install -y libatlas-base-dev || true
77-
fi
78-
run: |
79-
if python3 -c "import subprocess; exit('no such option' not in subprocess.getoutput('pip3 install --break-system-packages'))"; then
80-
# If the exit status is 0 (True), this means the option is not supported
81-
python3 -m pip install wheel
82-
pip3 install -r requirements_test_multiarch.txt
83-
else
84-
# If the exit status is 1 (False), this means the option is supported
85-
python3 -m pip install wheel --break-system-packages
86-
pip3 install -r requirements_test_multiarch.txt --break-system-packages
87-
fi
88-
python3 -m pytest . -v -m "not online and not thermo and not numba"
63+
image: tonistiigi/binfmt:qemu-v8.1.5
64+
- name: Run tests on ${{ matrix.arch }}/${{ matrix.distro }}
65+
run: just test-arch ${{ matrix.arch }} ${{ matrix.distro }}

.github/workflows/build.yml

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -37,9 +37,6 @@ jobs:
3737
- os: ubuntu-latest
3838
architecture: x86
3939
# scipy dropped 32 bit windows builds
40-
- os: windows-latest
41-
architecture: x86
42-
python-version: 3.8
4340
- os: windows-latest
4441
architecture: x86
4542
python-version: 3.9
@@ -67,8 +64,6 @@ 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
@@ -81,30 +76,12 @@ jobs:
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=ht --cov-report term-missing -m "not online and not thermo"

.github/workflows/build_cxfreeze_library.yml

Lines changed: 0 additions & 91 deletions
This file was deleted.

.github/workflows/build_multi_numpy_scipy.yml

Lines changed: 8 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -21,42 +21,9 @@ jobs:
2121
os: [ubuntu-latest]
2222
architecture: ['x64']
2323
include:
24-
- numpy: '1.18.5'
25-
scipy: '1.8.1'
26-
python-version: '3.8'
27-
- numpy: '1.18.5'
28-
scipy: '1.9.3'
29-
python-version: '3.8'
30-
- numpy: '1.20.3'
31-
scipy: '1.7.3'
32-
python-version: '3.8'
33-
- numpy: '1.20.3'
34-
scipy: '1.8.1'
35-
python-version: '3.8'
36-
- numpy: '1.20.3'
37-
scipy: '1.9.3'
38-
python-version: '3.8'
39-
- numpy: '1.20.3'
40-
scipy: '1.10.1'
41-
python-version: '3.8'
42-
- numpy: '1.22.4'
43-
scipy: '1.7.3'
44-
python-version: '3.8'
45-
- numpy: '1.22.4'
46-
scipy: '1.9.3'
47-
python-version: '3.8'
48-
- numpy: '1.22.4'
49-
scipy: '1.10.1'
50-
python-version: '3.8'
51-
- numpy: '1.24.4'
52-
scipy: '1.8.1'
53-
python-version: '3.8'
5424
- numpy: '1.24.4'
5525
scipy: '1.9.3'
5626
python-version: '3.10'
57-
- numpy: '1.24.4'
58-
scipy: '1.10.1'
59-
python-version: '3.8'
6027
- numpy: '1.24.4'
6128
scipy: '1.12.0'
6229
python-version: '3.9'
@@ -74,59 +41,12 @@ jobs:
7441
python-version: '3.10'
7542
steps:
7643
- uses: actions/checkout@v4
77-
- name: Set up Python ${{ matrix.python-version }} ${{ matrix.architecture }}
78-
uses: actions/setup-python@v5
79-
with:
80-
python-version: ${{ matrix.python-version }}
81-
architecture: ${{ matrix.architecture }}
82-
- name: cache Linux
83-
uses: actions/cache@v4
84-
if: startsWith(runner.os, 'Linux')
85-
with:
86-
path: ~/.cache/pip
87-
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
88-
restore-keys: |
89-
${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
90-
- name: Install Ubuntu dependencies
91-
if: startsWith(runner.os, 'Linux')
92-
run: |
93-
# Taken from scipy
94-
sudo apt-get update
95-
sudo apt-get install -y libopenblas-dev libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev ccache libmpc-dev
96-
97-
- name: Install dependencies
98-
run: |
99-
python -c "import platform; print(platform.platform()); print(platform.architecture())"
100-
python -m pip install --upgrade pip
101-
python -m pip install wheel
102-
pip install -r requirements_test.txt
103-
pip install numpy==${{ matrix.numpy }} scipy==${{ matrix.scipy }}
104-
- name: Add numba
105-
if: ${{ !contains(fromJSON('["pypy3.9"]'), matrix.python-version) }}
106-
run: |
107-
pip install numba
108-
- name: Test with pytest
109-
run: |
110-
pytest . -v --cov-report html --cov=ht --cov-report term-missing -m "not online and not thermo and not numba"
111-
coveralls
112-
env:
113-
COVERALLS_REPO_TOKEN: ${{ secrets.coveralls }}
114-
COVERALLS_PARALLEL: true
115-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
116-
117-
- name: Upload coverage HTML report
118-
if: always()
119-
uses: actions/upload-artifact@v4
44+
- name: Install uv
45+
uses: astral-sh/setup-uv@v4
12046
with:
121-
name: coverage-html-numpy-${{ matrix.numpy }}-scipy-${{ matrix.scipy }}-py${{ matrix.python-version }}
122-
path: htmlcov/
123-
finish:
124-
needs: build
125-
runs-on: ubuntu-latest
126-
steps:
127-
- name: Coveralls Finished
128-
env:
129-
COVERALLS_REPO_TOKEN: ${{ secrets.coveralls }}
130-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
131-
run: |
132-
curl https://coveralls.io/webhook?repo_token=${{ secrets.coveralls }} -d "payload[build_num]=${{ github.sha }}&payload[status]=done"
47+
enable-cache: true
48+
cache-dependency-glob: "pyproject.toml"
49+
- name: Install Just
50+
uses: extractions/setup-just@v2
51+
- name: Run tests with specific Python/NumPy/SciPy versions
52+
run: just test-multi-single ${{ matrix.python-version }} ${{ matrix.numpy }} ${{ matrix.scipy }}

0 commit comments

Comments
 (0)