|
4 | 4 | push: |
5 | 5 | branches: |
6 | 6 | - v1.** |
| 7 | + - ci-fix-asan # DEBUG: remove before merging |
7 | 8 | pull_request: |
8 | 9 | branches: |
9 | 10 | - main |
|
25 | 26 | CYTHON_MIN: cython==3.1.3 |
26 | 27 |
|
27 | 28 | jobs: |
28 | | - test_pywavelets_linux: |
29 | | - name: ${{ matrix.runs-on }}-cp${{ matrix.python-version }}-${{ matrix.OPTIONS_NAME }} |
30 | | - runs-on: ${{ matrix.runs-on }} |
31 | | - strategy: |
32 | | - # Ensure that a wheel builder finishes even if another fails |
33 | | - fail-fast: false |
34 | | - matrix: |
35 | | - runs-on: [ubuntu-latest] # Arm runner tested separately, see below |
36 | | - python-version: ["3.12", "3.14"] |
37 | | - MINIMUM_REQUIREMENTS: [0] |
38 | | - USE_SDIST: [0] |
39 | | - REFGUIDE_CHECK: [1] |
40 | | - PIP_FLAGS: [""] |
41 | | - OPTIONS_NAME: ["default"] |
42 | | - include: |
43 | | - # Linux arm64 |
44 | | - - runs-on: ubuntu-22.04-arm |
45 | | - python-version: "3.14" |
46 | | - # Linux amd64 |
47 | | - - runs-on: ubuntu-latest |
48 | | - python-version: "3.12" |
49 | | - MINIMUM_REQUIREMENTS: 1 |
50 | | - OPTIONS_NAME: "minimum-req" |
51 | | - - runs-on: ubuntu-latest |
52 | | - python-version: "3.12" |
53 | | - - runs-on: ubuntu-latest |
54 | | - python-version: "3.14" |
55 | | - USE_SDIST: 1 |
56 | | - OPTIONS_NAME: "install-from-sdist" |
57 | | - - runs-on: ubuntu-latest |
58 | | - python-version: "3.14" |
59 | | - PIP_FLAGS: "--pre" |
60 | | - OPTIONS_NAME: "pre-releases" |
61 | | - - runs-on: ubuntu-latest |
62 | | - python-version: "3.14" |
63 | | - OPTIONS_NAME: "editable-install" |
64 | | - steps: |
65 | | - - uses: actions/checkout@f548e57e544e1ff5a4c46bf1e1b8685f8e4a348a # v4.1.2 |
66 | | - - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v5.5.0 |
67 | | - with: |
68 | | - python-version: ${{ matrix.python-version}} |
69 | | - allow-prereleases: true |
70 | | - |
71 | | - - name: Build package |
72 | | - env: |
73 | | - VERSION: ${{ matrix.python-version }} |
74 | | - MINIMUM_REQUIREMENTS: ${{ matrix.MINIMUM_REQUIREMENTS }} |
75 | | - PIP_FLAGS: ${{ matrix.PIP_FLAGS }} |
76 | | - USE_SDIST: ${{ matrix.USE_SDIST }} |
77 | | - REFGUIDE_CHECK: ${{ matrix.REFGUIDE_CHECK }} |
78 | | - OPTIONS_NAME: ${{ matrix.OPTIONS_NAME }} |
79 | | - run: | |
80 | | - uname -a |
81 | | - df -h |
82 | | - ulimit -a |
83 | | - # ccache -s |
84 | | - which python |
85 | | - python --version |
86 | | - # sudo apt-get install libatlas-base-dev |
87 | | - pip install --upgrade pip build |
88 | | - # Set numpy version first, other packages link against it |
89 | | - if [ "${MINIMUM_REQUIREMENTS}" == "1" ]; then |
90 | | - pip install ${CYTHON_MIN} |
91 | | - pip install ${NUMPY_MIN} |
92 | | - else |
93 | | - pip install ${PIP_FLAGS} cython |
94 | | - pip install ${PIP_FLAGS} numpy |
95 | | - fi |
96 | | - pip install ${PIP_FLAGS} matplotlib pytest |
97 | | -
|
98 | | - set -o pipefail |
99 | | - if [ "${USE_SDIST}" == "1" ]; then |
100 | | - python -m build --sdist |
101 | | - pip install dist/pyw*.tar.gz -v |
102 | | - elif [ "${REFGUIDE_CHECK}" == "1" ]; then |
103 | | - pip install sphinx numpydoc scipy-doctest |
104 | | - pip install . -v |
105 | | - else |
106 | | - pip install . -v |
107 | | - fi |
108 | | -
|
109 | | - if [ "${OPTIONS_NAME}" == "editable-install" ]; then |
110 | | - pip install meson-python>=0.16.0 matplotlib pytest ninja |
111 | | - pip install -e . --no-build-isolation |
112 | | - fi |
113 | | -
|
114 | | - - name: Run tests |
115 | | - env: |
116 | | - USE_SDIST: ${{ matrix.USE_SDIST }} |
117 | | - REFGUIDE_CHECK: ${{ matrix.REFGUIDE_CHECK }} |
118 | | - OPTIONS_NAME: ${{ matrix.OPTIONS_NAME }} |
119 | | - run: | |
120 | | - set -o pipefail |
121 | | - # Move out of source directory to avoid finding local pywt |
122 | | - pushd demo |
123 | | - if [ "${USE_SDIST}" == "1" ]; then |
124 | | - pytest --pyargs pywt |
125 | | - python ../pywt/tests/test_doc.py |
126 | | - elif [ "${REFGUIDE_CHECK}" == "1" ]; then |
127 | | - # doctest docstrings |
128 | | - pytest --doctest-modules --pyargs pywt -v --doctest-collect=api |
129 | | - # Run Sphinx HTML docs builder, converting warnings to errors |
130 | | - # Move back out of demo/ to root directory |
131 | | - cd .. |
132 | | - pip install -r util/readthedocs/requirements.txt |
133 | | - sphinx-build -b html -W --keep-going -d _build/doctrees doc/source doc/build |
134 | | - else |
135 | | - pytest --pyargs pywt |
136 | | - fi |
137 | | - popd |
138 | | -
|
139 | | - test_pywavelets_linux_free_threaded: |
140 | | - name: linux-cp${{ matrix.python-version }}-default |
141 | | - runs-on: ubuntu-latest |
142 | | - strategy: |
143 | | - fail-fast: false |
144 | | - matrix: |
145 | | - python-version: ["3.14t"] |
146 | | - steps: |
147 | | - - uses: actions/checkout@f548e57e544e1ff5a4c46bf1e1b8685f8e4a348a # v4.1.2 |
148 | | - - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v5.5.0 |
149 | | - with: |
150 | | - python-version: ${{ matrix.python-version}} |
151 | | - |
152 | | - - name: Build package |
153 | | - run: | |
154 | | - pip install --upgrade pip build |
155 | | - pip install cython numpy meson-python ninja pytest |
156 | | - pip install . -v --no-build-isolation |
157 | | -
|
158 | | - - name: Run tests |
159 | | - run: | |
160 | | - # Move out of source directory to avoid finding local pywt |
161 | | - cd demo |
162 | | - pytest --pyargs pywt |
163 | | -
|
164 | | - test_pywavelets_macos: |
165 | | - name: macos-cp${{ matrix.python-version }}-${{ matrix.OPTIONS_NAME }} |
166 | | - runs-on: macos-latest |
167 | | - strategy: |
168 | | - # Ensure that a wheel builder finishes even if another fails |
169 | | - fail-fast: false |
170 | | - matrix: |
171 | | - python-version: ["3.12", "3.14"] |
172 | | - MINIMUM_REQUIREMENTS: [0] |
173 | | - USE_SDIST: [0] |
174 | | - REFGUIDE_CHECK: [0] |
175 | | - PIP_FLAGS: [""] |
176 | | - OPTIONS_NAME: ["default"] |
177 | | - include: |
178 | | - - python-version: "3.12" |
179 | | - MINIMUM_REQUIREMENTS: 1 |
180 | | - OPTIONS_NAME: "osx-minimum-req" |
181 | | - - python-version: "3.14" |
182 | | - PIP_FLAGS: "--pre" |
183 | | - OPTIONS_NAME: "pre-releases" |
184 | | - |
185 | | - steps: |
186 | | - - uses: actions/checkout@f548e57e544e1ff5a4c46bf1e1b8685f8e4a348a # v4.1.2 |
187 | | - - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v5.5.0 |
188 | | - with: |
189 | | - python-version: ${{ matrix.python-version}} |
190 | | - allow-prereleases: true |
191 | | - |
192 | | - - name: Build package |
193 | | - env: |
194 | | - VERSION: ${{ matrix.python-version }} |
195 | | - MINIMUM_REQUIREMENTS: ${{ matrix.MINIMUM_REQUIREMENTS }} |
196 | | - PIP_FLAGS: ${{ matrix.PIP_FLAGS }} |
197 | | - USE_SDIST: ${{ matrix.USE_SDIST }} |
198 | | - REFGUIDE_CHECK: ${{ matrix.REFGUIDE_CHECK }} |
199 | | - CC: /usr/bin/clang |
200 | | - CXX: /usr/bin/clang++ |
201 | | - run: | |
202 | | - uname -a |
203 | | - df -h |
204 | | - ulimit -a |
205 | | - which python |
206 | | - python --version |
207 | | - pip install --upgrade pip build |
208 | | - # Set numpy version first, other packages link against it |
209 | | - if [ "${MINIMUM_REQUIREMENTS}" == "1" ]; then |
210 | | - pip install ${CYTHON_MIN} ${NUMPY_MIN} |
211 | | - else |
212 | | - pip install ${PIP_FLAGS} cython numpy |
213 | | - fi |
214 | | - pip install ${PIP_FLAGS} matplotlib pytest |
215 | | -
|
216 | | - set -o pipefail |
217 | | - if [ "${USE_SDIST}" == "1" ]; then |
218 | | - python -m build --sdist |
219 | | - pip install pywavelets* -v |
220 | | - elif [ "${REFGUIDE_CHECK}" == "1" ]; then |
221 | | - pip install sphinx numpydoc scipy-doctest |
222 | | - pip install . -v |
223 | | - else |
224 | | - pip install . -v |
225 | | - fi |
226 | | -
|
227 | | - - name: Run tests |
228 | | - env: |
229 | | - PIP_FLAGS: ${{ matrix.PIP_FLAGS }} |
230 | | - USE_SDIST: ${{ matrix.USE_SDIST }} |
231 | | - REFGUIDE_CHECK: ${{ matrix.REFGUIDE_CHECK }} |
232 | | - run: | |
233 | | - # Move out of source directory to avoid finding local pywt |
234 | | - pushd demo |
235 | | - if [ "${USE_SDIST}" == "1" ]; then |
236 | | - pytest --pyargs pywt |
237 | | - python ../pywt/tests/test_doc.py |
238 | | - elif [ "${REFGUIDE_CHECK}" == "1" ]; then |
239 | | - # doctests docstrings |
240 | | - pytest --doctest-modules --doctest-only-doctests=true --pyargs pywt -v --doctest-collect=api |
241 | | - pytest --doctest-modules --doctest-only-doctests=true --pyargs pywt.data -v |
242 | | - else |
243 | | - pytest --pyargs pywt |
244 | | - fi |
245 | | - popd |
246 | | -
|
247 | 29 | clang_ASan_UBSan: |
248 | 30 | name: Test under ASan and UBSan |
249 | 31 | runs-on: ubuntu-latest |
|
0 commit comments