@@ -18,18 +18,11 @@ jobs:
1818 strategy :
1919 fail-fast : false
2020 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']
2322 arch : ['x86', 'x64']
2423 lsp : ['']
2524 lsp_extract_file : ['']
2625 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'
3326 include :
3427 - python : ' 3.8'
3528 arch : ' x64'
5750 }}
5851 steps :
5952 - name : Checkout
60- uses : actions/checkout@v3
53+ uses : actions/checkout@v4
6154 - name : Setup python
62- uses : actions/setup-python@v4
55+ uses : actions/setup-python@v5
6356 with :
6457 # This allows the matrix to specify just the major.minor version while still
6558 # expanding it to get the latest patch version including alpha releases.
9487 strategy :
9588 fail-fast : false
9689 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 ']
9891 check_formatting : ['0']
9992 no_test_requirements : ['0']
10093 extra_name : ['']
@@ -117,9 +110,9 @@ jobs:
117110 }}
118111 steps :
119112 - name : Checkout
120- uses : actions/checkout@v3
113+ uses : actions/checkout@v4
121114 - name : Setup python
122- uses : actions/setup-python@v4
115+ uses : actions/setup-python@v5
123116 if : " !endsWith(matrix.python, '-dev')"
124117 with :
125118 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:
150143 strategy :
151144 fail-fast : false
152145 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 ']
154147 continue-on-error : >-
155148 ${{
156149 (
@@ -162,9 +155,9 @@ jobs:
162155 }}
163156 steps :
164157 - name : Checkout
165- uses : actions/checkout@v3
158+ uses : actions/checkout@v4
166159 - name : Setup python
167- uses : actions/setup-python@v4
160+ uses : actions/setup-python@v5
168161 with :
169162 python-version : ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
170163 cache : pip
@@ -179,6 +172,65 @@ jobs:
179172 name : macOS (${{ matrix.python }})
180173 flags : macOS,${{ matrix.python }}
181174
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+
182234 # https://github.com/marketplace/actions/alls-green#why
183235 check : # This job does nothing and is only used for the branch protection
184236
@@ -188,6 +240,8 @@ jobs:
188240 - Windows
189241 - Ubuntu
190242 - macOS
243+ - Alpine
244+ - Cython
191245
192246 runs-on : ubuntu-latest
193247
0 commit comments