1
0

config: raise on setting mistyped or non-existent ConfigVar

This commit is contained in:
SomberNight
2025-03-03 17:41:23 +00:00
parent 016da31a0a
commit f445a476f9
2 changed files with 23 additions and 0 deletions

View File

@@ -244,6 +244,8 @@ class SimpleConfig(Logger):
self.amt_precision_post_satoshi = self.BTC_AMOUNTS_PREC_POST_SAT
self.amt_add_thousands_sep = self.BTC_AMOUNTS_ADD_THOUSANDS_SEP
self._init_done = True
def list_config_vars(self) -> Sequence[str]:
return list(sorted(_config_var_from_key.keys()))
@@ -897,6 +899,21 @@ class SimpleConfig(Logger):
def get_decimal_point(self):
return self.decimal_point
def __setattr__(self, name, value):
"""Disallows setting instance attributes outside __init__.
The point is to make the following code raise:
>>> config.NETORK_AUTO_CONNECTT = False
(i.e. catch mistyped or non-existent ConfigVars)
"""
# If __init__ not finished yet, or this field already exists, set it:
if not getattr(self, "_init_done", False) or hasattr(self, name):
return super().__setattr__(name, value)
raise AttributeError(
f"Tried to define new instance attribute for config: {name=!r}. "
"Did you perhaps mistype a ConfigVar?"
)
@cached_property
def cv(config):
"""Allows getting a reference to a config variable without dereferencing it.