From ab54434295f63cda73965d38add4dc7ac0752bb6 Mon Sep 17 00:00:00 2001 From: SamDanielThangarajan <12202554+SamDanielThangarajan@users.noreply.github.com> Date: Thu, 23 Jan 2025 18:12:45 +0100 Subject: [PATCH] fix-datasegment.field will return the result in underlying type --- src/nasdaq_protocols/fix/core.py | 3 ++- src/nasdaq_protocols/fix/session.py | 2 +- tests/test_fix_core.py | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/nasdaq_protocols/fix/core.py b/src/nasdaq_protocols/fix/core.py index c0396fb..6c5f070 100644 --- a/src/nasdaq_protocols/fix/core.py +++ b/src/nasdaq_protocols/fix/core.py @@ -234,7 +234,8 @@ def __getitem__(self, key: str | int): return self.__dict__[key] try: - return self.values[key] + field_value = self.values[key] + return field_value.value if isinstance(field_value, Field) else field_value except KeyError: field = self.IndexedEntries[key] return field.default_value() if issubclass(field, Field) else None diff --git a/src/nasdaq_protocols/fix/session.py b/src/nasdaq_protocols/fix/session.py index b56cd3f..204a273 100644 --- a/src/nasdaq_protocols/fix/session.py +++ b/src/nasdaq_protocols/fix/session.py @@ -94,7 +94,7 @@ async def send_heartbeat(self): def _initialize_session(self, logon_msg): self.session_id.username = logon_msg.Username - self.sequence = count(logon_msg.Header.MsgSeqNum.value) + self.sequence = count(logon_msg.Header.MsgSeqNum) self.sender_comp_id = logon_msg.Header.SenderCompID self.sender_sub_id = logon_msg.Header.SenderSubID self.target_comp_id = logon_msg.Header.TargetCompID diff --git a/tests/test_fix_core.py b/tests/test_fix_core.py index 9a93f2d..6c38211 100644 --- a/tests/test_fix_core.py +++ b/tests/test_fix_core.py @@ -550,6 +550,14 @@ def test__getattr__message__able_to_resolve_segment_fields(): assert message.GroupContainer_2 is None +def test__getattr__message__field_is_decayed_to_its_value(): + message = Message_1() + message.Field_1_Int = 10 + + assert message.Field_1_Int == 10 + assert isinstance(message.Field_1_Int, int) + + def test__getattr__message__fall_back_to_object_attributes_on_non_segment_fields(): message = Message_1()