Skip to content

Commit 36de5e3

Browse files
committed
add get_all_cell_measures
1 parent e08571a commit 36de5e3

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

cf_xarray/accessor.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -647,10 +647,19 @@ class CFAccessor:
647647

648648
def __init__(self, da):
649649
self._obj = da
650-
self._defined_cell_measures = tuple(
651-
set(_CELL_MEASURES + tuple(self.cell_measures))
652-
)
650+
self._all_cell_measures = None
651+
652+
def _get_all_cell_measures(self):
653+
"""
654+
Get all cell measures defined in the object, adding CF pre-defined measures.
655+
"""
656+
657+
# get all_cell_measures only once
658+
if not self._all_cell_measures:
659+
self._all_cell_measures = set(_CELL_MEASURES + tuple(self.cell_measures))
653660

661+
return self._all_cell_measures
662+
654663
def _process_signature(
655664
self,
656665
func: Callable,
@@ -830,7 +839,7 @@ def describe(self):
830839

831840
text += "\nCell Measures:\n"
832841
measures = self.cell_measures
833-
for key in sorted(self._defined_cell_measures):
842+
for key in sorted(self._get_all_cell_measures()):
834843
text += f"\t{key}: {measures[key] if key in measures else []}\n"
835844

836845
text += "\nStandard Names:\n"
@@ -1074,7 +1083,7 @@ def check_results(names, k):
10741083
check_results(names, k)
10751084
successful[k] = bool(names)
10761085
coords.extend(names)
1077-
elif k in self._defined_cell_measures:
1086+
elif k in self._get_all_cell_measures():
10781087
measure = _get_measure(self._obj, k)
10791088
check_results(measure, k)
10801089
successful[k] = bool(measure)

0 commit comments

Comments
 (0)