From e0dee3cf98f93521b2a8d747d27ca976f8780cb2 Mon Sep 17 00:00:00 2001 From: Norman Rzepka Date: Mon, 24 Jun 2024 15:44:49 +0200 Subject: [PATCH] adds wrapper codecs for the v2 codec pipeline --- numcodecs/tests/test_zstd.py | 7 +++++++ numcodecs/zstd.pyx | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/numcodecs/tests/test_zstd.py b/numcodecs/tests/test_zstd.py index ccd7f135..712e63ec 100644 --- a/numcodecs/tests/test_zstd.py +++ b/numcodecs/tests/test_zstd.py @@ -86,3 +86,10 @@ def test_checksum(): assert len(Zstd(level=0, checksum=False).encode(data)) + 4 == len( Zstd(level=0, checksum=True).encode(data) ) + + +def test_native_functions(): + # Note, these assertions might need to be changed for new versions of zstd + assert Zstd.default_level == 3 + assert Zstd.min_level == -131072 + assert Zstd.max_level == 22 diff --git a/numcodecs/zstd.pyx b/numcodecs/zstd.pyx index 0acd8693..6f3a6b02 100644 --- a/numcodecs/zstd.pyx +++ b/numcodecs/zstd.pyx @@ -48,7 +48,9 @@ cdef extern from "zstd.h": unsigned long long ZSTD_getFrameContentSize(const void* src, size_t srcSize) nogil + int ZSTD_minCLevel() nogil int ZSTD_maxCLevel() nogil + int ZSTD_defaultCLevel() nogil size_t ZSTD_compressBound(size_t srcSize) nogil @@ -255,3 +257,18 @@ class Zstd(Codec): (type(self).__name__, self.level) return r + + @classmethod + @property + def default_level(cls): + return ZSTD_defaultCLevel() + + @classmethod + @property + def min_level(cls): + return ZSTD_minCLevel() + + @classmethod + @property + def max_level(cls): + return ZSTD_maxCLevel()