Skip to content

Commit 558131e

Browse files
max-sixtyclaude
andauthored
Remove xarray.tests.test_combine from mypy exclusions (#10753)
- Add type annotations to satisfy mypy's check_untyped_defs requirement - Fix combine_nested type signature to accept None for concat_dim parameter - Add minimal type hints where mypy cannot infer types - No behavioral changes, all tests pass 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <[email protected]>
1 parent 9e97732 commit 558131e

File tree

3 files changed

+38
-21
lines changed

3 files changed

+38
-21
lines changed

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ check_untyped_defs = false
190190
module = [
191191
"xarray.tests.test_coarsen",
192192
"xarray.tests.test_coding_times",
193-
"xarray.tests.test_combine",
194193
"xarray.tests.test_computation",
195194
"xarray.tests.test_concat",
196195
"xarray.tests.test_coordinates",

xarray/structure/combine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ def _nested_combine(
405405

406406
def combine_nested(
407407
datasets: DATASET_HYPERCUBE,
408-
concat_dim: str | DataArray | Sequence[str | DataArray | pd.Index | None],
408+
concat_dim: str | DataArray | Sequence[str | DataArray | pd.Index | None] | None,
409409
compat: str | CombineKwargDefault = _COMPAT_DEFAULT,
410410
data_vars: str | CombineKwargDefault = _DATA_VARS_DEFAULT,
411411
coords: str | CombineKwargDefault = _COORDS_DEFAULT,

xarray/tests/test_combine.py

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from xarray.tests.test_dataset import create_test_data
2929

3030

31-
def assert_combined_tile_ids_equal(dict1, dict2):
31+
def assert_combined_tile_ids_equal(dict1: dict, dict2: dict) -> None:
3232
assert len(dict1) == len(dict2)
3333
for k in dict1.keys():
3434
assert k in dict2.keys()
@@ -41,7 +41,9 @@ def test_1d(self):
4141
input = [ds(0), ds(1)]
4242

4343
expected = {(0,): ds(0), (1,): ds(1)}
44-
actual = _infer_concat_order_from_positions(input)
44+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
45+
input
46+
)
4547
assert_combined_tile_ids_equal(expected, actual)
4648

4749
def test_2d(self):
@@ -56,7 +58,9 @@ def test_2d(self):
5658
(2, 0): ds(4),
5759
(2, 1): ds(5),
5860
}
59-
actual = _infer_concat_order_from_positions(input)
61+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
62+
input
63+
)
6064
assert_combined_tile_ids_equal(expected, actual)
6165

6266
def test_3d(self):
@@ -80,40 +84,50 @@ def test_3d(self):
8084
(1, 2, 0): ds(10),
8185
(1, 2, 1): ds(11),
8286
}
83-
actual = _infer_concat_order_from_positions(input)
87+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
88+
input
89+
)
8490
assert_combined_tile_ids_equal(expected, actual)
8591

8692
def test_single_dataset(self):
8793
ds = create_test_data(0)
8894
input = [ds]
8995

9096
expected = {(0,): ds}
91-
actual = _infer_concat_order_from_positions(input)
97+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
98+
input
99+
)
92100
assert_combined_tile_ids_equal(expected, actual)
93101

94102
def test_redundant_nesting(self):
95103
ds = create_test_data
96104
input = [[ds(0)], [ds(1)]]
97105

98106
expected = {(0, 0): ds(0), (1, 0): ds(1)}
99-
actual = _infer_concat_order_from_positions(input)
107+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
108+
input
109+
)
100110
assert_combined_tile_ids_equal(expected, actual)
101111

102112
def test_ignore_empty_list(self):
103113
ds = create_test_data(0)
104-
input = [ds, []]
114+
input: list = [ds, []]
105115
expected = {(0,): ds}
106-
actual = _infer_concat_order_from_positions(input)
116+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
117+
input
118+
)
107119
assert_combined_tile_ids_equal(expected, actual)
108120

109121
def test_uneven_depth_input(self):
110122
# Auto_combine won't work on ragged input
111123
# but this is just to increase test coverage
112124
ds = create_test_data
113-
input = [ds(0), [ds(1), ds(2)]]
125+
input: list = [ds(0), [ds(1), ds(2)]]
114126

