@@ -168,7 +168,7 @@ def update(self, sample: Sample[QuantityT]) -> None:
168
168
value = sample .value .base_value
169
169
else :
170
170
value = np .nan
171
- self ._buffer [self .datetime_to_index (timestamp )] = value
171
+ self ._buffer [self .to_internal_index (timestamp )] = value
172
172
173
173
self ._update_gaps (timestamp , prev_newest , not self .has_value (sample ))
174
174
@@ -221,10 +221,12 @@ def newest_timestamp(self) -> datetime | None:
221
221
222
222
return self .time_bound_newest
223
223
224
- def datetime_to_index (
224
+ def to_internal_index (
225
225
self , timestamp : datetime , allow_outside_range : bool = False
226
226
) -> 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.
228
230
229
231
Args:
230
232
timestamp: Timestamp to convert.
@@ -258,10 +260,10 @@ def datetime_to_index(
258
260
def window (
259
261
self , start : datetime , end : datetime , * , force_copy : bool = True
260
262
) -> 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.
262
264
263
- If the data is not used immediately it could be overwritten.
264
265
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.
265
267
266
268
Will return a copy in the following cases:
267
269
* The requested time period is crossing the start/end of the buffer.
@@ -294,12 +296,10 @@ def window(
294
296
if start == end :
295
297
return np .array ([]) if isinstance (self ._buffer , np .ndarray ) else []
296
298
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 )
299
301
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 )
303
303
304
304
@staticmethod
305
305
def _wrapped_buffer_window (
@@ -562,10 +562,10 @@ def count_valid(self) -> int:
562
562
),
563
563
)
564
564
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 )
567
567
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
570
570
571
- return end_index + 1 - start_index - sum_missing_entries
571
+ return end_pos + 1 - start_pos - sum_missing_entries
0 commit comments