-
Notifications
You must be signed in to change notification settings - Fork 26
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
What happened?
After updating to the new eccodes 2.41.0 running
data.metadata("gridSpec", default=None)results in a FunctionNotImplementedError being raised from gribapi. In prior versions, the default was properly used, and returned.
What are the steps to reproduce the bug?
With eccodes==2.41.0
import earthkit.data as ekd
data = ekd.from_source('sample', 'aifs-single-mse-example.grib')
data.sel(param = '2t', step = 24).metadata("gridSpec", default=None)Version
0.13.3
Platform (OS and architecture)
ATOS
Relevant log output
---------------------------------------------------------------------------
FunctionNotImplementedError Traceback (most recent call last)
Cell In[4], line 1
----> 1 aifs.sel(param = '2t', step = 24).metadata("gridSpec", default=None)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/core/fieldlist.py:1297, in FieldList.metadata(self, *args, **kwargs)
1295 result = []
1296 for s in self:
-> 1297 result.append(s.metadata(*args, **kwargs))
1298 return result
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/core/fieldlist.py:623, in Field.metadata(self, astype, remapping, patches, *keys, **kwargs)
619 raise_on_missing = "default" not in kwargs
620 default = kwargs.pop("default", None)
622 r = [
--> 623 self._metadata.get(
624 k,
625 default=default,
626 astype=kt,
627 raise_on_missing=raise_on_missing,
628 **kwargs,
629 )
630 for k, kt in zip(key, astype)
631 ]
633 if key_arg_type is str:
634 return r[0]
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/core/metadata.py:119, in MetadataCacheHandler.cache_get.<locals>.wrapped(self, key, default, astype, raise_on_missing)
116 if cache_id in self._cache:
117 return self._cache[cache_id]
--> 119 v = func(self, key, default=default, astype=astype, raise_on_missing=raise_on_missing)
120 self._cache[cache_id] = v
121 return v
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/core/metadata.py:81, in MetadataAccessor.__call__.<locals>.wrapped(cls, key, *args, **kwargs)
79 if key in self:
80 return self.get(cls, key, *args, **kwargs)
---> 81 return func(cls, key, *args, **kwargs)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/readers/grib/metadata.py:384, in GribMetadata.get(self, key, default, astype, raise_on_missing)
380 key = key[5:]
382 key = _key_name(key)
--> 384 v = self._handle.get(key, ktype=astype, **_kwargs)
386 # special case when "shortName" is "~".
387 if key == "shortName" and v == "~":
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/readers/grib/codes.py:155, in GribCodesHandle.get(self, name, ktype, **kwargs)
152 elif name == "md5GridSection":
153 return self.get_md5GridSection()
--> 155 return super().get(name, ktype, **kwargs)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/earthkit/data/utils/message.py:215, in CodesHandle.get(self, name, ktype, **kwargs)
212 ktype = CodesHandle.KEY_TYPES[key_type_str]
214 if "default" in kwargs:
--> 215 return super().get(name, ktype=ktype, **kwargs)
216 else:
217 # this will throw if name is not available
218 return super()._get(name, ktype=ktype)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/eccodes/highlevel/message.py:68, in Message.get(self, name, default, ktype)
56 """Get the value of a key
57
58 Parameters
(...) 65 ktype: type
66 Request a specific type for the value. Overrides the suffix in ``name``"""
67 try:
---> 68 return self._get(name, ktype=ktype)
69 except KeyError:
70 return default
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/eccodes/highlevel/message.py:53, in Message._get(self, name, ktype)
51 if eccodes.codes_get_size(self._handle, name) > 1:
52 return eccodes.codes_get_array(self._handle, name, ktype=ktype)
---> 53 return eccodes.codes_get(self._handle, name, ktype=ktype)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/gribapi/gribapi.py:2021, in grib_get(msgid, key, ktype)
2019 result = grib_get_double(msgid, key)
2020 elif ktype is str:
-> 2021 result = grib_get_string(msgid, key)
2022 elif ktype is bytes:
2023 result = grib_get_string(msgid, key)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/gribapi/gribapi.py:497, in grib_get_string(msgid, key)
495 length_p = ffi.new("size_t *", length)
496 err = lib.grib_get_string(h, key.encode(ENC), values, length_p)
--> 497 GRIB_CHECK(err)
498 return _decode_bytes(values, length_p[0])
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/gribapi/gribapi.py:232, in GRIB_CHECK(errid)
224 """
225 Utility function checking the ecCodes error code and raising
226 an error if that was set.
(...) 229 @exception CodesInternalError
230 """
231 if errid:
--> 232 errors.raise_grib_error(errid)
File /etc/ecmwf/nfs/dh1_2_perm_a/ecm1947/venvs/earthkit/latest/lib/python3.12/site-packages/gribapi/errors.py:381, in raise_grib_error(errid)
377 def raise_grib_error(errid):
378 """
379 Raise the GribInternalError corresponding to ``errid``.
380 """
--> 381 raise ERROR_MAP[errid](errid)
FunctionNotImplementedError: Function not yet implementedAccompanying data
No response
Organisation
ECMWF
Reactions are currently unavailable
Metadata
Metadata
Labels
bugSomething isn't workingSomething isn't working