@@ -18,18 +18,11 @@ jobs:
18
18
strategy :
19
19
fail-fast : false
20
20
matrix :
21
- # pypy 3.9 and 3.10 are failing, see https://github.com/python-trio/trio/issues/2678 and https://github.com/python-trio/trio/issues/2776 respectively
22
- python : ['3.8', '3.9', '3.10'] # , 'pypy-3.9-nightly', 'pypy-3.10-nightly']
21
+ python : ['3.8', '3.9', '3.10', '3.11', '3.12']
23
22
arch : ['x86', 'x64']
24
23
lsp : ['']
25
24
lsp_extract_file : ['']
26
25
extra_name : ['']
27
- exclude :
28
- # pypy does not release 32-bit binaries
29
- - python : ' pypy-3.9-nightly'
30
- arch : ' x86'
31
- # - python: 'pypy-3.10-nightly'
32
- # arch: 'x86'
33
26
include :
34
27
- python : ' 3.8'
35
28
arch : ' x64'
57
50
}}
58
51
steps :
59
52
- name : Checkout
60
- uses : actions/checkout@v3
53
+ uses : actions/checkout@v4
61
54
- name : Setup python
62
- uses : actions/setup-python@v4
55
+ uses : actions/setup-python@v5
63
56
with :
64
57
# This allows the matrix to specify just the major.minor version while still
65
58
# expanding it to get the latest patch version including alpha releases.
94
87
strategy :
95
88
fail-fast : false
96
89
matrix :
97
- python : ['pypy-3.9', 'pypy-3.10', '3.8', '3.9', '3.10', '3.11', '3.12', 'pypy-3.9-nightly', 'pypy-3.10-nightly ']
90
+ python : ['pypy-3.9', 'pypy-3.10', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13 ']
98
91
check_formatting : ['0']
99
92
no_test_requirements : ['0']
100
93
extra_name : ['']
@@ -117,9 +110,9 @@ jobs:
117
110
}}
118
111
steps :
119
112
- name : Checkout
120
- uses : actions/checkout@v3
113
+ uses : actions/checkout@v4
121
114
- name : Setup python
122
- uses : actions/setup-python@v4
115
+ uses : actions/setup-python@v5
123
116
if : " !endsWith(matrix.python, '-dev')"
124
117
with :
125
118
python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
@@ -150,7 +143,7 @@ jobs:
150
143
strategy :
151
144
fail-fast : false
152
145
matrix :
153
- python : ['3.8', '3.9', '3.10', 'pypy-3.9-nightly ', 'pypy-3.10-nightly ']
146
+ python : ['3.8', '3.9', '3.10', '3.11 ', '3.12 ']
154
147
continue-on-error : >-
155
148
${{
156
149
(
@@ -162,9 +155,9 @@ jobs:
162
155
}}
163
156
steps :
164
157
- name : Checkout
165
- uses : actions/checkout@v3
158
+ uses : actions/checkout@v4
166
159
- name : Setup python
167
- uses : actions/setup-python@v4
160
+ uses : actions/setup-python@v5
168
161
with :
169
162
python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
170
163
cache : pip
@@ -179,6 +172,65 @@ jobs:
179
172
name : macOS (${{ matrix.python }})
180
173
flags : macOS,${{ matrix.python }}
181
174
175
+ # run CI on a musl linux
176
+ Alpine :
177
+ name : " Alpine"
178
+ runs-on : ubuntu-latest
179
+ container : alpine
180
+ steps :
181
+ - name : Checkout
182
+ uses : actions/checkout@v4
183
+ - name : Install necessary packages
184
+ # can't use setup-python because that python doesn't seem to work;
185
+ # `python3-dev` (rather than `python:alpine`) for some ctypes reason,
186
+ # `nodejs` for pyright (`node-env` pulls in nodejs but that takes a while and can time out the test).
187
+ run : apk update && apk add python3-dev bash nodejs
188
+ - name : Enter virtual environment
189
+ run : python -m venv .venv
190
+ - name : Run tests
191
+ run : source .venv/bin/activate && ./ci.sh
192
+ - if : always()
193
+ uses : codecov/codecov-action@v3
194
+ with :
195
+ directory : empty
196
+ token : 87cefb17-c44b-4f2f-8b30-1fff5769ce46
197
+ name : Alpine
198
+ flags : Alpine,3.12
199
+
200
+ Cython :
201
+ name : " Cython"
202
+ runs-on : ubuntu-latest
203
+ strategy :
204
+ fail-fast : false
205
+ matrix :
206
+ python : ['3.8', '3.12']
207
+ steps :
208
+ - name : Checkout
209
+ uses : actions/checkout@v4
210
+ - name : Setup python
211
+ uses : actions/setup-python@v5
212
+ with :
213
+ python-version : ' ${{ matrix.python }}'
214
+ cache : pip
215
+ # setuptools is needed to get distutils on 3.12, which cythonize requires
216
+ - name : install trio and setuptools
217
+ run : python -m pip install --upgrade pip . setuptools
218
+
219
+ - name : install cython<3
220
+ run : python -m pip install "cython<3"
221
+ - name : compile pyx file
222
+ run : cythonize -i tests/cython/test_cython.pyx
223
+ - name : import & run module
224
+ run : python -c 'import tests.cython.test_cython'
225
+
226
+ - name : install cython>=3
227
+ run : python -m pip install "cython>=3"
228
+ - name : compile pyx file
229
+ # different cython version should trigger a re-compile, but --force just in case
230
+ run : cythonize --inplace --force tests/cython/test_cython.pyx
231
+ - name : import & run module
232
+ run : python -c 'import tests.cython.test_cython'
233
+
182
234
# https://github.com/marketplace/actions/alls-green#why
183
235
check : # This job does nothing and is only used for the branch protection
184
236
@@ -188,6 +240,8 @@ jobs:
188
240
- Windows
189
241
- Ubuntu
190
242
- macOS
243
+ - Alpine
244
+ - Cython
191
245
192
246
runs-on : ubuntu-latest
193
247
0 commit comments