Skip to content

Commit

Permalink
move to member function
Browse files Browse the repository at this point in the history
  • Loading branch information
MarqRazz committed Jul 25, 2024
1 parent 6897fd1 commit 0a7b708
Showing 1 changed file with 23 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,7 @@ from generate_parameter_library_py.python_validators import ParameterValidators

{% if user_validation_file|length -%}
import {{user_validation_file}} as custom_validators
{% endif -%}

def unpack_parameter_dict(namespace: str, parameter_dict: dict):
"""
Flatten a parameter dictionary recursively.

:param namespace: The namespace to prepend to the parameter names.
:param parameter_dict: A dictionary of parameters keyed by the parameter names
:return: A list of rclpy Parameter objects
"""
parameters = []
for param_name, param_value in parameter_dict.items():
full_param_name = namespace + param_name
# Unroll nested parameters
if isinstance(param_value, dict):
nested_params = unpack_parameter_dict(
namespace=full_param_name + rclpy.parameter.PARAMETER_SEPARATOR_STRING,
parameter_dict=param_value)
parameters.extend(nested_params)
else:
parameters.append(rclpy.parameter.Parameter(full_param_name, value=param_value))
return parameters

{% endif %}

class {{namespace}}:
{%- filter indent(width=4) %}
Expand Down Expand Up @@ -76,6 +54,28 @@ stamp_ = Time()
def is_old(self, other_param):
return self.params_.stamp_ != other_param.stamp_

@staticmethod
def unpack_parameter_dict(namespace: str, parameter_dict: dict):
"""
Flatten a parameter dictionary recursively.

:param namespace: The namespace to prepend to the parameter names.
:param parameter_dict: A dictionary of parameters keyed by the parameter names
:return: A list of rclpy Parameter objects
"""
parameters = []
for param_name, param_value in parameter_dict.items():
full_param_name = namespace + param_name
# Unroll nested parameters
if isinstance(param_value, dict):
nested_params = unpack_parameter_dict(
namespace=full_param_name + rclpy.parameter.PARAMETER_SEPARATOR_STRING,
parameter_dict=param_value)
parameters.extend(nested_params)
else:
parameters.append(rclpy.parameter.Parameter(full_param_name, value=param_value))
return parameters

def set_params_from_dict(self, param_dict):
params_to_set = unpack_parameter_dict('', param_dict)
self.update(params_to_set)
Expand Down

0 comments on commit 0a7b708

Please sign in to comment.