91
91
pyqt6-ver : ' !=6.6.0'
92
92
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
93
93
pyside6-ver : ' !=6.5.1'
94
+ - name-suffix : " Free-threaded"
95
+ os : ubuntu-22.04
96
+ python-version : ' 3.13t'
97
+ # https://www.riverbankcomputing.com/pipermail/pyqt/2023-November/045606.html
98
+ pyqt6-ver : ' !=6.6.0'
99
+ # https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
100
+ pyside6-ver : ' !=6.5.1'
94
101
- os : macos-12 # This runner is on Intel chips.
95
102
python-version : ' 3.10'
96
103
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
@@ -111,10 +118,18 @@ jobs:
111
118
112
119
- name : Set up Python ${{ matrix.python-version }}
113
120
uses : actions/setup-python@v5
121
+ if : matrix.python-version != '3.13t'
114
122
with :
115
123
python-version : ${{ matrix.python-version }}
116
124
allow-prereleases : true
117
125
126
+ - name : Set up Python ${{ matrix.python-version }}
127
+ uses : deadsnakes/action@6c8b9b82fe0b4344f4b98f2775fcc395df45e494 # v3.1.0
128
+ if : matrix.python-version == '3.13t'
129
+ with :
130
+ python-version : ' 3.13'
131
+ nogil : true
132
+
118
133
- name : Install OS dependencies
119
134
run : |
120
135
case "${{ runner.os }}" in
@@ -160,6 +175,11 @@ jobs:
160
175
texlive-luatex \
161
176
texlive-pictures \
162
177
texlive-xetex
178
+ if [[ "${{ matrix.python-version }}" = '3.13t' ]]; then
179
+ # TODO: Remove this once setup-python supports nogil distributions.
180
+ sudo apt-get install -yy --no-install-recommends \
181
+ python3.13-tk-nogil
182
+ fi
163
183
if [[ "${{ matrix.os }}" = ubuntu-20.04 ]]; then
164
184
sudo apt-get install -yy --no-install-recommends libopengl0
165
185
else # ubuntu-22.04
@@ -210,6 +230,15 @@ jobs:
210
230
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-
211
231
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-
212
232
233
+ - name : Install the nightly dependencies
234
+ if : matrix.python-version == '3.13t'
235
+ run : |
236
+ python -m pip install pytz tzdata python-dateutil # Must be installed for Pandas.
237
+ python -m pip install \
238
+ --pre \
239
+ --index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
240
+ --upgrade --only-binary=:all: numpy pandas pillow contourpy
241
+
213
242
- name : Install Python dependencies
214
243
run : |
215
244
# Upgrade pip and setuptools and wheel to get as clean an install as
@@ -235,6 +264,7 @@ jobs:
235
264
# Sphinx is needed to run sphinxext tests
236
265
python -m pip install --upgrade sphinx!=6.1.2
237
266
267
+ if [[ "${{ matrix.python-version }}" != '3.13t' ]]; then
238
268
# GUI toolkits are pip-installable only for some versions of Python
239
269
# so don't fail if we can't install them. Make it easier to check
240
270
# whether the install was successful by trying to import the toolkit
@@ -280,6 +310,8 @@ jobs:
280
310
echo 'wxPython is available' ||
281
311
echo 'wxPython is not available'
282
312
313
+ fi # Skip backends on Python 3.13t.
314
+
283
315
- name : Install the nightly dependencies
284
316
# Only install the nightly dependencies during the scheduled event
285
317
if : github.event_name == 'schedule' && matrix.name-suffix != '(Minimum Versions)'
@@ -318,6 +350,9 @@ jobs:
318
350
319
351
- name : Run pytest
320
352
run : |
353
+ if [[ "${{ matrix.python-version }}" == '3.13t' ]]; then
354
+ export PYTHON_GIL=0
355
+ fi
321
356
pytest -rfEsXR -n auto \
322
357
--maxfail=50 --timeout=300 --durations=25 \
323
358
--cov-report=xml --cov=lib --log-level=DEBUG --color=yes
0 commit comments