From a8253a692b1d5181d27f6827c53f67b7e797cf6a Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 26 Jan 2024 10:54:03 +0000 Subject: [PATCH] cfg.py: allow unsetting of previously set attrs --- mmgen/cfg.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mmgen/cfg.py b/mmgen/cfg.py index 6d58b1db..d9b2813e 100755 --- a/mmgen/cfg.py +++ b/mmgen/cfg.py @@ -445,10 +445,17 @@ class Config(Lockable): assert key.isascii() and key.isidentifier() and key[0] != '_', '{key!r}: malformed configuration option' assert key not in self._forbidden_opts, '{key!r}: forbidden configuration option' if key not in auto_opts: - setattr( - self, - key, - conv_type(key, val, getattr(self,key), self._uopt_desc ) if hasattr(self,key) else val ) + if hasattr(type(self), key): + setattr( + self, + key, + getattr(type(self), key) if val is None else + conv_type(key, val, getattr(type(self), key), self._uopt_desc)) + elif val is None: + if hasattr(self, key): + delattr(self, key) + else: + setattr(self, key, val) # Step 3: set cfg from environment, skipping already-set opts; save names set from environment: self._envopts = tuple(self._set_cfg_from_env()) if self._use_env else ()