(self)
| 3370 | assert_equal(actual, orig) |
| 3371 | |
| 3372 | def test_rename(self) -> None: |
| 3373 | data = create_test_data() |
| 3374 | newnames = { |
| 3375 | "var1": "renamed_var1", |
| 3376 | "dim2": "renamed_dim2", |
| 3377 | } |
| 3378 | renamed = data.rename(newnames) |
| 3379 | |
| 3380 | variables = dict(data.variables) |
| 3381 | for nk, nv in newnames.items(): |
| 3382 | variables[nv] = variables.pop(nk) |
| 3383 | |
| 3384 | for k, v in variables.items(): |
| 3385 | dims = list(v.dims) |
| 3386 | for name, newname in newnames.items(): |
| 3387 | if name in dims: |
| 3388 | dims[dims.index(name)] = newname |
| 3389 | |
| 3390 | assert_equal( |
| 3391 | Variable(dims, v.values, v.attrs), |
| 3392 | renamed[k].variable.to_base_variable(), |
| 3393 | ) |
| 3394 | assert v.encoding == renamed[k].encoding |
| 3395 | assert type(v) is type(renamed.variables[k]) |
| 3396 | |
| 3397 | assert "var1" not in renamed |
| 3398 | assert "dim2" not in renamed |
| 3399 | |
| 3400 | with pytest.raises(ValueError, match=r"cannot rename 'not_a_var'"): |
| 3401 | data.rename({"not_a_var": "nada"}) |
| 3402 | |
| 3403 | with pytest.raises(ValueError, match=r"'var1' conflicts"): |
| 3404 | data.rename({"var2": "var1"}) |
| 3405 | |
| 3406 | # verify that we can rename a variable without accessing the data |
| 3407 | var1 = data["var1"] |
| 3408 | data["var1"] = (var1.dims, InaccessibleArray(var1.values)) |
| 3409 | renamed = data.rename(newnames) |
| 3410 | with pytest.raises(UnexpectedDataAccess): |
| 3411 | _ = renamed["renamed_var1"].values |
| 3412 | |
| 3413 | # https://github.com/python/mypy/issues/10008 |
| 3414 | renamed_kwargs = data.rename(**newnames) # type: ignore[arg-type] |
| 3415 | assert_identical(renamed, renamed_kwargs) |
| 3416 | |
| 3417 | def test_rename_old_name(self) -> None: |
| 3418 | # regtest for GH1477 |
nothing calls this directly
no test coverage detected