| 7160 | assert result3.attrs == {} |
| 7161 | |
| 7162 | def test_full_like(self) -> None: |
| 7163 | # For more thorough tests, see test_variable.py |
| 7164 | # Note: testing data_vars with mismatched dtypes |
| 7165 | ds = Dataset( |
| 7166 | { |
| 7167 | "d1": DataArray([1, 2, 3], dims=["x"], coords={"x": [10, 20, 30]}), |
| 7168 | "d2": DataArray([1.1, 2.2, 3.3], dims=["y"]), |
| 7169 | }, |
| 7170 | attrs={"foo": "bar"}, |
| 7171 | ) |
| 7172 | actual = full_like(ds, 2) |
| 7173 | |
| 7174 | expected = ds.copy(deep=True) |
| 7175 | # https://github.com/python/mypy/issues/3004 |
| 7176 | expected["d1"].values = [2, 2, 2] # type: ignore[assignment,unused-ignore] |
| 7177 | expected["d2"].values = [2.0, 2.0, 2.0] # type: ignore[assignment,unused-ignore] |
| 7178 | assert expected["d1"].dtype == int |
| 7179 | assert expected["d2"].dtype == float |
| 7180 | assert_identical(expected, actual) |
| 7181 | |
| 7182 | # override dtype |
| 7183 | actual = full_like(ds, fill_value=True, dtype=bool) |
| 7184 | expected = ds.copy(deep=True) |
| 7185 | expected["d1"].values = [True, True, True] # type: ignore[assignment,unused-ignore] |
| 7186 | expected["d2"].values = [True, True, True] # type: ignore[assignment,unused-ignore] |
| 7187 | assert expected["d1"].dtype == bool |
| 7188 | assert expected["d2"].dtype == bool |
| 7189 | assert_identical(expected, actual) |
| 7190 | |
| 7191 | # with multiple fill values |
| 7192 | actual = full_like(ds, {"d1": 1, "d2": 2.3}) |
| 7193 | expected = ds.assign(d1=("x", [1, 1, 1]), d2=("y", [2.3, 2.3, 2.3])) |
| 7194 | assert expected["d1"].dtype == int |
| 7195 | assert expected["d2"].dtype == float |
| 7196 | assert_identical(expected, actual) |
| 7197 | |
| 7198 | # override multiple dtypes |
| 7199 | actual = full_like(ds, fill_value={"d1": 1, "d2": 2.3}, dtype={"d1": bool}) |
| 7200 | expected = ds.assign(d1=("x", [True, True, True]), d2=("y", [2.3, 2.3, 2.3])) |
| 7201 | assert expected["d1"].dtype == bool |
| 7202 | assert expected["d2"].dtype == float |
| 7203 | assert_identical(expected, actual) |
| 7204 | |
| 7205 | def test_combine_first(self) -> None: |
| 7206 | dsx0 = DataArray([0, 0], [("x", ["a", "b"])]).to_dataset(name="dsx0") |