From 26a7352182b8bae2678c88aaf9f0758afb33e723 Mon Sep 17 00:00:00 2001 From: cwasicki <126617870+cwasicki@users.noreply.github.com> Date: Fri, 7 Feb 2025 22:48:19 +0100 Subject: [PATCH 1/2] Update numpy dependency from v1 to v2 Signed-off-by: cwasicki <126617870+cwasicki@users.noreply.github.com> --- .../timeseries/periodic_feature_extractor.py | 18 +++++++++--------- pyproject.toml | 2 +- .../timeseries/_periodic_feature_extractor.py | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/benchmarks/timeseries/periodic_feature_extractor.py b/benchmarks/timeseries/periodic_feature_extractor.py index 2b6c947e8..7d0deda30 100644 --- a/benchmarks/timeseries/periodic_feature_extractor.py +++ b/benchmarks/timeseries/periodic_feature_extractor.py @@ -50,9 +50,9 @@ async def init_feature_extractor( def _calculate_avg_window( feature_extractor: PeriodicFeatureExtractor, - window: NDArray[np.float_], + window: NDArray[np.float64], window_size: int, -) -> NDArray[np.float_]: +) -> NDArray[np.float64]: """ Reshapes the window and calculates the average. @@ -77,10 +77,10 @@ def _calculate_avg_window( def _calculate_avg_window_py( feature_extractor: PeriodicFeatureExtractor, - window: NDArray[np.float_], + window: NDArray[np.float64], window_size: int, weights: list[float] | None = None, -) -> NDArray[np.float_]: +) -> NDArray[np.float64]: """ Plain python version of the average calculator. @@ -100,7 +100,7 @@ def _calculate_avg_window_py( """ def _num_windows( - window: NDArray[np.float_] | MovingWindow, window_size: int, period: int + window: NDArray[np.float64] | MovingWindow, window_size: int, period: int ) -> int: """ Get the number of windows that are fully contained in the MovingWindow. @@ -118,7 +118,7 @@ def _num_windows( The number of windows that are fully contained in the MovingWindow. """ - def length(window: NDArray[np.float_] | MovingWindow) -> int: + def length(window: NDArray[np.float64] | MovingWindow) -> int: return ( window.count_valid() if isinstance(window, MovingWindow) @@ -159,14 +159,14 @@ def length(window: NDArray[np.float_] | MovingWindow) -> int: def run_benchmark( - array: NDArray[np.float_], + array: NDArray[np.float64], window_size: int, feature_extractor: PeriodicFeatureExtractor, ) -> None: """Run the benchmark for the given ndarray and window size.""" def run_avg_np( - array: NDArray[np.float_], + array: NDArray[np.float64], window_size: int, feature_extractor: PeriodicFeatureExtractor, ) -> None: @@ -183,7 +183,7 @@ def run_avg_np( _calculate_avg_window(feature_extractor, array, window_size) def run_avg_py( - array: NDArray[np.float_], + array: NDArray[np.float64], window_size: int, feature_extractor: PeriodicFeatureExtractor, ) -> None: diff --git a/pyproject.toml b/pyproject.toml index 91bbd5345..b4b90ce66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "frequenz-channels >= 1.6.0, < 2.0.0", "frequenz-quantities[marshmallow] >= 1.0.0, < 2.0.0", "networkx >= 2.8, < 4", - "numpy >= 1.26.4, < 2", + "numpy >= 2, < 3", "typing_extensions >= 4.6.1, < 5", "marshmallow >= 3.19.0, < 5", "marshmallow_dataclass >= 8.7.1, < 9", diff --git a/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py b/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py index ab646e154..01602f7b4 100644 --- a/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py +++ b/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py @@ -180,8 +180,8 @@ def _timestamp_to_rel_index(self, timestamp: datetime) -> int: return dist_to_oldest def _reshape_np_array( - self, array: NDArray[np.float_], window_size: int - ) -> NDArray[np.float_]: + self, array: NDArray[np.float64], window_size: int + ) -> NDArray[np.float64]: """ Reshape a numpy array to a 2D array where each row represents a window. @@ -361,7 +361,7 @@ def _get_buffer_bounds( def _get_reshaped_np_array( self, start: datetime, end: datetime - ) -> tuple[NDArray[np.float_], int]: + ) -> tuple[NDArray[np.float64], int]: """ Create a reshaped numpy array from the MovingWindow. @@ -392,7 +392,7 @@ def _get_reshaped_np_array( def avg( self, start: datetime, end: datetime, weights: list[float] | None = None - ) -> NDArray[np.float_]: + ) -> NDArray[np.float64]: """ Create the average window out of the window defined by `start` and `end`. From c03eaf5dbb42c116b84470ede9f956a79f7cc7a8 Mon Sep 17 00:00:00 2001 From: cwasicki <126617870+cwasicki@users.noreply.github.com> Date: Tue, 6 May 2025 14:40:02 +0200 Subject: [PATCH 2/2] Update release notes Signed-off-by: cwasicki <126617870+cwasicki@users.noreply.github.com> --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 722762767..cf471e1dd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -6,7 +6,7 @@ ## Upgrading - +* Includes a major update of the numpy dependency to v2.x. ## New Features