[Debian-med-packaging] Bug#1114696: brian: FTBFS with NumPy 2.3

roehling at debian.org roehling at debian.org
Mon Sep 8 20:44:12 BST 2025


Source: brian
Version: 2.8.0.4-1
Severity: important
User: debian-python at lists.debian.org
Usertags: numpy2.3
Tags: ftbfs, forky, sid

Dear maintainer,

During a test rebuild for NumPy 2.3, brian failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
Message: "No numerical integration method specified for group 'neurongroup_1', using method 'euler' (took 0.00s, trying other methods took 0.00s)."
Arguments: ()
____________________ test_synapse_creation_generator_random ____________________

self = <brian2.codegen.runtime.cython_rt.cython_rt.CythonCodeObject object at 0x7f4c7f5816a0>
block = 'run'

    def run_block(self, block):
        compiled_code = self.compiled_code[block]
        if compiled_code:
            try:
>               return compiled_code.main(self.namespace)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

../debian/tmp/usr/lib/python3.13/dist-packages/brian2/codegen/runtime/cython_rt/cython_rt.py:199: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.cython/brian_extensions/_cython_magic_880208a1063c6c8dc24a4e1c2f9ce43c.pyx:214: in _cython_magic_880208a1063c6c8dc24a4e1c2f9ce43c.main
    ???
.cython/brian_extensions/_cython_magic_880208a1063c6c8dc24a4e1c2f9ce43c.pyx:63: in _cython_magic_880208a1063c6c8dc24a4e1c2f9ce43c._rand
    ???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attr = 'NPY_OWNDATA'

    def __getattr__(attr):
        # Warn for expired attributes
        import warnings
    
        if attr == "linalg":
            import numpy.linalg as linalg
            return linalg
        elif attr == "fft":
            import numpy.fft as fft
            return fft
        elif attr == "dtypes":
            import numpy.dtypes as dtypes
            return dtypes
        elif attr == "random":
            import numpy.random as random
            return random
        elif attr == "polynomial":
            import numpy.polynomial as polynomial
            return polynomial
        elif attr == "ma":
            import numpy.ma as ma
            return ma
        elif attr == "ctypeslib":
            import numpy.ctypeslib as ctypeslib
            return ctypeslib
        elif attr == "exceptions":
            import numpy.exceptions as exceptions
            return exceptions
        elif attr == "testing":
            import numpy.testing as testing
            return testing
        elif attr == "matlib":
            import numpy.matlib as matlib
            return matlib
        elif attr == "f2py":
            import numpy.f2py as f2py
            return f2py
        elif attr == "typing":
            import numpy.typing as typing
            return typing
        elif attr == "rec":
            import numpy.rec as rec
            return rec
        elif attr == "char":
            import numpy.char as char
            return char
        elif attr == "array_api":
            raise AttributeError("`numpy.array_api` is not available from "
                                 "numpy 2.0 onwards", name=None)
        elif attr == "core":
            import numpy.core as core
            return core
        elif attr == "strings":
            import numpy.strings as strings
            return strings
        elif attr == "distutils":
            if 'distutils' in __numpy_submodules__:
                import numpy.distutils as distutils
                return distutils
            else:
                raise AttributeError("`numpy.distutils` is not available from "
                                     "Python 3.12 onwards", name=None)
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
            raise AttributeError(__former_attrs__[attr], name=None)
    
        if attr in __expired_attributes__:
            raise AttributeError(
                f"`np.{attr}` was removed in the NumPy 2.0 release. "
                f"{__expired_attributes__[attr]}",
                name=None
            )
    
        if attr == "chararray":
            warnings.warn(
                "`np.chararray` is deprecated and will be removed from "
                "the main namespace in the future. Use an array with a string "
                "or bytes dtype instead.", DeprecationWarning, stacklevel=2)
            import numpy.char as char
            return char.chararray
    
>       raise AttributeError(f"module {__name__!r} has no attribute {attr!r}")
E       AttributeError: module 'numpy' has no attribute 'NPY_OWNDATA'

