Skip to content

Commit f28b735

Browse files
committed
Fix variable redefinition
The previous commit revealed the following mypy error: xarray/core/dataset.py: note: In member "swap_dims" of class "Dataset": xarray/core/dataset.py:4415: error: Incompatible types in assignment (expression has type "Variable", variable has type "Hashable") [assignment] xarray/core/dataset.py:4415: note: Following member(s) of "Variable" have conflicts: xarray/core/dataset.py:4415: note: __hash__: expected "Callable[[], int]", got "None" xarray/core/dataset.py:4416: error: "Hashable" has no attribute "dims" [attr-defined] xarray/core/dataset.py:4419: error: "Hashable" has no attribute "to_index_variable" [attr-defined] xarray/core/dataset.py:4430: error: "Hashable" has no attribute "to_base_variable" [attr-defined]
1 parent 0474be9 commit f28b735

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

xarray/core/dataset.py

+17-15
Original file line numberDiff line numberDiff line change
@@ -4410,16 +4410,18 @@ def swap_dims(
44104410
# rename_dims() method that only renames dimensions.
44114411

44124412
dims_dict = either_dict_or_kwargs(dims_dict, dims_kwargs, "swap_dims")
4413-
for k, v in dims_dict.items():
4414-
if k not in self.dims:
4413+
for current_name, new_name in dims_dict.items():
4414+
if current_name not in self.dims:
44154415
raise ValueError(
4416-
f"cannot swap from dimension {k!r} because it is "
4416+
f"cannot swap from dimension {current_name!r} because it is "
44174417
f"not one of the dimensions of this dataset {tuple(self.dims)}"
44184418
)
4419-
if v in self.variables and self.variables[v].dims != (k,):
4419+
if new_name in self.variables and self.variables[new_name].dims != (
4420+
current_name,
4421+
):
44204422
raise ValueError(
4421-
f"replacement dimension {v!r} is not a 1D "
4422-
f"variable along the old dimension {k!r}"
4423+
f"replacement dimension {new_name!r} is not a 1D "
4424+
f"variable along the old dimension {current_name!r}"
44234425
)
44244426

44254427
result_dims = {dims_dict.get(dim, dim) for dim in self.dims}
@@ -4429,24 +4431,24 @@ def swap_dims(
44294431

44304432
variables: dict[Hashable, Variable] = {}
44314433
indexes: dict[Hashable, Index] = {}
4432-
for k, v in self.variables.items():
4433-
dims = tuple(dims_dict.get(dim, dim) for dim in v.dims)
4434+
for current_name, current_variable in self.variables.items():
4435+
dims = tuple(dims_dict.get(dim, dim) for dim in current_variable.dims)
44344436
var: Variable
4435-
if k in result_dims:
4436-
var = v.to_index_variable()
4437+
if current_name in result_dims:
4438+
var = current_variable.to_index_variable()
44374439
var.dims = dims
4438-
if k in self._indexes:
4439-
indexes[k] = self._indexes[k]
4440-
variables[k] = var
4440+
if current_name in self._indexes:
4441+
indexes[current_name] = self._indexes[current_name]
4442+
variables[current_name] = var
44414443
else:
44424444
index, index_vars = create_default_index_implicit(var)
44434445
indexes.update({name: index for name in index_vars})
44444446
variables.update(index_vars)
44454447
coord_names.update(index_vars)
44464448
else:
4447-
var = v.to_base_variable()
4449+
var = current_variable.to_base_variable()
44484450
var.dims = dims
4449-
variables[k] = var
4451+
variables[current_name] = var
44504452

44514453
return self._replace_with_new_dims(variables, coord_names, indexes=indexes)
44524454

0 commit comments

Comments
 (0)