Coverage for polars_analysis / models.py: 100%

60 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-13 13:37 -0400

1import datetime 

2from typing import List, Literal, Optional 

3 

4from pydantic import BaseModel 

5 

6type BoardType = Literal["EM", "HEC"] 

7type Gain = Literal["hi", "lo"] 

8type QC_MeasType = Literal["qc", "pedestal", "pulse", "crosstalk"] 

9 

10 

11class Label(BaseModel): 

12 """ 

13 Schema for json stored in threshold_labels table 

14 """ 

15 

16 variable: str 

17 meas_type: QC_MeasType 

18 gain: Optional[Gain] = None 

19 channel: Optional[int] = None 

20 link: Optional[int] = None 

21 adc: Optional[int] = None 

22 awg_amp: Optional[float] = None 

23 att_val: Optional[float] = None 

24 

25 

26class QC_Payload(BaseModel): 

27 """ 

28 Schema for payload contained in QC_Data 

29 """ 

30 

31 value: float 

32 variable: str 

33 link: Optional[int] = None 

34 adc: Optional[int] = None 

35 channel: Optional[int] = None 

36 gain: Optional[Gain] = None 

37 

38 

39class QC_Data(BaseModel): 

40 """ 

41 Schema for json passed to /upload-qc-data in webserver.py 

42 """ 

43 

44 board_id: str 

45 board_type: BoardType 

46 board_version: str 

47 meas_type: QC_MeasType 

48 run_number: int 

49 qc_payload: List[QC_Payload] 

50 

51 

52class QC_Results_Data(BaseModel): 

53 """ 

54 Schema for test result included in QC_Results 

55 """ 

56 

57 label: Label 

58 board_id: str 

59 board_type: BoardType 

60 board_version: str 

61 run_number: int 

62 value: Optional[float] # If a value causes an evaluation error, it is set to None 

63 operator: str 

64 threshold: float 

65 passed: bool 

66 error_message: Optional[str] = None 

67 

68 

69class QC_Results(BaseModel): 

70 """ 

71 Schema for json sent from /get-test-results in webserver.py 

72 """ 

73 

74 status: Literal["Success", "Failure"] 

75 message: str 

76 passed: bool 

77 complete_test: bool 

78 data: List[QC_Results_Data] 

79 

80 

81class MonitorValue(BaseModel): 

82 """ 

83 Schema for on-board monitor values to be sent from the GUI 

84 """ 

85 

86 monitor: str 

87 value: float 

88 unit: str 

89 group_name: str 

90 monitor_type: str 

91 timestamp: datetime.datetime 

92 board_id: str 

93 board_type: Optional[BoardType] = None 

94 board_version: Optional[str] = None 

95 measurement: Optional[int] = None 

96 run_number: Optional[int] = None 

97 ideal_value: Optional[float] = None 

98 hostname: Optional[str] = None