1919 "ARTEFACTS_SCENARIO_PARAMS_FILE" , "scenario_params.yaml"
2020)
2121
22+ def deep_merge_dicts (source , override ):
23+ """Recursively merge two dictionaries, with values from `override` taking precedence over `source`"""
24+ for key , value in override .items ():
25+ if isinstance (value , dict ) and key in source :
26+ source [key ] = deep_merge_dicts (source [key ], value )
27+ else :
28+ source [key ] = value
29+ return source
30+
2231def merge_ros_params_files (source , override , destination ):
2332 """Merge two ROS2 yaml parameter files into one, overriding the values in the first one with the values in `override`"""
2433 import yaml
@@ -29,15 +38,9 @@ def merge_ros_params_files(source, override, destination):
2938 with open (override , "r" ) as f :
3039 override_params = yaml .safe_load (f )
3140
32- # Merge the parameters
33- for key , value in override_params .items ():
34- if key in source_params :
35- source_params [key ].update (value )
36- else :
37- source_params [key ] = value
38- # Write the merged parameters to the destination file
41+ merged_params = deep_merge_dicts (source_params , override_params )
3942 with open (destination , "w" ) as f :
40- yaml .dump (source_params , f )
43+ yaml .dump (merged_params , f )
4144
4245# This function specifies the processes to be run for our test
4346@pytest .mark .launch_test
0 commit comments