```python def test_groupby_math_bitshift() -> None: # create new dataset of int's only ds = Dataset( { ""x"": (""index"", np.ones(4, dtype=int)), ""y"": (""index"", np.ones(4, dtype=int) * -1), ""level"": (""index"", [1, 1, 2, 2]), ""index"": [0, 1, 2, 3], } ) shift = DataArray([1, 2, 1], [(""level"", [1, 2, 8])]) left_expected = Dataset( { ""x"": (""index"", [2, 2, 4, 4]), ""y"": (""index"", [-2, -2, -4, -4]), ""level"": (""index"", [2, 2, 8, 8]), ""index"": [0, 1, 2, 3], } ) left_manual = [] for lev, group in ds.groupby(""level""): shifter = shift.sel(level=lev) left_manual.append(group << shifter) left_actual = xr.concat(left_manual, dim=""index"").reset_coords(names=""level"") assert_equal(left_expected, left_actual) left_actual = (ds.groupby(""level"") << shift).reset_coords(names=""level"") assert_equal(left_expected, left_actual) right_expected = Dataset( { ""x"": (""index"", [0, 0, 2, 2]), ""y"": (""index"", [-1, -1, -2, -2]), ""level"": (""index"", [0, 0, 4, 4]), ""index"": [0, 1, 2, 3], } ) right_manual = [] for lev, group in left_expected.groupby(""level""): shifter = shift.sel(level=lev) right_manual.append(group >> shifter) right_actual = xr.concat(right_manual, dim=""index"").reset_coords(names=""level"") assert_equal(right_expected, right_actual) right_actual = (left_expected.groupby(""level"") >> shift).reset_coords(names=""level"") assert_equal(right_expected, right_actual) ```