diff --git a/src/earthkit/data/core/field.py b/src/earthkit/data/core/field.py index 24104d3be..e1bdbf235 100644 --- a/src/earthkit/data/core/field.py +++ b/src/earthkit/data/core/field.py @@ -1022,6 +1022,10 @@ def set(self, *args, **kwargs): raise ValueError(f"Cannot use arg={a}. Only dict allowed.") _kwargs = defaultdict(dict) + + if not kwargs: + return self + _components = dict() for k, v in kwargs.items(): if k in self._components: diff --git a/tests/grib/test_grib_set.py b/tests/grib/test_grib_set.py index 1d529a1cd..599b29eb3 100644 --- a/tests/grib/test_grib_set.py +++ b/tests/grib/test_grib_set.py @@ -24,8 +24,8 @@ from grib_fixtures import load_grib_data # noqa: E402 -# @pytest.mark.parametrize("fl_type", ["file", "array", "memory"]) -@pytest.mark.parametrize("fl_type", ["file"]) +@pytest.mark.parametrize("fl_type", ["file", "array", "memory"]) +# @pytest.mark.parametrize("fl_type", ["file"]) def test_grib_set_detailed(fl_type): ds_ori, _ = load_grib_data("test4.grib", fl_type) @@ -166,8 +166,7 @@ def test_grib_set_detailed(fl_type): # assert ds_1.metadata("levelist") == [600, 600]x -# @pytest.mark.parametrize("fl_type", ["file", "array", "memory"]) -@pytest.mark.parametrize("fl_type", ["file"]) +@pytest.mark.parametrize("fl_type", ["file", "array", "memory"]) def test_grib_set_combined(fl_type): ds_ori, _ = load_grib_data("test4.grib", fl_type) @@ -435,3 +434,12 @@ def test_grib_copy_to_field(fl_type): assert ds_saved.get("levelist") == [600, 600] assert np.allclose(ds_saved[0].values, vals_ori + 1) assert np.allclose(ds_saved[1].values, vals_ori + 2) + + +@pytest.mark.parametrize("fl_type", ["file"]) +def test_grib_set_no_args(fl_type): + ds, _ = load_grib_data("test4.grib", fl_type) + + f = ds[0] + r = f.set() + assert r is f