From d7ee03d89beb409a0cf2cc902bb60a1348ad2f76 Mon Sep 17 00:00:00 2001
From: Wolfgang Kastaun <wolfgang.kastaun@aei.mpg.de>
Date: Sat, 14 Dec 2024 13:18:50 +0100
Subject: [PATCH] fix faulty type annotations and improve others

---
 lisainstrument/dynamic_delay_dask.py  | 30 ++++++++++++---------------
 lisainstrument/dynamic_delay_numpy.py | 28 +++++++++++++------------
 2 files changed, 28 insertions(+), 30 deletions(-)

diff --git a/lisainstrument/dynamic_delay_dask.py b/lisainstrument/dynamic_delay_dask.py
index dd460e3..f2d59c3 100644
--- a/lisainstrument/dynamic_delay_dask.py
+++ b/lisainstrument/dynamic_delay_dask.py
@@ -5,7 +5,7 @@ Use make_dynamic_shift_lagrange_dask to create a Lagrange interpolator for dask
 
 from __future__ import annotations
 
-from typing import Callable
+from typing import Callable, Final
 
 import dask
 import dask.array as da
@@ -18,11 +18,7 @@ from lisainstrument.dynamic_delay_numpy import (
     RegularInterpMethod,
 )
 from lisainstrument.fir_filters_dask import DaskArray1D, make_dask_array_1d
-from lisainstrument.fir_filters_numpy import (
-    EdgeHandling,
-    NumpyArray1D,
-    make_numpy_array_1d,
-)
+from lisainstrument.fir_filters_numpy import NumpyArray1D, make_numpy_array_1d
 
 
 class DynamicShiftDask:
@@ -48,8 +44,8 @@ class DynamicShiftDask:
         self,
         min_delay: float,
         max_delay: float,
-        left_bound: EdgeHandling,
-        right_bound: EdgeHandling,
+        left_bound: DynShiftBC,
+        right_bound: DynShiftBC,
         interp: RegularInterpMethod,
     ):
         """Set up interpolation parameters
@@ -66,12 +62,12 @@ class DynamicShiftDask:
             msg = f"dynamic_shift_dask: invalid delay range {min_delay=}, {max_delay=}"
             raise ValueError(msg)
 
-        self._min_delay = int(np.floor(min_delay))
-        self._max_delay = int(np.ceil(max_delay))
+        self._min_delay: Final[int] = int(np.floor(min_delay))
+        self._max_delay: Final[int] = int(np.ceil(max_delay))
 
-        self._left_bound = left_bound
-        self._right_bound = right_bound
-        self._interp_np = interp
+        self._left_bound: Final = left_bound
+        self._right_bound: Final = right_bound
+        self._interp_np: Final = interp
 
     def _op_interp(
         self, samp: np.ndarray, loc: np.ndarray, ofs: np.ndarray
@@ -171,8 +167,8 @@ class DynamicShiftDask:
 def make_dynamic_shift_linear_dask(
     min_delay: float,
     max_delay: float,
-    left_bound: EdgeHandling,
-    right_bound: EdgeHandling,
+    left_bound: DynShiftBC,
+    right_bound: DynShiftBC,
 ) -> DynamicShiftDask:
     """Set up DynamicShiftDask instance with linear interpolation method.
 
@@ -193,8 +189,8 @@ def make_dynamic_shift_lagrange_dask(
     length: int,
     min_delay: float,
     max_delay: float,
-    left_bound: EdgeHandling,
-    right_bound: EdgeHandling,
+    left_bound: DynShiftBC,
+    right_bound: DynShiftBC,
 ) -> DynamicShiftDask:
     """Set up DynamicShiftDask instance with Lagrange interpolation method.
 
diff --git a/lisainstrument/dynamic_delay_numpy.py b/lisainstrument/dynamic_delay_numpy.py
index 365ef5f..2a30cd9 100644
--- a/lisainstrument/dynamic_delay_numpy.py
+++ b/lisainstrument/dynamic_delay_numpy.py
@@ -8,7 +8,7 @@ from __future__ import annotations
 import functools
 import operator
 from enum import Enum
-from typing import Callable, Protocol
+from typing import Final, Protocol
 
 import numpy as np
 from numpy.polynomial import Polynomial
@@ -181,9 +181,11 @@ class RegularInterpLagrange(RegularInterpMethod):
             raise ValueError(msg)
 
         offset = -((length - 1) // 2)
-        self._length: int = length
-        self._offset: int = offset
-        self._fir_filt = self._make_firs(length, offset)
+        self._length: Final[int] = length
+        self._offset: Final[int] = offset
+        self._fir_filt: Final[list[FilterFirNumpyType]] = self._make_firs(
+            length, offset
+        )
 
     @property
     def margin_left(self) -> int:
@@ -328,8 +330,8 @@ class DynamicShiftNumpy:
         self,
         min_delay: float,
         max_delay: float,
-        left_bound: EdgeHandling,
-        right_bound: EdgeHandling,
+        left_bound: DynShiftBC,
+        right_bound: DynShiftBC,
         interp: RegularInterpMethod,
     ):
 
@@ -337,12 +339,12 @@ class DynamicShiftNumpy:
             msg = f"dynamic_shift_dask: invalid delay range {min_delay=}, {max_delay=}"
             raise ValueError(msg)
 
-        self._min_delay = int(np.floor(min_delay))
-        self._max_delay = int(np.ceil(max_delay))
+        self._min_delay: Final[int] = int(np.floor(min_delay))
+        self._max_delay: Final[int] = int(np.ceil(max_delay))
 
-        self._left_bound = left_bound
-        self._right_bound = right_bound
-        self._interp_np = interp
+        self._left_bound: Final = left_bound
+        self._right_bound: Final = right_bound
+        self._interp_np: Final = interp
 
     def _op_interp(
         self, samp: np.ndarray, loc: np.ndarray, ofs: np.ndarray
@@ -436,8 +438,8 @@ def make_dynamic_shift_lagrange_numpy(
     length: int,
     min_delay: float,
     max_delay: float,
-    left_bound: EdgeHandling,
-    right_bound: EdgeHandling,
+    left_bound: DynShiftBC,
+    right_bound: DynShiftBC,
 ) -> DynamicShiftNumpy:
     """Set up DynamicShiftNumpy instance with Lagrange interpolation method.
 
-- 
GitLab