@@ -647,10 +647,19 @@ class CFAccessor:
647
647
648
648
def __init__ (self , da ):
649
649
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 ))
653
660
661
+ return self ._all_cell_measures
662
+
654
663
def _process_signature (
655
664
self ,
656
665
func : Callable ,
@@ -830,7 +839,7 @@ def describe(self):
830
839
831
840
text += "\n Cell Measures:\n "
832
841
measures = self .cell_measures
833
- for key in sorted (self ._defined_cell_measures ):
842
+ for key in sorted (self ._get_all_cell_measures () ):
834
843
text += f"\t { key } : { measures [key ] if key in measures else []} \n "
835
844
836
845
text += "\n Standard Names:\n "
@@ -1074,7 +1083,7 @@ def check_results(names, k):
1074
1083
check_results (names , k )
1075
1084
successful [k ] = bool (names )
1076
1085
coords .extend (names )
1077
- elif k in self ._defined_cell_measures :
1086
+ elif k in self ._get_all_cell_measures () :
1078
1087
measure = _get_measure (self ._obj , k )
1079
1088
check_results (measure , k )
1080
1089
successful [k ] = bool (measure )
0 commit comments