Skip to content

Commit deb5f2d

Browse files
Define datetime min and max as constants
Change the way the markers are represented in RingBuffer so that `replace()` is not called every time the markers are assigned or compared to. Signed-off-by: Daniel Zullo <[email protected]>
1 parent 16945e4 commit deb5f2d

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/frequenz/sdk/timeseries/_ringbuffer.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ def contains(self, timestamp: datetime) -> bool:
4646
class OrderedRingBuffer(Generic[FloatArray]):
4747
"""Time aware ringbuffer that keeps its entries sorted by time."""
4848

49+
_DATETIME_MIN = datetime.min.replace(tzinfo=timezone.utc)
50+
_DATETIME_MAX = datetime.max.replace(tzinfo=timezone.utc)
51+
4952
def __init__(
5053
self,
5154
buffer: FloatArray,
@@ -76,8 +79,8 @@ def __init__(
7679
self._time_index_alignment: datetime = time_index_alignment
7780

7881
self._gaps: list[Gap] = []
79-
self._datetime_newest: datetime = datetime.min.replace(tzinfo=timezone.utc)
80-
self._datetime_oldest: datetime = datetime.max.replace(tzinfo=timezone.utc)
82+
self._datetime_newest: datetime = self._DATETIME_MIN
83+
self._datetime_oldest: datetime = self._DATETIME_MAX
8184
self._time_range: timedelta = (len(self._buffer) - 1) * sampling_period
8285

8386
@property
@@ -132,7 +135,7 @@ def update(self, sample: Sample) -> None:
132135
# Don't add outdated entries
133136
if (
134137
timestamp < self._datetime_oldest
135-
and self._datetime_oldest != datetime.max.replace(tzinfo=timezone.utc)
138+
and self._datetime_oldest != self._DATETIME_MAX
136139
):
137140
raise IndexError(
138141
f"Timestamp {timestamp} too old (cut-off is at {self._datetime_oldest})."
@@ -488,7 +491,7 @@ def __len__(self) -> int:
488491
Returns:
489492
The length.
490493
"""
491-
if self._datetime_newest == datetime.min.replace(tzinfo=timezone.utc):
494+
if self._datetime_newest == self._DATETIME_MIN:
492495
return 0
493496

494497
start_index = self.datetime_to_index(self._datetime_oldest)

0 commit comments

Comments
 (0)