From a1959c4a25b9c69fd33dbe479771bc5dbd5089b2 Mon Sep 17 00:00:00 2001
From: Philip Hackstock
Date: Tue, 8 Mar 2022 11:20:15 +0100
Subject: [PATCH 1/5] Update error message for multiple models
---
nomenclature/processor/region.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/nomenclature/processor/region.py b/nomenclature/processor/region.py
index a30ad72d..69025626 100644
--- a/nomenclature/processor/region.py
+++ b/nomenclature/processor/region.py
@@ -408,7 +408,8 @@ def apply(self, df: IamDataFrame, dsd: DataStructureDefinition) -> IamDataFrame:
if not processed_dfs:
raise ValueError(
- f"The region aggregation for model {model} resulted in an empty dataset"
+ f"The region aggregation for model(s) {df.model} resulted in an empty "
+ "dataset."
)
return pyam.concat(processed_dfs)
From 81cd07af78888f04e70a430867d67ed04da16e3e Mon Sep 17 00:00:00 2001
From: Philip Hackstock
Date: Tue, 8 Mar 2022 11:20:30 +0100
Subject: [PATCH 2/5] Add test for multiple models
---
.../rename_only/{rename_only.yaml => model_a.yaml} | 0
tests/data/region_processing/rename_only/model_b.yaml | 4 ++++
tests/test_core.py | 10 ++++++++--
3 files changed, 12 insertions(+), 2 deletions(-)
rename tests/data/region_processing/rename_only/{rename_only.yaml => model_a.yaml} (100%)
create mode 100644 tests/data/region_processing/rename_only/model_b.yaml
diff --git a/tests/data/region_processing/rename_only/rename_only.yaml b/tests/data/region_processing/rename_only/model_a.yaml
similarity index 100%
rename from tests/data/region_processing/rename_only/rename_only.yaml
rename to tests/data/region_processing/rename_only/model_a.yaml
diff --git a/tests/data/region_processing/rename_only/model_b.yaml b/tests/data/region_processing/rename_only/model_b.yaml
new file mode 100644
index 00000000..79b3795f
--- /dev/null
+++ b/tests/data/region_processing/rename_only/model_b.yaml
@@ -0,0 +1,4 @@
+model: model_b
+native_regions:
+ - region_a: region_A
+ - region_B
diff --git a/tests/test_core.py b/tests/test_core.py
index cb85a8bf..2606d40d 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -55,12 +55,18 @@ def test_region_processing_empty_raises():
pd.DataFrame(
[
["model_a", "scen_a", "region_foo", "Primary Energy", "EJ/yr", 1, 2],
+ ["model_b", "scen_a", "region_foo", "Primary Energy", "EJ/yr", 1, 2],
],
columns=IAMC_IDX + [2005, 2010],
)
)
-
- with pytest.raises(ValueError, match="The region aggregation for model model_a"):
+ with pytest.raises(
+ ValueError,
+ match=(
+ "region aggregation for model\(s\) \['model_a', 'model_b'\] resulted in an "
+ "empty dataset"
+ ),
+ ):
process(
test_df,
DataStructureDefinition(TEST_DATA_DIR / "region_processing/dsd"),
From 6412524b7e69604206b21d32192eecffce364fd7 Mon Sep 17 00:00:00 2001
From: Philip Hackstock
Date: Wed, 16 Mar 2022 11:16:34 +0100
Subject: [PATCH 3/5] Update nomenclature/processor/region.py
Co-authored-by: Daniel Huppmann
---
nomenclature/processor/region.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/nomenclature/processor/region.py b/nomenclature/processor/region.py
index 69025626..fbee0b92 100644
--- a/nomenclature/processor/region.py
+++ b/nomenclature/processor/region.py
@@ -408,8 +408,7 @@ def apply(self, df: IamDataFrame, dsd: DataStructureDefinition) -> IamDataFrame:
if not processed_dfs:
raise ValueError(
- f"The region aggregation for model(s) {df.model} resulted in an empty "
- "dataset."
+ f"The region-processing for model(s) {df.model} returned an empty dataset"
)
return pyam.concat(processed_dfs)
From 8e854d16f87229e13d16c3de2d389bb2355a5cd6 Mon Sep 17 00:00:00 2001
From: Philip Hackstock
Date: Wed, 16 Mar 2022 14:30:04 +0100
Subject: [PATCH 4/5] Update to use region-processing
---
nomenclature/processor/region.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/nomenclature/processor/region.py b/nomenclature/processor/region.py
index fbee0b92..f37b3c68 100644
--- a/nomenclature/processor/region.py
+++ b/nomenclature/processor/region.py
@@ -323,7 +323,7 @@ def apply(self, df: IamDataFrame, dsd: DataStructureDefinition) -> IamDataFrame:
# If no mapping is defined the data frame is returned unchanged
if model not in self.mappings:
- logger.info(f"No region aggregation mapping found for model {model}")
+ logger.info(f"No model mapping found for model {model}")
processed_dfs.append(model_df)
# Otherwise we first rename, then aggregate
@@ -331,7 +331,7 @@ def apply(self, df: IamDataFrame, dsd: DataStructureDefinition) -> IamDataFrame:
# before aggregating, check that all regions are valid
self.mappings[model].validate_regions(dsd)
logger.info(
- f"Applying region aggregation for model {model} from file "
+ f"Applying region-processing for model {model} from file "
f"{self.mappings[model].file}"
)
@@ -408,7 +408,8 @@ def apply(self, df: IamDataFrame, dsd: DataStructureDefinition) -> IamDataFrame:
if not processed_dfs:
raise ValueError(
- f"The region-processing for model(s) {df.model} returned an empty dataset"
+ f"The region-processing for model(s) {df.model} returned an empty "
+ "dataset"
)
return pyam.concat(processed_dfs)
From f021ced5ee5292ce340280a59aeb73a6f9ae02e0 Mon Sep 17 00:00:00 2001
From: Philip Hackstock
Date: Wed, 16 Mar 2022 14:30:24 +0100
Subject: [PATCH 5/5] Shortened error match
---
tests/test_core.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/tests/test_core.py b/tests/test_core.py
index 2606d40d..8dc3830e 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -60,13 +60,7 @@ def test_region_processing_empty_raises():
columns=IAMC_IDX + [2005, 2010],
)
)
- with pytest.raises(
- ValueError,
- match=(
- "region aggregation for model\(s\) \['model_a', 'model_b'\] resulted in an "
- "empty dataset"
- ),
- ):
+ with pytest.raises(ValueError, match=("'model_a', 'model_b'.*empty dataset")):
process(
test_df,
DataStructureDefinition(TEST_DATA_DIR / "region_processing/dsd"),