Skip to content

Commit 0992f3a

Browse files
committed
Change to dataclass_from_dict
Signed-off-by: Zinkelburger <[email protected]>
1 parent 7cc1124 commit 0992f3a

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

common.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ def __post_init__(self) -> None:
101101
self.test_case_id = enum_convert(TestCaseType, self.test_case_id)
102102
self.test_type = enum_convert(TestType, self.test_type)
103103
if isinstance(self.server, dict):
104-
self.server = from_dict(PodInfo, self.server)
104+
self.server = dataclass_from_dict(PodInfo, self.server)
105105
if isinstance(self.client, dict):
106-
self.client = from_dict(PodInfo, self.client)
106+
self.client = dataclass_from_dict(PodInfo, self.client)
107107

108108

109109
@dataclass
@@ -118,7 +118,7 @@ class IperfOutput(BaseOutput):
118118

119119
def __post_init__(self) -> None:
120120
if isinstance(self.tft_metadata, dict):
121-
self.tft_metadata = from_dict(TestMetadata, self.tft_metadata)
121+
self.tft_metadata = dataclass_from_dict(TestMetadata, self.tft_metadata)
122122
elif not isinstance(self.tft_metadata, TestMetadata):
123123
raise ValueError("tft_metadata must be a TestMetadata instance or a dict")
124124

@@ -154,12 +154,16 @@ class TftAggregateOutput:
154154

155155
def __post_init__(self) -> None:
156156
if isinstance(self.flow_test, dict):
157-
self.flow_test = from_dict(IperfOutput, self.flow_test)
157+
self.flow_test = dataclass_from_dict(IperfOutput, self.flow_test)
158158
elif self.flow_test is not None and not isinstance(self.flow_test, IperfOutput):
159159
raise ValueError("flow_test must be an IperfOutput instance or a dict")
160160

161161
self.plugins = [
162-
from_dict(PluginOutput, plugin) if isinstance(plugin, dict) else plugin
162+
(
163+
dataclass_from_dict(PluginOutput, plugin)
164+
if isinstance(plugin, dict)
165+
else plugin
166+
)
163167
for plugin in self.plugins
164168
]
165169

@@ -189,14 +193,16 @@ def serialize_enum(
189193
T = TypeVar("T")
190194

191195

192-
def from_dict(cls: Type[T], data: Dict[str, Any]) -> T:
193-
assert is_dataclass(cls), "from_dict() should only be used with dataclasses."
196+
def dataclass_from_dict(cls: Type[T], data: Dict[str, Any]) -> T:
197+
assert is_dataclass(
198+
cls
199+
), "dataclass_from_dict() should only be used with dataclasses."
194200
field_values = {}
195201
for field in fields(cls):
196202
field_name = field.name
197203
field_type = field.type
198204
if is_dataclass(field_type) and field_name in data:
199-
field_values[field_name] = from_dict(field_type, data[field_name])
205+
field_values[field_name] = dataclass_from_dict(field_type, data[field_name])
200206
elif field_name in data:
201207
field_values[field_name] = data[field_name]
202208
return cast(T, cls(**field_values))

evaluator.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from logger import logger
1313
from pathlib import Path
1414
from typing import List
15-
from common import serialize_enum, from_dict
15+
from common import serialize_enum, dataclass_from_dict
1616

1717

1818
@dataclass
@@ -92,7 +92,7 @@ def eval_log(self, log_path: Path) -> None:
9292

9393
for run in runs:
9494
if "flow_test" in run and run["flow_test"] is not None:
95-
run["flow_test"] = from_dict(IperfOutput, run["flow_test"])
95+
run["flow_test"] = dataclass_from_dict(IperfOutput, run["flow_test"])
9696

9797
self._eval_flow_test(run["flow_test"])
9898
for plugin in run["plugins"]:

0 commit comments

Comments
 (0)