Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ensysmod/crud/base_depends_timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ def get_by_component_and_region(self, db: Session, *, component_id: int, region_
def create(self, db: Session, *, obj_in: CreateSchemaType) -> ModelType:
obj_in_dict = obj_in.dict()

# Check number of elements in list data_column.
# If only one element: Okay. If more than the length must match dataset number_of_time_steps
if len(obj_in_dict[self.data_column]) != 1:
allowed_len = crud.dataset.get(db, id=obj_in_dict['ref_dataset']).number_of_time_steps
if len(obj_in_dict[self.data_column]) != allowed_len:
raise ValueError(f"Number of elements in {self.data_column} must match "
f"number of time steps in dataset ({allowed_len}) or be 1.")

component = crud.energy_component.get_by_dataset_and_name(db, name=obj_in.component,
dataset_id=obj_in.ref_dataset)
obj_in_dict['ref_component'] = component.id
Expand Down
4 changes: 4 additions & 0 deletions ensysmod/model/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ class Dataset(Base):
id = Column(Integer, primary_key=True)
name = Column(String, unique=True, index=True, nullable=False)
description = Column(String, nullable=True)
hours_per_time_step = Column(Integer, nullable=False, default=1)
number_of_time_steps = Column(Integer, nullable=False, default=8760)
cost_unit = Column(String, nullable=False, default='1e9 Euro')
length_unit = Column(String, nullable=False, default='km')
4 changes: 4 additions & 0 deletions ensysmod/schemas/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ class DatasetBase(BaseModel):
"""
name: str
description: Optional[str] = None
hours_per_time_step: Optional[int] = None
number_of_time_steps: Optional[int] = None
cost_unit: Optional[str] = None
length_unit: Optional[str] = None


class DatasetCreate(DatasetBase):
Expand Down
2 changes: 1 addition & 1 deletion tests/api/test_ts_capacity_fix.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def get_random_fix_capacity_create(db: Session) -> CapacityFixCreate:
ref_dataset=region.ref_dataset,
component=source.component.name,
region=region.name,
fix_capacities=random_float_numbers()
fix_capacities=random_float_numbers(8760)
)


Expand Down
2 changes: 1 addition & 1 deletion tests/api/test_ts_capacity_max.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def get_random_max_capacity_create(db: Session) -> CapacityMaxCreate:
ref_dataset=region.ref_dataset,
component=source.component.name,
region=region.name,
max_capacities=random_float_numbers()
max_capacities=random_float_numbers(8760)
)


Expand Down
2 changes: 1 addition & 1 deletion tests/api/test_ts_operation_rate_fix.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def get_random_fix_operation_rate_create(db: Session) -> OperationRateFixCreate:
ref_dataset=region.ref_dataset,
component=source.component.name,
region=region.name,
fix_operation_rates=random_float_numbers()
fix_operation_rates=random_float_numbers(8760)
)


Expand Down
2 changes: 1 addition & 1 deletion tests/api/test_ts_operation_rate_max.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def get_random_max_operation_rate_create(db: Session) -> OperationRateMaxCreate:
ref_dataset=region.ref_dataset,
component=source.component.name,
region=region.name,
max_operation_rates=random_float_numbers()
max_operation_rates=random_float_numbers(8760)
)


Expand Down
4 changes: 3 additions & 1 deletion tests/utils/data_generator/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ def random_dataset_create() -> DatasetCreate:
"""
dataset_name = "DS " + random_lower_string()
dataset_description = "DS desc " + random_lower_string()
return DatasetCreate(name=dataset_name, description=dataset_description)
return DatasetCreate(name=dataset_name, description=dataset_description,
hours_per_time_step=1, number_of_time_steps=8760,
cost_unit='1e9 Euro', length_unit='km')


def random_existing_dataset(db: Session) -> Dataset:
Expand Down