Skip to content

Commit 2f433bd

Browse files
committed
Move models into their own module
1 parent 75f5a91 commit 2f433bd

File tree

5 files changed

+52
-50
lines changed

5 files changed

+52
-50
lines changed

src/daq_config_server/converters/_converter_utils.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import ast
22
from typing import Any
33

4-
from pydantic import BaseModel, model_validator
4+
from daq_config_server.converters.models import GenericLut
55

66
BEAMLINE_PARAMETER_KEYWORDS = ["FB", "FULL", "deadtime"]
77

@@ -27,22 +27,6 @@ def parse_value(value: str, convert_to: type | None = None) -> Any:
2727
return value
2828

2929

30-
class GenericLut(BaseModel):
31-
column_names: list[str]
32-
rows: list[list[int | float]]
33-
34-
@model_validator(mode="after")
35-
def check_row_length_matches_n_columns(self):
36-
n_columns = len(self.column_names)
37-
for row in self.rows:
38-
if len(row) != n_columns:
39-
raise ValueError(
40-
f"Length of row {row} does not match number \
41-
of columns: {self.column_names}"
42-
)
43-
return self
44-
45-
4630
def parse_lut(contents: str, *params: tuple[str, type | None]) -> GenericLut:
4731
"""Converts a lookup table to a dict, containing the names of each column and
4832
the rows as a 2D list.

src/daq_config_server/converters/_converters.py

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from typing import Any
22

33
import xmltodict
4-
from pydantic import BaseModel, model_validator
54

65
from daq_config_server.converters._converter_utils import (
76
BEAMLINE_PARAMETER_KEYWORDS,
@@ -10,6 +9,7 @@
109
parse_value,
1110
remove_comments,
1211
)
12+
from daq_config_server.converters.models import DisplayConfig, DisplayConfigData
1313

1414

1515
def beamline_parameters_to_dict(contents: str) -> dict[str, Any]:
@@ -35,33 +35,6 @@ def beamline_parameters_to_dict(contents: str) -> dict[str, Any]:
3535
return dict(config_pairs)
3636

3737

38-
class DisplayConfigData(BaseModel):
39-
crosshairX: int
40-
crosshairY: int
41-
topLeftX: int
42-
topLeftY: int
43-
bottomRightX: int
44-
bottomRightY: int
45-
46-
47-
class DisplayConfig(BaseModel):
48-
zoom_levels: dict[float, DisplayConfigData]
49-
required_zoom_levels: set[float] | None = None
50-
51-
@model_validator(mode="after")
52-
def check_zoom_levels_match_required(self):
53-
existing_keys = set(self.zoom_levels.keys())
54-
if (
55-
self.required_zoom_levels is not None
56-
and self.required_zoom_levels != existing_keys
57-
):
58-
raise ValueError(
59-
f"Zoom levels {existing_keys} "
60-
f"do not match required zoom levels: {self.required_zoom_levels}"
61-
)
62-
return self
63-
64-
6538
def display_config_to_dict(contents: str) -> DisplayConfig:
6639
"""Converts a display config file into a dict. Every zoom level entry in the
6740
configuration file forms a key in the dict, with value being another dict. This
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from pydantic import BaseModel, model_validator
2+
3+
4+
class DisplayConfigData(BaseModel):
5+
crosshairX: int
6+
crosshairY: int
7+
topLeftX: int
8+
topLeftY: int
9+
bottomRightX: int
10+
bottomRightY: int
11+
12+
13+
class DisplayConfig(BaseModel):
14+
zoom_levels: dict[float, DisplayConfigData]
15+
required_zoom_levels: set[float] | None = None
16+
17+
@model_validator(mode="after")
18+
def check_zoom_levels_match_required(self):
19+
existing_keys = set(self.zoom_levels.keys())
20+
if (
21+
self.required_zoom_levels is not None
22+
and self.required_zoom_levels != existing_keys
23+
):
24+
raise ValueError(
25+
f"Zoom levels {existing_keys} "
26+
f"do not match required zoom levels: {self.required_zoom_levels}"
27+
)
28+
return self
29+
30+
31+
class GenericLut(BaseModel):
32+
column_names: list[str]
33+
rows: list[list[int | float]]
34+
35+
@model_validator(mode="after")
36+
def check_row_length_matches_n_columns(self):
37+
n_columns = len(self.column_names)
38+
for row in self.rows:
39+
if len(row) != n_columns:
40+
raise ValueError(
41+
f"Length of row {row} does not match number \
42+
of columns: {self.column_names}"
43+
)
44+
return self

tests/system_tests/test_client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
import daq_config_server.converters._file_converter_map as file_converter_map
1111
from daq_config_server.client import ConfigServer
12-
from daq_config_server.converters._converter_utils import GenericLut
13-
from daq_config_server.converters._converters import DisplayConfig
12+
from daq_config_server.converters.models import DisplayConfig, GenericLut
1413
from tests.constants import (
1514
ServerFilePaths,
1615
TestDataPaths,

tests/unit_tests/test_converters.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77

88
from daq_config_server.converters._converter_utils import (
99
ConverterParseError,
10-
GenericLut,
1110
parse_lut,
1211
parse_value,
1312
remove_comments,
1413
)
1514
from daq_config_server.converters._converters import (
16-
DisplayConfig,
17-
DisplayConfigData,
1815
beamline_parameters_to_dict,
1916
beamline_pitch_lut,
2017
beamline_roll_lut,
@@ -24,6 +21,11 @@
2421
xml_to_dict,
2522
)
2623
from daq_config_server.converters.convert import get_converted_file_contents
24+
from daq_config_server.converters.models import (
25+
DisplayConfig,
26+
DisplayConfigData,
27+
GenericLut,
28+
)
2729
from tests.constants import (
2830
TestDataPaths,
2931
)

0 commit comments

Comments
 (0)