|
1 | 1 | from typing import Literal |
2 | 2 |
|
3 | | -from pydantic import Field |
| 3 | +from pydantic import Field, field_validator |
4 | 4 |
|
5 | 5 | from libecalc.presentation.yaml.yaml_types import YamlBase |
6 | 6 | from libecalc.presentation.yaml.yaml_types.components.legacy.energy_usage_model.common import ( |
@@ -96,6 +96,14 @@ class YamlEnergyUsageModelCompressorSystem(EnergyUsageModelCommon): |
96 | 96 | description="Operational settings of the system. \n\n$ECALC_DOCS_KEYWORDS_URL/OPERATIONAL_SETTINGS", |
97 | 97 | ) |
98 | 98 |
|
| 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 | + |
99 | 107 |
|
100 | 108 | class YamlPumpSystemPump(YamlBase): |
101 | 109 | name: str = Field( |
@@ -136,3 +144,11 @@ class YamlEnergyUsageModelPumpSystem(EnergyUsageModelCommon): |
136 | 144 | title="OPERATIONAL_SETTINGS", |
137 | 145 | description="Operational settings of the system. \n\n$ECALC_DOCS_KEYWORDS_URL/OPERATIONAL_SETTINGS", |
138 | 146 | ) |
| 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