Skip to content

Commit

Permalink
Change to 'before' validator to ensure list of str internally
Browse files Browse the repository at this point in the history
  • Loading branch information
dc-almeida committed Oct 10, 2024
1 parent 7dbb77f commit 89db4a9
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 5 deletions.
7 changes: 4 additions & 3 deletions nomenclature/code.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,13 +243,14 @@ class RegionCode(Code):
"""

hierarchy: str = None
countries: Optional[Union[List[str], str]] = None
countries: Optional[List[str]] = None
iso3_codes: Optional[Union[List[str], str]] = None

@field_validator("countries")
@field_validator("countries", mode="before")
def check_countries(cls, v: List[str], info: ValidationInfo) -> List[str]:
"""Verifies that each country name is defined in `nomenclature.countries`."""
if invalid_country_names := set(to_list(v)) - set(countries.names):
v = to_list(v)
if invalid_country_names := set(v) - set(countries.names):
raise ValueError(
f"Region '{info.data['name']}' uses non-standard country name(s): "
+ ", ".join(invalid_country_names)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
- World
- countries:
- Some region:
countries: Austria
countries: Austria
2 changes: 1 addition & 1 deletion tests/test_codelist.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ def test_region_codelist_str_country_name():
"region",
MODULE_TEST_DATA_DIR / "region_codelist" / "countries_attribute_str",
)
assert code["Some region"].countries == "Austria"
assert code["Some region"].countries == ["Austria"]


def test_norway_as_str():
Expand Down

0 comments on commit 89db4a9

Please sign in to comment.