File tree Expand file tree Collapse file tree 1 file changed +37
-1
lines changed Expand file tree Collapse file tree 1 file changed +37
-1
lines changed Original file line number Diff line number Diff line change 12
12
ZARR_FORMAT = 2
13
13
ZARR_FORMAT_v3 = "3"
14
14
15
+ _v3_core_type = {
16
+ "bool" ,
17
+ "i1" ,
18
+ "<i2" ,
19
+ "<i4" ,
20
+ "<i8" ,
21
+ ">i2" ,
22
+ ">i4" ,
23
+ ">i8" ,
24
+ "u1" ,
25
+ "<u2" ,
26
+ "<u4" ,
27
+ "<u8" ,
28
+ "<f2" ,
29
+ "<f4" ,
30
+ "<f8" ,
31
+ ">f2" ,
32
+ ">f4" ,
33
+ ">f8" ,
34
+ }
35
+
15
36
16
37
def parse_metadata (s ):
17
38
@@ -34,7 +55,7 @@ def decode_array_metadata_v3(s):
34
55
35
56
# check metadata format
36
57
# extract array metadata fields
37
- dtype = decode_dtype (meta ["data_type" ])
58
+ dtype = decode_dtype_v3 (meta ["data_type" ])
38
59
fill_value = decode_fill_value (meta ["fill_value" ], dtype )
39
60
meta = dict (
40
61
shape = tuple (meta ["shape" ]),
@@ -46,6 +67,7 @@ def decode_array_metadata_v3(s):
46
67
)
47
68
return meta
48
69
70
+
49
71
def decode_array_metadata (s ):
50
72
meta = parse_metadata (s )
51
73
@@ -92,6 +114,14 @@ def encode_array_metadata(meta):
92
114
return json_dumps (meta )
93
115
94
116
117
+ def encode_dtype_v3 (d : np .dtype ) -> str :
118
+ s = encode_dtype (d )
119
+ if s == "|b1" :
120
+ return "bool"
121
+ assert s in _v3_core_type
122
+ return s
123
+
124
+
95
125
def encode_dtype (d ):
96
126
if d .fields is None :
97
127
return d .str
@@ -112,9 +142,15 @@ def decode_dtype(d):
112
142
return np .dtype (d )
113
143
114
144
145
+ def decode_dtype_v3 (d ):
146
+ assert d in _v3_core_type
147
+ return np .dtype (d )
148
+
149
+
115
150
def decode_group_metadata_v3 (s ):
116
151
return json .loads (s )
117
152
153
+
118
154
def decode_group_metadata (s ):
119
155
meta = parse_metadata (s )
120
156
You can’t perform that action at this time.
0 commit comments