Skip to content

Commit 0b1ea27

Browse files
greglucasmedley56
authored andcommitted
MNT: Change to returning intermediate values for enumerated and boolean parameters
This gives the ability to get back to the raw value if desired still, but returns what was used for the "lookup" / bool conversion as that is likely what a user needs for the first debug step. Then they can get to the raw-raw value themselves if they really need it.
1 parent b6f9658 commit 0b1ea27

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

space_packet_parser/parameters.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,14 +255,14 @@ def parse_value(self, packet: packets.CCSDSPacket, **kwargs):
255255
derived_value : StrParameter
256256
Resulting enum label associated with the (usually integer-)encoded data value.
257257
"""
258-
raw = super().parse_value(packet, **kwargs)
258+
value = super().parse_value(packet, **kwargs)
259259
# Note: The enum lookup only operates on raw values. This is specified in 4.3.2.4.3.6 of the XTCE spec "
260260
# CCSDS 660.1-G-2
261261
try:
262-
label = self.enumeration[raw]
262+
label = self.enumeration[value]
263263
except KeyError as exc:
264-
raise ValueError(f"Failed to find raw value {raw} in enum lookup list {self.enumeration}.") from exc
265-
return packets.StrParameter(label, raw)
264+
raise ValueError(f"Failed to find the value {value} in enum lookup list {self.enumeration}.") from exc
265+
return packets.StrParameter(label, value)
266266

267267

268268
class BinaryParameterType(ParameterType):
@@ -313,12 +313,12 @@ def parse_value(self, packet: packets.CCSDSPacket, **kwargs):
313313
derived_value : BoolParameter
314314
Resulting boolean representation of the encoded raw value
315315
"""
316-
# NOTE: There is an intermediate value here that we are not representing in the final object return
316+
# NOTE: There is an intermediate value here that we are potentially using. The flow is:
317317
# raw data -> parsed/processed (calibrated) value -> boolean
318318
parsed_value = super().parse_value(packet, **kwargs)
319319
# NOTE: This behaves very strangely for String and Binary data encodings.
320320
# Don't use those for Boolean parameters. The behavior isn't specified well in XTCE.
321-
return packets.BoolParameter(bool(parsed_value), parsed_value.raw_value)
321+
return packets.BoolParameter(bool(parsed_value), parsed_value)
322322

323323

324324
class TimeParameterType(ParameterType, metaclass=ABCMeta):

tests/unit/test_xtcedef.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1950,7 +1950,7 @@ def test_boolean_parameter_type(xml_string, expectation):
19501950
encodings.StringDataEncoding(fixed_raw_length=120, encoding="UTF-8")),
19511951
b'false_is_truthyextradata',
19521952
0,
1953-
b'false_is_truthy', True),
1953+
'false_is_truthy', True),
19541954
(parameters.BooleanParameterType(
19551955
'TEST_BOOL',
19561956
encodings.IntegerDataEncoding(size_in_bits=2, encoding="unsigned")),

0 commit comments

Comments
 (0)