Skip to content

Commit 22d7f00

Browse files
committed
(fix): add check for typesize<1
1 parent 04f775f commit 22d7f00

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

numcodecs/blosc.pyx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,9 @@ def compress(source, char* cname, int clevel, int shuffle=SHUFFLE,
279279
source_buffer = Buffer(source, PyBUF_ANY_CONTIGUOUS)
280280
source_ptr = source_buffer.ptr
281281
nbytes = source_buffer.nbytes
282-
if typesize is not None:
282+
if isinstance(typesize, int):
283+
if typesize < 1:
284+
raise ValueError(f"Cannot use typesize {typesize} less than 1.")
283285
itemsize = typesize
284286
else:
285287
itemsize = source_buffer.itemsize
@@ -572,6 +574,8 @@ class Blosc(Codec):
572574
max_buffer_size = 2**31 - 1
573575

574576
def __init__(self, cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=AUTOBLOCKS, typesize=None):
577+
if isinstance(typesize, int) and typesize < 1:
578+
raise ValueError(f"Cannot use typesize {typesize} less than 1.")
575579
self.cname = cname
576580
if isinstance(cname, str):
577581
self._cname_bytes = cname.encode('ascii')

numcodecs/tests/test_blosc.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,8 @@ def test_typesize_explicit():
285285
# third byte encodes the `typesize`
286286
assert encoded_without_itemsize[3] == 1 # inferred from bytes i.e., 1
287287
assert encoded_with_itemsize[3] == itemsize # given as a constructor argument
288+
289+
290+
def test_typesize_less_than_1():
291+
with pytest.raises(ValueError, match=r"Cannot use typesize"):
292+
Blosc(shuffle=Blosc.SHUFFLE, typesize=0)

0 commit comments

Comments
 (0)