2222from  ros2node .api  import  get_absolute_node_name 
2323from  ros2node .api  import  get_node_names 
2424from  ros2node .api  import  NodeNameCompleter 
25- 
2625from  ros2param .api  import  call_set_parameters 
26+ from  ros2param .api  import  call_set_parameters_atomically 
2727from  ros2param .api  import  ParameterNameCompleter 
2828from  ros2param .verb  import  VerbExtension 
2929
@@ -40,6 +40,10 @@ def add_arguments(self, parser, cli_name):  # noqa: D102
4040        parser .add_argument (
4141            '--include-hidden-nodes' , action = 'store_true' ,
4242            help = 'Consider hidden nodes as well' )
43+         parser .add_argument (
44+             '--atomic' , action = 'store_true' ,
45+             help = 'Set parameters atomically' 
46+         )
4347        arg  =  parser .add_argument (
4448            'parameter_name' , help = 'Name of the parameter' )
4549        arg .completer  =  ParameterNameCompleter ()
@@ -60,12 +64,16 @@ def main(self, *, args):  # noqa: D102
6064            Parameter .name  =  args .parameter_name 
6165            parameter .value  =  get_parameter_value (string_value = args .value )
6266
63-             response  =  call_set_parameters (
64-                 node = node , node_name = args .node_name , parameters = [parameter ])
67+             if  args .atomic :
68+                 response  =  call_set_parameters_atomically (
69+                     node = node , node_name = args .node_name , parameters = [parameter ])
70+                 result  =  response .result 
71+             else :
72+                 response  =  call_set_parameters (
73+                     node = node , node_name = args .node_name , parameters = [parameter ])
74+                 assert  len (response .results ) ==  1 
75+                 result  =  response .results [0 ]
6576
66-             # output response 
67-             assert  len (response .results ) ==  1 
68-             result  =  response .results [0 ]
6977            if  result .successful :
7078                msg  =  'Set parameter successful' 
7179                if  result .reason :
0 commit comments