Coverage for backend/django/core/auxiliary/services/result_summary/cache_payloads.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-07-22 05:22 +0000

1from typing import NamedTuple 

2 

3from common.models.notifications.payloads import ResultSummaryCalculationError 

4from core.auxiliary.services.result_series_identity import ( 

5 ResultSeriesIndexedItemPayload, 

6) 

7from core.auxiliary.services.result_summary.contracts import ( 

8 ResultHistogramOptions, 

9 ResultMetricTargets, 

10 ResultStats, 

11 ResultSummary, 

12) 

13from core.auxiliary.services.result_summary.histograms import ( 

14 CachedHistogramVariants, 

15 cached_histogram_bins_for, 

16) 

17from pydantic import BaseModel, ConfigDict 

18 

19 

20class CachedResultSummary(BaseModel): 

21 model_config = ConfigDict(extra="forbid") 

22 

23 key: str 

24 label: str 

25 unit: str | None 

26 property_value_id: int 

27 indexed_items: list[ResultSeriesIndexedItemPayload] 

28 stats: ResultStats 

29 metric_targets: ResultMetricTargets 

30 histogram_bins: CachedHistogramVariants 

31 

32 

33class ResultSummaryCachePayload(BaseModel): 

34 model_config = ConfigDict(extra="forbid") 

35 

36 scenario_id: int 

37 simulation_object_id: int 

38 source_task_id: int 

39 summaries: list[CachedResultSummary] 

40 

41 

42class CachedResultSummaryBuild(NamedTuple): 

43 payload: ResultSummaryCachePayload 

44 errors: list[ResultSummaryCalculationError] 

45 

46 

47def cached_summary_to_result_summary( 

48 summary: CachedResultSummary, 

49 options: ResultHistogramOptions, 

50) -> ResultSummary: 

51 """Select one cached histogram variant for the public response DTO.""" 

52 

53 return ResultSummary( 

54 key=summary.key, 

55 label=summary.label, 

56 unit=summary.unit, 

57 property_value_id=summary.property_value_id, 

58 indexed_items=summary.indexed_items, 

59 stats=summary.stats, 

60 metric_targets=summary.metric_targets, 

61 histogram_bins=cached_histogram_bins_for( 

62 summary.histogram_bins, 

63 options, 

64 ), 

65 )