Skip to content

Commit ce859bf

Browse files
author
Priyadarshini Piramanayagam
committed
change prefix
1 parent 0eb0c3a commit ce859bf

File tree

3 files changed

+45
-36
lines changed

3 files changed

+45
-36
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from ._dataframe_utilities import (
22
convert_results_to_dataframe,
33
convert_steps_to_dataframe,
4-
is_step_data_with_name_and_measurement,
4+
has_name_and_measurement,
55
)
66

77
# flake8: noqa

nisystemlink/clients/testmonitor/utilities/_dataframe_utilities.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from nisystemlink.clients.testmonitor.utilities.constants import DataFrameHeaders
1111

1212

13-
def is_step_data_with_name_and_measurement(measurement: Measurement) -> bool:
13+
def has_name_and_measurement(measurement: Measurement) -> bool:
1414
"""Checks if a step data parameter is measurement data by ensuring it has both
1515
'name' and 'measurement' fields.
1616
@@ -60,7 +60,7 @@ def convert_steps_to_dataframe(
6060
steps: List[Step],
6161
is_valid_measurement: Optional[
6262
Callable[[Measurement], bool]
63-
] = is_step_data_with_name_and_measurement,
63+
] = has_name_and_measurement,
6464
) -> pd.DataFrame:
6565
"""Converts a list of steps into a normalized dataframe.
6666
@@ -86,11 +86,13 @@ def convert_steps_to_dataframe(
8686
- For each `parameter` entry in `data`, a new row is added in the dataframe, with data for
8787
all other step fields are duplicated.
8888
"""
89-
DATA_PARAMETERS = "data.parameters"
89+
DATA_PARAMETERS_PREFIX = (
90+
"data.parameters" if is_valid_measurement is None else "data.measurement"
91+
)
9092
step_dicts = __convert_steps_to_dict(steps, is_valid_measurement)
9193
steps_dataframe = pd.json_normalize(step_dicts, sep=".")
9294
steps_dataframe = __explode_and_normalize(
93-
steps_dataframe, DATA_PARAMETERS, f"{DATA_PARAMETERS}."
95+
steps_dataframe, "data.parameters", f"{DATA_PARAMETERS_PREFIX}."
9496
)
9597
grouped_columns = __group_step_columns(steps_dataframe.columns)
9698
return steps_dataframe.reindex(columns=grouped_columns, copy=False)
@@ -202,16 +204,17 @@ def __convert_steps_to_dict(
202204
"""
203205
steps_dict = []
204206
for step in steps:
205-
__filter_invalid_measurements(step, is_valid_measurement)
206207

207208
single_step_dict = step.dict(exclude_none=True)
209+
__filter_invalid_measurements(single_step_dict, step, is_valid_measurement)
208210
__normalize_inputs_outputs(single_step_dict, step)
209211
__normalize_step_status(single_step_dict)
210212
steps_dict.append(single_step_dict)
211213
return steps_dict
212214

213215

214216
def __filter_invalid_measurements(
217+
step_dict: Dict[str, Any],
215218
step: Step,
216219
is_valid_measurement: Optional[Callable[[Measurement], bool]],
217220
) -> None:
@@ -232,7 +235,9 @@ def __filter_invalid_measurements(
232235
if is_valid_measurement and is_valid_measurement(measurement):
233236
valid_measurement_parameters.append(measurement)
234237

235-
step.data.parameters = valid_measurement_parameters
238+
step_dict["data"]["parameters"] = [
239+
measurement.dict() for measurement in valid_measurement_parameters
240+
]
236241

237242

238243
def __normalize_inputs_outputs(
@@ -321,10 +326,10 @@ def __group_step_columns(dataframe_columns: List[str]) -> List[str]:
321326
GENERAL_CATEGORIES = "general"
322327
CATEGORY_KEYS = [
323328
GENERAL_CATEGORIES,
324-
StepProjection.INPUTS.lower(),
325-
StepProjection.OUTPUTS.lower(),
326-
StepProjection.DATA.lower(),
327-
StepProjection.PROPERTIES.lower(),
329+
"inputs",
330+
"outputs",
331+
"data",
332+
"properties",
328333
]
329334
grouped_columns: Dict[str, List[str]] = {category: [] for category in CATEGORY_KEYS}
330335
for column in dataframe_columns:

tests/testmonitor/test_testmonitor_dataframe_utilities.py

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -289,25 +289,25 @@ def test__convert_steps_to_dataframe__with_complete_data(
289289
expected_data_parameters = [
290290
[
291291
{
292-
"data.parameters.name": "parameter_11",
293-
"data.parameters.status": "Passed",
294-
"data.parameters.measurement": "11.0",
295-
"data.parameters.lowLimit": "6.0",
296-
"data.parameters.highLimit": "21.0",
297-
"data.parameters.units": "A",
298-
"data.parameters.comparisonType": "GTLT",
292+
"data.measurement.name": "parameter_11",
293+
"data.measurement.status": "Passed",
294+
"data.measurement.measurement": "11.0",
295+
"data.measurement.lowLimit": "6.0",
296+
"data.measurement.highLimit": "21.0",
297+
"data.measurement.units": "A",
298+
"data.measurement.comparisonType": "GTLT",
299299
}
300300
],
301301
[
302302
{
303-
"data.parameters.name": "parameter_21",
304-
"data.parameters.status": "Passed",
305-
"data.parameters.measurement": "11.0",
306-
"data.parameters.lowLimit": "6.0",
307-
"data.parameters.highLimit": "21.0",
308-
"data.parameters.units": "A",
309-
"data.parameters.comparisonType": "GTLT",
310-
"data.parameters.additionalData": "additional_data_value",
303+
"data.measurement.name": "parameter_21",
304+
"data.measurement.status": "Passed",
305+
"data.measurement.measurement": "11.0",
306+
"data.measurement.lowLimit": "6.0",
307+
"data.measurement.highLimit": "21.0",
308+
"data.measurement.units": "A",
309+
"data.measurement.comparisonType": "GTLT",
310+
"data.measurement.additionalData": "additional_data_value",
311311
}
312312
],
313313
]
@@ -388,14 +388,14 @@ def is_measurement_data_parameter(measurement: Measurement) -> bool:
388388
[{}],
389389
[
390390
{
391-
"data.parameters.name": "parameter_21",
392-
"data.parameters.status": "Passed",
393-
"data.parameters.measurement": "11.0",
394-
"data.parameters.lowLimit": "6.0",
395-
"data.parameters.highLimit": "21.0",
396-
"data.parameters.units": "A",
397-
"data.parameters.comparisonType": "GTLT",
398-
"data.parameters.additionalData": "additional_data_value",
391+
"data.measurement.name": "parameter_21",
392+
"data.measurement.status": "Passed",
393+
"data.measurement.measurement": "11.0",
394+
"data.measurement.lowLimit": "6.0",
395+
"data.measurement.highLimit": "21.0",
396+
"data.measurement.units": "A",
397+
"data.measurement.comparisonType": "GTLT",
398+
"data.measurement.additionalData": "additional_data_value",
399399
}
400400
],
401401
]
@@ -458,7 +458,7 @@ def test__convert_steps_to_dataframe_with_invalid_data_parameters__returns_only_
458458
steps_dataframe, expected_steps_dataframe, check_dtype=True
459459
)
460460

461-
def test__convert_steps_to_dataframe_with_None_callback__returns_step_with_all_data_parameters(
461+
def test__convert_steps_to_dataframe_with_none_callback__returns_step_with_all_data_parameters(
462462
self, mock_steps_data: List[Step]
463463
):
464464
"""Test normal case with valid step data."""
@@ -501,6 +501,7 @@ def test__convert_steps_to_dataframe_with_None_callback__returns_step_with_all_d
501501
expected_steps_dataframe = self.__get_expected_steps_dataframe(
502502
mock_steps_data,
503503
expected_data_parameters=expected_data_parameters,
504+
data_parameters_prefix="data.parameters",
504505
)
505506

506507
steps_dataframe = convert_steps_to_dataframe(mock_steps_data, None)
@@ -581,6 +582,7 @@ def __get_expected_steps_dataframe(
581582
mock_steps_data: List[Step],
582583
expected_data_parameters=None,
583584
expected_column_order=None,
585+
data_parameters_prefix="data.measurement",
584586
) -> pd.DataFrame:
585587
steps_with_measurement_per_row = []
586588
index = 0
@@ -638,7 +640,9 @@ def __get_expected_steps_dataframe(
638640
steps_dataframe = pd.DataFrame(steps_with_measurement_per_row)
639641

640642
dataframe_columns = [
641-
col for col in steps_dataframe.columns if col.startswith("data.parameters.")
643+
col
644+
for col in steps_dataframe.columns
645+
if col.startswith(data_parameters_prefix)
642646
]
643647
default_column_order = [
644648
"name",

0 commit comments

Comments
 (0)