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
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-13 13:37 -0400
1import datetime
2from typing import List, Literal, Optional
4from pydantic import BaseModel
6type BoardType = Literal["EM", "HEC"]
7type Gain = Literal["hi", "lo"]
8type QC_MeasType = Literal["qc", "pedestal", "pulse", "crosstalk"]
11class Label(BaseModel):
12 """
13 Schema for json stored in threshold_labels table
14 """
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
26class QC_Payload(BaseModel):
27 """
28 Schema for payload contained in QC_Data
29 """
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
39class QC_Data(BaseModel):
40 """
41 Schema for json passed to /upload-qc-data in webserver.py
42 """
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]
52class QC_Results_Data(BaseModel):
53 """
54 Schema for test result included in QC_Results
55 """
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
69class QC_Results(BaseModel):
70 """
71 Schema for json sent from /get-test-results in webserver.py
72 """
74 status: Literal["Success", "Failure"]
75 message: str
76 passed: bool
77 complete_test: bool
78 data: List[QC_Results_Data]
81class MonitorValue(BaseModel):
82 """
83 Schema for on-board monitor values to be sent from the GUI
84 """
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