From c5694393c6a9d53cbc7a2886e733b354d5055772 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 8 Mar 2021 15:10:58 +0100 Subject: Fixed the JSON_Encoder. The issue was that dictionaries are mutable, and dumping dictionaries and replacing keys also replaces the original value. --- archinstall/lib/general.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'archinstall') diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 97ad1565..e87e4102 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -37,6 +37,7 @@ class JSON_Encoder: ## We'll need to iterate not just the value that default() usually gets passed ## But also iterate manually over each key: value pair in order to trap the keys. + copy = {} for key, val in list(obj.items()): if isinstance(val, dict): val = json.loads(json.dumps(val, cls=JSON)) # This, is a EXTREMELY ugly hack.. @@ -44,12 +45,12 @@ class JSON_Encoder: # trigger a encoding of sub-dictionaries. else: val = JSON_Encoder._encode(val) - del(obj[key]) + if type(key) == str and key[0] == '!': - obj[JSON_Encoder._encode(key)] = '******' + copy[JSON_Encoder._encode(key)] = '******' else: - obj[JSON_Encoder._encode(key)] = val - return obj + copy[JSON_Encoder._encode(key)] = val + return copy elif hasattr(obj, 'json'): return obj.json() elif hasattr(obj, '__dump__'): -- cgit v1.2.3-54-g00ecf