Skip to content

Commit 51fbd8f

Browse files
committed
redefine checksum codecs
1 parent 8907aa0 commit 51fbd8f

File tree

2 files changed

+33
-11
lines changed

2 files changed

+33
-11
lines changed

numcodecs/tests/test_zarr3.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@ def test_to_dict():
299299
numcodecs.zarr3.Quantize,
300300
numcodecs.zarr3.PackBits,
301301
numcodecs.zarr3.AsType,
302+
numcodecs.zarr3.CRC32,
303+
numcodecs.zarr3.CRC32C,
304+
numcodecs.zarr3.Adler32,
305+
numcodecs.zarr3.Fletcher32,
306+
numcodecs.zarr3.JenkinsLookup3,
302307
],
303308
)
304309
def test_codecs_pickleable(codec_cls):

numcodecs/zarr3.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ def __init_subclass__(cls, *, codec_name: str | None = None, **kwargs):
8484
"""To be used only when creating the actual public-facing codec class."""
8585
super().__init_subclass__(**kwargs)
8686
if codec_name is not None:
87-
cls_name = f"{CODEC_PREFIX}{codec_name}.{cls.__name__}"
88-
cls.codec_name = f"{CODEC_PREFIX}{codec_name}"
87+
namespace = codec_name
88+
89+
cls_name = f"{CODEC_PREFIX}{namespace}.{cls.__name__}"
90+
cls.codec_name = f"{CODEC_PREFIX}{namespace}"
8991
cls.__doc__ = f"""
9092
See :class:`{cls_name}` for more details and parameters.
9193
"""
@@ -332,15 +334,30 @@ def evolve_from_array_spec(self, array_spec: ArraySpec) -> AsType:
332334

333335

334336
# bytes-to-bytes checksum codecs
335-
CRC32 = _add_docstring(_make_checksum_codec("crc32", "CRC32"), "numcodecs.checksum32.CRC32")
336-
CRC32C = _add_docstring(_make_checksum_codec("crc32c", "CRC32C"), "numcodecs.checksum32.CRC32C")
337-
Adler32 = _add_docstring(_make_checksum_codec("adler32", "Adler32"), "numcodecs.checksum32.Adler32")
338-
Fletcher32 = _add_docstring(
339-
_make_checksum_codec("fletcher32", "Fletcher32"), "numcodecs.fletcher32.Fletcher32"
340-
)
341-
JenkinsLookup3 = _add_docstring(
342-
_make_checksum_codec("jenkins_lookup3", "JenkinsLookup3"), "numcodecs.checksum32.JenkinsLookup3"
343-
)
337+
class _NumcodecsChecksumCodec(_NumcodecsBytesBytesCodec):
338+
def compute_encoded_size(self, input_byte_length: int, chunk_spec: ArraySpec) -> int:
339+
return input_byte_length + 4 # pragma: no cover
340+
341+
342+
class CRC32(_NumcodecsChecksumCodec, codec_name="crc32"):
343+
pass
344+
345+
346+
class CRC32C(_NumcodecsChecksumCodec, codec_name="crc32c"):
347+
pass
348+
349+
350+
class Adler32(_NumcodecsChecksumCodec, codec_name="adler32"):
351+
pass
352+
353+
354+
class Fletcher32(_NumcodecsChecksumCodec, codec_name="fletcher32"):
355+
pass
356+
357+
358+
class JenkinsLookup3(_NumcodecsChecksumCodec, codec_name="jenkins_lookup3"):
359+
pass
360+
344361

345362
# array-to-bytes codecs
346363
PCodec = _add_docstring(_make_array_bytes_codec("pcodec", "PCodec"), "numcodecs.pcodec.PCodec")

0 commit comments

Comments
 (0)