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

Santiago Vila sanvila at debian.org
Tue Dec 16 19:50:44 GMT 2025


Package: src:spyder-kernels
Version: 3.0.3-1
Severity: serious
Tags: ftbfs forky sid

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.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:317: python3.14 setup.py clean 
/usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

        ********************************************************************************
        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 ...]

_____________________________ test_debug_namespace _____________________________

tmpdir = local('/tmp/pytest-of-sbuild/pytest-0/test_debug_namespace2')

    @flaky(max_runs=3)
    def test_debug_namespace(tmpdir):
        """
        Test that the kernel uses the proper namespace while debugging.
        """
        # Command to start the kernel
        cmd = "from spyder_kernels.console import start; start.main()"
    
        with setup_kernel(cmd) as client:
            # Write code to a file
            d = tmpdir.join("pdb-ns-test.py")
            d.write('def func():\n    bb = "hello"\n    breakpoint()\nfunc()')
    
            # Run code file `d`
            client.execute("%runfile {}".format(repr(str(d))))
    
            # make sure that 'bb' returns 'hello'
>           client.get_stdin_msg(timeout=TIMEOUT)

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:
>           raise Empty
E           _queue.Empty

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

    def test_enter_debug_after_interruption():
        """
        Test that we can enter the debugger after interrupting the current
        execution.
        """
        # Command to start the kernel
        cmd = "from spyder_kernels.console import start; start.main()"
        with setup_kernel(cmd) as client:
            kernel_comm = CommBase()
    
            # Create new comm and send the highest protocol
            comm = Comm(kernel_comm._comm_name, client)
            comm.open(data={})
            comm._send_channel = client.control_channel
            kernel_comm._register_comm(comm)
    
            client.execute_interactive("import time", timeout=TIMEOUT)
    
            # Try interrupting loop
            t0 = time.time()
            msg_id = client.execute("for i in range(100): time.sleep(.1)")
            time.sleep(.2)
            # Request to enter the debugger
            kernel_comm.remote_call().request_pdb_stop()
            # Wait for debug message
            while True:
>               assert time.time() - t0 < 5
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]])

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===Flaky Test Report===

test_cwd_in_sys_path passed 1 out of the required 1 times. Success!
test_multiprocessing passed 1 out of the required 1 times. Success!
test_multiprocessing_2 passed 1 out of the required 1 times. Success!
test_runfile passed 1 out of the required 1 times. Success!
test_np_threshold passed 1 out of the required 1 times. Success!
test_matplotlib_inline passed 1 out of the required 1 times. Success!
test_debug_namespace failed (2 runs remaining out of 3).
	<class '_queue.Empty'>
	
	[<TracebackEntry /usr/lib/python3/dist-packages/_pytest/run [too-long-redacted] upyter_client/channels.py:232>]
test_debug_namespace failed (1 runs remaining out of 3).
	<class '_queue.Empty'>
	
	[<TracebackEntry /usr/lib/python3/dist-packages/_pytest/run [too-long-redacted] upyter_client/channels.py:232>]
test_debug_namespace failed; it passed 0 out of the required 1 times.
	<class '_queue.Empty'>
	
	[<TracebackEntry /usr/lib/python3/dist-packages/_pytest/run [too-long-redacted] upyter_client/channels.py:232>]

===End Flaky Test Report===
=========================== short test summary info ============================
FAILED console/tests/test_console_kernel.py::test_functions_with_locals_in_pdb
FAILED console/tests/test_console_kernel.py::test_debug_namespace - _queue.Empty
FAILED console/tests/test_console_kernel.py::test_enter_debug_after_interruption
= 3 failed, 93 passed, 6 skipped, 1 deselected, 67 warnings in 90.82s (0:01:30) =
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_spyder-kernels/build; python3.14 -m pytest --ignore customize/tests/test_umr.py -k "not test_dask_multiprocessing"
I: pybuild base:317: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_spyder-kernels/build; python3.13 -m pytest --ignore customize/tests/test_umr.py -k "not test_dask_multiprocessing"
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>
plugins: flaky-3.8.1, typeguard-4.4.4
collected 103 items / 1 deselected / 102 selected

console/tests/test_console_kernel.py ......................s............ [ 34%]
ssss.......s                                                             [ 46%]
customize/tests/test_utils.py .                                          [ 47%]
utils/tests/test_dochelpers.py .....................                     [ 67%]
utils/tests/test_iofuncs.py .............                                [ 80%]
utils/tests/test_lazymodules.py ..                                       [ 82%]
utils/tests/test_nsview.py ...............                               [ 97%]
utils/tests/test_pythonenv.py ...                                        [100%]

=============================== warnings summary ===============================
console/tests/test_console_kernel.py:29
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_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.13_spyder-kernels/build/console/tests/test_console_kernel.py::test_load_data
.pybuild/cpython3_3.13_spyder-kernels/build/console/tests/test_console_kernel.py::test_save_namespace
.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_iofuncs.py::test_spydata_import[export_data.spydata]
.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_iofuncs.py::test_spydata_import[export_data_renamed.spydata]
.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_iofuncs.py::test_spydata_import_witherror
.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_iofuncs.py::test_spydata_export[spydata_values-spydata_values-export_data_copy]
.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_iofuncs.py::test_spydata_export[namespace_objects_full-namespace_objects_filtered-export_data_2]
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_spyder-kernels/build/spyder_kernels/utils/iofuncs.py:390: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    tar.extractall(path, members, numeric_owner=numeric_owner)

.pybuild/cpython3_3.13_spyder-kernels/build/utils/tests/test_nsview.py::test_get_type_string
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_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.13_spyder-kernels/build/utils/tests/test_nsview.py::test_is_editable_type
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_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.13_spyder-kernels/build/utils/tests/test_nsview.py::test_get_numpy_type
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_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]])

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===Flaky Test Report===

test_cwd_in_sys_path passed 1 out of the required 1 times. Success!
test_multiprocessing passed 1 out of the required 1 times. Success!
test_multiprocessing_2 passed 1 out of the required 1 times. Success!
test_runfile passed 1 out of the required 1 times. Success!
test_np_threshold passed 1 out of the required 1 times. Success!
test_matplotlib_inline passed 1 out of the required 1 times. Success!
test_debug_namespace passed 1 out of the required 1 times. Success!

===End Flaky Test Report===
========== 96 passed, 6 skipped, 1 deselected, 11 warnings in 34.68s ===========
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------



More information about the debian-science-maintainers mailing list