Skip to content

Commit 8e46bf2

Browse files
authored
cosmetic fixes for ros2param dump command. (#933)
* cosmetic fixes for ros2param dump command. Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com> * pass through no parameters available case. Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com> * bug fix from review comment. Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com> * remove unnecessary initial assignment. Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com> --------- Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
1 parent 379f3f4 commit 8e46bf2

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

ros2param/ros2param/verb/dump.py

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,6 @@ def add_arguments(self, parser, cli_name): # noqa: D102
4646
'--timeout', metavar='N', type=int, default=1,
4747
help='Wait for N seconds until node becomes available (default %(default)s sec)')
4848

49-
@staticmethod
50-
def get_parameter_values(node, node_name, params):
51-
response = call_get_parameters(
52-
node=node, node_name=node_name,
53-
parameter_names=params)
54-
55-
# requested parameter not set
56-
if not response.values:
57-
return None
58-
59-
# extract type specific value
60-
return [get_value(parameter_value=i) for i in response.values]
61-
6249
def insert_dict(self, dictionary, key, value):
6350
split = key.split(PARAMETER_SEPARATOR_STRING, 1)
6451
if len(split) > 1:
@@ -80,7 +67,7 @@ def main(self, *, args): # noqa: D102
8067
with DirectNode(args) as node:
8168
yaml_output = {node_name.full_name: {'ros__parameters': {}}}
8269

83-
# retrieve values
70+
# retrieve parameter names
8471
response = call_list_parameters(node=node, node_name=absolute_node_name)
8572
if response is None:
8673
print(
@@ -93,17 +80,26 @@ def main(self, *, args): # noqa: D102
9380
'Exception while calling list_parameters service of node '
9481
f"'{node_name.full_name}': {e}", file=sys.stderr)
9582
return
96-
97-
response = response.result().result.names
98-
response = sorted(response)
99-
parameter_values = self.get_parameter_values(node, absolute_node_name, response)
100-
if parameter_values is None:
83+
parameter_names = sorted(response.result().result.names)
84+
85+
# retrieve parameter values
86+
response = None
87+
try:
88+
response = call_get_parameters(
89+
node=node, node_name=absolute_node_name, parameter_names=parameter_names)
90+
except RuntimeError as e:
10191
print(
10292
'Exception while calling get_parameters service of node '
10393
f"'{node_name.full_name}': {e}", file=sys.stderr)
10494
return
105-
106-
for param_name, pval in zip(response, parameter_values):
95+
if response.values is None:
96+
# pass through here, no parameters are available with this node.
97+
# since this is not failure, it proceeds to print the yaml as consistent behavior.
98+
pass
99+
parameter_values = [get_value(parameter_value=i) for i in response.values]
100+
101+
# create dictionary with parameter names and values
102+
for param_name, pval in zip(parameter_names, parameter_values):
107103
self.insert_dict(
108104
yaml_output[node_name.full_name]['ros__parameters'], param_name, pval)
109105

0 commit comments

Comments
 (0)