Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions src/earthkit/data/encoders/grib.py
Original file line number Diff line number Diff line change
Expand Up @@ -723,15 +723,21 @@ def _make_message(
else:
multiple[k] = v

try:
# Try to set all metadata at once
# This is needed when we set multiple keys that are interdependent
handle.set_multiple(single)
except Exception as e:
LOG.error("Failed to set metadata at once: %s", e)
# Try again, but one by one
for k, v in single.items():
handle.set(k, v)
if len(single) == 1:
# if there is only one key, set it directly to avoid the overhead of set_multiple
k, v = next(iter(single.items()))
handle.set(k, v)
single = {}
elif len(single) > 1:
try:
# Try to set all metadata at once
# This is needed when we set multiple keys that are interdependent
handle.set_multiple(single)
except Exception as e:
LOG.warning("Failed to set metadata at once: %s", e)
# Try again, but one by one
for k, v in single.items():
handle.set(k, v)

for k, v in multiple.items():
handle.set(k, v)
Expand Down
10 changes: 5 additions & 5 deletions src/earthkit/data/sources/virtual.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

from earthkit.data.readers.grib.index import GribFieldList

import earthkit.data as cml
from earthkit.data import from_source
from earthkit.data.utils.serialise import register_serialisation

LOG = logging.getLogger(__name__)
Expand Down Expand Up @@ -60,7 +60,7 @@ def shape(self):
return source[self.index].shape


class DictOveray(dict):
class DictOverlay(dict):
def __init__(self, field):
self.field = field

Expand All @@ -86,8 +86,8 @@ def __init__(self, **kwargs):
)
self.request.update(kwargs)

self.reference = DictOveray(
cml.from_source(
self.reference = DictOverlay(
from_source(
"cds",
date=19590101,
time=0,
Expand Down Expand Up @@ -140,7 +140,7 @@ def full_month(self, date):
yyyy = yyyymm // 100
mm = yyyymm % 100
last = calendar.monthrange(yyyy, mm)[1]
source = cml.from_source(
source = from_source(
"cds",
year=yyyy,
month=mm,
Expand Down
Loading