Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Aug 5, 2024
1 parent 61ef0d0 commit 78f50a5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 11 deletions.
24 changes: 17 additions & 7 deletions compliance_checker/cf/cf_1_9.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,10 @@ def check_domain_variables(self, ds: Dataset):
continue
appendix_a_not_recommended_attrs = []
for attr_name in domain_var.ncattrs():
if attr_name in self.appendix_a and "D" not in self.appendix_a[attr_name]["attr_loc"]:
if (
attr_name in self.appendix_a
and "D" not in self.appendix_a[attr_name]["attr_loc"]
):
appendix_a_not_recommended_attrs.append(attr_name)

if appendix_a_not_recommended_attrs:
Expand All @@ -163,21 +166,28 @@ def check_domain_variables(self, ds: Dataset):
# no errors occurred
domain_valid.score += 1


# IMPLEMENTATION CONFORMANCE 5.8 REQUIRED 4/4
if hasattr(domain_var, "cell_measures"):
cell_measures_var_names = regex.findall(r"\b(?:area|volume):\s+(\w+)", domain_var.cell_measures)
cell_measures_var_names = regex.findall(
r"\b(?:area|volume):\s+(\w+)", domain_var.cell_measures,
)
# check exist
for var_name in cell_measures_var_names:
try:
cell_measures_variable = ds.variables[var_name]
except ValueError:
# TODO: what to do here?
continue
domain_coord_var_names = {var_like.name for var_like in domain_coord_vars}
domain_valid.assert_true(set(cell_measures_variable.dimensions).issubset(domain_coord_var_names),
"Variables named in the cell_measures attributes must have a dimensions attribute with "
"values that are a subset of the referring domain variable's dimension attribute")
domain_coord_var_names = {
var_like.name for var_like in domain_coord_vars
}
domain_valid.assert_true(
set(cell_measures_variable.dimensions).issubset(
domain_coord_var_names,
),
"Variables named in the cell_measures attributes must have a dimensions attribute with "
"values that are a subset of the referring domain variable's dimension attribute",
)

results.append(domain_valid.to_result())

Expand Down
10 changes: 6 additions & 4 deletions compliance_checker/tests/test_cf.py
Original file line number Diff line number Diff line change
Expand Up @@ -3258,10 +3258,12 @@ def test_domain(self):
domain_var.cell_measures = "volume: cube_bad"
dataset.createVariable("cube_bad", "f8", ("lon", "lat", "depth", "time"))
results = self.cf.check_domain_variables(dataset)
self.assertTrue("Variables named in the cell_measures attributes must "
"have a dimensions attribute with values that are a "
"subset of the referring domain variable's dimension "
"attribute" in results[0].msgs)
self.assertTrue(
"Variables named in the cell_measures attributes must "
"have a dimensions attribute with values that are a "
"subset of the referring domain variable's dimension "
"attribute" in results[0].msgs,
)
del dataset
dataset = MockTimeSeries()
# domain should be dimensionless -- currently not an error in
Expand Down

0 comments on commit 78f50a5

Please sign in to comment.