Skip to content

Commit c45cddc

Browse files
committed
add and test measures in Dataset keys
1 parent 36de5e3 commit c45cddc

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

cf_xarray/accessor.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ def _get_all_cell_measures(self):
659659
self._all_cell_measures = set(_CELL_MEASURES + tuple(self.cell_measures))
660660

661661
return self._all_cell_measures
662-
662+
663663
def _process_signature(
664664
self,
665665
func: Callable,
@@ -874,8 +874,7 @@ def keys(self) -> Set[str]:
874874
"""
875875

876876
varnames = list(self.axes) + list(self.coordinates)
877-
if not isinstance(self._obj, Dataset):
878-
varnames.extend(list(self.cell_measures))
877+
varnames.extend(list(self.cell_measures))
879878
varnames.extend(list(self.standard_names))
880879

881880
return set(varnames)

cf_xarray/tests/test_accessor.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ def test_cell_measures(capsys):
5656
ds = airds.copy(deep=True)
5757
ds["foo"] = xr.DataArray(ds["cell_area"], attrs=dict(standard_name="foo_std_name"))
5858
ds["air"].attrs["cell_measures"] += " foo_measure: foo"
59-
assert "foo_std_name" in ds.cf["air_temperature"].cf
59+
assert ("foo_std_name" in ds.cf["air_temperature"].cf) and ("foo_measure" in ds.cf)
6060

6161
ds["air"].attrs["cell_measures"] += " volume: foo"
62+
ds["foo"].attrs["cell_measures"] = ds["air"].attrs["cell_measures"]
6263
expected = dict(area=["cell_area"], foo_measure=["foo"], volume=["foo"])
63-
actual = ds["air"].cf.cell_measures
64-
assert actual == expected
64+
actual_air = ds["air"].cf.cell_measures
65+
actual_foo = ds["foo"].cf.cell_measures
66+
assert actual_air == actual_foo == expected
6567

6668
actual = ds.cf.cell_measures
6769
assert actual == expected
@@ -248,7 +250,10 @@ def test_kwargs_expand_key_to_multiple_keys():
248250
@pytest.mark.parametrize(
249251
"obj, expected",
250252
[
251-
(ds, {"latitude", "longitude", "time", "X", "Y", "T", "air_temperature"}),
253+
(
254+
ds,
255+
{"latitude", "longitude", "time", "X", "Y", "T", "air_temperature", "area"},
256+
),
252257
(ds.air, {"latitude", "longitude", "time", "X", "Y", "T", "area"}),
253258
(ds_no_attrs.air, set()),
254259
],

doc/whats-new.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ What's New
33

44
v0.4.0 (unreleased)
55
===================
6-
6+
- Support for arbitrary cell measures indexing. By `Mattia Almansi`_.
77

88
v0.3.1 (Nov 25, 2020)
99
=====================

0 commit comments

Comments
 (0)