@@ -168,7 +168,7 @@ def update(self, sample: Sample[QuantityT]) -> None:
168168 value = sample .value .base_value
169169 else :
170170 value = np .nan
171- self ._buffer [self .datetime_to_index (timestamp )] = value
171+ self ._buffer [self .to_internal_index (timestamp )] = value
172172
173173 self ._update_gaps (timestamp , prev_newest , not self .has_value (sample ))
174174
@@ -221,10 +221,12 @@ def newest_timestamp(self) -> datetime | None:
221221
222222 return self .time_bound_newest
223223
224- def datetime_to_index (
224+ def to_internal_index (
225225 self , timestamp : datetime , allow_outside_range : bool = False
226226 ) -> int :
227- """Convert the given timestamp to an index.
227+ """Convert the given timestamp to the position in the buffer.
228+
229+ !!! Note: This method is meant for advanced use cases and should not generally be used.
228230
229231 Args:
230232 timestamp: Timestamp to convert.
@@ -258,10 +260,10 @@ def datetime_to_index(
258260 def window (
259261 self , start : datetime , end : datetime , * , force_copy : bool = True
260262 ) -> FloatArray :
261- """Request a view on the data between start timestamp and end timestamp.
263+ """Request a copy or view on the data between start timestamp and end timestamp.
262264
263- If the data is not used immediately it could be overwritten.
264265 Always request a copy if you keep the data around for longer.
266+ Otherwise, if the data is not used immediately it could be overwritten.
265267
266268 Will return a copy in the following cases:
267269 * The requested time period is crossing the start/end of the buffer.
@@ -294,12 +296,10 @@ def window(
294296 if start == end :
295297 return np .array ([]) if isinstance (self ._buffer , np .ndarray ) else []
296298
297- start_index = self .datetime_to_index (start )
298- end_index = self .datetime_to_index (end )
299+ start_pos = self .to_internal_index (start )
300+ end_pos = self .to_internal_index (end )
299301
300- return self ._wrapped_buffer_window (
301- self ._buffer , start_index , end_index , force_copy
302- )
302+ return self ._wrapped_buffer_window (self ._buffer , start_pos , end_pos , force_copy )
303303
304304 @staticmethod
305305 def _wrapped_buffer_window (
@@ -562,10 +562,10 @@ def count_valid(self) -> int:
562562 ),
563563 )
564564
565- start_index = self .datetime_to_index (self ._datetime_oldest )
566- end_index = self .datetime_to_index (self ._datetime_newest )
565+ start_pos = self .to_internal_index (self ._datetime_oldest )
566+ end_pos = self .to_internal_index (self ._datetime_newest )
567567
568- if end_index < start_index :
569- return len (self ._buffer ) - start_index + end_index + 1 - sum_missing_entries
568+ if end_pos < start_pos :
569+ return len (self ._buffer ) - start_pos + end_pos + 1 - sum_missing_entries
570570
571- return end_index + 1 - start_index - sum_missing_entries
571+ return end_pos + 1 - start_pos - sum_missing_entries
0 commit comments