From f2ca12adbb5a85a4ca54d361be97dff5e8d1d5cd Mon Sep 17 00:00:00 2001 From: JeanExtreme002 Date: Tue, 3 Nov 2026 13:11:11 -0300 Subject: [PATCH] build(deps): keep PySide6 below 6.12 on Python < 3.12 The `build (3.11, ubuntu-latest)` cell has hit its 20-minute timeout on every run since the runner image moved to Ubuntu 26.04 (2026-10-29, 2026-11-01, 2026-11-02). The log shows what the timeout hid: xdist worker gw0 died in tests/app/test_results_model.py with Fatal Python error: none_dealloc: deallocating None: bug likely caused by a refcount error in a C extension and the session then hung on the replacement worker until the job was killed, so the last line was a scan test that had in fact passed. PySide6 6.12.0's Linux wheels drop a reference to ``None`` on ordinary void Qt calls (upstream PYSIDE-3474). Tracking ``sys.getrefcount(None)`` per test on 3.11 shows the count sliding across the app suite until the singleton is freed. On 3.12+ ``None`` is immortal (PEP 683), which is why only the 3.10/3.11 cells were exposed and the 3.10 one passed by margin. No 6.12.x release with a fix exists yet, so cap the app extra below 6.12 on Python < 3.12 (resolves to 6.11.3) and leave 3.12+ unchanged. Co-Authored-By: Claude Fable 5.1 --- pyproject.toml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5a5c144..6cbb8b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,8 +87,18 @@ tests = [ # psutil 7 removed nothing the app uses (Process.name/create_time, # pid_exists, process_iter with pid/name/username, and the three exceptions); # the app suite passes on 7.2.2. +# +# PySide6 6.12.0 is excluded below Python 3.12: its Linux wheels drop a +# reference to ``None`` on ordinary void Qt calls (upstream PYSIDE-3474), so +# a long enough session -- a CI worker that has run the app suite -- aborts +# with ``Fatal Python error: none_dealloc: deallocating None``. On 3.12+ the +# singletons are immortal (PEP 683) and the leak is harmless, which is why +# only the 3.10/3.11 cells of the matrix were exposed. The crash took the +# xdist worker down, and the session then hung until the job's 20-minute +# timeout. Lift the cap once a 6.12.x release passes the app suite on 3.11. app = [ - "PySide6>=6.5,<7", + "PySide6>=6.5,<6.12; python_version < '3.12'", + "PySide6>=6.5,<7; python_version >= '3.12'", "psutil>=5.9,<8", ] # The Model Context Protocol server (PyMemoryEditor.mcp), which lets an AI