Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion xarray/namedarray/daskmanager.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import annotations

import math
from collections.abc import Callable, Iterable, Sequence
from typing import TYPE_CHECKING, Any

Expand Down Expand Up @@ -52,7 +53,30 @@ def normalize_chunks(
previous_chunks: _NormalizedChunks | None = None,
) -> Any:
"""Called by open_dataset"""
from dask.array.core import normalize_chunks
from dask.array.core import auto_chunks, normalize_chunks

if (
limit is None
and previous_chunks
and (
chunks == "auto"
or (
isinstance(chunks, dict)
and any(v == "auto" for v in chunks.values())
)
)
):
largest_previous_chunksize = dtype.itemsize * math.prod(
max(c) if isinstance(c, tuple) else c for c in previous_chunks.values()
)
limit = max(largest_previous_chunksize, self.get_auto_chunk_size())
chunks = auto_chunks(
chunks,
shape=shape,
limit=limit,
dtype=dtype,
previous_chunks=previous_chunks,
)

return normalize_chunks(
chunks,
Expand Down
Loading