From ae5f52fc8ea6770adea8db59a6d8c551d3d4f518 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 13:03:25 +0000 Subject: [PATCH 1/2] Bump black from 25.11.0 to 26.3.1 Bumps [black](https://github.com/psf/black) from 25.11.0 to 26.3.1. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/25.11.0...26.3.1) --- updated-dependencies: - dependency-name: black dependency-version: 26.3.1 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d20130bc2..1c1696fd1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,9 +55,9 @@ dev-flake8 = [ "pydoclint == 0.8.3", "pydocstyle == 6.3.0", ] -dev-formatting = ["black == 25.11.0", "isort == 8.0.1"] +dev-formatting = ["black == 26.3.1", "isort == 8.0.1"] dev-mkdocs = [ - "black == 25.11.0", + "black == 26.3.1", "Markdown==3.10.2", "mike == 2.1.3", "mkdocs-gen-files == 0.6.1", From 2461861cadb5cdcf69f795f4b08ba260dace7cb1 Mon Sep 17 00:00:00 2001 From: "frequenz-auto-dependabot[bot]" <261417025+frequenz-auto-dependabot[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 13:04:05 +0000 Subject: [PATCH 2/2] Apply migration from 25.11.0 to 26.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit === v26.3.1 ========================================================= Source: inline script Collecting black==26.3.1 Downloading black-26.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (91 kB) Collecting click>=8.0.0 (from black==26.3.1) Downloading click-8.3.3-py3-none-any.whl.metadata (2.6 kB) Collecting mypy-extensions>=0.4.3 (from black==26.3.1) Downloading mypy_extensions-1.1.0-py3-none-any.whl.metadata (1.1 kB) Collecting packaging>=22.0 (from black==26.3.1) Downloading packaging-26.2-py3-none-any.whl.metadata (3.5 kB) Collecting pathspec>=1.0.0 (from black==26.3.1) Downloading pathspec-1.1.1-py3-none-any.whl.metadata (14 kB) Collecting platformdirs>=2 (from black==26.3.1) Downloading platformdirs-4.9.6-py3-none-any.whl.metadata (4.7 kB) Collecting pytokens~=0.4.0 (from black==26.3.1) Downloading pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (3.8 kB) Downloading black-26.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 166.0 MB/s 0:00:00 Downloading pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (268 kB) Downloading click-8.3.3-py3-none-any.whl (110 kB) Downloading mypy_extensions-1.1.0-py3-none-any.whl (5.0 kB) Downloading packaging-26.2-py3-none-any.whl (100 kB) Downloading pathspec-1.1.1-py3-none-any.whl (57 kB) Downloading platformdirs-4.9.6-py3-none-any.whl (21 kB) Installing collected packages: pytokens, platformdirs, pathspec, packaging, mypy-extensions, click, black Successfully installed black-26.3.1 click-8.3.3 mypy-extensions-1.1.0 packaging-26.2 pathspec-1.1.1 platformdirs-4.9.6 pytokens-0.4.1 [notice] A new release of pip is available: 26.0.1 -> 26.1.1 [notice] To update, run: pip install --upgrade pip reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/benchmarks/timeseries/ringbuffer_serialization.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/benchmarks/timeseries/ringbuffer_memusage.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/benchmarks/timeseries/benchmark_datasourcing.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/examples/battery_pool.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/benchmarks/timeseries/periodic_feature_extractor.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/_internal/_asyncio.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/actor/_run_utils.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/_component_managers/_ev_charger_manager/_states.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_component_status.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/request.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/result.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/power_distributing.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_ev_charger_status_tracker.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/_fuse.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/microgrid/_resampling.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/_moving_window.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/battery_pool/_component_metrics.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/battery_pool/_methods.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/formula_engine/__init__.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/formulas/__init__.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/ev_charger_pool/_system_bounds_tracker.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/_ringbuffer/buffer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/battery_pool/_metric_calculator.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/formulas/_formula_pool.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/formulas/_lexer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/grid.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/actor/test_background_service.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/actor/test_resampling.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/conftest.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/config/test_actor.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/microgrid/power_distributing/_component_status/test_pv_inverter_status.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/config/test_manager.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_ev_charger_pool/test_ev_charger_pool.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_formulas/test_3_phases.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_formulas/test_lexer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_formulas/utils.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_formulas/test_composition.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/_resampling/wall_clock_timer/test_config.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_base_types.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_logical_meter.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_frequency_streaming.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/mock_resampler.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_ringbuffer_serialization.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_voltage_streamer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/utils/_a_sequence.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/utils/component_data_streamer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/utils/component_data_wrapper.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/utils/component_graph_utils.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_ringbuffer.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/microgrid/power_distributing/test_battery_distribution_algorithm.py reformatted /home/runner/work/frequenz-sdk-python/frequenz-sdk-python/tests/timeseries/test_resampling.py All done! ✨ 🍰 ✨ 57 files reformatted, 147 files left unchanged. The migration completed successfully. --- .../timeseries/benchmark_datasourcing.py | 1 + .../timeseries/periodic_feature_extractor.py | 1 - benchmarks/timeseries/ringbuffer_memusage.py | 1 - .../timeseries/ringbuffer_serialization.py | 1 - examples/battery_pool.py | 1 - src/frequenz/sdk/_internal/_asyncio.py | 1 - src/frequenz/sdk/actor/_run_utils.py | 1 - .../_ev_charger_manager/_states.py | 1 - .../_component_pool_status_tracker.py | 1 - .../_component_status/_component_status.py | 1 - .../_ev_charger_status_tracker.py | 1 - .../_power_distributing/power_distributing.py | 1 - .../microgrid/_power_distributing/request.py | 1 - .../microgrid/_power_distributing/result.py | 1 - src/frequenz/sdk/microgrid/_resampling.py | 1 - src/frequenz/sdk/timeseries/_fuse.py | 1 + src/frequenz/sdk/timeseries/_moving_window.py | 1 - .../timeseries/_periodic_feature_extractor.py | 5 ++- .../sdk/timeseries/_ringbuffer/buffer.py | 1 - .../_battery_pool_reference_store.py | 1 - .../battery_pool/_component_metrics.py | 1 - .../sdk/timeseries/battery_pool/_methods.py | 1 - .../battery_pool/_metric_calculator.py | 1 - .../ev_charger_pool/_ev_charger_pool.py | 1 - .../ev_charger_pool/_system_bounds_tracker.py | 1 - .../sdk/timeseries/formula_engine/__init__.py | 1 - .../sdk/timeseries/formulas/__init__.py | 1 - .../sdk/timeseries/formulas/_formula_pool.py | 1 - .../sdk/timeseries/formulas/_lexer.py | 1 - src/frequenz/sdk/timeseries/grid.py | 1 + .../logical_meter/_logical_meter.py | 1 - .../pv_pool/_pv_pool_reference_store.py | 1 - tests/actor/test_background_service.py | 1 + tests/actor/test_resampling.py | 1 + tests/config/test_actor.py | 31 +++++++------------ tests/config/test_manager.py | 19 ++++-------- tests/conftest.py | 1 + .../test_pv_inverter_status.py | 1 - .../test_battery_distribution_algorithm.py | 1 + .../_ev_charger_pool/test_ev_charger_pool.py | 1 - tests/timeseries/_formulas/test_3_phases.py | 1 - .../timeseries/_formulas/test_composition.py | 1 - tests/timeseries/_formulas/test_lexer.py | 1 + tests/timeseries/_formulas/utils.py | 1 - .../wall_clock_timer/test_config.py | 1 - tests/timeseries/mock_resampler.py | 1 - tests/timeseries/test_base_types.py | 1 - tests/timeseries/test_frequency_streaming.py | 1 - tests/timeseries/test_logical_meter.py | 1 - tests/timeseries/test_resampling.py | 1 - tests/timeseries/test_ringbuffer.py | 1 - .../test_ringbuffer_serialization.py | 1 - tests/timeseries/test_voltage_streamer.py | 1 - tests/utils/_a_sequence.py | 1 - tests/utils/component_data_streamer.py | 1 - tests/utils/component_data_wrapper.py | 1 + tests/utils/component_graph_utils.py | 1 - 57 files changed, 28 insertions(+), 81 deletions(-) diff --git a/benchmarks/timeseries/benchmark_datasourcing.py b/benchmarks/timeseries/benchmark_datasourcing.py index 4ff48bb92..3df8343e6 100644 --- a/benchmarks/timeseries/benchmark_datasourcing.py +++ b/benchmarks/timeseries/benchmark_datasourcing.py @@ -9,6 +9,7 @@ PYTHONPATH=. python benchmark_datasourcing.py """ + import argparse import asyncio import sys diff --git a/benchmarks/timeseries/periodic_feature_extractor.py b/benchmarks/timeseries/periodic_feature_extractor.py index 56d5f60a0..b7f9f3c86 100644 --- a/benchmarks/timeseries/periodic_feature_extractor.py +++ b/benchmarks/timeseries/periodic_feature_extractor.py @@ -9,7 +9,6 @@ implementation. """ - import asyncio import collections.abc import contextlib diff --git a/benchmarks/timeseries/ringbuffer_memusage.py b/benchmarks/timeseries/ringbuffer_memusage.py index c34c30dc9..e139b5b93 100644 --- a/benchmarks/timeseries/ringbuffer_memusage.py +++ b/benchmarks/timeseries/ringbuffer_memusage.py @@ -3,7 +3,6 @@ """Memory allocation benchmark for the ringbuffer.""" - import argparse import tracemalloc from datetime import datetime, timedelta, timezone diff --git a/benchmarks/timeseries/ringbuffer_serialization.py b/benchmarks/timeseries/ringbuffer_serialization.py index 38385bf1a..4c6369aaf 100644 --- a/benchmarks/timeseries/ringbuffer_serialization.py +++ b/benchmarks/timeseries/ringbuffer_serialization.py @@ -3,7 +3,6 @@ """Benchmarks the serialization of the `OrderedRingBuffer` class.""" - import fnmatch import os import time diff --git a/examples/battery_pool.py b/examples/battery_pool.py index cae09c622..5df72a5c2 100644 --- a/examples/battery_pool.py +++ b/examples/battery_pool.py @@ -3,7 +3,6 @@ """Script with an example how to use BatteryPool.""" - import asyncio import logging from datetime import timedelta diff --git a/src/frequenz/sdk/_internal/_asyncio.py b/src/frequenz/sdk/_internal/_asyncio.py index 385ccf89b..a60213ba7 100644 --- a/src/frequenz/sdk/_internal/_asyncio.py +++ b/src/frequenz/sdk/_internal/_asyncio.py @@ -3,7 +3,6 @@ """General purpose async tools.""" - import asyncio import logging import sys diff --git a/src/frequenz/sdk/actor/_run_utils.py b/src/frequenz/sdk/actor/_run_utils.py index f47163b7a..f41ea6c5c 100644 --- a/src/frequenz/sdk/actor/_run_utils.py +++ b/src/frequenz/sdk/actor/_run_utils.py @@ -3,7 +3,6 @@ """Utility functions to run and synchronize the execution of actors.""" - import asyncio import logging diff --git a/src/frequenz/sdk/microgrid/_power_distributing/_component_managers/_ev_charger_manager/_states.py b/src/frequenz/sdk/microgrid/_power_distributing/_component_managers/_ev_charger_manager/_states.py index ac08c8baf..a11712b86 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/_component_managers/_ev_charger_manager/_states.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/_component_managers/_ev_charger_manager/_states.py @@ -3,7 +3,6 @@ """Power distribution state tracking for ev chargers.""" - from dataclasses import dataclass from datetime import datetime from typing import Iterable diff --git a/src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py b/src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py index d3d493a9c..9238a39f4 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py @@ -3,7 +3,6 @@ """Class that tracks the status of pool of components.""" - import asyncio import contextlib from collections import abc diff --git a/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_component_status.py b/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_component_status.py index a822a196c..64596d33a 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_component_status.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_component_status.py @@ -3,7 +3,6 @@ """Classes to track the status of components in the microgrid.""" - import enum from abc import ABC, abstractmethod from collections import abc diff --git a/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_ev_charger_status_tracker.py b/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_ev_charger_status_tracker.py index bb8e446a7..415478be3 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_ev_charger_status_tracker.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/_component_status/_ev_charger_status_tracker.py @@ -3,7 +3,6 @@ """Background service that tracks the status of an EV charger.""" - import asyncio import logging from datetime import datetime, timedelta, timezone diff --git a/src/frequenz/sdk/microgrid/_power_distributing/power_distributing.py b/src/frequenz/sdk/microgrid/_power_distributing/power_distributing.py index 5cf9d14f8..90a14f078 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/power_distributing.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/power_distributing.py @@ -9,7 +9,6 @@ distributing the power between the components and sends the results back to it. """ - import asyncio import logging from datetime import datetime, timedelta diff --git a/src/frequenz/sdk/microgrid/_power_distributing/request.py b/src/frequenz/sdk/microgrid/_power_distributing/request.py index 213957f7c..d0f6cecef 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/request.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/request.py @@ -2,7 +2,6 @@ # Copyright © 2022 Frequenz Energy-as-a-Service GmbH """Definition of the user request.""" - import dataclasses from collections import abc diff --git a/src/frequenz/sdk/microgrid/_power_distributing/result.py b/src/frequenz/sdk/microgrid/_power_distributing/result.py index dd9fde853..c552e5bbb 100644 --- a/src/frequenz/sdk/microgrid/_power_distributing/result.py +++ b/src/frequenz/sdk/microgrid/_power_distributing/result.py @@ -3,7 +3,6 @@ """Results from PowerDistributingActor.""" - import dataclasses from collections import abc diff --git a/src/frequenz/sdk/microgrid/_resampling.py b/src/frequenz/sdk/microgrid/_resampling.py index b5c554513..0d14cecc2 100644 --- a/src/frequenz/sdk/microgrid/_resampling.py +++ b/src/frequenz/sdk/microgrid/_resampling.py @@ -3,7 +3,6 @@ """An actor to resample microgrid component metrics.""" - import asyncio import dataclasses import logging diff --git a/src/frequenz/sdk/timeseries/_fuse.py b/src/frequenz/sdk/timeseries/_fuse.py index 43f77b0c3..7d13cad80 100644 --- a/src/frequenz/sdk/timeseries/_fuse.py +++ b/src/frequenz/sdk/timeseries/_fuse.py @@ -2,6 +2,7 @@ # Copyright © 2023 Frequenz Energy-as-a-Service GmbH """Fuse data class.""" + from __future__ import annotations from dataclasses import dataclass diff --git a/src/frequenz/sdk/timeseries/_moving_window.py b/src/frequenz/sdk/timeseries/_moving_window.py index 1e7eb220d..ddd3789a1 100644 --- a/src/frequenz/sdk/timeseries/_moving_window.py +++ b/src/frequenz/sdk/timeseries/_moving_window.py @@ -3,7 +3,6 @@ """A data window that moves with the latest datapoints of a data stream.""" - import asyncio import logging import math diff --git a/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py b/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py index bef37adf2..3eb64eae3 100644 --- a/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py +++ b/src/frequenz/sdk/timeseries/_periodic_feature_extractor.py @@ -12,7 +12,6 @@ modulo a fixed period. """ - import logging from dataclasses import dataclass from datetime import datetime, timedelta @@ -376,7 +375,7 @@ def _get_reshaped_np_array( Returns: A tuple containing the reshaped numpy array and the window size. """ - (start_pos, end_pos, window_size) = self._get_buffer_bounds(start, end) + start_pos, end_pos, window_size = self._get_buffer_bounds(start, end) if start_pos >= end_pos: window_start = self._buffer[start_pos : self._moving_window.count_valid()] @@ -408,5 +407,5 @@ def avg( Returns: The averaged timeseries window. """ - (reshaped, window_size) = self._get_reshaped_np_array(start, end) + reshaped, window_size = self._get_reshaped_np_array(start, end) return np.average(reshaped[:, :window_size], axis=0, weights=weights) diff --git a/src/frequenz/sdk/timeseries/_ringbuffer/buffer.py b/src/frequenz/sdk/timeseries/_ringbuffer/buffer.py index 7ef7bb844..92b4cafb1 100644 --- a/src/frequenz/sdk/timeseries/_ringbuffer/buffer.py +++ b/src/frequenz/sdk/timeseries/_ringbuffer/buffer.py @@ -3,7 +3,6 @@ """Ringbuffer implementation with focus on time & memory efficiency.""" - from copy import deepcopy from dataclasses import dataclass from datetime import datetime, timedelta, timezone diff --git a/src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py b/src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py index 68a03f597..25ea9f3a3 100644 --- a/src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py +++ b/src/frequenz/sdk/timeseries/battery_pool/_battery_pool_reference_store.py @@ -3,7 +3,6 @@ """User interface for requesting aggregated battery-inverter data.""" - import asyncio import uuid from collections.abc import Awaitable, Set diff --git a/src/frequenz/sdk/timeseries/battery_pool/_component_metrics.py b/src/frequenz/sdk/timeseries/battery_pool/_component_metrics.py index d89d147c0..f133566e7 100644 --- a/src/frequenz/sdk/timeseries/battery_pool/_component_metrics.py +++ b/src/frequenz/sdk/timeseries/battery_pool/_component_metrics.py @@ -3,7 +3,6 @@ """Class that stores values of the component metrics.""" - from collections.abc import Mapping from dataclasses import dataclass from datetime import datetime diff --git a/src/frequenz/sdk/timeseries/battery_pool/_methods.py b/src/frequenz/sdk/timeseries/battery_pool/_methods.py index 603d722ee..1e8120dd4 100644 --- a/src/frequenz/sdk/timeseries/battery_pool/_methods.py +++ b/src/frequenz/sdk/timeseries/battery_pool/_methods.py @@ -3,7 +3,6 @@ """Methods for processing battery-inverter data.""" - import asyncio import logging from abc import ABC, abstractmethod diff --git a/src/frequenz/sdk/timeseries/battery_pool/_metric_calculator.py b/src/frequenz/sdk/timeseries/battery_pool/_metric_calculator.py index f2c8f5599..ae74d8cf9 100644 --- a/src/frequenz/sdk/timeseries/battery_pool/_metric_calculator.py +++ b/src/frequenz/sdk/timeseries/battery_pool/_metric_calculator.py @@ -3,7 +3,6 @@ """Module that defines how to aggregate metrics from battery-inverter components.""" - import logging import math from abc import ABC, abstractmethod diff --git a/src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool.py b/src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool.py index 77327eb7d..46aa22ee8 100644 --- a/src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool.py +++ b/src/frequenz/sdk/timeseries/ev_charger_pool/_ev_charger_pool.py @@ -3,7 +3,6 @@ """Interactions with pools of EV Chargers.""" - import asyncio import uuid from collections import abc diff --git a/src/frequenz/sdk/timeseries/ev_charger_pool/_system_bounds_tracker.py b/src/frequenz/sdk/timeseries/ev_charger_pool/_system_bounds_tracker.py index c4f8e6fff..476272a52 100644 --- a/src/frequenz/sdk/timeseries/ev_charger_pool/_system_bounds_tracker.py +++ b/src/frequenz/sdk/timeseries/ev_charger_pool/_system_bounds_tracker.py @@ -3,7 +3,6 @@ """System bounds tracker for the EV chargers.""" - import asyncio from collections import abc diff --git a/src/frequenz/sdk/timeseries/formula_engine/__init__.py b/src/frequenz/sdk/timeseries/formula_engine/__init__.py index ea4aec8d7..13a548e0e 100644 --- a/src/frequenz/sdk/timeseries/formula_engine/__init__.py +++ b/src/frequenz/sdk/timeseries/formula_engine/__init__.py @@ -3,7 +3,6 @@ """Deprecated Formula Engine.""" - from typing_extensions import TypeAlias from .._base_types import QuantityT diff --git a/src/frequenz/sdk/timeseries/formulas/__init__.py b/src/frequenz/sdk/timeseries/formulas/__init__.py index f00065592..1200e2642 100644 --- a/src/frequenz/sdk/timeseries/formulas/__init__.py +++ b/src/frequenz/sdk/timeseries/formulas/__init__.py @@ -109,7 +109,6 @@ ``` """ - from ._formula import Formula from ._formula_3_phase import Formula3Phase diff --git a/src/frequenz/sdk/timeseries/formulas/_formula_pool.py b/src/frequenz/sdk/timeseries/formulas/_formula_pool.py index d0887c7e2..9e83ffe4f 100644 --- a/src/frequenz/sdk/timeseries/formulas/_formula_pool.py +++ b/src/frequenz/sdk/timeseries/formulas/_formula_pool.py @@ -3,7 +3,6 @@ """A formula pool for helping with tracking running formulas.""" - import logging import sys diff --git a/src/frequenz/sdk/timeseries/formulas/_lexer.py b/src/frequenz/sdk/timeseries/formulas/_lexer.py index 1607137db..4a2f8a1c5 100644 --- a/src/frequenz/sdk/timeseries/formulas/_lexer.py +++ b/src/frequenz/sdk/timeseries/formulas/_lexer.py @@ -3,7 +3,6 @@ """A lexer for formula strings.""" - from __future__ import annotations from collections.abc import Iterator diff --git a/src/frequenz/sdk/timeseries/grid.py b/src/frequenz/sdk/timeseries/grid.py index b79a690f9..9640ee4bf 100644 --- a/src/frequenz/sdk/timeseries/grid.py +++ b/src/frequenz/sdk/timeseries/grid.py @@ -6,6 +6,7 @@ This module provides the `Grid` type, which represents a grid connection point in a microgrid. """ + from __future__ import annotations import logging diff --git a/src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py b/src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py index 00df8f776..44c45ad8b 100644 --- a/src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py +++ b/src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py @@ -3,7 +3,6 @@ """A logical meter for calculating high level metrics for a microgrid.""" - import uuid from frequenz.channels import Sender diff --git a/src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py b/src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py index e893f9a36..8d6b920d3 100644 --- a/src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py +++ b/src/frequenz/sdk/timeseries/pv_pool/_pv_pool_reference_store.py @@ -3,7 +3,6 @@ """Manages shared state/tasks for a set of PV inverters.""" - import asyncio import uuid from collections import abc diff --git a/tests/actor/test_background_service.py b/tests/actor/test_background_service.py index 5a8cc8e90..784a6faab 100644 --- a/tests/actor/test_background_service.py +++ b/tests/actor/test_background_service.py @@ -2,6 +2,7 @@ # Copyright © 2022 Frequenz Energy-as-a-Service GmbH """Simple test for the BaseActor.""" + import asyncio from typing import Literal, assert_never diff --git a/tests/actor/test_resampling.py b/tests/actor/test_resampling.py index f5ea72ade..2f0dc2c26 100644 --- a/tests/actor/test_resampling.py +++ b/tests/actor/test_resampling.py @@ -2,6 +2,7 @@ # Copyright © 2022 Frequenz Energy-as-a-Service GmbH """Frequenz Python SDK resampling example.""" + import asyncio import dataclasses from datetime import datetime, timedelta, timezone diff --git a/tests/config/test_actor.py b/tests/config/test_actor.py index f1444bb12..238ad15f3 100644 --- a/tests/config/test_actor.py +++ b/tests/config/test_actor.py @@ -2,6 +2,7 @@ # Copyright © 2022 Frequenz Energy-as-a-Service GmbH """Test for ConfigManager.""" + import os import pathlib from collections import defaultdict @@ -134,8 +135,7 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: config_receiver = config_channel.new_receiver() config_file2 = config_file.parent / "config2.toml" - config_file2.write_text( - """ + config_file2.write_text(""" logging_lvl = 'ERROR' var1 = "0" var2 = "15" @@ -149,8 +149,7 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: b = 2 c = 4 d = 3 - """ - ) + """) async with ConfigManagingActor( [config_file, config_file2], @@ -178,12 +177,10 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: } # We overwrite config_file with just two variables - config_file.write_text( - """ + config_file.write_text(""" logging_lvl = 'INFO' list_non_strict_bool = ["false", "0", "true"] - """ - ) + """) config = await config_receiver.receive() assert config is not None @@ -205,8 +202,7 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: } # Now we only update logging_lvl in config_file2, it still takes precedence - config_file2.write_text( - """ + config_file2.write_text(""" logging_lvl = 'DEBUG' var1 = "0" var2 = "15" @@ -220,8 +216,7 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: b = 2 c = 4 d = 3 - """ - ) + """) config = await config_receiver.receive() assert config is not None @@ -240,14 +235,11 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: # Now add one variable to config_file not present in config_file2 and remove # a bunch of variables from config_file2 too, and update a few - config_file.write_text( - """ + config_file.write_text(""" logging_lvl = 'INFO' var10 = "10" - """ - ) - config_file2.write_text( - """ + """) + config_file2.write_text(""" logging_lvl = 'DEBUG' var1 = "3" var_off = "on" @@ -255,8 +247,7 @@ async def test_update_multiple_files(self, config_file: pathlib.Path) -> None: a = 1 b = 2 c = 4 - """ - ) + """) config = await config_receiver.receive() assert config is not None diff --git a/tests/config/test_manager.py b/tests/config/test_manager.py index 131e973fa..7805eef5a 100644 --- a/tests/config/test_manager.py +++ b/tests/config/test_manager.py @@ -3,7 +3,6 @@ """Tests for the config manager module.""" - import asyncio import dataclasses import logging @@ -243,8 +242,7 @@ class TestConfigManagerIntegration: def config_file(self, tmp_path: pathlib.Path) -> pathlib.Path: """Create a temporary config file for testing.""" config_file = tmp_path / "config.toml" - config_file.write_text( - """ + config_file.write_text(""" [test] name = "test1" value = 42 @@ -252,8 +250,7 @@ def config_file(self, tmp_path: pathlib.Path) -> pathlib.Path: [logging.loggers.test] name = "test" level = "DEBUG" - """ - ) + """) return config_file async def test_full_config_flow(self, config_file: pathlib.Path) -> None: @@ -270,8 +267,7 @@ async def test_full_config_flow(self, config_file: pathlib.Path) -> None: assert logging.getLogger("test").level == logging.DEBUG # Update config file - config_file.write_text( - """ + config_file.write_text(""" [test] name = "test2" value = 43 @@ -279,8 +275,7 @@ async def test_full_config_flow(self, config_file: pathlib.Path) -> None: [logging.loggers.test] name = "test" level = "INFO" - """ - ) + """) # Check updated config config = await receiver.receive() @@ -308,8 +303,7 @@ async def test_full_config_flow_without_logging( assert logging.getLogger("test").level == logging.WARNING # Update config file - config_file.write_text( - """ + config_file.write_text(""" [test] name = "test2" value = 43 @@ -317,8 +311,7 @@ async def test_full_config_flow_without_logging( [logging.loggers.test] name = "test" level = "DEBUG" - """ - ) + """) # Check updated config config = await receiver.receive() diff --git a/tests/conftest.py b/tests/conftest.py index 27ab16c00..f98586d42 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,6 +2,7 @@ # Copyright © 2022 Frequenz Energy-as-a-Service GmbH """Setup for all the tests.""" + import contextlib from collections.abc import Iterator from datetime import timedelta diff --git a/tests/microgrid/power_distributing/_component_status/test_pv_inverter_status.py b/tests/microgrid/power_distributing/_component_status/test_pv_inverter_status.py index 774b8998d..3842ecbf0 100644 --- a/tests/microgrid/power_distributing/_component_status/test_pv_inverter_status.py +++ b/tests/microgrid/power_distributing/_component_status/test_pv_inverter_status.py @@ -3,7 +3,6 @@ """Tests for PVInverterStatusTracker.""" - import asyncio from datetime import datetime, timedelta, timezone diff --git a/tests/microgrid/power_distributing/test_battery_distribution_algorithm.py b/tests/microgrid/power_distributing/test_battery_distribution_algorithm.py index c3d769a71..61d6fd0e0 100644 --- a/tests/microgrid/power_distributing/test_battery_distribution_algorithm.py +++ b/tests/microgrid/power_distributing/test_battery_distribution_algorithm.py @@ -3,6 +3,7 @@ # pylint: disable=too-many-lines """Tests for distribution algorithm.""" + import math from collections.abc import Sequence, Set from dataclasses import dataclass diff --git a/tests/timeseries/_ev_charger_pool/test_ev_charger_pool.py b/tests/timeseries/_ev_charger_pool/test_ev_charger_pool.py index 4a7c1ed71..e7a7e1804 100644 --- a/tests/timeseries/_ev_charger_pool/test_ev_charger_pool.py +++ b/tests/timeseries/_ev_charger_pool/test_ev_charger_pool.py @@ -3,7 +3,6 @@ """Tests for the `EVChargerPool`.""" - import asyncio from unittest.mock import MagicMock diff --git a/tests/timeseries/_formulas/test_3_phases.py b/tests/timeseries/_formulas/test_3_phases.py index 151cbc5cd..93251c96e 100644 --- a/tests/timeseries/_formulas/test_3_phases.py +++ b/tests/timeseries/_formulas/test_3_phases.py @@ -3,7 +3,6 @@ """Tests for three phase formulas.""" - import asyncio from collections import OrderedDict from collections.abc import Callable diff --git a/tests/timeseries/_formulas/test_composition.py b/tests/timeseries/_formulas/test_composition.py index cb72f222a..e81e3a289 100644 --- a/tests/timeseries/_formulas/test_composition.py +++ b/tests/timeseries/_formulas/test_composition.py @@ -3,7 +3,6 @@ """Tests for formula composition.""" - import math from contextlib import AsyncExitStack diff --git a/tests/timeseries/_formulas/test_lexer.py b/tests/timeseries/_formulas/test_lexer.py index c1a0aadab..174d6106c 100644 --- a/tests/timeseries/_formulas/test_lexer.py +++ b/tests/timeseries/_formulas/test_lexer.py @@ -2,6 +2,7 @@ # Copyright © 2025 Frequenz Energy-as-a-Service GmbH """Tests for the formula lexer.""" + import pytest from frequenz.sdk.timeseries.formulas import _token diff --git a/tests/timeseries/_formulas/utils.py b/tests/timeseries/_formulas/utils.py index 471d7e9c7..fd3185afc 100644 --- a/tests/timeseries/_formulas/utils.py +++ b/tests/timeseries/_formulas/utils.py @@ -3,7 +3,6 @@ """Utils for testing formulas.""" - from collections.abc import Callable from math import isclose diff --git a/tests/timeseries/_resampling/wall_clock_timer/test_config.py b/tests/timeseries/_resampling/wall_clock_timer/test_config.py index e47790f36..5dd7e50d1 100644 --- a/tests/timeseries/_resampling/wall_clock_timer/test_config.py +++ b/tests/timeseries/_resampling/wall_clock_timer/test_config.py @@ -3,7 +3,6 @@ """Tests for the `WallClockTimerConfig` class.""" - import math import re from datetime import datetime, timedelta, timezone diff --git a/tests/timeseries/mock_resampler.py b/tests/timeseries/mock_resampler.py index bf50d882f..98440646b 100644 --- a/tests/timeseries/mock_resampler.py +++ b/tests/timeseries/mock_resampler.py @@ -3,7 +3,6 @@ """Mock data_pipeline.""" - import asyncio import math from datetime import datetime, timezone diff --git a/tests/timeseries/test_base_types.py b/tests/timeseries/test_base_types.py index b291a284f..637aab060 100644 --- a/tests/timeseries/test_base_types.py +++ b/tests/timeseries/test_base_types.py @@ -3,7 +3,6 @@ """Tests for timeseries base types.""" - from datetime import datetime, timezone from frequenz.quantities import Power diff --git a/tests/timeseries/test_frequency_streaming.py b/tests/timeseries/test_frequency_streaming.py index 25077c3b9..61c3b0f58 100644 --- a/tests/timeseries/test_frequency_streaming.py +++ b/tests/timeseries/test_frequency_streaming.py @@ -3,7 +3,6 @@ """Tests for the logical meter.""" - import asyncio from datetime import datetime, timezone diff --git a/tests/timeseries/test_logical_meter.py b/tests/timeseries/test_logical_meter.py index 1ac0b8d49..fe148190b 100644 --- a/tests/timeseries/test_logical_meter.py +++ b/tests/timeseries/test_logical_meter.py @@ -3,7 +3,6 @@ """Tests for the logical meter.""" - from contextlib import AsyncExitStack from frequenz.quantities import Power diff --git a/tests/timeseries/test_resampling.py b/tests/timeseries/test_resampling.py index 31f22638f..627cefe0b 100644 --- a/tests/timeseries/test_resampling.py +++ b/tests/timeseries/test_resampling.py @@ -3,7 +3,6 @@ """Tests for the `TimeSeriesResampler` class.""" - import asyncio import logging from collections.abc import AsyncIterator diff --git a/tests/timeseries/test_ringbuffer.py b/tests/timeseries/test_ringbuffer.py index 10ec96c71..fd859ef04 100644 --- a/tests/timeseries/test_ringbuffer.py +++ b/tests/timeseries/test_ringbuffer.py @@ -3,7 +3,6 @@ """Tests for the `OrderedRingbuffer` class.""" - import random from datetime import datetime, timedelta, timezone from itertools import cycle, islice diff --git a/tests/timeseries/test_ringbuffer_serialization.py b/tests/timeseries/test_ringbuffer_serialization.py index 60136e47d..5c4b012a1 100644 --- a/tests/timeseries/test_ringbuffer_serialization.py +++ b/tests/timeseries/test_ringbuffer_serialization.py @@ -3,7 +3,6 @@ """Tests for the `SerializableRingBuffer` class.""" - import random from datetime import datetime, timedelta, timezone from typing import Any diff --git a/tests/timeseries/test_voltage_streamer.py b/tests/timeseries/test_voltage_streamer.py index 6fca0a3bf..b6795ba2d 100644 --- a/tests/timeseries/test_voltage_streamer.py +++ b/tests/timeseries/test_voltage_streamer.py @@ -3,7 +3,6 @@ """Tests for fetching and streaming the phase-to-neutral voltage.""" - import asyncio from pytest_mock import MockerFixture diff --git a/tests/utils/_a_sequence.py b/tests/utils/_a_sequence.py index 57d6d576b..cf86ff8a5 100644 --- a/tests/utils/_a_sequence.py +++ b/tests/utils/_a_sequence.py @@ -3,7 +3,6 @@ """Helper class to compare two sequences without caring about the underlying type.""" - from collections.abc import Sequence from typing import Any diff --git a/tests/utils/component_data_streamer.py b/tests/utils/component_data_streamer.py index 3932f8d16..82e07821b 100644 --- a/tests/utils/component_data_streamer.py +++ b/tests/utils/component_data_streamer.py @@ -3,7 +3,6 @@ """Tool for mocking streams of component data.""" - import asyncio from dataclasses import replace from datetime import datetime, timezone diff --git a/tests/utils/component_data_wrapper.py b/tests/utils/component_data_wrapper.py index de9699f69..f9e1f6e77 100644 --- a/tests/utils/component_data_wrapper.py +++ b/tests/utils/component_data_wrapper.py @@ -10,6 +10,7 @@ This also abstracts away changes in the protobuf definition and minimizes the places that will need to be updated in such cases. """ + from __future__ import annotations import math diff --git a/tests/utils/component_graph_utils.py b/tests/utils/component_graph_utils.py index da91d3ae9..74979b493 100644 --- a/tests/utils/component_graph_utils.py +++ b/tests/utils/component_graph_utils.py @@ -3,7 +3,6 @@ """Utils for tests that uses component graph.""" - from dataclasses import dataclass from frequenz.client.common.microgrid import MicrogridId