From eee007937b94d04a5eabb1cef4f5aee58cc51b01 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Thu, 12 Feb 2026 19:42:11 +0100 Subject: [PATCH 1/3] remove isinstance check inside bytescodec --- src/zarr/codecs/bytes.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/zarr/codecs/bytes.py b/src/zarr/codecs/bytes.py index 39c26bd4a8..96d355b240 100644 --- a/src/zarr/codecs/bytes.py +++ b/src/zarr/codecs/bytes.py @@ -72,7 +72,6 @@ async def _decode_single( chunk_bytes: Buffer, chunk_spec: ArraySpec, ) -> NDBuffer: - assert isinstance(chunk_bytes, Buffer) # TODO: remove endianness enum in favor of literal union endian_str = self.endian.value if self.endian is not None else None if isinstance(chunk_spec.dtype, HasEndianness): @@ -80,12 +79,8 @@ async def _decode_single( else: dtype = chunk_spec.dtype.to_native_dtype() as_array_like = chunk_bytes.as_array_like() - if isinstance(as_array_like, NDArrayLike): - as_nd_array_like = as_array_like - else: - as_nd_array_like = np.asanyarray(as_array_like) chunk_array = chunk_spec.prototype.nd_buffer.from_ndarray_like( - as_nd_array_like.view(dtype=dtype) + as_array_like.view(dtype=dtype) ) # ensure correct chunk shape From 6722343ea16a95a6e0c915fd9322f6d34a3ba34c Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Thu, 12 Feb 2026 19:43:38 +0100 Subject: [PATCH 2/3] remove isinstance check inside bytescodec --- src/zarr/codecs/bytes.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/zarr/codecs/bytes.py b/src/zarr/codecs/bytes.py index 96d355b240..1fbdeef497 100644 --- a/src/zarr/codecs/bytes.py +++ b/src/zarr/codecs/bytes.py @@ -5,10 +5,8 @@ from enum import Enum from typing import TYPE_CHECKING -import numpy as np - from zarr.abc.codec import ArrayBytesCodec -from zarr.core.buffer import Buffer, NDArrayLike, NDBuffer +from zarr.core.buffer import Buffer, NDBuffer from zarr.core.common import JSON, parse_enum, parse_named_configuration from zarr.core.dtype.common import HasEndianness @@ -80,7 +78,7 @@ async def _decode_single( dtype = chunk_spec.dtype.to_native_dtype() as_array_like = chunk_bytes.as_array_like() chunk_array = chunk_spec.prototype.nd_buffer.from_ndarray_like( - as_array_like.view(dtype=dtype) + as_array_like.view(dtype=dtype) # type: ignore[attr-defined] ) # ensure correct chunk shape From 410597261dfcd4e13e396cde436448d55f069795 Mon Sep 17 00:00:00 2001 From: Davis Vann Bennett Date: Thu, 12 Feb 2026 20:36:11 +0100 Subject: [PATCH 3/3] changelog --- changes/3704.misc.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/3704.misc.md diff --git a/changes/3704.misc.md b/changes/3704.misc.md new file mode 100644 index 0000000000..d15d4924e0 --- /dev/null +++ b/changes/3704.misc.md @@ -0,0 +1 @@ +Remove an expensive `isinstance` check from the bytes codec decoding routine. \ No newline at end of file