/usr/lib/python3/dist-packages/numpy/__init__.py:795: AttributeError

The above exception was the direct cause of the following exception:

    @pytest.mark.standalone_compatible
    def test_synapse_creation_generator_random():
        G1 = NeuronGroup(10, "v:1")
        G2 = NeuronGroup(20, "v:1")
        G1.v = "i"
        G2.v = "10 + i"
        SG1 = G1[:5]
        SG2 = G2[10:]
    
        # connect based on pre-/postsynaptic state variables
        S2 = Synapses(SG1, SG2)
>       S2.connect(j="k for k in sample(N_post, p=1.0*int(v_pre > 2))")

../debian/tmp/usr/lib/python3.13/dist-packages/brian2/tests/test_subgroup.py:461: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../debian/tmp/usr/lib/python3.13/dist-packages/brian2/core/base.py:346: in device_override_decorated_function
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
../debian/tmp/usr/lib/python3.13/dist-packages/brian2/synapses/synapses.py:1627: in connect
    self._add_synapses_generator(
../debian/tmp/usr/lib/python3.13/dist-packages/brian2/synapses/synapses.py:2122: in _add_synapses_generator
    codeobj()
../debian/tmp/usr/lib/python3.13/dist-packages/brian2/codegen/codeobject.py:131: in __call__
    return self.run()
           ^^^^^^^^^^
../debian/tmp/usr/lib/python3.13/dist-packages/brian2/codegen/codeobject.py:159: in run
    return self.run_block("run")
           ^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <brian2.codegen.runtime.cython_rt.cython_rt.CythonCodeObject object at 0x7f4c7f5816a0>
block = 'run'

    def run_block(self, block):
        compiled_code = self.compiled_code[block]
        if compiled_code:
            try:
                return compiled_code.main(self.namespace)
            except Exception as exc:
                message = (
                    "An exception occured during the execution of the "
                    f"'{block}' block of code object '{self.name}'.\n"
                )
>               raise BrianObjectException(message, self.owner) from exc
E               brian2.core.base.BrianObjectException: Error encountered with object named 'synapses'.
E               Object was created here (most recent call only, full details in debug log):
E                 File '/usr/lib/python3/dist-packages/_pytest/python.py', line 157, in pytest_pyfunc_call
E                   result = testfunction(**testargs)
E               
E               An exception occured during the execution of the 'run' block of code object 'synapses_synapses_create_generator_codeobject'.
E                (See above for original error message and traceback.)

../debian/tmp/usr/lib/python3.13/dist-packages/brian2/codegen/runtime/cython_rt/cython_rt.py:205: BrianObjectException
=============================== warnings summary ===============================
../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1474
  /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1474: PytestConfigWarning: Unknown config option: timeout
  
    self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED ../debian/tmp/usr/lib/python3.13/dist-packages/brian2/tests/test_complex_examples.py::test_cuba
FAILED ../debian/tmp/usr/lib/python3.13/dist-packages/brian2/tests/test_poissoninput.py::test_poissoninput
FAILED ../debian/tmp/usr/lib/python3.13/dist-packages/brian2/tests/test_poissoninput.py::test_poissoninput_refractory
FAILED ../debian/tmp/usr/lib/python3.13/dist-packages/brian2/tests/test_subgroup.py::test_synapse_creation_generator_random
4 failed, 33 passed, 1 skipped, 244 deselected, 1 warning in 154.65s (0:02:34)
ERROR: 1/4 test suite(s) did not complete successfully (see above).
make[1]: *** [debian/rules:58: execute_after_dh_auto_install] Error 1
make[1]: Leaving directory '/build/reproducible-path/brian-2.8.0.4'
make: *** [debian/rules:32: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2025-09-07T21:21:16Z

-------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/debian/developers-roehling.numpy/artifact/2448433/

About the archive rebuild: The build was made on debusine.debian.net,
using sbuild.

You can find the build task here:
https://debusine.debian.net/debian/developers-roehling.numpy/work-request/163207/

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

Cheers
Timo



More information about the Debian-med-packaging mailing list