From face6f95bc557837ee30d2ded2d4f681f77b6a81 Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Sat, 10 Jan 2026 15:11:58 +0200 Subject: [PATCH] compression utils --- haiku_rag_slim/haiku/rag/store/compression.py | 11 +++++++++++ tests/store/test_compression.py | 15 +++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 haiku_rag_slim/haiku/rag/store/compression.py create mode 100644 tests/store/test_compression.py diff --git a/haiku_rag_slim/haiku/rag/store/compression.py b/haiku_rag_slim/haiku/rag/store/compression.py new file mode 100644 index 00000000..881efb89 --- /dev/null +++ b/haiku_rag_slim/haiku/rag/store/compression.py @@ -0,0 +1,11 @@ +import gzip + + +def compress_json(json_str: str) -> bytes: + """Compress a JSON string with gzip.""" + return gzip.compress(json_str.encode("utf-8")) + + +def decompress_json(data: bytes) -> str: + """Decompress gzip-compressed data to a JSON string.""" + return gzip.decompress(data).decode("utf-8") diff --git a/tests/store/test_compression.py b/tests/store/test_compression.py new file mode 100644 index 00000000..068e756b --- /dev/null +++ b/tests/store/test_compression.py @@ -0,0 +1,15 @@ +from haiku.rag.store.compression import compress_json, decompress_json + + +class TestJsonCompression: + def test_compress_json_roundtrip(self): + json_str = '{"key": "value", "number": 42, "nested": {"a": 1}}' + compressed = compress_json(json_str) + decompressed = decompress_json(compressed) + assert decompressed == json_str + + def test_compress_json_with_unicode(self): + json_str = '{"message": "Hello, δΈ–η•Œ! 🌍"}' + compressed = compress_json(json_str) + decompressed = decompress_json(compressed) + assert decompressed == json_str