From 65aa32ebe06e21a294a06dd39024b937a3f835f6 Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Fri, 6 Feb 2026 12:07:24 +0000 Subject: [PATCH 1/7] Update create_attribute method to receive group as argument --- src/fastcs_odin/util.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/fastcs_odin/util.py b/src/fastcs_odin/util.py index 38dec4f..da6b3ea 100644 --- a/src/fastcs_odin/util.py +++ b/src/fastcs_odin/util.py @@ -274,17 +274,18 @@ def unpack_status_arrays(parameters: list[OdinParameter], uris: list[list[str]]) return parameters -def create_attribute(parameter: OdinParameter, api_prefix: str): +def create_attribute(parameter: OdinParameter, api_prefix: str, group: str = ""): """Create ``Attribute`` from ``OdinParameter``.""" if parameter.metadata.writeable: attr_class = AttrRW else: attr_class = AttrR - if len(parameter.path) >= 2: - group = snake_to_pascal(f"{parameter.path[0]}") - else: - group = None + if not group: + if len(parameter.path) >= 2: + group = snake_to_pascal(f"{parameter.path[0]}") + else: + group = None return attr_class( parameter.metadata.fastcs_datatype, From 080404b306a798538de16109fcd4d0ceff240e5d Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Fri, 6 Feb 2026 13:15:41 +0000 Subject: [PATCH 2/7] Change argument type to accept either string or None --- src/fastcs_odin/util.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fastcs_odin/util.py b/src/fastcs_odin/util.py index da6b3ea..67d4707 100644 --- a/src/fastcs_odin/util.py +++ b/src/fastcs_odin/util.py @@ -274,7 +274,9 @@ def unpack_status_arrays(parameters: list[OdinParameter], uris: list[list[str]]) return parameters -def create_attribute(parameter: OdinParameter, api_prefix: str, group: str = ""): +def create_attribute( + parameter: OdinParameter, api_prefix: str, group: str | None = None +): """Create ``Attribute`` from ``OdinParameter``.""" if parameter.metadata.writeable: attr_class = AttrRW From 6505bcb05ef90aa2190665d52279630f166ca771 Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Wed, 18 Feb 2026 15:31:56 +0000 Subject: [PATCH 3/7] PR suggestions --- src/fastcs_odin/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fastcs_odin/util.py b/src/fastcs_odin/util.py index 67d4707..8d5236b 100644 --- a/src/fastcs_odin/util.py +++ b/src/fastcs_odin/util.py @@ -283,7 +283,7 @@ def create_attribute( else: attr_class = AttrR - if not group: + if group is None: if len(parameter.path) >= 2: group = snake_to_pascal(f"{parameter.path[0]}") else: From f73df70c3d9cbd818de1b7e67d44af831a4edbac Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Wed, 18 Feb 2026 15:50:25 +0000 Subject: [PATCH 4/7] Removed redundant else --- src/fastcs_odin/util.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/fastcs_odin/util.py b/src/fastcs_odin/util.py index 8d5236b..9defee7 100644 --- a/src/fastcs_odin/util.py +++ b/src/fastcs_odin/util.py @@ -286,8 +286,6 @@ def create_attribute( if group is None: if len(parameter.path) >= 2: group = snake_to_pascal(f"{parameter.path[0]}") - else: - group = None return attr_class( parameter.metadata.fastcs_datatype, From cb9f2e22681ccfbc78d80d5fd45eae38b9dfceff Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Thu, 19 Feb 2026 10:51:33 +0000 Subject: [PATCH 5/7] Add tests for checking group creation * Initial version of the tests with parametrized values --- tests/test_util.py | 48 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/tests/test_util.py b/tests/test_util.py index c6aa855..c99dad1 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -1,4 +1,13 @@ -from fastcs_odin.util import create_odin_parameters +import pytest +from fastcs.attributes import AttrR, AttrRW +from fastcs.datatypes import Int + +from fastcs_odin.util import ( + OdinParameter, + OdinParameterMetadata, + create_attribute, + create_odin_parameters, +) def test_create_parameters(): @@ -15,3 +24,40 @@ def test_create_parameters(): } parameters = create_odin_parameters(data) assert len(parameters) == 0 + + +@pytest.mark.parametrize( + "metadata, uri, attr_type, group", + [ + ( + OdinParameterMetadata(value=0, type="int", writeable=False), + ["name"], + AttrR(Int(), io_ref=None, group=None), + None, + ), + ( + OdinParameterMetadata(value=0, type="int", writeable=True), + ["name"], + AttrRW(Int(), io_ref=None, group=None), + None, + ), + ( + OdinParameterMetadata(value=0, type="int", writeable=False), + ["my_group", "name"], + AttrR(Int(), io_ref=None, group="MyGroup"), + None, + ), + ( + OdinParameterMetadata(value=0, type="int", writeable=True), + ["my_group", "name"], + AttrRW(Int(), io_ref=None, group="MyOtherGroup"), + "MyOtherGroup", + ), + ], +) +def test_create_parameters_groups(metadata, uri, attr_type, group): + param = OdinParameter(uri, metadata) + + attr = create_attribute(param, "test", group=group) + + assert attr.group == attr_type.group From 30636151174b4ee286d26ae54c09991a3de2c3a8 Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Fri, 20 Feb 2026 15:28:56 +0000 Subject: [PATCH 6/7] Change names to avoid confusion --- tests/test_util.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_util.py b/tests/test_util.py index c99dad1..9a1afa6 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -27,7 +27,7 @@ def test_create_parameters(): @pytest.mark.parametrize( - "metadata, uri, attr_type, group", + "metadata, uri, attr, group", [ ( OdinParameterMetadata(value=0, type="int", writeable=False), @@ -55,9 +55,9 @@ def test_create_parameters(): ), ], ) -def test_create_parameters_groups(metadata, uri, attr_type, group): +def test_create_parameters_groups(metadata, uri, attr, group): param = OdinParameter(uri, metadata) - attr = create_attribute(param, "test", group=group) + var = create_attribute(param, "test", group=group) - assert attr.group == attr_type.group + assert var.group == attr.group From 9acbfd4c1c2e7d03909be7b86c5d0464d4a47cb3 Mon Sep 17 00:00:00 2001 From: Luis Segalla Date: Fri, 20 Feb 2026 16:06:36 +0000 Subject: [PATCH 7/7] Updated names --- tests/test_util.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_util.py b/tests/test_util.py index 9a1afa6..034d836 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -27,7 +27,7 @@ def test_create_parameters(): @pytest.mark.parametrize( - "metadata, uri, attr, group", + "metadata, uri, expected_attr, group", [ ( OdinParameterMetadata(value=0, type="int", writeable=False), @@ -55,9 +55,9 @@ def test_create_parameters(): ), ], ) -def test_create_parameters_groups(metadata, uri, attr, group): +def test_create_parameters_groups(metadata, uri, expected_attr, group): param = OdinParameter(uri, metadata) - var = create_attribute(param, "test", group=group) + attr = create_attribute(param, "test", group=group) - assert var.group == attr.group + assert attr.group == expected_attr.group