Skip to content

Commit 52e48ce

Browse files
committed
Replace len magic with count_valid for ring buffer
Signed-off-by: cwasicki <[email protected]>
1 parent 3e0bfb6 commit 52e48ce

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

src/frequenz/sdk/timeseries/_moving_window.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ def __len__(self) -> int:
313313
Returns:
314314
The size of the `MovingWindow`.
315315
"""
316-
return len(self._buffer)
316+
return self._buffer.count_valid()
317317

318318
@overload
319319
def __getitem__(self, key: SupportsIndex) -> float:
@@ -362,7 +362,7 @@ def __getitem__(self, key: SupportsIndex | datetime | slice) -> float | ArrayLik
362362
A float if the key is a number or a timestamp.
363363
an numpy array if the key is a slice.
364364
"""
365-
if len(self._buffer) == 0:
365+
if self._buffer.count_valid() == 0:
366366
raise IndexError("The buffer is empty.")
367367
if isinstance(key, slice):
368368
if isinstance(key.start, int) or isinstance(key.stop, int):

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def oldest_timestamp(self) -> datetime | None:
202202
The oldest timestamp in the buffer
203203
or None if the buffer is empty.
204204
"""
205-
if len(self) == 0:
205+
if self.count_valid() == 0:
206206
return None
207207

208208
if self.is_missing(self.time_bound_oldest):
@@ -217,7 +217,7 @@ def newest_timestamp(self) -> datetime | None:
217217
Returns:
218218
The newest timestamp in the buffer.
219219
"""
220-
if len(self) == 0:
220+
if self.count_valid() == 0:
221221
return None
222222

223223
return self.time_bound_newest

tests/timeseries/test_ringbuffer.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -209,69 +209,69 @@ def test_gaps() -> None: # pylint: disable=too-many-statements
209209
buffer = OrderedRingBuffer([0.0] * 5, ONE_SECOND)
210210
assert buffer.oldest_timestamp is None
211211
assert buffer.newest_timestamp is None
212-
assert len(buffer) == 0
212+
assert buffer.count_valid() == 0
213213
assert len(buffer.gaps) == 0
214214

215215
buffer.update(Sample(dt(0), Quantity(0)))
216216
assert buffer.oldest_timestamp == dt(0)
217217
assert buffer.newest_timestamp == dt(0)
218-
assert len(buffer) == 1
218+
assert buffer.count_valid() == 1
219219
assert len(buffer.gaps) == 1
220220

221221
buffer.update(Sample(dt(6), Quantity(0)))
222222
assert buffer.oldest_timestamp == dt(6)
223223
assert buffer.newest_timestamp == dt(6)
224-
assert len(buffer) == 1
224+
assert buffer.count_valid() == 1
225225
assert len(buffer.gaps) == 1
226226

227227
buffer.update(Sample(dt(2), Quantity(2)))
228228
buffer.update(Sample(dt(3), Quantity(3)))
229229
buffer.update(Sample(dt(4), Quantity(4)))
230230
assert buffer.oldest_timestamp == dt(2)
231231
assert buffer.newest_timestamp == dt(6)
232-
assert len(buffer) == 4
232+
assert buffer.count_valid() == 4
233233
assert len(buffer.gaps) == 1
234234

235235
buffer.update(Sample(dt(3), None))
236236
assert buffer.oldest_timestamp == dt(2)
237237
assert buffer.newest_timestamp == dt(6)
238-
assert len(buffer) == 3
238+
assert buffer.count_valid() == 3
239239
assert len(buffer.gaps) == 2
240240

241241
buffer.update(Sample(dt(3), Quantity(np.nan)))
242242
assert buffer.oldest_timestamp == dt(2)
243243
assert buffer.newest_timestamp == dt(6)
244-
assert len(buffer) == 3
244+
assert buffer.count_valid() == 3
245245
assert len(buffer.gaps) == 2
246246

247247
buffer.update(Sample(dt(2), Quantity(np.nan)))
248248
assert buffer.oldest_timestamp == dt(4)
249249
assert buffer.newest_timestamp == dt(6)
250-
assert len(buffer) == 2
250+
assert buffer.count_valid() == 2
251251
assert len(buffer.gaps) == 2
252252

253253
buffer.update(Sample(dt(3), Quantity(3)))
254254
assert buffer.oldest_timestamp == dt(3)
255255
assert buffer.newest_timestamp == dt(6)
256-
assert len(buffer) == 3
256+
assert buffer.count_valid() == 3
257257
assert len(buffer.gaps) == 2
258258

259259
buffer.update(Sample(dt(2), Quantity(2)))
260260
assert buffer.oldest_timestamp == dt(2)
261261
assert buffer.newest_timestamp == dt(6)
262-
assert len(buffer) == 4
262+
assert buffer.count_valid() == 4
263263
assert len(buffer.gaps) == 1
264264

265265
buffer.update(Sample(dt(5), Quantity(5)))
266266
assert buffer.oldest_timestamp == dt(2)
267267
assert buffer.newest_timestamp == dt(6)
268-
assert len(buffer) == 5
268+
assert buffer.count_valid() == 5
269269
assert len(buffer.gaps) == 0
270270

271271
buffer.update(Sample(dt(99), None))
272272
assert buffer.oldest_timestamp == dt(95) # bug: should be None
273273
assert buffer.newest_timestamp == dt(99) # bug: should be None
274-
assert len(buffer) == 4 # bug: should be 0 (whole range gap)
274+
assert buffer.count_valid() == 4 # bug: should be 0 (whole range gap)
275275
assert len(buffer.gaps) == 1
276276

277277

@@ -369,7 +369,7 @@ def test_len_ringbuffer_samples_fit_buffer_size() -> None:
369369
timestamp = start_ts + timedelta(seconds=index)
370370
buffer.update(Sample(timestamp, Quantity(float(sample_value))))
371371

372-
assert len(buffer) == len(test_samples)
372+
assert buffer.count_valid() == len(test_samples)
373373

374374

375375
def test_len_with_gaps() -> None:
@@ -384,7 +384,7 @@ def test_len_with_gaps() -> None:
384384
buffer.update(
385385
Sample(datetime(2, 2, 2, 0, 0, i, tzinfo=timezone.utc), Quantity(float(i)))
386386
)
387-
assert len(buffer) == i + 1
387+
assert buffer.count_valid() == i + 1
388388

389389

390390
def test_len_ringbuffer_samples_overwrite_buffer() -> None:
@@ -412,7 +412,7 @@ def test_len_ringbuffer_samples_overwrite_buffer() -> None:
412412
timestamp = start_ts + timedelta(seconds=index)
413413
buffer.update(Sample(timestamp, Quantity(float(sample_value))))
414414

415-
assert len(buffer) == half_buffer_size
415+
assert buffer.count_valid() == half_buffer_size
416416

417417

418418
def test_ringbuffer_empty_buffer() -> None:

0 commit comments

Comments
 (0)