-
-
Notifications
You must be signed in to change notification settings - Fork 346
Open
Labels
V2Affects the v2 branchAffects the v2 branchbugPotential issues with the zarr-python libraryPotential issues with the zarr-python library
Description
Zarr version
v2.18.2
Numcodecs version
v0.13.0
Python Version
3.11
Operating System
Mac
Installation
pip :)
Description
When using an object (specifically a pydantic model) as the fill_value
in full, the metadata encoding step fails to encode (pickle) the model. It is instead passed unencoded to the JSON codec which chokes.
Steps to reproduce
from pydantic import BaseModel
import zarr
from numcodecs import Pickle
class MyModel(BaseModel):
x: int
array = zarr.full(
shape=(1,2,3),
fill_value=MyModel(x=1),
dtype=object,
object_codec=Pickle()
)
Additional output
Failure happens in encode_array_metadata
where it tries to call json_dumps
on
{
'zarr_format': 2,
'shape': (10, 10, 10),
'chunks': (10, 10, 10),
'dtype': '|O',
'compressor': {'id': 'blosc', 'cname': 'lz4', 'clevel': 5, 'shuffle': 1, 'blocksize': 0},
'fill_value': MyModel(x=1),
'order': 'C',
'filters': [{'id': 'pickle', 'protocol': 5}]
}
which, of course, fails :(
(sorry some of my values are different in the meta dict and the example, running this from my tests atm but can reproduce just by running the example)
Metadata
Metadata
Assignees
Labels
V2Affects the v2 branchAffects the v2 branchbugPotential issues with the zarr-python libraryPotential issues with the zarr-python library