diff --git a/ixmp4/data/db/optimization/table/model.py b/ixmp4/data/db/optimization/table/model.py index 37c37138..7b421638 100644 --- a/ixmp4/data/db/optimization/table/model.py +++ b/ixmp4/data/db/optimization/table/model.py @@ -26,7 +26,9 @@ class Table(base.BaseModel): @validates("data") def validate_data(self, key: Any, data: dict[str, Any]) -> dict[str, Any]: - utils.validate_data(host=self, data=data, columns=self.columns) + utils.validate_data( + host=self, data=data, columns=self.columns, has_values_and_units=False + ) return data __table_args__ = (db.UniqueConstraint("name", "run__id"),) diff --git a/ixmp4/data/db/optimization/utils.py b/ixmp4/data/db/optimization/utils.py index 4231096d..d62ca145 100644 --- a/ixmp4/data/db/optimization/utils.py +++ b/ixmp4/data/db/optimization/utils.py @@ -24,11 +24,14 @@ def validate_data( data: dict[str, Any], columns: list["Column"], column_names: list[str] | None = None, + has_values_and_units: bool = True, ) -> None: data_frame = pd.DataFrame.from_dict(data) - # We don't want to validate "values" and "units" - number_columns = len(data_frame.columns) - 2 + # We don't want to validate "values" and "units" when they are present + number_columns = ( + len(data_frame.columns) - 2 if has_values_and_units else len(data_frame.columns) + ) # TODO for all of the following, we might want to create unique exceptions # Could me make both more specific by specifiying missing/extra columns?