Skip to content

Commit 1aeb352

Browse files
committed
Make get_standard_names public
1 parent 8d1af3b commit 1aeb352

File tree

3 files changed

+36
-26
lines changed

3 files changed

+36
-26
lines changed

cf_xarray/accessor.py

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -331,29 +331,6 @@ def _filter_by_standard_names(ds: Dataset, name: Union[str, List[str]]) -> List[
331331
return varnames
332332

333333

334-
def _get_list_standard_names(obj: Dataset) -> List[str]:
335-
"""
336-
Returns a sorted list of standard names in Dataset.
337-
338-
Parameters
339-
----------
340-
341-
obj: DataArray, Dataset
342-
Xarray object to process
343-
344-
Returns
345-
-------
346-
list of standard names in dataset
347-
"""
348-
return sorted(
349-
[
350-
v.attrs["standard_name"]
351-
for k, v in obj.variables.items()
352-
if "standard_name" in v.attrs
353-
]
354-
)
355-
356-
357334
def _guess_bounds_dim(da):
358335
"""
359336
Guess bounds values given a 1D coordinate variable.
@@ -781,7 +758,7 @@ def describe(self):
781758
if isinstance(self._obj, DataArray):
782759
text += "\tunsupported\n"
783760
else:
784-
stdnames = _get_list_standard_names(self._obj)
761+
stdnames = self.get_standard_names()
785762
text += "\t"
786763
text += "\n".join(
787764
textwrap.wrap(f"{stdnames!r}", 70, break_long_words=False)
@@ -813,10 +790,35 @@ def get_valid_keys(self) -> Set[str]:
813790
if measures:
814791
varnames.extend(measures)
815792

816-
if not isinstance(self._obj, DataArray):
817-
varnames.extend(_get_list_standard_names(self._obj))
793+
varnames.extend(self.get_standard_names())
818794
return set(varnames)
819795

796+
def get_standard_names(self) -> List[str]:
797+
"""
798+
Returns a sorted list of standard names in Dataset.
799+
800+
Parameters
801+
----------
802+
803+
obj: DataArray, Dataset
804+
Xarray object to process
805+
806+
Returns
807+
-------
808+
list of standard names in dataset
809+
"""
810+
if isinstance(self._obj, Dataset):
811+
variables = self._obj.variables
812+
elif isinstance(self._obj, DataArray):
813+
variables = self._obj.coords
814+
return sorted(
815+
[
816+
v.attrs["standard_name"]
817+
for k, v in variables.items()
818+
if "standard_name" in v.attrs
819+
]
820+
)
821+
820822
def get_associated_variable_names(self, name: Hashable) -> List[Hashable]:
821823
"""
822824
Returns a list of variable names referred to in the following attributes

cf_xarray/tests/test_accessor.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ def test_describe(capsys):
6666
assert actual == expected
6767

6868

69+
def test_get_standard_names():
70+
expected = ["air_temperature", "latitude", "longitude", "time"]
71+
actual = airds.cf.get_standard_names()
72+
assert actual == expected
73+
74+
6975
def test_getitem_standard_name():
7076
actual = airds.cf["air_temperature"]
7177
expected = airds["air"]

doc/api.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ DataArray
1818

1919
DataArray.cf.add_bounds
2020
DataArray.cf.describe
21+
DataArray.cf.get_standard_names
2122
DataArray.cf.get_valid_keys
2223
DataArray.cf.rename_like
2324

@@ -34,5 +35,6 @@ Dataset
3435

3536
Dataset.cf.add_bounds
3637
Dataset.cf.describe
38+
Dataset.cf.get_standard_names
3739
Dataset.cf.get_valid_keys
3840
Dataset.cf.rename_like

0 commit comments

Comments
 (0)