Skip to content

Commit c22cf8d

Browse files
Use paramId for param when shortName is tilde in GRIB data (#417)
* Use paramId for param when shortName is tilde in GRIB data
1 parent f8c23b4 commit c22cf8d

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

docs/release_notes/version_0.9_updates.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
Version 0.9 Updates
22
/////////////////////////
33

4+
45
Version 0.9.1
56
===============
67

8+
Fixes
9+
++++++
10+
11+
- When "shortName" is "~" in the GRIB header, :func:`metadata` now returns the value of "paramId" as a str for both the "param" and "shortName" keys. Previously "~" was returned for both these keys.
12+
13+
14+
Version 0.9.0
15+
===============
16+
717
New features
818
++++++++++++++++
919

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,13 @@ def _key_name(key):
349349
if not raise_on_missing:
350350
_kwargs["default"] = default
351351

352-
return self._handle.get(_key_name(key), ktype=astype, **_kwargs)
352+
key = _key_name(key)
353+
354+
# special case when "shortName" is "~".
355+
v = self._handle.get(key, ktype=astype, **_kwargs)
356+
if key == "shortName" and v == "~":
357+
v = self._handle.get("paramId", ktype=str, **_kwargs)
358+
return v
353359

354360
def _is_custom_key(self, key):
355361
return key in self.CUSTOM_KEYS

tests/data/tilde_shortname.grib

240 Bytes
Binary file not shown.

tests/grib/test_grib_metadata.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,18 @@ def test_message(fl_type, array_backend):
547547
assert v[:4] == b"GRIB"
548548

549549

550+
@pytest.mark.parametrize("fl_type", ["file"])
551+
@pytest.mark.parametrize("array_backend", [None])
552+
def test_grib_tilde_shortname(fl_type, array_backend):
553+
f = load_grib_data("tilde_shortname.grib", fl_type, array_backend, folder="data")
554+
555+
assert f[0].metadata("shortName") == "106"
556+
assert f[0].metadata("shortName", astype=int) == 0
557+
assert f[0].metadata("paramId") == 106
558+
assert f[0].metadata("paramId", astype=int) == 106
559+
assert f[0].metadata("param") == "106"
560+
561+
550562
if __name__ == "__main__":
551563
from earthkit.data.testing import main
552564

0 commit comments

Comments
 (0)