@@ -176,11 +176,17 @@ jobs:
176
176
lsp : ' '
177
177
lsp_extract_file : ' '
178
178
extra_name : ' '
179
+ - python : ' pypy-3.11'
180
+ arch : ' x64'
181
+ lsp : ' '
182
+ lsp_extract_file : ' '
183
+ extra_name : ' '
179
184
# - python: '3.9'
180
185
# arch: 'x64'
181
186
# lsp: 'http://download.pctools.com/mirror/updates/9.0.0.2308-SDavfree-lite_en.exe'
182
187
# lsp_extract_file: ''
183
188
# extra_name: ', with non-IFS LSP'
189
+
184
190
continue-on-error : >-
185
191
${{
186
192
(
@@ -199,18 +205,11 @@ jobs:
199
205
- name : Setup python
200
206
uses : actions/setup-python@v5
201
207
with :
202
- # This allows the matrix to specify just the major.minor version while still
203
- # expanding it to get the latest patch version including alpha releases.
204
- # This avoids the need to update for each new alpha, beta, release candidate,
205
- # and then finally an actual release version. actions/setup-python doesn't
206
- # support this for PyPy presently so we get no help there.
207
- #
208
- # 'CPython' -> '3.9.0-alpha - 3.9.X'
209
- # 'PyPy' -> 'pypy-3.9'
210
- python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
208
+ python-version : ' ${{ matrix.python }}'
211
209
architecture : ' ${{ matrix.arch }}'
212
210
cache : pip
213
211
cache-dependency-path : test-requirements.txt
212
+ allow-prereleases : true
214
213
- name : Run tests
215
214
run : ./ci.sh
216
215
shell : bash
@@ -237,7 +236,7 @@ jobs:
237
236
strategy :
238
237
fail-fast : false
239
238
matrix :
240
- python : ['pypy-3.10', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
239
+ python : ['pypy-3.10', 'pypy-3.11', ' 3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
241
240
check_formatting : ['0']
242
241
no_test_requirements : ['0']
243
242
extra_name : ['']
@@ -273,13 +272,23 @@ jobs:
273
272
- name : Setup python
274
273
uses : actions/setup-python@v5
275
274
with :
276
- python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
275
+ python-version : ' ${{ matrix.python }} '
277
276
cache : pip
278
277
cache-dependency-path : test-requirements.txt
278
+ allow-prereleases : true
279
+ - name : Check Formatting
280
+ if : matrix.check_formatting == '1'
281
+ run :
282
+ python -m pip install tox &&
283
+ tox -m check
284
+ - name : Install python3-apport
285
+ run : |
286
+ sudo apt update
287
+ sudo apt install -q python3-apport
279
288
- name : Run tests
289
+ if : matrix.check_formatting == '0'
280
290
run : ./ci.sh
281
291
env :
282
- CHECK_FORMATTING : ' ${{ matrix.check_formatting }}'
283
292
NO_TEST_REQUIREMENTS : ' ${{ matrix.no_test_requirements }}'
284
293
- if : >-
285
294
always()
@@ -301,7 +310,7 @@ jobs:
301
310
strategy :
302
311
fail-fast : false
303
312
matrix :
304
- python : ['pypy-3.10', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
313
+ python : ['pypy-3.10', 'pypy-3.11', ' 3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
305
314
continue-on-error : >-
306
315
${{
307
316
(
@@ -320,9 +329,10 @@ jobs:
320
329
- name : Setup python
321
330
uses : actions/setup-python@v5
322
331
with :
323
- python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
332
+ python-version : ' ${{ matrix.python }} '
324
333
cache : pip
325
334
cache-dependency-path : test-requirements.txt
335
+ allow-prereleases : true
326
336
- name : Run tests
327
337
run : ./ci.sh
328
338
- if : always()
@@ -348,19 +358,29 @@ jobs:
348
358
# `nodejs` for pyright (`node-env` pulls in nodejs but that takes a while and can time out the test).
349
359
# `perl` for a platform independent `sed -i` alternative
350
360
run : apk update && apk add python3-dev bash nodejs perl
361
+
351
362
- name : Retrieve the project source from an sdist inside the GHA artifact
352
363
# must be after `apk add` because it relies on `bash` existing
353
364
uses : re-actors/checkout-python-sdist@release/v2
354
365
with :
355
366
source-tarball-name : ${{ needs.build.outputs.sdist-artifact-name }}
356
367
workflow-artifact-name : ${{ env.dists-artifact-name }}
368
+
357
369
- name : Enter virtual environment
358
370
run : python -m venv .venv
371
+
359
372
- name : Run tests
360
373
run : source .venv/bin/activate && ./ci.sh
374
+
361
375
- name : Get Python version for codecov flag
362
376
id : get-version
363
- run : echo "version=$(python -V | cut -d' ' -f2 | cut -d'.' -f1,2)" >> "${GITHUB_OUTPUT}"
377
+ shell : python
378
+ run : |
379
+ import sys, os
380
+ with open(os.environ["GITHUB_OUTPUT"], "a") as f:
381
+ f.write("version=" + ".".join(map(str, sys.version_info[:2])))
382
+ f.write("\n")
383
+
364
384
- if : always()
365
385
uses : codecov/codecov-action@v3
366
386
with :
@@ -417,11 +437,19 @@ jobs:
417
437
- name : import & run module
418
438
run : coverage run -m tests.cython.run_test_cython
419
439
420
- - name : get Python version for codecov flag
440
+ - name : Get Python version for codecov flag
421
441
id : get-version
422
- run : >-
423
- echo "version=$(python -V | cut -d' ' -f2 | cut -d'.' -f1,2)"
424
- >> "${GITHUB_OUTPUT}"
442
+ shell : python
443
+ run : |
444
+ import sys, os
445
+ with open(os.environ["GITHUB_OUTPUT"], "a") as f:
446
+ f.write("version=" + ".".join(map(str, sys.version_info[:2])))
447
+ f.write("\n")
448
+
449
+ - run : |
450
+ coverage combine
451
+ coverage report
452
+
425
453
- if : always()
426
454
uses : codecov/codecov-action@v5
427
455
with :
0 commit comments