From 87d2134c634709c6a372144fb507251b25032d2d Mon Sep 17 00:00:00 2001 From: Old-Ding <35417409+Old-Ding@users.noreply.github.com> Date: Sat, 11 Jul 2026 15:27:54 +0800 Subject: [PATCH] Fix string representations for untyped parameters ParameterValue and Parameter default value_type to None, but their string representations unconditionally accessed __name__. Render the default type as None and cover both public description classes. Signed-off-by: Old-Ding <35417409+Old-Ding@users.noreply.github.com> --- launch_ros/launch_ros/parameter_descriptions.py | 6 ++++-- .../test/test_launch_ros/descriptions/test_parameter.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/launch_ros/launch_ros/parameter_descriptions.py b/launch_ros/launch_ros/parameter_descriptions.py index 46f226d3..80ffc51a 100644 --- a/launch_ros/launch_ros/parameter_descriptions.py +++ b/launch_ros/launch_ros/parameter_descriptions.py @@ -81,9 +81,10 @@ def value_type(self) -> AllowedTypesType: return self.__value_type def __str__(self) -> Text: + value_type_name = self.value_type.__name__ if self.value_type is not None else None return ( 'launch_ros.description.ParameterValue' - f'(value={self.value}, value_type={self.value_type.__name__})' + f'(value={self.value}, value_type={value_type_name})' ) def evaluate(self, context: LaunchContext) -> 'EvaluatedParameterValue': @@ -146,9 +147,10 @@ def value_type(self) -> AllowedTypesType: return self.__parameter_value.value_type def __str__(self) -> Text: + value_type_name = self.value_type.__name__ if self.value_type is not None else None return ( 'launch_ros.description.Parameter' - f'(name={self.name}, value={self.value}, value_type={self.value_type.__name__})' + f'(name={self.name}, value={self.value}, value_type={value_type_name})' ) def evaluate(self, context: LaunchContext) -> Tuple[Text, 'EvaluatedParameterValue']: diff --git a/test_launch_ros/test/test_launch_ros/descriptions/test_parameter.py b/test_launch_ros/test/test_launch_ros/descriptions/test_parameter.py index db3c3a32..73ad7952 100644 --- a/test_launch_ros/test/test_launch_ros/descriptions/test_parameter.py +++ b/test_launch_ros/test/test_launch_ros/descriptions/test_parameter.py @@ -40,6 +40,7 @@ def test_parameter_value_description(): param = ParameterValue(value='asd') assert param.value == 'asd' assert param.value_type is None + assert str(param) == 'launch_ros.description.ParameterValue(value=asd, value_type=None)' assert param.evaluate(lc) == 'asd' # After the first `evaluate` call, the following `.value` and `.evaluate()` # calls are calculated differently. Test them too. @@ -107,6 +108,8 @@ def test_parameter_description(): assert param.value == 'asd' assert param.value_type is None assert param.evaluate(lc) == ('my_param', 'asd') + assert str(param) == ( + 'launch_ros.description.Parameter(name=my_param, value=asd, value_type=None)') # After the first `evaluate` call, the following `.name` `.value` and `.evaluate()` # calls are calculated differently. Test them too. assert param.name == 'my_param'