115127
expected = {(0,): ds(0), (1, 0): ds(1), (1, 1): ds(2)}
116-
actual = _infer_concat_order_from_positions(input)
128+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
129+
input
130+
)
117131
assert_combined_tile_ids_equal(expected, actual)
118132

119133
def test_uneven_length_input(self):
@@ -123,15 +137,19 @@ def test_uneven_length_input(self):
123137
input = [[ds(0)], [ds(1), ds(2)]]
124138

125139
expected = {(0, 0): ds(0), (1, 0): ds(1), (1, 1): ds(2)}
126-
actual = _infer_concat_order_from_positions(input)
140+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
141+
input
142+
)
127143
assert_combined_tile_ids_equal(expected, actual)
128144

129145
def test_infer_from_datasets(self):
130146
ds = create_test_data
131147
input = [ds(0), ds(1)]
132148

133149
expected = {(0,): ds(0), (1,): ds(1)}
134-
actual = _infer_concat_order_from_positions(input)
150+
actual: dict[tuple[int, ...], Dataset] = _infer_concat_order_from_positions(
151+
input
152+
)
135153
assert_combined_tile_ids_equal(expected, actual)
136154

137155

@@ -581,8 +599,8 @@ def test_auto_combine_2d_combine_attrs_kwarg(self):
581599
expected_dict["override"] = expected.copy(deep=True)
582600
expected_dict["override"].attrs = {"a": 1}
583601
f = lambda attrs, context: attrs[0]
584-
expected_dict[f] = expected.copy(deep=True)
585-
expected_dict[f].attrs = f([{"a": 1}], None)
602+
expected_dict[f] = expected.copy(deep=True) # type: ignore[index]
603+
expected_dict[f].attrs = f([{"a": 1}], None) # type: ignore[index]
586604

587605
datasets = [[ds(0), ds(1), ds(2)], [ds(3), ds(4), ds(5)]]
588606

@@ -606,7 +624,7 @@ def test_auto_combine_2d_combine_attrs_kwarg(self):
606624
datasets,
607625
concat_dim=["dim1", "dim2"],
608626
data_vars="all",
609-
combine_attrs=combine_attrs,
627+
combine_attrs=combine_attrs, # type: ignore[arg-type]
610628
)
611629
assert_identical(result, expected)
612630

@@ -632,11 +650,11 @@ def test_invalid_hypercube_input(self):
632650
):
633651
combine_nested(datasets, concat_dim=["dim1", "dim2"])
634652

635-
datasets = [[ds(0), ds(1)], [[ds(3), ds(4)]]]
653+
datasets2: list = [[ds(0), ds(1)], [[ds(3), ds(4)]]]
636654
with pytest.raises(
637655
ValueError, match=r"sub-lists do not have consistent depths"
638656
):
639-
combine_nested(datasets, concat_dim=["dim1", "dim2"])
657+
combine_nested(datasets2, concat_dim=["dim1", "dim2"])
640658

641659
datasets = [[ds(0), ds(1)], [ds(3), ds(4)]]
642660
with pytest.raises(ValueError, match=r"concat_dims has length"):
@@ -1019,7 +1037,7 @@ def test_infer_order_from_coords(self):
10191037
objs = [data.isel(dim2=slice(4, 9)), data.isel(dim2=slice(4))]
10201038
actual = combine_by_coords(objs, data_vars="all")
10211039
expected = data
1022-
assert expected.broadcast_equals(actual)
1040+
assert expected.broadcast_equals(actual) # type: ignore[arg-type]
10231041

10241042
with set_options(use_new_combine_kwarg_defaults=True):
10251043
actual = combine_by_coords(objs)
@@ -1067,7 +1085,7 @@ def test_combine_by_coords_still_fails(self):
10671085
# https://github.com/pydata/xarray/issues/508
10681086
datasets = [Dataset({"x": 0}, {"y": 0}), Dataset({"x": 1}, {"y": 1, "z": 1})]
10691087
with pytest.raises(ValueError):
1070-
combine_by_coords(datasets, "y")
1088+
combine_by_coords(datasets, "y") # type: ignore[arg-type]
10711089

10721090
def test_combine_by_coords_no_concat(self):
10731091
objs = [Dataset({"x": 0}), Dataset({"y": 1})]

0 commit comments

Comments
 (0)