diff --git a/nomenclature/codelist.py b/nomenclature/codelist.py index 7cb39948..9c8e1580 100644 --- a/nomenclature/codelist.py +++ b/nomenclature/codelist.py @@ -13,7 +13,7 @@ import nomenclature from nomenclature.code import Code, MetaCode, RegionCode, VariableCode from nomenclature.config import NomenclatureConfig -from nomenclature.error import custom_pydantic_errors +from nomenclature.error import custom_pydantic_errors, ErrorCollector from pyam.utils import is_list_like here = Path(__file__).parent.absolute() @@ -213,12 +213,16 @@ def from_directory( ) + code_list ) - + errors = ErrorCollector() mapping: Dict[str, Code] = {} for code in code_list: if code.name in mapping: - raise ValueError(f"Duplicate item in {name} codelist: {code.name}") + errors.append( + ValueError(f"Duplicate item in {name} codelist: {code.name}") + ) mapping[code.name] = code + if errors: + raise ValueError(errors) return cls(name=name, mapping=mapping) @classmethod @@ -636,11 +640,14 @@ def from_directory( # translate to mapping mapping: Dict[str, RegionCode] = {} + + errors = ErrorCollector() for code in code_list: if code.name in mapping: - raise ValueError(f"Trying to set a duplicate code {code.name}") + errors.append(ValueError(f"Trying to set a duplicate code {code.name}")) mapping[code.name] = code - + if errors: + raise ValueError(errors) return cls(name=name, mapping=mapping) @property