Bug#1135655: spyder: Update to Qt6

Julian Gilbey julian at d-and-j.net
Mon May 4 18:33:16 BST 2026


On Mon, May 04, 2026 at 10:52:01AM +0200, Bastian Germann wrote:
> Package: spyder
> Version: 6.1.3+ds-5
> Severity: normal
> 
> Please update to Qt6 again. I have just pushed a patch that should
> resolve the autopkgtest issue that was responsible for reverting to
> PyQt5.

Hi Bastian,

Thanks for doing this!

I've tried updating to Qt6 again, and pushed my changes to salsa.  But
unfortunately the tests timeout on test_delete_file:

*** STARTING RUN 5 at 17:11:48: xvfb-run -a -s -screen 0 1024x768x24 +extension GLX python3.14 runtests.py --ignore=spyder/plugins/completion/providers/languageserver/tests/test_client.py --deselect=spyder/plugins/updatemanager/tests/test_update_manager.py --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_kernel_kill[True] --deselect=spyder/tests/test_dependencies_in_sync.py::test_dependencies_for_spyder_dialog_in_sync --deselect=spyder/app/tests/test_mainwindow.py::test_run_cython_code --deselect=spyder/app/tests/test_mainwindow.py::test_interrupt --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_filter_frames_in_tracebacks --deselect=spyder/app/tests/test_mainwindow.py::test_leaks --deselect=spyder/app/tests/test_mainwindow.py::test_outline_in_maximized_editor --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_run_script --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_console_disambiguation --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_breakpoint_builtin --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_kernel_crash --deselect=spyder/app/tests/test_mainwindow.py --deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py
Pytest Arguments: ['-vv', '-rw', '--durations=10', '--ignore=./external-deps', '-W ignore::UserWarning', '--timeout=120', '--timeout_method=thread', '--ignore=spyder/plugins/completion/providers/languageserver/tests/test_client.py', '--deselect=spyder/plugins/updatemanager/tests/test_update_manager.py', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_kernel_kill[True]', '--deselect=spyder/tests/test_dependencies_in_sync.py::test_dependencies_for_spyder_dialog_in_sync', '--deselect=spyder/app/tests/test_mainwindow.py::test_run_cython_code', '--deselect=spyder/app/tests/test_mainwindow.py::test_interrupt', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_filter_frames_in_tracebacks', '--deselect=spyder/app/tests/test_mainwindow.py::test_leaks', '--deselect=spyder/app/tests/test_mainwindow.py::test_outline_in_maximized_editor', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_run_script', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_console_disambiguation', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_breakpoint_builtin', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py::test_kernel_crash', '--deselect=spyder/app/tests/test_mainwindow.py', '--deselect=spyder/plugins/ipythonconsole/tests/test_ipythonconsole.py', '--timeout=120', '--timeout_method=thread']
============================= test session starts ==============================
platform linux -- Python 3.14.3, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14
cachedir: .pytest_cache
PyQt6 6.11.0 -- Qt runtime 6.10.2 -- Qt compiled 6.10.2
rootdir: /tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src
configfile: pytest.ini
plugins: flaky-3.8.1, qt-4.4.0, mock-3.15.1, timeout-2.4.0, cov-5.0.0, order-1.3.0, typeguard-4.4.4
timeout: 120.0s
timeout method: thread
timeout func_only: False
collecting ... collected 1502 items / 257 deselected / 2 skipped / 1245 selected

spyder/app/tests/test_cli_options.py::test_get_options SKIPPED (Test passed in previous runs)                                                 [  0%]
[...]
spyder/plugins/explorer/widgets/tests/test_explorer.py::test_delete_file[FileExplorerTest-create_folders_files0] +++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
~~~~~~~~~~~~~~ Stack of AsyncDispatcher-test (139998406899392) ~~~~~~~~~~~~~~~~
  File "/usr/lib/python3.14/threading.py", line 1044, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 448, in run
    self.__loop.run_forever()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 488, in run_forever
    self._run_once()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 526, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.14/selectors.py", line 452, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
~~~~~~~~~~~~ Stack of AsyncDispatcher-explorer (139998652622528) ~~~~~~~~~~~~~~
  File "/usr/lib/python3.14/threading.py", line 1044, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 448, in run
    self.__loop.run_forever()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 488, in run_forever
    self._run_once()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 526, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.14/selectors.py", line 452, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
~~~~~~~~~ Stack of AsyncDispatcher-ipythonconsole (139998674884288) ~~~~~~~~~~~
  File "/usr/lib/python3.14/threading.py", line 1044, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 448, in run
    self.__loop.run_forever()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 488, in run_forever
    self._run_once()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 526, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.14/selectors.py", line 452, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
~~~~~~~~~~~~~ Stack of AsyncDispatcher-asyncssh (139998686869184) ~~~~~~~~~~~~~~
  File "/usr/lib/python3.14/threading.py", line 1044, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 448, in run
    self.__loop.run_forever()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 488, in run_forever
    self._run_once()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 526, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.14/selectors.py", line 452, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
~~~~~~~~~~~~~~ Stack of AsyncDispatcher-None (139998828455616) ~~~~~~~~~~~~~~~~
  File "/usr/lib/python3.14/threading.py", line 1044, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 448, in run
    self.__loop.run_forever()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 488, in run_forever
    self._run_once()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/api/asyncdispatcher.py", line 526, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.14/selectors.py", line 452, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
~~~~~~~~~~~~~~~~~~~ Stack of MainThread (139999288304128) ~~~~~~~~~~~~~~~~~~~~~
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/runtests.py", line 98, in <module>
    main()
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/runtests.py", line 93, in main
    run_pytest(run_slow=test_args.run_slow, extra_args=pytest_args,
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/runtests.py", line 64, in run_pytest
    errno = pytest.main(pytest_args)
  File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 199, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 365, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 318, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 372, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 396, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3/dist-packages/flaky/flaky_pytest_plugin.py", line 89, in pytest_runtest_protocol
    self.runner.pytest_runtest_protocol(item, nextitem)
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 118, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 137, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3/dist-packages/flaky/flaky_pytest_plugin.py", line 149, in call_and_report
    call = _call_runtest_hook(item, when, **kwds)
  File "/usr/lib/python3/dist-packages/flaky/flaky_pytest_plugin.py", line 145, in _call_runtest_hook
    return runner.CallInfo.from_call(
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 353, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3/dist-packages/flaky/flaky_pytest_plugin.py", line 146, in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1720, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/plugins/explorer/widgets/tests/test_explorer.py", line 148, in test_delete_file
    project.explorer.treewidget.delete(fnames=[top_folder])
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/plugins/explorer/widgets/explorer.py", line 1210, in delete
    yes_to_all = self.delete_file(fname, multiple, yes_to_all)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/plugins/explorer/widgets/explorer.py", line 1183, in delete_file
    self.remove_tree(fname)
  File "/tmp/autopkgtest-lxc.usn2mh_e/downtmp/build.MO6/src/spyder/plugins/explorer/widgets/explorer.py", line 1154, in remove_tree
    while osp.exists(dirname):
  File "<frozen genericpath>", line 22, in exists
+++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
*** END OF RUN 5: NOT ALL TESTS HAVE YET PASSED/XFAILED ***


Since it works with Qt5 but not Qt6, I am guessing there is a problem
with Qt6 here, but I have no idea what.  Do you have any thoughts on
how to address this?

Best wishes,

   Julian



More information about the debian-science-maintainers mailing list