python3Packages.filterpy: fix numpy 2.4 compat

This commit is contained in:
Martin Weinelt
2026-02-01 17:40:57 +01:00
parent eff194da6b
commit 8ea573062a
2 changed files with 71 additions and 0 deletions
@@ -24,6 +24,8 @@ buildPythonPackage {
hash = "sha256-KuuVu0tqrmQuNKYmDmdy+TU6BnnhDxh4G8n9BGzjGag=";
};
patches = [ ./numpy-2.4-compat.patch ];
build-system = [ setuptools ];
dependencies = [
@@ -0,0 +1,69 @@
diff --git a/filterpy/kalman/EKF.py b/filterpy/kalman/EKF.py
index 5e83aec..06e9c42 100644
--- a/filterpy/kalman/EKF.py
+++ b/filterpy/kalman/EKF.py
@@ -406,7 +406,8 @@ class ExtendedKalmanFilter(object):
mahalanobis : float
"""
if self._mahalanobis is None:
- self._mahalanobis = sqrt(float(dot(dot(self.y.T, self.SI), self.y)))
+ d2 = self.y.T @ self.SI @ self.y
+ self._mahalanobis = sqrt(np.asarray(d2).item())
return self._mahalanobis
def __repr__(self):
diff --git a/filterpy/kalman/fading_memory.py b/filterpy/kalman/fading_memory.py
index 36c9dcc..2c4d582 100644
--- a/filterpy/kalman/fading_memory.py
+++ b/filterpy/kalman/fading_memory.py
@@ -438,7 +438,7 @@ class FadingKalmanFilter(object):
mahalanobis : float
"""
if self._mahalanobis is None:
- self._mahalanobis = sqrt(float(dot(dot(self.y.T, self.SI), self.y)))
+ self._mahalanobis = sqrt((self.y.T @ self.SI @ self.y).item())
return self._mahalanobis
def __repr__(self):
diff --git a/filterpy/kalman/kalman_filter.py b/filterpy/kalman/kalman_filter.py
index 994b596..0f72d85 100644
--- a/filterpy/kalman/kalman_filter.py
+++ b/filterpy/kalman/kalman_filter.py
@@ -1235,7 +1235,8 @@ class KalmanFilter(object):
mahalanobis : float
"""
if self._mahalanobis is None:
- self._mahalanobis = sqrt(float(dot(dot(self.y.T, self.SI), self.y)))
+ d2 = dot(dot(self.y.T, self.SI), self.y)
+ self._mahalanobis = sqrt(np.asarray(d2).item())
return self._mahalanobis
@property
diff --git a/filterpy/kalman/tests/test_imm.py b/filterpy/kalman/tests/test_imm.py
index aa71fc2..ec2fdc1 100644
--- a/filterpy/kalman/tests/test_imm.py
+++ b/filterpy/kalman/tests/test_imm.py
@@ -176,8 +176,8 @@ def test_imm():
zs = np.zeros((N, 2))
for i in range(len(zs)):
- zs[i, 0] = simxs[i, 0] + randn()*r
- zs[i, 1] = simxs[i, 2] + randn()*r
+ zs[i, 0] = simxs[i, 0, 0] + randn()*r
+ zs[i, 1] = simxs[i, 2, 0] + randn()*r
'''
try:
diff --git a/filterpy/leastsq/least_squares.py b/filterpy/leastsq/least_squares.py
index 2610b14..6c5eb8f 100644
--- a/filterpy/leastsq/least_squares.py
+++ b/filterpy/leastsq/least_squares.py
@@ -129,7 +129,7 @@ class LeastSquaresFilter(object):
if self._order == 0:
K[0] = 1. / n
- y = z - x
+ y = z - x[0]
x[0] += K[0] * y
elif self._order == 1: