#1123355 spyder-kernels: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13

#1123355#5
Date:
2025-12-16 19:50:44 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202512/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:spyder-kernels, so that this is still
visible in the BTS web page for this package.

Thanks.
!!

        ********************************************************************************
        Please consider removing the following classifiers in favor of a SPDX license expression:

        License :: OSI Approved :: MIT License

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************


[... snipped ...]

console/tests/test_console_kernel.py:1248:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/jupyter_core/utils/__init__.py:165: in wrapped
    return loop.run_until_complete(inner)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/asyncio/base_events.py:719: in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/jupyter_client/client.py:174: in _async_get_stdin_msg
    return await ensure_async(self.stdin_channel.get_msg(*args, **kwargs))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <jupyter_client.channels.ZMQSocketChannel object at 0x7fe31f45ea50>
timeout = 15

    def get_msg(self, timeout: t.Optional[float] = None) -> t.Dict[str, t.Any]:
        """Gets a message if there is one that is ready."""
        assert self.socket is not None
        timeout_ms = None if timeout is None else int(timeout * 1000)  # seconds to ms
        ready = self.socket.poll(timeout_ms)
        if ready:
            res = self._recv()
            return res
        else:
E           _queue.Empty

/usr/lib/python3/dist-packages/jupyter_client/channels.py:232: Empty

E               assert (1765898305.2064729 - 1765898299.7481673) < 5
E                +  where 1765898305.2064729 = <built-in function time>()
E                +    where <built-in function time> = time.time

console/tests/test_console_kernel.py:1352: AssertionError
----------------------------- Captured stdout call -----------------------------

Program interrupted. (Use 'cont' to resume).

=============================== warnings summary ===============================
console/tests/test_console_kernel.py:29
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:29: DeprecationWarning: Jupyter is migrating its paths to use standard platformdirs
  given by the platformdirs library.  To remove this warning and
  see the appropriate new directories, set the environment variable
  `JUPYTER_PLATFORM_DIRS=1` and then run `jupyter --paths`.
  The use of platformdirs will be the default in `jupyter_core` v6
    from jupyter_core import paths

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_do_complete
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb_2
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_namespaces_in_pdb
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb_2
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_locals_globals_in_pdb
.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_hard_link_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/spyder_kernels/customize/spyderpdb.py:78: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    self.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_do_complete
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/spyder_kernels/customize/spyderpdb.py:421: DeprecationWarning: The frame locals reference is no longer cached. Use 'curframe.f_locals' instead.
    if self.curframe_locals:

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_do_complete
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/spyder_kernels/customize/spyderpdb.py:423: DeprecationWarning: The frame locals reference is no longer cached. Use 'curframe.f_locals' instead.
    frame = Frame(self.curframe_locals,

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:942: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = pdb_obj.curframe.f_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py: 26 warnings
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/spyder_kernels/customize/spyderpdb.py:152: DeprecationWarning: The frame locals reference is no longer cached. Use 'curframe.f_locals' instead.
    local_ns = self.curframe_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py: 15 warnings
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/spyder_kernels/console/shell.py:275: DeprecationWarning: The frame locals reference is no longer cached. Use 'curframe.f_locals' instead.
    return session.curframe_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:958: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb_2
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:968: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = pdb_obj.curframe.f_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_comprehensions_with_locals_in_pdb_2
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:982: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_namespaces_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:994: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = pdb_obj.curframe.f_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_namespaces_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1016: DeprecationWarning: The frame locals reference is no longer cached. Use 'curframe.f_locals' instead.
    pdb_obj.curframe_locals["test4"] = 0

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_namespaces_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1025: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1037: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = kernel.shell.user_ns

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb_2
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1069: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = pdb_obj.curframe.f_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb_2
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1096: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_locals_globals_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1106: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = pdb_obj.curframe.f_locals

.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py::test_locals_globals_in_pdb
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/console/tests/test_console_kernel.py:1138: DeprecationWarning: Setting 'curframe_locals' no longer has any effect. Update the contents of 'curframe.f_locals' instead.
    pdb_obj.curframe_locals = None

.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py::test_get_type_string
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py:335: PendingDeprecationWarning: the matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.
    matrix = np.matrix([[1, 2], [3, 4]])

.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py::test_is_editable_type
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py:390: PendingDeprecationWarning: the matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.
    matrix = np.matrix([[1, 2], [3, 4]])

.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py::test_get_numpy_type
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build/utils/tests/test_nsview.py:428: PendingDeprecationWarning: the matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.
    matrix = np.matrix([[1, 2], [3, 4]])

#1123355#12
Date:
2026-03-02 15:23:30 UTC
From:
To:
This bug occurs with python 3.14 only, not python 3.13.

Roland has applied a workaround in 3.1.3-1 to constrain spyder-kernels
tests to python 3.13 for now.

Upstream is alerted at
https://github.com/spyder-ide/spyder-kernels/issues/583

Reducing severity to important since tests pass with python 3.13.

#1123355#21
Date:
2026-09-06 21:22:19 UTC
From:
To:
user debian-python@lists.debian.org
usertags 1123355 python3.15
tags 1123355 patch
thanks

Hi!

While rebuilding the python related packages against the Python 3.15rc2
version I ran into this issue [1].

I have picked a few patches from upstream that take care of the problem:
  - Upstream commit 886bc9d: Use curframe.f_locals instead of
    curframe_locals in debugger for newer Python versions [2]
  - Upstream commit 155fa01: Fix test_functions_with_locals_in_pdb in
    Python 3.14 [3]

Additionally, I had to add one patch of my own, overriding the get_trace
function to workaround a recent change in the pdb behaviour. This patch
should be shared with upstream in
https://github.com/spyder-ide/spyder-kernels/issues/583

And finally, the autopkgtest test named pytest had a hardcoded
PYS=python3.13, replacing the use of py3version -s, not sure why that
was there, but since we are removing python3.13 from the archive I
assume that you don't want it anymore. Using the original py3versions -s
call, the autopkgtest is green again.

I've applied these fixes in the sandbox [4] to verify that it builds
successfully, please consider applying them to support the upcoming 3.15
version.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4589710/
[2]: https://github.com/spyder-ide/spyder-kernels/commit/886bc9d2c613f96ea9b323ee4a1f7e827c29cc00
[3]: https://github.com/spyder-ide/spyder-kernels/commit/155fa010d96a3436c575cefb0ea6eb313e1c280c
[4]: https://debusine.debian.net/debian/r-python-python3.15/