1import numpy as np
2import os
5SOURCE_FILE = "zlib/__init__.py"
8def _load_long_description():
9 current_dir = os.path.dirname(os.path.abspath(__file__))
10 md_path = os.path.join(current_dir, "zlib.md")
11 with open(md_path, "r", encoding="utf-8") as f:
12 return f.read()
15LONG_DESCRIPTION = _load_long_description()
18def zlib_encode(x: np.ndarray, level: int) -> bytes:
19 import zlib
21 buf = x.tobytes()
22 compressed = zlib.compress(buf, level=level)
23 return compressed
26def zlib_decode(x: bytes, dtype: str, shape: tuple) -> np.ndarray:
27 import zlib
29 buf = zlib.decompress(x)
30 y = np.frombuffer(buf, dtype=dtype)
31 return y.reshape(shape)
34def zlib_delta_encode(x: np.ndarray, level: int) -> bytes:
35 import zlib
37 assert x.ndim == 1
38 y = np.diff(x)
39 y = np.insert(y, 0, x[0])
40 buf = y.tobytes()
41 compressed = zlib.compress(buf, level=level)
42 return compressed
45def zlib_delta_decode(x: bytes, dtype: str, shape: tuple) -> np.ndarray:
46 import zlib
48 assert len(shape) == 1
50 buf = zlib.decompress(x)
51 y = np.frombuffer(buf, dtype=dtype)
52 return np.cumsum(y)
55algorithms = [
56 {
57 "name": "zlib-1",
58 "version": "1",
59 "encode": lambda x: zlib_encode(x, level=1),
60 "decode": lambda x, dtype, shape: zlib_decode(x, dtype, shape),
61 "description": "Zlib DEFLATE compression at level 1 (fastest).",
62 "tags": ["zlib"],
63 "source_file": SOURCE_FILE,
64 "long_description": LONG_DESCRIPTION,
65 },
66 {
67 "name": "zlib-3",
68 "version": "1",
69 "encode": lambda x: zlib_encode(x, level=3),
70 "decode": lambda x, dtype, shape: zlib_decode(x, dtype, shape),
71 "description": "Zlib DEFLATE compression at level 3.",
72 "tags": ["zlib"],
73 "source_file": SOURCE_FILE,
74 "long_description": LONG_DESCRIPTION,
75 },
76 {
77 "name": "zlib-5",
78 "version": "1",
79 "encode": lambda x: zlib_encode(x, level=5),
80 "decode": lambda x, dtype, shape: zlib_decode(x, dtype, shape),
81 "description": "Zlib DEFLATE compression at level 5 (medium).",
82 "tags": ["zlib"],
83 "source_file": SOURCE_FILE,
84 "long_description": LONG_DESCRIPTION,
85 },
86 {
87 "name": "zlib-7",
88 "version": "1",
89 "encode": lambda x: zlib_encode(x, level=7),
90 "decode": lambda x, dtype, shape: zlib_decode(x, dtype, shape),
91 "description": "Zlib DEFLATE compression at level 7.",
92 "tags": ["zlib"],
93 "source_file": SOURCE_FILE,
94 "long_description": LONG_DESCRIPTION,
95 },
96 {
97 "name": "zlib-9",
98 "version": "1",
99 "encode": lambda x: zlib_encode(x, level=9),
100 "decode": lambda x, dtype, shape: zlib_decode(x, dtype, shape),
101 "description": "Zlib DEFLATE compression at maximum level 9.",
102 "tags": ["zlib"],
103 "source_file": SOURCE_FILE,
104 "long_description": LONG_DESCRIPTION,
105 },
106 {
107 "name": "zlib-9-delta",
108 "version": "1",
109 "encode": lambda x: zlib_delta_encode(x, level=9),
110 "decode": lambda x, dtype, shape: zlib_delta_decode(x, dtype, shape),
111 "description": "Zlib DEFLATE compression at level 9 with delta encoding.",
112 "tags": ["zlib", "delta_encoding", "1d"],
113 "source_file": SOURCE_FILE,
114 "long_description": LONG_DESCRIPTION,
115 },
116]