@@ -79,14 +79,14 @@ def _determine_zarr_chunks(enc_chunks, var_chunks, ndim):
79
79
if var_chunks and enc_chunks is None :
80
80
if any (len (set (chunks [:- 1 ])) > 1 for chunks in var_chunks ):
81
81
raise ValueError (
82
- "Zarr requires uniform chunk sizes excpet for final chunk."
83
- " Variable %r has incompatible chunks . Consider "
82
+ "Zarr requires uniform chunk sizes except for final chunk."
83
+ " Variable dask chunks %r are incompatible. Consider "
84
84
"rechunking using `chunk()`." % (var_chunks ,))
85
85
if any ((chunks [0 ] < chunks [- 1 ]) for chunks in var_chunks ):
86
86
raise ValueError (
87
- "Final chunk of Zarr array must be smaller than first. "
88
- "Variable %r has incompatible chunks. Consider rechunking "
89
- "using `chunk()`." % var_chunks )
87
+ "Final chunk of Zarr array must be the same size or smaller "
88
+ "than the first. Variable Dask chunks %r are incompatible. "
89
+ "Consider rechunking using `chunk()`." % var_chunks )
90
90
# return the first chunk for each dimension
91
91
return tuple (chunk [0 ] for chunk in var_chunks )
92
92
@@ -126,14 +126,21 @@ def _determine_zarr_chunks(enc_chunks, var_chunks, ndim):
126
126
# threads
127
127
if var_chunks and enc_chunks_tuple :
128
128
for zchunk , dchunks in zip (enc_chunks_tuple , var_chunks ):
129
- for dchunk in dchunks :
129
+ for dchunk in dchunks [: - 1 ] :
130
130
if dchunk % zchunk :
131
131
raise NotImplementedError (
132
132
"Specified zarr chunks %r would overlap multiple dask "
133
133
"chunks %r. This is not implemented in xarray yet. "
134
134
" Consider rechunking the data using "
135
135
"`chunk()` or specifying different chunks in encoding."
136
136
% (enc_chunks_tuple , var_chunks ))
137
+ if dchunks [- 1 ] > zchunk :
138
+ raise ValueError (
139
+ "Final chunk of Zarr array must be the same size or "
140
+ "smaller than the first. The specified Zarr chunk "
141
+ "encoding is %r, but %r in variable Dask chunks %r is "
142
+ "incompatible. Consider rechunking using `chunk()`."
143
+ % (enc_chunks_tuple , dchunks , var_chunks ))
137
144
return enc_chunks_tuple
138
145
139
146
raise AssertionError (
0 commit comments