85
85
pyqt6-ver : ' !=6.6.0'
86
86
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
87
87
pyside6-ver : ' !=6.5.1'
88
+ - os : ubuntu-22.04
89
+ python-version : ' 3.13'
90
+ # https://www.riverbankcomputing.com/pipermail/pyqt/2023-November/045606.html
91
+ pyqt6-ver : ' !=6.6.0'
92
+ # https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
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'
88
101
- os : macos-12 # This runner is on Intel chips.
89
102
python-version : ' 3.10'
90
103
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
@@ -93,6 +106,10 @@ jobs:
93
106
python-version : ' 3.12'
94
107
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
95
108
pyside6-ver : ' !=6.5.1'
109
+ - os : macos-14 # This runner is on M1 (arm64) chips.
110
+ python-version : ' 3.13'
111
+ # https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
112
+ pyside6-ver : ' !=6.5.1'
96
113
97
114
steps :
98
115
- uses : actions/checkout@v4
@@ -101,8 +118,17 @@ jobs:
101
118
102
119
- name : Set up Python ${{ matrix.python-version }}
103
120
uses : actions/setup-python@v5
121
+ if : matrix.python-version != '3.13t'
104
122
with :
105
123
python-version : ${{ matrix.python-version }}
124
+ allow-prereleases : true
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
106
132
107
133
- name : Install OS dependencies
108
134
run : |
@@ -149,6 +175,11 @@ jobs:
149
175
texlive-luatex \
150
176
texlive-pictures \
151
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
152
183
if [[ "${{ matrix.os }}" = ubuntu-20.04 ]]; then
153
184
sudo apt-get install -yy --no-install-recommends libopengl0
154
185
else # ubuntu-22.04
@@ -205,6 +236,15 @@ jobs:
205
236
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-
206
237
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-
207
238
239
+ - name : Install the nightly dependencies
240
+ if : matrix.python-version == '3.13t'
241
+ run : |
242
+ python -m pip install pytz tzdata python-dateutil # Must be installed for Pandas.
243
+ python -m pip install \
244
+ --pre \
245
+ --index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
246
+ --upgrade --only-binary=:all: numpy pandas pillow contourpy
247
+
208
248
- name : Install Python dependencies
209
249
run : |
210
250
# Upgrade pip and setuptools and wheel to get as clean an install as
@@ -230,6 +270,7 @@ jobs:
230
270
# Sphinx is needed to run sphinxext tests
231
271
python -m pip install --upgrade sphinx!=6.1.2
232
272
273
+ if [[ "${{ matrix.python-version }}" != '3.13t' ]]; then
233
274
# GUI toolkits are pip-installable only for some versions of Python
234
275
# so don't fail if we can't install them. Make it easier to check
235
276
# whether the install was successful by trying to import the toolkit
@@ -249,11 +290,11 @@ jobs:
249
290
python -c 'import PyQt5.QtCore' &&
250
291
echo 'PyQt5 is available' ||
251
292
echo 'PyQt5 is not available'
252
- # Even though
6D47
PySide2 wheels can be installed on Python 3.12, they are broken and since PySide2 is
293
+ # Even though PySide2 wheels can be installed on Python 3.12+ , they are broken and since PySide2 is
253
294
# deprecated, they are unlikely to be fixed. For the same deprecation reason, there are no wheels
254
295
# on M1 macOS, so don't bother there either.
255
296
if [[ "${{ matrix.os }}" != 'macos-14'
256
- && "${{ matrix.python-version }}" != '3.12' ]]; then
297
+ && "${{ matrix.python-version }}" != '3.12' && "${{ matrix.python-version }}" != '3.13' ]]; then
257
298
python -mpip install --upgrade pyside2${{ matrix.pyside2-ver }} &&
258
299
python -c 'import PySide2.QtCore' &&
259
300
echo 'PySide2 is available' ||
@@ -275,6 +316,8 @@ jobs:
275
316
echo 'wxPython is available' ||
276
317
echo 'wxPython is not available'
277
318
319
+ fi # Skip backends on Python 3.13t.
320
+
278
321
- name : Install the nightly dependencies
279
322
# Only install the nightly dependencies during the scheduled event
280
323
if : github.event_name == 'schedule' && matrix.name-suffix != '(Minimum Versions)'
@@ -313,6 +356,9 @@ jobs:
313
356
314
357
- name : Run pytest
315
358
run : |
359
+ if [[ "${{ matrix.python-version }}" == '3.13t' ]]; then
360
+ export PYTHON_GIL=0
361
+ fi
316
362
pytest -rfEsXR -n auto \
317
363
--maxfail=50 --timeout=300 --durations=25 \
318
364
--cov-report=xml --cov=lib --log-level=DEBUG --color=yes
0 commit comments