Skip to content

Commit cd1519b

Browse files
committed
Fix start equal end in ring buffer window
Restore the typical list-like behavior for equal start and end. Would be inconsistent with the forbidden case start > end. Signed-off-by: cwasicki <[email protected]>
1 parent 2410f49 commit cd1519b

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/frequenz/sdk/timeseries/_ringbuffer/buffer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,9 @@ def window(
292292
f"end parameter {end} has to predate start parameter {start}"
293293
)
294294

295+
if start == end:
296+
return np.array([]) if isinstance(self._buffer, np.ndarray) else []
297+
295298
start_index = self.datetime_to_index(start)
296299
end_index = self.datetime_to_index(end)
297300

tests/timeseries/test_ringbuffer.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,13 @@ def test_window() -> None:
522522
assert [0, 1, 2] == list(win)
523523
win = buffer.window(dt(0), dt(3), force_copy=False)
524524
assert [0, 1, 2] == list(win)
525+
# Empty array
526+
assert 0 == buffer.window(dt(1), dt(1)).size
527+
528+
buffer = get_orb([0.0, 1.0, 2.0, 3.0, 4.0]) # type: ignore
529+
assert [0, 1, 2] == buffer.window(dt(0), dt(3))
530+
assert [] == buffer.window(dt(0), dt(0))
531+
assert [] == buffer.window(dt(1), dt(1))
525532

526533

527534
def test_wrapped_buffer_window() -> None:

0 commit comments

Comments
 (0)