-
Notifications
You must be signed in to change notification settings - Fork 26
146 lines (134 loc) · 3.42 KB
/
build.yaml
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: Build
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
- master
tags:
- '*'
pull_request:
branches:
- main
- master
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Build wheels
uses: pypa/[email protected]
- uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
make_sdist:
name: Make SDist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Build SDist
run: pipx run build --sdist
- uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
upload_all:
needs: [build_wheels, make_sdist]
permissions:
id-token: write
runs-on: ubuntu-latest
if: github.ref_type == 'tag'
steps:
- uses: actions/download-artifact@v4
with:
pattern: cibw-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
doc_lint_cov:
name: Documentation, Linting and Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
# Update according to NEP-29
python-version: '3.10'
cache: 'pip'
- name: Install package
run: |
pip install -v .[all]
- name: Build documentation
run: |
sphinx-build -W -b html docs/ _build/html
- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: Documentation
path: _build/html
- name: Code style and tests
run: |
pytest --pyargs uarray
- name: mypy
run: |
mypy src/uarray
- name: Run clang-format style check for C/C++ code.
uses: jidicula/[email protected]
with:
clang-format-version: '18'
check-path: 'src'
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
directory: 'coverage/coverage*.xml'
env_vars: OS,PYTHON
fail_ci_if_error: false
verbose: true
pypy3:
name: Tests for PyPy3
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: 'pypy-3.10'
cache: 'pip'
- name: Install package
run: |
pip install -v .[tests]
- name: Run tests
run: |
pytest --pyargs uarray
scipy_fft:
name: Run SciPy FFT tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# Update according to NEP-29
python-version: '3.10'
cache: 'pip'
- name: Install package
run: |
pip install -v .[tests] pytest"<7"
pip install scipy==1.7.2
- name: SciPy tests
run: |
import scipy.fft
assert scipy.fft.test()
shell: python