Skip to content

Commit

Permalink
Fix pydantic validator
Browse files Browse the repository at this point in the history
  • Loading branch information
phackstock committed Dec 20, 2024
1 parent 0540ed3 commit 38868d5
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions nomenclature/code.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@
from keyword import iskeyword
from pathlib import Path
from typing import Any

from pyam.utils import to_list
from pydantic import (
field_validator,
field_serializer,
model_validator,
ConfigDict,
BaseModel,
ConfigDict,
Field,
ValidationInfo,
field_serializer,
field_validator,
model_validator,
)
from typing_extensions import Self

from nomenclature.error import ErrorCollector

from pyam.utils import to_list

from .countries import countries


Expand Down Expand Up @@ -210,11 +211,12 @@ def convert_none_to_empty_string(cls, v):
return v if v is not None else ""

@model_validator(mode="after")
def wildcard_must_skip_region_aggregation(cls, data):
if "*" in data.name and data.skip_region_aggregation is False:
def wildcard_must_skip_region_aggregation(self) -> Self:
if self.is_wildcard and self.skip_region_aggregation is False:
raise ValueError(
f"Wildcard variable '{data.name}' must skip region aggregation"
f"Wildcard variable '{self.name}' must skip region aggregation"
)
return self

@field_validator("components", mode="before")
def cast_variable_components_args(cls, v):
Expand All @@ -232,6 +234,10 @@ def cast_variable_components_args(cls, v):
def convert_str_to_none_for_writing(self, v):
return v if v != "" else None

@property
def is_wildcard(self) -> bool:
return "*" in self.name

@property
def units(self) -> list[str]:
return self.unit if isinstance(self.unit, list) else [self.unit]
Expand Down

0 comments on commit 38868d5

Please sign in to comment.