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 +++++---- examples/guided.py | 3 --- 2 files changed, 5 insertions(+), 7 deletions(-) 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__'): diff --git a/examples/guided.py b/examples/guided.py index 264ff44e..fbe6ea47 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -228,15 +228,12 @@ except archinstall.RequirementError as e: if not archinstall.arguments.get('nic', None): archinstall.arguments['nic'] = archinstall.ask_to_configure_network() -print(type(archinstall.arguments['harddrive']), archinstall.arguments['harddrive']) - print() print('This is your chosen configuration:') archinstall.log("-- Guided template chosen (with below config) --", level=archinstall.LOG_LEVELS.Debug) archinstall.log(json.dumps(archinstall.arguments, indent=4, sort_keys=True, cls=archinstall.JSON), level=archinstall.LOG_LEVELS.Info) print() -print(type(archinstall.arguments['harddrive']), archinstall.arguments['harddrive']) input('Press Enter to continue.') """ -- cgit v1.2.3-70-g09d2