Skip to content

Commit 011f7cc

Browse files
cspencerjonesdcherian
authored andcommitted
Update filter_by_attrs to use 'variables' instead of 'data_vars' (#3247)
* Update filter_by_attrs to use 'variables' instead of 'data_vars' This will allow `filter_by_attrs` to filter coordinates as well as variables. @ocefpaf * added tests for filter_by_attrs acting on coords * fixed pep8 issues * Change standard_name to long_name in filter_by_attrs test * remove whitespace
1 parent 487b087 commit 011f7cc

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

xarray/core/dataset.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5148,7 +5148,7 @@ def filter_by_attrs(self, **kwargs):
51485148
51495149
""" # noqa
51505150
selection = []
5151-
for var_name, variable in self.data_vars.items():
5151+
for var_name, variable in self.variables.items():
51525152
has_value_flag = False
51535153
for attr_name, pattern in kwargs.items():
51545154
attr_value = variable.attrs.get(attr_name)

xarray/tests/test_dataset.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -4927,7 +4927,7 @@ def test_filter_by_attrs(self):
49274927
"temperature_10": (["t"], [0], temp10),
49284928
"precipitation": (["t"], [0], precip),
49294929
},
4930-
coords={"time": (["t"], [0], dict(axis="T"))},
4930+
coords={"time": (["t"], [0], dict(axis="T", long_name="time_in_seconds"))},
49314931
)
49324932

49334933
# Test return empty Dataset.
@@ -4941,6 +4941,11 @@ def test_filter_by_attrs(self):
49414941

49424942
assert_equal(new_ds["precipitation"], ds["precipitation"])
49434943

4944+
# Test filter coordinates
4945+
new_ds = ds.filter_by_attrs(long_name="time_in_seconds")
4946+
assert new_ds["time"].long_name == "time_in_seconds"
4947+
assert not bool(new_ds.data_vars)
4948+
49444949
# Test return more than one DataArray.
49454950
new_ds = ds.filter_by_attrs(standard_name="air_potential_temperature")
49464951
assert len(new_ds.data_vars) == 2

0 commit comments

Comments
 (0)