Skip to content

Commit 5e0b2e7

Browse files
authored
Fix type issues from pandas stubs (pydata#10128)
* Fix type issues from pandas stubs for transparency, claude code also helped here, but I did more auditing & fixing than the idxmax PR (sorry to externalize that to reviewers...) * . * Don't skip tests when on a `mypy` branch For some reason, my local was skipping tests when on a branch named `mypy`, or at least something was setting a `mypy` keyword on the test items. This changes the check check whether the test has the `mypy` marker set, which is more precise than just looking at the keywords.
1 parent 702909d commit 5e0b2e7

File tree

6 files changed

+13
-8
lines changed

6 files changed

+13
-8
lines changed

ci/requirements/environment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies:
5656
- types-pytz
5757
- types-PyYAML
5858
- types-setuptools
59+
- types-openpyxl
5960
- typing_extensions
6061
- zarr
6162
- pip:

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ types = [
5555
"types-pexpect",
5656
"types-psutil",
5757
"types-pycurl",
58+
"types-openpyxl",
5859
"types-python-dateutil",
5960
"types-pytz",
6061
"types-setuptools",

xarray/core/coordinates.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,13 @@ def to_index(self, ordered_dims: Sequence[Hashable] | None = None) -> pd.Index:
177177

178178
# compute the cartesian product
179179
code_list += [
180-
np.tile(np.repeat(code, repeat_counts[i]), tile_counts[i])
180+
np.tile(np.repeat(code, repeat_counts[i]), tile_counts[i]).tolist()
181181
for code in codes
182182
]
183183
level_list += levels
184184
names += index.names
185185

186-
return pd.MultiIndex(level_list, code_list, names=names)
186+
return pd.MultiIndex(levels=level_list, codes=code_list, names=names)
187187

188188

189189
class Coordinates(AbstractCoordinates):

xarray/core/groupby.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ def factorize(self) -> EncodedGroups:
527527
_flatcodes = where(mask.data, -1, _flatcodes)
528528

529529
full_index = pd.MultiIndex.from_product(
530-
(grouper.full_index.values for grouper in groupers),
530+
list(grouper.full_index.values for grouper in groupers),
531531
names=tuple(grouper.name for grouper in groupers),
532532
)
533533
# This will be unused when grouping by dask arrays, so skip..

xarray/core/indexes.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,9 +1046,11 @@ def stack(
10461046
*[lev.factorize() for lev in level_indexes], strict=True
10471047
)
10481048
labels_mesh = np.meshgrid(*split_labels, indexing="ij")
1049-
labels = [x.ravel() for x in labels_mesh]
1049+
labels = [x.ravel().tolist() for x in labels_mesh]
10501050

1051-
index = pd.MultiIndex(levels, labels, sortorder=0, names=variables.keys())
1051+
index = pd.MultiIndex(
1052+
levels=levels, codes=labels, sortorder=0, names=variables.keys()
1053+
)
10521054
level_coords_dtype = {k: var.dtype for k, var in variables.items()}
10531055

10541056
return cls(index, dim, level_coords_dtype=level_coords_dtype)
@@ -1120,7 +1122,8 @@ def from_variables_maybe_expand(
11201122
levels.append(cat.categories)
11211123
level_variables[name] = var
11221124

1123-
index = pd.MultiIndex(levels, codes, names=names)
1125+
codes_as_lists = [list(x) for x in codes]
1126+
index = pd.MultiIndex(levels=levels, codes=codes_as_lists, names=names)
11241127
level_coords_dtype = {k: var.dtype for k, var in level_variables.items()}
11251128
obj = cls(index, dim, level_coords_dtype=level_coords_dtype)
11261129
index_vars = obj.create_variables(level_variables)

xarray/tests/test_dataset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2923,7 +2923,7 @@ def test_drop_indexes(self) -> None:
29232923
assert_identical(actual, ds)
29242924

29252925
# test index corrupted
2926-
midx = pd.MultiIndex.from_tuples([([1, 2]), ([3, 4])], names=["a", "b"])
2926+
midx = pd.MultiIndex.from_tuples([(1, 2), (3, 4)], names=["a", "b"])
29272927
midx_coords = Coordinates.from_pandas_multiindex(midx, "x")
29282928
ds = Dataset(coords=midx_coords)
29292929

@@ -3219,7 +3219,7 @@ def test_rename_dimension_coord_warnings(self) -> None:
32193219
ds.rename(x="x")
32203220

32213221
def test_rename_multiindex(self) -> None:
3222-
midx = pd.MultiIndex.from_tuples([([1, 2]), ([3, 4])], names=["a", "b"])
3222+
midx = pd.MultiIndex.from_tuples([(1, 2), (3, 4)], names=["a", "b"])
32233223
midx_coords = Coordinates.from_pandas_multiindex(midx, "x")
32243224
original = Dataset({}, midx_coords)
32253225

0 commit comments

Comments
 (0)