Skip to content

Commit 85b4e02

Browse files
QuLogicandfoy
andcommitted
CI: Add CI to test matplotlib against free-threaded Python
Co-authored-by: Edgar Andrés Margffoy Tuay <andfoy@gmail.com>
1 parent 5c8012d commit 85b4e02

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

.github/workflows/tests.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ jobs:
9191
pyqt6-ver: '!=6.6.0'
9292
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
9393
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'
94101
- os: macos-12 # This runner is on Intel chips.
95102
python-version: '3.10'
96103
# https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2346
@@ -111,10 +118,18 @@ jobs:
111118

112119
- name: Set up Python ${{ matrix.python-version }}
113120
uses: actions/setup-python@v5
121+
if: matrix.python-version != '3.13t'
114122
with:
115123
python-version: ${{ matrix.python-version }}
116124
allow-prereleases: true
117125

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+
118133
- name: Install OS dependencies
119134
run: |
120135
case "${{ runner.os }}" in
@@ -160,6 +175,11 @@ jobs:
160175
texlive-luatex \
161176
texlive-pictures \
162177
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
163183
if [[ "${{ matrix.os }}" = ubuntu-20.04 ]]; then
164184
sudo apt-get install -yy --no-install-recommends libopengl0
165185
else # ubuntu-22.04
@@ -216,6 +236,15 @@ jobs:
216236
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-
217237
4-${{ runner.os }}-py${{ matrix.python-version }}-mpl-
218238
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+
219248
- name: Install Python dependencies
220249
run: |
221250
# Upgrade pip and setuptools and wheel to get as clean an install as
@@ -241,6 +270,7 @@ jobs:
241270
# Sphinx is needed to run sphinxext tests
242271
python -m pip install --upgrade sphinx!=6.1.2
243272
273+
if [[ "${{ matrix.python-version }}" != '3.13t' ]]; then
244274
# GUI toolkits are pip-installable only for some versions of Python
245275
# so don't fail if we can't install them. Make it easier to check
246276
# whether the install was successful by trying to import the toolkit
@@ -286,6 +316,8 @@ jobs:
286316
echo 'wxPython is available' ||
287317
echo 'wxPython is not available'
288318
319+
fi # Skip backends on Python 3.13t.
320+
289321
- name: Install the nightly dependencies
290322
# Only install the nightly dependencies during the scheduled event
291323
if: github.event_name == 'schedule' && matrix.name-suffix != '(Minimum Versions)'
@@ -324,6 +356,9 @@ jobs:
324356

325357
- name: Run pytest
326358
run: |
359+
if [[ "${{ matrix.python-version }}" == '3.13t' ]]; then
360+
export PYTHON_GIL=0
361+
fi
327362
pytest -rfEsXR -n auto \
328363
--maxfail=50 --timeout=300 --durations=25 \
329364
--cov-report=xml --cov=lib --log-level=DEBUG --color=yes

0 commit comments

Comments
 (0)