Source: siconos
Severity: important
Tags: patch
X-Debbugs-Cc: [email protected]

Dear Maintainer,

I've encountered an issue while building `siconos` locally. The 
`siconos.kernel` test suite fails during `test_bouncing_ball.py` with a 
`ValueError: setting an array element with a sequence.` 

This is caused by stricter dimensionality enforcement in NumPy 2.4. It no 
longer permits implicitly converting 1-dimensional arrays or sequences into 
Python scalars when assigning to a specific coordinate in a pre-allocated 
array. The value must be explicitly extracted as a scalar by appending `[0]`.

Relevant Traceback snippet:
----------------------------------------------------------------------
test_bouncing_ball.py::test_bouncing_ball2 FAILED                        [ 50%]
test_bouncing_ball.py::test_bouncing_ball3 FAILED                        [ 75%]
test_bouncing_ball.py::test_bouncing_ball4 FAILED                        [100%]

=================================== FAILURES ===================================
_____________________________ test_bouncing_ball2 ______________________________
TypeError: only 0-dimensional arrays can be converted to Python scalars

The above exception was the direct cause of the following exception:
[...]
        # Get the values to be plotted
        # ->saved in a matrix data
    
        s_d.computeOneStep()
    
        data = np.empty((nb_time_steps + 1, 5))
        data_d = np.empty((nb_time_steps + 1, 5))
    
        data[0, 0] = t0
        data[0, 1] = ball.q()[0]
        data[0, 2] = ball.velocity()[0]
        data[0, 3] = ball.p(1)[0]
>       data[0, 4] = inter.lambda_(1)
        ^^^^^^^^^^
E       ValueError: setting an array element with a sequence.

test_bouncing_ball.py:240: ValueError
----------------------------------------------------------------------

Upstream context: 
There is no need to forward this upstream. Upstream is currently working on 
major architectural changes (currently on rc1) that remove or significantly 
alter the directories associated with this bug. 

However, since those upstream changes will take time to finalize and land, a 
simple interim patch indexing the array with `[0]` is necessary for Debian to 
restore the build and pass the tests.

This patch has been merged into Ubuntu.

--- a/kernel/swig/tests/test_bouncing_ball.py
+++ b/kernel/swig/tests/test_bouncing_ball.py
@@ -237,13 +237,13 @@
     data[0, 1] = ball.q()[0]
     data[0, 2] = ball.velocity()[0]
     data[0, 3] = ball.p(1)[0]
-    data[0, 4] = inter.lambda_(1)
+    data[0, 4] = inter.lambda_(1)[0]
 
     data_d[0, 0] = t0
     data_d[0, 1] = ball_d.q()[0]
     data_d[0, 2] = ball_d.velocity()[0]
     data_d[0, 3] = ball_d.p(1)[0]
-    data_d[0, 4] = inter_d.lambda_(1)
+    data_d[0, 4] = inter_d.lambda_(1)[0]
 
     k = 1

Thanks,
vmpyr


-- System Information:
Debian Release: forky/sid
  APT prefers resolute-updates
  APT policy: (500, 'resolute-updates'), (500, 'resolute-security'), (500, 
'resolute')
Architecture: amd64 (x86_64)

Kernel: Linux 7.0.0-22-generic (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to