Skip to content

Commit 2d19c9f

Browse files
Merge 0.13.8 into develop (#674)
* Do not modifiy xarray engine kwargs dicts in place (#671) * Add release notes for 0.13.8 (#673)
2 parents d79521b + cf9eaf7 commit 2d19c9f

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

docs/release_notes/version_0.13_updates.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ Version 0.13 Updates
22
/////////////////////////
33

44

5+
Version 0.13.8
6+
===============
7+
8+
Fixes
9+
++++++++++
10+
11+
- Fixed issue when kwargs passed to the Xarray engine as a dict were modified in-place (:pr:`671`).
12+
13+
514
Version 0.13.7
615
===============
716

src/earthkit/data/readers/grib/xarray.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# nor does it submit to any jurisdiction.
88
#
99

10+
import copy
1011
import logging
1112

1213
from earthkit.data.utils import ensure_dict
@@ -344,6 +345,7 @@ def to_xarray(self, engine="earthkit", xarray_open_dataset_kwargs=None, **kwargs
344345
raise ValueError(f"Unsupported engine: {engine}. Please use one of {list(engines.keys())}")
345346

346347
user_xarray_open_dataset_kwargs = ensure_dict(xarray_open_dataset_kwargs)
348+
user_xarray_open_dataset_kwargs = copy.deepcopy(user_xarray_open_dataset_kwargs)
347349
if user_xarray_open_dataset_kwargs and kwargs:
348350
raise ValueError("Cannot specify extra keyword arguments when xarray_open_dataset_kwargs is set.")
349351

tests/xr_engine/test_xr_engine.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,17 @@
2323
from xr_engine_fixtures import load_grib_data # noqa: E402
2424

2525

26+
@pytest.mark.cache
27+
@pytest.mark.parametrize("engine", ["earthkit", "cfgrib"])
28+
def test_xr_engine_kwargs_unchanged(engine):
29+
ds = from_source("url", earthkit_remote_test_data_file("test-data/xr_engine/level/pl_small.grib"))
30+
31+
_kwargs = {"squeeze": True}
32+
res = ds.to_xarray(engine=engine, xarray_open_dataset_kwargs=_kwargs)
33+
assert res is not None
34+
assert _kwargs == {"squeeze": True}
35+
36+
2637
@pytest.mark.cache
2738
@pytest.mark.parametrize(
2839
"file",

0 commit comments

Comments
 (0)