Skip to content

Commit 504b923

Browse files
authored
fix: do not allow consumers with identical names within same system (#1118)
1 parent 75808a2 commit 504b923

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

src/libecalc/presentation/yaml/yaml_types/components/legacy/energy_usage_model/yaml_energy_usage_model_consumer_system.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Literal
22

3-
from pydantic import Field
3+
from pydantic import Field, field_validator
44

55
from libecalc.presentation.yaml.yaml_types import YamlBase
66
from libecalc.presentation.yaml.yaml_types.components.legacy.energy_usage_model.common import (
@@ -96,6 +96,14 @@ class YamlEnergyUsageModelCompressorSystem(EnergyUsageModelCommon):
9696
description="Operational settings of the system. \n\n$ECALC_DOCS_KEYWORDS_URL/OPERATIONAL_SETTINGS",
9797
)
9898

99+
@field_validator("compressors")
100+
def assert_unique_names(cls, compressors):
101+
unique_names = {compressor.name for compressor in compressors}
102+
if len(compressors) != len(unique_names):
103+
raise ValueError("Names must be unique within a compressor system")
104+
105+
return compressors
106+
99107

100108
class YamlPumpSystemPump(YamlBase):
101109
name: str = Field(
@@ -136,3 +144,11 @@ class YamlEnergyUsageModelPumpSystem(EnergyUsageModelCommon):
136144
title="OPERATIONAL_SETTINGS",
137145
description="Operational settings of the system. \n\n$ECALC_DOCS_KEYWORDS_URL/OPERATIONAL_SETTINGS",
138146
)
147+
148+
@field_validator("pumps")
149+
def assert_unique_names(cls, pumps):
150+
unique_names = {pump.name for pump in pumps}
151+
if len(pumps) != len(unique_names):
152+
raise ValueError("Names must be unique within a pump system")
153+
154+
return pumps

0 commit comments

Comments
 (0)