Skip to content

Commit 351a5ae

Browse files
committed
[fix] Fixed unashable type list error in merge_list
1 parent 859b0eb commit 351a5ae

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

netjsonconfig/utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ def merge_list(list1, list2, identifiers=None):
6868
if id_key in el:
6969
key = el[id_key]
7070
break
71+
# if key is a list, convert it to tuple which is
72+
# hashable and can be used as a dictionary key
73+
if isinstance(key, list):
74+
key = tuple(key)
7175
container[key] = deepcopy(el)
7276
counter += 1
7377
merged = merge_config(dict_map['list1'], dict_map['list2'])

tests/test_utils.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,9 @@ def test_merge_list_skip_duplicates(self):
147147
]
148148
result = merge_list(conf1, conf2)
149149
self.assertEqual(result, conf2)
150+
151+
def test_merge_list_unashable_type(self):
152+
conf1 = [{"name": ["walledgarden"], "contents": ""}]
153+
conf2 = [{"name": ["walledgarden"], "contents": "test"}]
154+
result = merge_list(conf1, conf2, identifiers=['name'])
155+
self.assertEqual(result, conf2)

0 commit comments

Comments
 (0)