Skip to content

Commit 1fca38c

Browse files
bjlittlepp-mo
andauthored
Fix for eccodes>=2.32.1 and python-eccodes>=1.6.1 (#361)
* Fix for eccodes>=2.32.1 and python-eccodes>=1.6.1 * Update iris_grib/message.py Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk> --------- Co-authored-by: Patrick Peglar <patrick.peglar@metoffice.gov.uk>
1 parent da14529 commit 1fca38c

File tree

8 files changed

+31
-13
lines changed

8 files changed

+31
-13
lines changed

iris_grib/_save_rules.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -315,9 +315,9 @@ def latlon_points_irregular(cube, grib):
315315
# So, this only works at present if the x and y dimensions are **equal**.
316316
lon_values = x_coord.points / _DEFAULT_DEGREES_UNITS
317317
lat_values = y_coord.points / _DEFAULT_DEGREES_UNITS
318-
eccodes.codes_set_array(grib, 'longitudes',
318+
eccodes.codes_set_array(grib, 'longitude',
319319
np.array(np.round(lon_values), dtype=np.int64))
320-
eccodes.codes_set_array(grib, 'latitudes',
320+
eccodes.codes_set_array(grib, 'latitude',
321321
np.array(np.round(lat_values), dtype=np.int64))
322322

323323

iris_grib/message.py

+18-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020

2121
_SUPPORTED_GRID_DEFINITIONS = (0, 1, 5, 10, 12, 20, 30, 40, 90, 140)
2222

23+
# Alias names for eccodes spatial computed keys.
24+
KEY_ALIAS = {
25+
'latitude': 'latitudes',
26+
'longitude': 'longitudes',
27+
'latitudes': 'latitude',
28+
'longitudes': 'longitude',
29+
}
30+
2331

2432
class _OpenFileRef:
2533
"""
@@ -404,12 +412,18 @@ def __getitem__(self, key):
404412
if key not in self._cache:
405413
if key == 'numberOfSection':
406414
value = self._number
407-
elif key not in self._keys:
408-
raise KeyError('{!r} not defined in section {}'.format(
409-
key, self._number))
410415
else:
416+
if key not in self._keys:
417+
key2 = KEY_ALIAS.get(key)
418+
if key2 and key2 in self._keys:
419+
key = key2
420+
else:
421+
emsg = f"{key} not defined in section {self._number}"
422+
raise KeyError(emsg)
411423
value = self._get_key_value(key)
424+
412425
self._cache[key] = value
426+
413427
return self._cache[key]
414428

415429
def __setitem__(self, key, value):
@@ -437,6 +451,7 @@ def _get_key_value(self, key):
437451
'satelliteNumber', 'instrumentType',
438452
'scaleFactorOfCentralWaveNumber',
439453
'scaledValueOfCentralWaveNumber',
454+
'longitude', 'latitude',
440455
'longitudes', 'latitudes')
441456
if key in vector_keys:
442457
res = eccodes.codes_get_array(self._message_id, key)

iris_grib/tests/unit/save_rules/test_grid_definition_template_4.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ def test__grid_points(self):
6262
grid_definition_template_4(test_cube, self.mock_grib)
6363
x_longs = np.array(np.round(1e6 * x_floats), dtype=int)
6464
y_longs = np.array(np.round(1e6 * y_floats), dtype=int)
65-
self._check_key("longitudes", x_longs)
66-
self._check_key("latitudes", y_longs)
65+
self._check_key("longitude", x_longs)
66+
self._check_key("latitude", y_longs)
6767

6868
def test__scanmode(self):
6969
grid_definition_template_4(self.test_cube, self.mock_grib)

iris_grib/tests/unit/save_rules/test_grid_definition_template_5.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ def test__grid_points(self):
112112
grid_definition_template_5(test_cube, self.mock_grib)
113113
x_longs = np.array(np.round(1e6 * x_floats), dtype=int)
114114
y_longs = np.array(np.round(1e6 * y_floats), dtype=int)
115-
self._check_key("longitudes", x_longs)
116-
self._check_key("latitudes", y_longs)
115+
self._check_key("longitude", x_longs)
116+
self._check_key("latitude", y_longs)
117117

118118
def test__true_winds_orientation(self):
119119
self.test_cube.rename('eastward_wind')

requirements/core.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Core dependencies.
22

33
scitools-iris>=3.0.2
4-
eccodes-python
4+
eccodes>=1.6.1

requirements/py310.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ dependencies:
1111

1212
# Core dependencies.
1313
- iris>=3.0.2
14-
- python-eccodes
14+
- python-eccodes>=1.6.1
15+
- eccodes>=2.32.1
1516

1617
# Optional dependencies.
1718
- mo_pack

requirements/py311.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ dependencies:
1111

1212
# Core dependencies.
1313
- iris>=3.0.2
14-
- python-eccodes
14+
- python-eccodes>=1.6.1
15+
- eccodes>=2.32.1
1516

1617
# Optional dependencies.
1718
- mo_pack

requirements/py39.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ dependencies:
1111

1212
# Core dependencies.
1313
- iris>=3.0.2
14-
- python-eccodes
14+
- python-eccodes>=1.6.1
15+
- eccodes>=2.32.1
1516

1617
# Optional dependencies.
1718
- mo_pack

0 commit comments

Comments
 (0)