Skip to content

Commit d930fe2

Browse files
committed
handle some v3 stuff
1 parent 40bb5a5 commit d930fe2

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

zarr/meta.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,24 @@ def decode_array_metadata(s):
9797

9898

9999
def encode_array_metadata(meta):
100+
dtype = meta["dtype"]
101+
sdshape = ()
102+
if dtype.subdtype is not None:
103+
dtype, sdshape = dtype.subdtype
104+
meta = dict(
105+
zarr_format=ZARR_FORMAT,
106+
shape=meta["shape"] + sdshape,
107+
chunks=meta["chunks"],
108+
dtype=encode_dtype(dtype),
109+
compressor=meta["compressor"],
110+
fill_value=encode_fill_value(meta["fill_value"], dtype),
111+
order=meta["order"],
112+
filters=meta["filters"],
113+
)
114+
return json_dumps(meta)
115+
116+
117+
def encode_array_metadata_v3(meta):
100118
dtype = meta['dtype']
101119
sdshape = ()
102120
if dtype.subdtype is not None:
@@ -105,11 +123,10 @@ def encode_array_metadata(meta):
105123
zarr_format=ZARR_FORMAT,
106124
shape=meta['shape'] + sdshape,
107125
chunks=meta['chunks'],
108-
dtype=encode_dtype(dtype),
126+
dtype=encode_dtype_v3(dtype),
109127
compressor=meta['compressor'],
110128
fill_value=encode_fill_value(meta['fill_value'], dtype),
111129
order=meta['order'],
112-
filters=meta['filters'],
113130
)
114131
return json_dumps(meta)
115132

zarr/storage.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@
4141
from zarr.errors import (MetadataError, err_bad_compressor, err_contains_array,
4242
err_contains_group, err_fspath_exists_notdir,
4343
err_read_only)
44-
from zarr.meta import encode_array_metadata, encode_group_metadata
44+
from zarr.meta import (
45+
encode_array_metadata,
46+
encode_group_metadata,
47+
encode_array_metadata_v3,
48+
)
4549
from zarr.util import (buffer_size, json_loads, nolock, normalize_chunks,
4650
normalize_dtype, normalize_fill_value, normalize_order,
4751
normalize_shape, normalize_storage_path)
@@ -438,7 +442,11 @@ def _init_array_metadata(store, shape, chunks=None, dtype=None, compressor='defa
438442
compressor=compressor_config, fill_value=fill_value,
439443
order=order, filters=filters_config)
440444
key = _path_to_prefix(path) + array_meta_key
441-
store[key] = encode_array_metadata(meta)
445+
446+
if getattr(store, "_store_version", 3) == 3:
447+
store[key] = encode_array_metadata_v3(meta)
448+
else:
449+
store[key] = encode_array_metadata(meta)
442450

443451

444452
# backwards compatibility

0 commit comments

Comments
 (0)