Coverage for backend/common/models/idaes/flowsheet_schema.py: 97%

31 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1from typing import Optional, Literal 

2from pydantic import BaseModel, Field 

3from common.models.idaes import UnitModelSchema, ArcSchema 

4from common.models.idaes.unit_model_schema import SolvedPropertyValueSchema 

5from common.models.idaes.scenario_schema import OptimizationSchema 

6 

7class PropertyPackageType(BaseModel): 

8 id: int 

9 type: str 

10 compounds: list[str] 

11 phases: list[str] 

12 

13def default_time_set(): 

14 return list([0]) 

15 

16class FlowsheetSchema(BaseModel): 

17 """Represents the schema required on a JSON object to define a flowsheet in IDAES.""" 

18 id: int 

19 name: str = Field(default="") 

20 description: str = Field(default="") 

21 dynamic: bool # If the flowsheet is dynamic or steady state 

22 is_rating_mode: bool = False # If the flowsheet is in rating mode 

23 time_set: Optional[list[float]] = Field(default_factory=lambda: default_time_set()) # Time set to use in idaes. 

24 property_packages: list[PropertyPackageType] # Property packages are not required in return type 

25 unit_models: list[UnitModelSchema] 

26 arcs: list[ArcSchema] 

27 machineLearningBlock: Optional[list[dict]] = None 

28 expressions: Optional[list[dict]] = None 

29 optimizations: Optional[list[OptimizationSchema]] = None # Convert to list[ScenarioSchema] 

30 disable_initialization: bool = False # If the flowsheet should not be initialised 

31 solver_option: Optional[str] = "ipopt" 

32 

33 

34class SolvedFlowsheetSchema(BaseModel): 

35 id: int 

36 properties: list[SolvedPropertyValueSchema] 

37 initial_values: dict[str, dict]