Skip to content

Commit c565ddf

Browse files
Ringbuffer: Moved files into a package (#329)
Signed-off-by: Mathias L. Baumann <[email protected]>
2 parents 1dcc75d + 7980e08 commit c565ddf

File tree

5 files changed

+24
-17
lines changed

5 files changed

+24
-17
lines changed

benchmarks/timeseries/ringbuffer_serialization.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313

1414
import numpy as np
1515

16-
import frequenz.sdk.timeseries._ringbuffer_serialization as io
16+
import frequenz.sdk.timeseries._ringbuffer as rb
1717
from frequenz.sdk.timeseries import Sample
18-
from frequenz.sdk.timeseries._ringbuffer import OrderedRingBuffer
1918

2019
FILE_NAME = "ringbuffer.pkl"
2120
FIVE_MINUTES = timedelta(minutes=5)
@@ -38,7 +37,7 @@ def delete_files_with_prefix(prefix: str) -> None:
3837

3938

4039
def benchmark_serialization(
41-
ringbuffer: OrderedRingBuffer[Any], iterations: int
40+
ringbuffer: rb.OrderedRingBuffer[Any], iterations: int
4241
) -> float:
4342
"""Benchmark the given buffer `iteration` times.
4443
@@ -49,8 +48,8 @@ def benchmark_serialization(
4948
total = 0.0
5049
for _ in range(iterations):
5150
start = time.time()
52-
io.dump(ringbuffer, FILE_NAME)
53-
io.load(FILE_NAME)
51+
rb.dump(ringbuffer, FILE_NAME)
52+
rb.load(FILE_NAME)
5453
end = time.time()
5554
total += end - start
5655
delete_files_with_prefix(FILE_NAME)
@@ -60,7 +59,7 @@ def benchmark_serialization(
6059

6160
def main() -> None:
6261
"""Run Benchmark."""
63-
ringbuffer = OrderedRingBuffer(
62+
ringbuffer = rb.OrderedRingBuffer(
6463
np.arange(0, SIZE, dtype=np.float64), timedelta(minutes=5)
6564
)
6665

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# License: MIT
2+
# Copyright © 2023 Frequenz Energy-as-a-Service GmbH
3+
4+
"""Ringbuffer implementation & utilties."""
5+
6+
from .buffer import Gap, OrderedRingBuffer
7+
from .serialization import dump, load
8+
9+
__all__ = ["OrderedRingBuffer", "Gap", "load", "dump"]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import numpy as np
1515
import numpy.typing as npt
1616

17-
from . import Sample
17+
from .. import Sample
1818

1919
FloatArray = TypeVar("FloatArray", List[float], npt.NDArray[np.float64])
2020

src/frequenz/sdk/timeseries/_ringbuffer_serialization.py renamed to src/frequenz/sdk/timeseries/_ringbuffer/serialization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import pickle
1010
from os.path import exists
1111

12-
from ._ringbuffer import FloatArray, OrderedRingBuffer
12+
from .buffer import FloatArray, OrderedRingBuffer
1313

1414
# Version of the latest file dumping/loading format
1515
FILE_FORMAT_VERSION: int = 1

tests/timeseries/test_ringbuffer_serialization.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
import numpy as np
1313
import pytest
1414

15-
import frequenz.sdk.timeseries._ringbuffer_serialization as io
15+
import frequenz.sdk.timeseries._ringbuffer as rb
1616
from frequenz.sdk.timeseries import Sample
17-
from frequenz.sdk.timeseries._ringbuffer import OrderedRingBuffer
1817

1918
FIVE_MINUTES = timedelta(minutes=5)
2019
_29_DAYS = 60 * 24 * 29
2120
ONE_MINUTE = timedelta(minutes=1)
2221

2322

24-
def load_dump_test(dumped: OrderedRingBuffer[Any], path: str) -> None:
23+
def load_dump_test(dumped: rb.OrderedRingBuffer[Any], path: str) -> None:
2524
"""Test ordered ring buffer."""
2625
size = dumped.maxlen
2726

@@ -43,11 +42,11 @@ def load_dump_test(dumped: OrderedRingBuffer[Any], path: str) -> None:
4342
)
4443
)
4544

46-
io.dump(dumped, path)
45+
rb.dump(dumped, path)
4746

4847
# Load old data
4948
# pylint: disable=protected-access
50-
loaded = io.load(path)
49+
loaded = rb.load(path)
5150
assert loaded is not None
5251

5352
np.testing.assert_equal(dumped[:], loaded[:])
@@ -73,7 +72,7 @@ def test_load_dump_short(tmp_path_factory: pytest.TempPathFactory) -> None:
7372
tmpdir = tmp_path_factory.mktemp("load_dump")
7473

7574
load_dump_test(
76-
OrderedRingBuffer(
75+
rb.OrderedRingBuffer(
7776
[0.0] * int(24 * FIVE_MINUTES.total_seconds()),
7877
FIVE_MINUTES,
7978
datetime(2, 2, 2, tzinfo=timezone.utc),
@@ -82,7 +81,7 @@ def test_load_dump_short(tmp_path_factory: pytest.TempPathFactory) -> None:
8281
)
8382

8483
load_dump_test(
85-
OrderedRingBuffer(
84+
rb.OrderedRingBuffer(
8685
np.empty(shape=(24 * int(FIVE_MINUTES.total_seconds()),), dtype=np.float64),
8786
FIVE_MINUTES,
8887
datetime(2, 2, 2, tzinfo=timezone.utc),
@@ -96,7 +95,7 @@ def test_load_dump(tmp_path_factory: pytest.TempPathFactory) -> None:
9695
tmpdir = tmp_path_factory.mktemp("load_dump")
9796

9897
load_dump_test(
99-
OrderedRingBuffer(
98+
rb.OrderedRingBuffer(
10099
[0.0] * _29_DAYS,
101100
ONE_MINUTE,
102101
datetime(2, 2, 2, tzinfo=timezone.utc),
@@ -105,7 +104,7 @@ def test_load_dump(tmp_path_factory: pytest.TempPathFactory) -> None:
105104
)
106105

107106
load_dump_test(
108-
OrderedRingBuffer(
107+
rb.OrderedRingBuffer(
109108
np.empty(shape=(_29_DAYS,), dtype=np.float64),
110109
ONE_MINUTE,
111110
datetime(2, 2, 2, tzinfo=timezone.utc),

0 commit comments

Comments
 (0)