|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
3 | 3 | from collections.abc import Hashable, Iterable
|
4 |
| -from typing import Any, Literal, get_args, overload |
| 4 | +from typing import TYPE_CHECKING, Any, Union, overload |
5 | 5 |
|
6 | 6 | import numpy as np
|
7 | 7 | import pandas as pd
|
|
12 | 12 | from xarray.core.duck_array_ops import lazy_array_equiv
|
13 | 13 | from xarray.core.indexes import Index, PandasIndex
|
14 | 14 | from xarray.core.merge import (
|
| 15 | + _VALID_COMPAT, |
15 | 16 | collect_variables_and_indexes,
|
16 | 17 | merge_attrs,
|
17 | 18 | merge_collected,
|
18 | 19 | )
|
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 |
27 | 21 | from xarray.core.utils import emit_user_level_warning
|
28 | 22 | from xarray.core.variable import Variable
|
29 | 23 | from xarray.core.variable import concat as concat_vars
|
|
35 | 29 | CombineKwargDefault,
|
36 | 30 | )
|
37 | 31 |
|
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]] |
42 | 41 |
|
43 | 42 |
|
44 | 43 | # TODO: replace dim: Any by 1D array_likes
|
@@ -268,11 +267,11 @@ def concat(
|
268 | 267 | except StopIteration as err:
|
269 | 268 | raise ValueError("must supply at least one object to concatenate") from err
|
270 | 269 |
|
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"}: |
274 | 273 | 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'" |
276 | 275 | )
|
277 | 276 |
|
278 | 277 | if isinstance(first_obj, DataArray):
|
|
0 commit comments