Coverage for backend/pinch_service/OpenPinch/src/analysis/response.py: 100%

25 statements  

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

1from typing import List 

2from .graphs import get_output_graphs 

3from .support_methods import * 

4from ..classes import * 

5 

6__all__ = ["output_response"] 

7 

8 

9####################################################################################################### 

10# Public API 

11####################################################################################################### 

12 

13def output_response(site: Zone) -> dict: 

14 """Serializes results data into a dictionaty from options.""" 

15 results = {} 

16 results['name'] = site.name 

17 results['targets'] = _report(site) 

18 results['utilities'] = _get_default_utilities(site) 

19 results['graphs'] = get_output_graphs(site) 

20 return results 

21 

22 

23####################################################################################################### 

24# Helper Functions 

25####################################################################################################### 

26 

27def _report(zone: Zone) -> dict: 

28 """Creates the database summary of zone targets.""" 

29 targets: List[dict] = [] 

30 

31 for t in zone.targets.values(): 

32 t: Target 

33 targets.append(t.serialize_json()) 

34 

35 if len(zone.subzones) > 0: 

36 for z in zone.subzones.values(): 

37 z: Zone 

38 targets.extend( 

39 _report(z) 

40 ) 

41 

42 return targets 

43 

44 

45def _get_default_utilities(site: Zone) -> List[Stream]: 

46 """Gets a list of any default utilities generated during the analysis.""" 

47 utilities: List[Stream] = site.hot_utilities + site.cold_utilities 

48 default_hu: Stream = next((u for u in utilities if u.name == 'HU'), None) 

49 default_cu: Stream = next((u for u in utilities if u.name == 'CU'), None) 

50 return [default_hu, default_cu]