Open
Description
This code runs without any problems with zarr2, but give the following error when running with zarr3:
import pandas as pd
import numpy as np
import xarray as xr
from numcodecs.blosc import Blosc
ds = xr.Dataset(
{"foo": (("x", "y"), np.random.rand(4, 5))},
coords={
"x": [10, 20, 30, 40],
"y": pd.date_range("2000-01-01", periods=5),
"z": ("x", list("abcd")),
},
)
tmp_path = 'tmp.zarr'
# this works
ds.to_zarr(tmp_path, mode="w")
print('Saved to tmp.zarr')
# this does not work
compressor = Blosc(cname="zstd", clevel=3, shuffle=2)
ds.to_zarr(tmp_path, encoding={"foo": {"compressor": compressor}}, mode="w")
print('Saved to tmp.zarr')
The error message is: TypeError: Expected a BytesBytesCodec. Got <class 'numcodecs.blosc.Blosc'> instead.
The same error occurs in the documentation: https://docs.xarray.dev/en/stable/user-guide/io.html#zarr-compressors-and-filters