@@ -984,32 +984,34 @@ def __getitem__(self, key: Union[str, List[str]]):
984
984
)
985
985
986
986
if scalar_key :
987
- axis_coord_mapper = _get_axis_coord_single
988
987
key = (key ,) # type: ignore
989
- else :
990
- axis_coord_mapper = _get_axis_coord
988
+
989
+ def check_results (names , k ):
990
+ if scalar_key and len (names ) > 1 :
991
+ raise ValueError (
992
+ f"Receive multiple variables for key { k !r} : { names } . "
993
+ f"Expected only one. Please pass a list [{ k !r} ] "
994
+ f"instead to get all variables matching { k !r} ."
995
+ )
991
996
992
997
varnames : List [Hashable ] = []
993
998
coords : List [Hashable ] = []
994
999
successful = dict .fromkeys (key , False )
995
1000
for k in key :
996
1001
if k in _AXIS_NAMES + _COORD_NAMES :
997
- try :
998
- names = axis_coord_mapper (self ._obj , k )
999
- except KeyError as e :
1000
- raise KeyError (
1001
- f"Receive multiple variables for key { k !r} . Expected only one. Please pass a list [{ k !r} ] instead to get all variables matching { k !r} ."
1002
- )
1003
- raise e
1002
+ names = _get_axis_coord (self ._obj , k )
1003
+ check_results (names , k )
1004
1004
successful [k ] = bool (names )
1005
1005
coords .extend (names )
1006
1006
elif k in _CELL_MEASURES :
1007
1007
measure = _get_measure (self ._obj , k )
1008
+ check_results (measure , k )
1008
1009
successful [k ] = bool (measure )
1009
1010
if measure :
1010
1011
varnames .extend (measure )
1011
1012
elif not isinstance (self ._obj , DataArray ):
1012
1013
stdnames = _get_with_standard_name (self ._obj , k )
1014
+ check_results (stdnames , k )
1013
1015
successful [k ] = bool (stdnames )
1014
1016
varnames .extend (stdnames )
1015
1017
coords .extend (list (set (stdnames ) & set (self ._obj .coords )))
0 commit comments