Skip to content

Commit 03f1502

Browse files
committed
Allow minimal in concat options at the type level
1 parent 4eb275c commit 03f1502

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

xarray/core/concat.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from collections.abc import Hashable, Iterable
4-
from typing import Any, Literal, get_args, overload
4+
from typing import TYPE_CHECKING, Any, Union, overload
55

66
import numpy as np
77
import pandas as pd
@@ -12,18 +12,12 @@
1212
from xarray.core.duck_array_ops import lazy_array_equiv
1313
from xarray.core.indexes import Index, PandasIndex
1414
from xarray.core.merge import (
15+
_VALID_COMPAT,
1516
collect_variables_and_indexes,
1617
merge_attrs,
1718
merge_collected,
1819
)
19-
from xarray.core.types import (
20-
CombineAttrsOptions,
21-
ConcatOptions,
22-
JoinOptions,
23-
T_DataArray,
24-
T_Dataset,
25-
T_Variable,
26-
)
20+
from xarray.core.types import T_DataArray, T_Dataset, T_Variable
2721
from xarray.core.utils import emit_user_level_warning
2822
from xarray.core.variable import Variable
2923
from xarray.core.variable import concat as concat_vars
@@ -35,10 +29,15 @@
3529
CombineKwargDefault,
3630
)
3731

38-
T_DataVars = ConcatOptions | Iterable[Hashable]
39-
CompatOptions = Literal[
40-
"identical", "equals", "broadcast_equals", "no_conflicts", "override"
41-
]
32+
if TYPE_CHECKING:
33+
from xarray.core.types import (
34+
CombineAttrsOptions,
35+
CompatOptions,
36+
ConcatOptions,
37+
JoinOptions,
38+
)
39+
40+
T_DataVars = Union[ConcatOptions, Iterable[Hashable]]
4241

4342

4443
# TODO: replace dim: Any by 1D array_likes
@@ -268,11 +267,11 @@ def concat(
268267
except StopIteration as err:
269268
raise ValueError("must supply at least one object to concatenate") from err
270269

271-
if not isinstance(compat, CombineKwargDefault) and compat not in get_args(
272-
CompatOptions
273-
):
270+
if not isinstance(compat, CombineKwargDefault) and compat not in set(
271+
_VALID_COMPAT
272+
) - {"minimal"}:
274273
raise ValueError(
275-
f"compat={compat!r} invalid: valid options: {get_args(CompatOptions)}"
274+
f"compat={compat!r} invalid: must be 'broadcast_equals', 'equals', 'identical', 'no_conflicts' or 'override'"
276275
)
277276

278277
if isinstance(first_obj, DataArray):

0 commit comments

Comments
 (0)