Skip to content

Commit 4eb275c

Browse files
committed
Use typing.get_args when possible
1 parent a0c16c3 commit 4eb275c

File tree

2 files changed

+24
-35
lines changed

2 files changed

+24
-35
lines changed

xarray/core/alignment.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from collections import defaultdict
66
from collections.abc import Callable, Hashable, Iterable, Mapping
77
from contextlib import suppress
8-
from typing import TYPE_CHECKING, Any, Final, Generic, TypeVar, cast, overload
8+
from typing import TYPE_CHECKING, Any, Final, Generic, TypeVar, cast, get_args, overload
99

1010
import numpy as np
1111
import pandas as pd
@@ -19,7 +19,7 @@
1919
indexes_all_equal,
2020
safe_cast_to_index,
2121
)
22-
from xarray.core.types import T_Alignable
22+
from xarray.core.types import JoinOptions, T_Alignable
2323
from xarray.core.utils import emit_user_level_warning, is_dict_like, is_full_slice
2424
from xarray.core.variable import Variable, as_compatible_data, calculate_dimensions
2525
from xarray.util.deprecation_helpers import CombineKwargDefault
@@ -113,7 +113,7 @@ class Aligner(Generic[T_Alignable]):
113113
objects: tuple[T_Alignable, ...]
114114
results: tuple[T_Alignable, ...]
115115
objects_matching_indexes: tuple[dict[MatchingIndexKey, Index], ...]
116-
join: str | CombineKwargDefault
116+
join: JoinOptions | CombineKwargDefault
117117
exclude_dims: frozenset[Hashable]
118118
exclude_vars: frozenset[Hashable]
119119
copy: bool
@@ -133,7 +133,7 @@ class Aligner(Generic[T_Alignable]):
133133
def __init__(
134134
self,
135135
objects: Iterable[T_Alignable],
136-
join: str | CombineKwargDefault = "inner",
136+
join: JoinOptions | CombineKwargDefault = "inner",
137137
indexes: Mapping[Any, Any] | None = None,
138138
exclude_dims: str | Iterable[Hashable] = frozenset(),
139139
exclude_vars: Iterable[Hashable] = frozenset(),
@@ -146,14 +146,9 @@ def __init__(
146146
self.objects = tuple(objects)
147147
self.objects_matching_indexes = ()
148148

149-
if not isinstance(join, CombineKwargDefault) and join not in [
150-
"inner",
151-
"outer",
152-
"override",
153-
"exact",
154-
"left",
155-
"right",
156-
]:
149+
if not isinstance(join, CombineKwargDefault) and join not in get_args(
150+
JoinOptions
151+
):
157152
raise ValueError(f"invalid value for join: {join}")
158153
self.join = join
159154

xarray/core/concat.py

Lines changed: 17 additions & 23 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 TYPE_CHECKING, Any, Union, overload
4+
from typing import Any, Literal, get_args, overload
55

66
import numpy as np
77
import pandas as pd
@@ -12,12 +12,18 @@
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,
1615
collect_variables_and_indexes,
1716
merge_attrs,
1817
merge_collected,
1918
)
20-
from xarray.core.types import T_DataArray, T_Dataset, T_Variable
19+
from xarray.core.types import (
20+
CombineAttrsOptions,
21+
ConcatOptions,
22+
JoinOptions,
23+
T_DataArray,
24+
T_Dataset,
25+
T_Variable,
26+
)
2127
from xarray.core.utils import emit_user_level_warning
2228
from xarray.core.variable import Variable
2329
from xarray.core.variable import concat as concat_vars
@@ -29,15 +35,10 @@
2935
CombineKwargDefault,
3036
)
3137

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]]
38+
T_DataVars = ConcatOptions | Iterable[Hashable]
39+
CompatOptions = Literal[
40+
"identical", "equals", "broadcast_equals", "no_conflicts", "override"
41+
]
4142

4243

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

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

277278
if isinstance(first_obj, DataArray):
@@ -559,13 +560,6 @@ def _dataset_concat(
559560
"The elements in the input list need to be either all 'Dataset's or all 'DataArray's"
560561
)
561562

562-
if not isinstance(compat, CombineKwargDefault) and compat not in set(
563-
_VALID_COMPAT
564-
) - {"minimal"}:
565-
raise ValueError(
566-
f"compat={compat!r} invalid: must be 'broadcast_equals', 'equals', 'identical', 'no_conflicts' or 'override'"
567-
)
568-
569563
if isinstance(dim, DataArray):
570564
dim_var = dim.variable
571565
elif isinstance(dim, Variable):

0 commit comments

Comments
 (0)