Skip to content

Commit 4d40a25

Browse files
committed
avoid index dataarrays for simplicity.
need a solution to preserve index attrs
1 parent a0e699f commit 4d40a25

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

xarray/core/parallel.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@
3434
T_DSorDA = TypeVar("T_DSorDA", DataArray, Dataset)
3535

3636

37-
def get_index_vars(obj: Union[DataArray, Dataset]) -> dict:
38-
return {dim: obj[dim] for dim in obj.indexes}
39-
40-
4137
def to_object_array(iterable):
4238
npargs = np.empty((len(iterable),), dtype=np.object)
4339
for idx, item in enumerate(iterable):
@@ -247,7 +243,7 @@ def _wrapper(
247243
raise ValueError(f"Dimensions {missing_dimensions} missing on returned object.")
248244

249245
# check that index lengths and values are as expected
250-
for name, index in get_index_vars(result).items():
246+
for name, index in result.indexes.items():
251247
if name in check_shapes:
252248
if len(index) != check_shapes[name]:
253249
raise ValueError(
@@ -412,11 +408,11 @@ def map_blocks(
412408

413409
# check that chunk sizes are compatible
414410
input_chunks = dict(npargs[0].chunks)
415-
input_indexes = get_index_vars(npargs[0])
411+
input_indexes = dict(npargs[0].indexes)
416412
for arg in npargs[1:][is_xarray[1:]]:
417413
assert_chunks_compatible(npargs[0], arg)
418414
input_chunks.update(arg.chunks)
419-
input_indexes.update(get_index_vars(arg))
415+
input_indexes.update(arg.indexes)
420416

421417
if template is None:
422418
# infer template by providing zero-shaped arrays
@@ -425,15 +421,15 @@ def map_blocks(
425421
preserved_indexes = template_indexes & set(input_indexes)
426422
new_indexes = template_indexes - set(input_indexes)
427423
indexes = {dim: input_indexes[dim] for dim in preserved_indexes}
428-
indexes.update({k: template[k] for k in new_indexes})
424+
indexes.update({k: template.indexes[k] for k in new_indexes})
429425
output_chunks = {
430426
dim: input_chunks[dim] for dim in template.dims if dim in input_chunks
431427
}
432428

433429
else:
434430
# template xarray object has been provided with proper sizes and chunk shapes
435431
indexes = input_indexes
436-
indexes.update(get_index_vars(template))
432+
indexes.update(template.indexes)
437433
if isinstance(template, DataArray):
438434
output_chunks = dict(zip(template.dims, template.chunks)) # type: ignore
439435
else:

0 commit comments

Comments
 (0)