Skip to content

Commit b36645f

Browse files
authored
fix cell measures __repr__ (#162)
* fix cell measures * sort measures * better comments
1 parent ccd4939 commit b36645f

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

cf_xarray/accessor.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,19 +1010,18 @@ def __repr__(self):
10101010
coords = self._obj.coords
10111011
dims = self._obj.dims
10121012

1013-
def make_text_section(subtitle, vardict, valid_values, valid_keys=None):
1013+
def make_text_section(subtitle, vardict, valid_values, default_keys=None):
10141014

10151015
star = " * "
10161016
tab = len(star) * " "
10171017
subtitle = f"- {subtitle}:"
10181018

1019-
# Sort keys
1020-
if not valid_keys:
1021-
# Alphabetical order
1022-
vardict = {key: vardict[key] for key in sorted(vardict)}
1023-
else:
1024-
# Hardcoded order
1025-
vardict = {key: vardict[key] for key in valid_keys if key in vardict}
1019+
# Sort keys if there aren't extra keys,
1020+
# preserve default keys order otherwise.
1021+
default_keys = [] if not default_keys else list(default_keys)
1022+
extra_keys = list(set(vardict) - set(default_keys))
1023+
ordered_keys = sorted(vardict) if extra_keys else default_keys
1024+
vardict = {key: vardict[key] for key in ordered_keys if key in vardict}
10261025

10271026
# Keep only valid values (e.g., coords or data_vars)
10281027
vardict = {
@@ -1037,9 +1036,9 @@ def make_text_section(subtitle, vardict, valid_values, valid_keys=None):
10371036
for key, value in vardict.items()
10381037
]
10391038

1040-
# Add valid keys missing followed by n/a
1041-
if valid_keys:
1042-
missing_keys = [key for key in valid_keys if key not in vardict]
1039+
# Append missing default keys followed by n/a
1040+
if default_keys:
1041+
missing_keys = [key for key in default_keys if key not in vardict]
10431042
if missing_keys:
10441043
rows += [tab + ", ".join(missing_keys) + ": n/a"]
10451044
elif not rows:

cf_xarray/tests/test_accessor.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ def test_cell_measures():
156156
actual = ds.cf.__repr__()
157157
expected = """\
158158
Data Variables:
159-
- Cell Measures: volume: ['foo']
159+
- Cell Measures: foo_measure: ['foo']
160+
volume: ['foo']
160161
area: n/a
161162
162163
- Standard Names: air_temperature: ['air']

0 commit comments

Comments
 (0)