55import six
66
77
8- def merge_config (template , config ):
8+ def merge_config (template , config , list_identifiers = None ):
99 """
1010 Merges ``config`` on top of ``template``.
1111
@@ -19,6 +19,7 @@ def merge_config(template, config):
1919
2020 :param template: template ``dict``
2121 :param config: config ``dict``
22+ :param list_identifiers: ``list`` or ``None``
2223 :returns: merged ``dict``
2324 """
2425 result = template .copy ()
@@ -27,13 +28,13 @@ def merge_config(template, config):
2728 node = result .get (key , {})
2829 result [key ] = merge_config (node , value )
2930 elif isinstance (value , list ) and isinstance (result .get (key ), list ):
30- result [key ] = merge_list (result [key ], value )
31+ result [key ] = merge_list (result [key ], value , list_identifiers )
3132 else :
3233 result [key ] = value
3334 return result
3435
3536
36- def merge_list (list1 , list2 , identifiers = [ 'name' , 'config_value' , 'id' ] ):
37+ def merge_list (list1 , list2 , identifiers = None ):
3738 """
3839 Merges ``list2`` on top of ``list1``.
3940
@@ -43,10 +44,12 @@ def merge_list(list1, list2, identifiers=['name', 'config_value', 'id']):
4344 The remaining elements will be summed in order to create a list
4445 which contains elements of both lists.
4546
46- :param list1: list from template
47- :param list2: list from config
47+ :param list1: ``list`` from template
48+ :param list2: ``list from config
49+ :param identifiers: ``list`` or ``None``
4850 :returns: merged ``list``
4951 """
52+ identifiers = identifiers or []
5053 dict_map = {'list1' : OrderedDict (), 'list2' : OrderedDict ()}
5154 counter = 1
5255 for list_ in [list1 , list2 ]:
0 commit comments