From 6fa20d51dcfd7db3286bc9dad31455b69b6daf65 Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Fri, 23 Sep 2022 17:27:30 +0300 Subject: prevent saving settings with bogus values --- modules/shared.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'modules/shared.py') diff --git a/modules/shared.py b/modules/shared.py index 0978f3f6..0d7b8623 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -219,6 +219,7 @@ options_templates.update(options_section(('ui', "User interface"), { class Options: data = None data_labels = options_templates + typemap = {int: float} def __init__(self): self.data = {k: v.default for k, v in self.data_labels.items()} @@ -244,25 +245,23 @@ class Options: with open(filename, "w", encoding="utf8") as file: json.dump(self.data, file) - def load(self, filename): - with open(filename, "r", encoding="utf8") as file: - self.data = json.load(file) - - typemap = {int: float} + def same_type(self, x, y): + if x is None or y is None: + return True - def same_type(x, y): - if x is None or y is None: - return True + type_x = self.typemap.get(type(x), type(x)) + type_y = self.typemap.get(type(y), type(y)) - type_x = typemap.get(type(x), type(x)) - type_y = typemap.get(type(y), type(y)) + return type_x == type_y - return type_x == type_y + def load(self, filename): + with open(filename, "r", encoding="utf8") as file: + self.data = json.load(file) bad_settings = 0 for k, v in self.data.items(): info = self.data_labels.get(k, None) - if info is not None and not same_type(info.default, v): + if info is not None and not self.same_type(info.default, v): print(f"Warning: bad setting value: {k}: {v} ({type(v).__name__}; expected {type(info.default).__name__})", file=sys.stderr) bad_settings += 1 -- cgit v1.2.1