@@ -158,7 +158,11 @@ jobs:
158
158
dists-artifact-name : ${{ needs.pre-setup.outputs.dists-artifact-name }}
159
159
160
160
test :
161
- name : Test
161
+ name : >-
162
+ Test ${{ matrix.os }}
163
+ ${{ matrix.pyver }}
164
+ ${{ matrix.no-extensions == 'Y' && ' ' || 'ext' }}
165
+ ${{ matrix.debug == 'Y' && 'debug' || '' }}
162
166
needs :
163
167
- build-pure-python-dists # transitive, for accessing settings
164
168
- build-wheels-for-tested-arches
@@ -174,7 +178,10 @@ jobs:
174
178
- 3.9
175
179
no-extensions : ['', 'Y']
176
180
os : [ubuntu, macos, windows]
181
+ debug : ['', 'Y']
177
182
exclude :
183
+ - no-extensions : Y
184
+ debug : Y
178
185
- os : macos
179
186
no-extensions : Y
180
187
- os : windows
@@ -183,10 +190,13 @@ jobs:
183
190
pyver : 3.13-freethreading # this is still tested within cibuildwheel
184
191
- os : windows
185
192
pyver : 3.13-freethreading # this is still tested within cibuildwheel
193
+ - no-extensions : Y
194
+ debug : Y
186
195
include :
187
196
- pyver : pypy-3.9
188
197
no-extensions : Y
189
198
os : ubuntu
199
+ debug : ' '
190
200
fail-fast : false
191
201
runs-on : ${{ matrix.os }}-latest
192
202
timeout-minutes : 15
@@ -199,6 +209,14 @@ jobs:
199
209
}}
200
210
201
211
steps :
212
+ - name : Determine build type
213
+ id : build_type
214
+ run : |
215
+ echo "build_type=${{
216
+ (contains(matrix.pyver, '-dev') || matrix.debug == 'Y') &&
217
+ 'source' || 'wheel'
218
+ }}" >> "$GITHUB_OUTPUT"
219
+ shell : sh
202
220
- name : Retrieve the project source from an sdist inside the GHA artifact
203
221
uses : re-actors/checkout-python-sdist@release/v2
204
222
with :
@@ -207,7 +225,7 @@ jobs:
207
225
workflow-artifact-name : >-
208
226
${{ needs.pre-setup.outputs.dists-artifact-name }}
209
227
- name : Download distributions
210
- if : ${{ !endsWith(matrix.pyver, '-dev') && true || false }}
228
+ if : steps.build_type.outputs.build_type == 'wheel'
211
229
uses : actions/download-artifact@v4
212
230
with :
213
231
pattern : ${{ needs.pre-setup.outputs.dists-artifact-name }}*
@@ -268,6 +286,8 @@ jobs:
268
286
matrix.pyver
269
287
}}-${{
270
288
matrix.no-extensions
289
+ }}-${{
290
+ matrix.debug
271
291
}}-${{
272
292
hashFiles('requirements/*.txt')
273
293
}}
@@ -279,13 +299,15 @@ jobs:
279
299
matrix.pyver
280
300
}}-${{
281
301
matrix.no-extensions
282
- }}-
302
+ }}-${{
303
+ matrix.debug
304
+ }}
283
305
- name : Install dependencies
284
306
uses : py-actions/py-dependency-install@v4
285
307
with :
286
308
path : requirements/pytest.txt
287
309
- name : Determine pre-compiled compatible wheel
288
- if : ${{ !endsWith(matrix.pyver, '-dev') && true || false }}
310
+ if : steps.build_type.outputs.build_type == 'wheel'
289
311
env :
290
312
# NOTE: When `pip` is forced to colorize output piped into `jq`,
291
313
# NOTE: the latter can't parse it. So we're overriding the color
@@ -324,18 +346,18 @@ jobs:
324
346
| jq --raw-output .install[].download_info.url
325
347
| tee -a "${GITHUB_OUTPUT}"
326
348
shell : bash
327
- - name : >-
328
- Self-install (from ${{
329
- endsWith(matrix.pyver, '-dev')
330
- && 'source'
331
- || 'wheel'
332
- }})
349
+ - name : Ensure clean for source build
350
+ if : steps.build_type.outputs.build_type == 'source'
351
+ run : >-
352
+ make clean
353
+ shell : bash
354
+ - name : Self-install (from ${{ steps.build_type.outputs.build_type }})
333
355
env :
334
356
MULTIDICT_NO_EXTENSIONS : ${{ matrix.no-extensions }}
357
+ MULTIDICT_DEBUG_BUILD : 1 # Always on for source builds
335
358
run : >-
336
- python -Im
337
359
pip install '${{
338
- endsWith(matrix.pyver, '-dev')
360
+ steps.build_type.outputs.build_type == 'source'
339
361
&& '.'
340
362
|| steps.wheel-file.outputs.path
341
363
}}'
@@ -374,6 +396,7 @@ jobs:
374
396
if : ${{ matrix.os == 'ubuntu' }}
375
397
376
398
399
+
377
400
benchmark :
378
401
name : Benchmark
379
402
needs :
0 commit comments