Skip to content

Commit

Permalink
Pass DataStructureDefinition to checks
Browse files Browse the repository at this point in the history
  • Loading branch information
dc-almeida committed Nov 13, 2024
1 parent 3424777 commit 1e95db2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 29 deletions.
33 changes: 6 additions & 27 deletions nomenclature/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import yaml

from nomenclature.definition import DataStructureDefinition
from nomenclature.config import NomenclatureConfig
from nomenclature.processor import (
DataValidator,
RegionProcessor,
Expand Down Expand Up @@ -55,11 +54,9 @@ def assert_valid_yaml(path: Path):

def _check_mappings(
path: Path,
definitions: str = "definitions",
dimensions: Optional[List[str]] = None,
dsd: DataStructureDefinition,
mappings: Optional[str] = None,
) -> None:
dsd = DataStructureDefinition(path / definitions, dimensions)
if mappings is None:
if (path / "mappings").is_dir():
RegionProcessor.from_directory(path / "mappings", dsd)
Expand All @@ -86,13 +83,11 @@ def _collect_processor_errors(

def _check_processor_directory(
path: Path,
dsd: DataStructureDefinition,
processor: Processor,
processor_arg: str,
folder: Optional[str] = None,
definitions: Optional[str] = "definitions",
dimensions: Optional[List[str]] = None,
) -> None:
dsd = DataStructureDefinition(path / definitions, dimensions)
if folder is None:
if (path / processor_arg).is_dir():
_collect_processor_errors(path / processor_arg, processor, dsd)
Expand Down Expand Up @@ -145,28 +140,12 @@ def assert_valid_structure(
f"Definitions directory not found: {path / definitions}"
)

if not dimensions: # if "dimensions" were not specified
dimensions = (
NomenclatureConfig.from_file(path / "nomenclature.yaml").dimensions
if (path / "nomenclature.yaml").is_file()
else [x.stem for x in (path / definitions).iterdir() if x.is_dir()]
)
if not dimensions:
raise FileNotFoundError(
f"`definitions` directory is empty: {path / definitions}"
)
_check_mappings(path, definitions, dimensions, mappings)
_check_processor_directory(
path,
RequiredDataValidator,
"required_data",
required_data,
definitions,
dimensions,
)
dsd = DataStructureDefinition(path / definitions, dimensions)
_check_mappings(path, dsd, mappings)
_check_processor_directory(
path, DataValidator, "validate_data", validate_data, definitions, dimensions
path, dsd, RequiredDataValidator, "required_data", required_data
)
_check_processor_directory(path, dsd, DataValidator, "validate_data", validate_data)


# Todo: add function which runs `DataStructureDefinition(path).validate(scenario)`
4 changes: 2 additions & 2 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ def test_cli_empty_definitions_dir():
)

assert cli_result.exit_code == 1
assert isinstance(cli_result.exception, FileNotFoundError)
assert "`definitions` directory is empty" in str(cli_result.exception)
assert isinstance(cli_result.exception, ValueError)
assert "No dimensions specified in data structure." in str(cli_result.exception)


def test_check_region_aggregation(tmp_path):
Expand Down

0 comments on commit 1e95db2

Please sign in to comment.