-
Notifications
You must be signed in to change notification settings - Fork 34
132 lines (125 loc) · 4.57 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: Build
on:
push:
branches: [master, release]
pull_request:
branches: [master, release]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', 'pypy3.9']
os: [windows-latest, ubuntu-latest, macos-13, macos-latest]
architecture: ['x86', 'x64']
exclude:
# Only test pypy on Linux
- os: windows-latest
python-version: pypy3.9
- os: macos-latest
python-version: pypy3.9
- os: macos-13
python-version: pypy3.9
# no python builds available on macos 32 bit, arm or x64
- os: macos-latest
architecture: x86
- os: macos-13
architecture: x86
# no python builds available on linux 32 bit
- os: ubuntu-latest
architecture: x86
# scipy dropped 32 bit windows builds
- os: windows-latest
architecture: x86
python-version: 3.8
- os: windows-latest
architecture: x86
python-version: 3.9
- os: windows-latest
architecture: x86
python-version: 3.10
- os: windows-latest
architecture: x86
python-version: 3.11
- os: windows-latest
architecture: x86
python-version: 3.12
- os: windows-latest
architecture: x86
python-version: 3.13
# These are arm - old versions of Python are not supported
- os: macos-latest
python-version: 3.7
- os: macos-latest
python-version: 3.8
- os: macos-latest
python-version: 3.9
- os: macos-latest
python-version: 3.10
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} ${{ matrix.architecture }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.architecture }}
- name: cache Linux
uses: actions/cache@v4
if: startsWith(runner.os, 'Linux')
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
restore-keys: |
${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
- name: cache MacOS
uses: actions/cache@v4
if: startsWith(runner.os, 'macOS')
with:
path: ~/Library/Caches/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
restore-keys: |
${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
- name: cache Windows
uses: actions/cache@v4
if: startsWith(runner.os, 'Windows')
with:
path: ~\AppData\Local\pip\Cache
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements_test.txt') }}
restore-keys: |
${{ runner.os }}-${{ runner.architecture }}-${{ runner.python-version }}pip-
- name: Install Ubuntu dependencies
if: startsWith(runner.os, 'Linux')
run: |
# Taken from scipy
sudo apt-get update
sudo apt-get install -y libopenblas-dev libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev ccache libmpc-dev
- name: Install dependencies
run: |
python -c "import platform; print(platform.platform()); print(platform.architecture())"
python -m pip install --upgrade pip
python -m pip install wheel
pip install -r requirements_test.txt
- name: Add numba
if: ${{ matrix.python-version == '3.7' || matrix.python-version == '3.8' || matrix.python-version == '3.9' || matrix.python-version == '3.10' || matrix.python-version == '3.11' || matrix.python-version == '3.12' }}
run: |
pip install numba
- name: Test with pytest
run: |
pytest . -v --cov-report html --cov=ht --cov-report term-missing -m "not online and not thermo"
- name: Coveralls
run: |
coveralls
if: ${{ matrix.python-version != 'pypy3.9'}}
env:
COVERALLS_REPO_TOKEN: ${{ secrets.coveralls }}
COVERALLS_PARALLEL: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
finish:
needs: build
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
if: ${{ matrix.python-version != 'pypy3.9'}}
run: |
curl https://coveralls.io/webhook?repo_token=${{ secrets.coveralls }} -d "payload[build_num]=${{ github.sha }}&payload[status]=done"