diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3a3ecd05..c5613381 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - test_requirements.txt - repo: https://github.com/psf/black - rev: 24.4.2 + rev: 24.8.0 hooks: - id: black language_version: python3 @@ -31,12 +31,12 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.5.0 + rev: v0.5.6 hooks: - id: ruff - repo: https://github.com/tox-dev/pyproject-fmt - rev: 2.1.3 + rev: 2.2.1 hooks: - id: pyproject-fmt diff --git a/compliance_checker/cf/cf_1_9.py b/compliance_checker/cf/cf_1_9.py index 73211e44..6e36ebe8 100644 --- a/compliance_checker/cf/cf_1_9.py +++ b/compliance_checker/cf/cf_1_9.py @@ -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: @@ -163,10 +166,11 @@ 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: @@ -174,10 +178,16 @@ def check_domain_variables(self, ds: Dataset): 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()) diff --git a/compliance_checker/tests/test_cf.py b/compliance_checker/tests/test_cf.py index f053f837..9738b78e 100644 --- a/compliance_checker/tests/test_cf.py +++ b/compliance_checker/tests/test_cf.py @@ -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