mirror of
https://github.com/Klipper3d/klipper.git
synced 2026-05-07 02:27:10 +02:00
configfile: Only warn once for each message sent to runtime_warning()
Also simplify the maintenance of warnings. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -130,14 +130,8 @@ class ConfigWrapper:
|
|||||||
def deprecate(self, option, value=None):
|
def deprecate(self, option, value=None):
|
||||||
if not self.fileconfig.has_option(self.section, option):
|
if not self.fileconfig.has_option(self.section, option):
|
||||||
return
|
return
|
||||||
if value is None:
|
|
||||||
msg = ("Option '%s' in section '%s' is deprecated."
|
|
||||||
% (option, self.section))
|
|
||||||
else:
|
|
||||||
msg = ("Value '%s' in option '%s' in section '%s' is deprecated."
|
|
||||||
% (value, option, self.section))
|
|
||||||
pconfig = self.printer.lookup_object("configfile")
|
pconfig = self.printer.lookup_object("configfile")
|
||||||
pconfig.deprecate(self.section, option, value, msg)
|
pconfig.deprecate(self.section, option, value)
|
||||||
|
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
@@ -468,8 +462,6 @@ class PrinterConfig:
|
|||||||
self.autosave = ConfigAutoSave(printer)
|
self.autosave = ConfigAutoSave(printer)
|
||||||
self.validate = ConfigValidate(printer)
|
self.validate = ConfigValidate(printer)
|
||||||
self.deprecated = {}
|
self.deprecated = {}
|
||||||
self.runtime_warnings = []
|
|
||||||
self.deprecate_warnings = []
|
|
||||||
self.status_raw_config = {}
|
self.status_raw_config = {}
|
||||||
self.status_warnings = []
|
self.status_warnings = []
|
||||||
def get_printer(self):
|
def get_printer(self):
|
||||||
@@ -496,27 +488,33 @@ class PrinterConfig:
|
|||||||
def check_unused_options(self, config):
|
def check_unused_options(self, config):
|
||||||
self.validate.check_unused(config.fileconfig)
|
self.validate.check_unused(config.fileconfig)
|
||||||
# Deprecation warnings
|
# Deprecation warnings
|
||||||
|
def _add_deprecated(self, data):
|
||||||
|
key = tuple(list(data.items()))
|
||||||
|
if key in self.deprecated:
|
||||||
|
return False
|
||||||
|
self.deprecated[key] = True
|
||||||
|
self.status_warnings = self.status_warnings + [data]
|
||||||
|
return True
|
||||||
def runtime_warning(self, msg):
|
def runtime_warning(self, msg):
|
||||||
logging.warning(msg)
|
|
||||||
res = {'type': 'runtime_warning', 'message': msg}
|
res = {'type': 'runtime_warning', 'message': msg}
|
||||||
self.runtime_warnings.append(res)
|
did_add = self._add_deprecated(res)
|
||||||
self.status_warnings = self.runtime_warnings + self.deprecate_warnings
|
if did_add:
|
||||||
|
logging.warning(msg)
|
||||||
def deprecate(self, section, option, value=None, msg=None):
|
def deprecate(self, section, option, value=None, msg=None):
|
||||||
key = (section, option, value)
|
if value is None:
|
||||||
if key in self.deprecated and self.deprecated[key] == msg:
|
res = {'type': 'deprecated_option'}
|
||||||
return
|
defmsg = ("Option '%s' in section '%s' is deprecated."
|
||||||
self.deprecated[key] = msg
|
% (option, self.section))
|
||||||
self.deprecate_warnings = []
|
else:
|
||||||
for (section, option, value), msg in self.deprecated.items():
|
res = {'type': 'deprecated_value', 'value': value}
|
||||||
if value is None:
|
defmsg = ("Value '%s' in option '%s' in section '%s' is deprecated."
|
||||||
res = {'type': 'deprecated_option'}
|
% (value, option, self.section))
|
||||||
else:
|
if msg is None:
|
||||||
res = {'type': 'deprecated_value', 'value': value}
|
msg = defmsg
|
||||||
res['message'] = msg
|
res['message'] = msg
|
||||||
res['section'] = section
|
res['section'] = section
|
||||||
res['option'] = option
|
res['option'] = option
|
||||||
self.deprecate_warnings.append(res)
|
self._add_deprecated(res)
|
||||||
self.status_warnings = self.runtime_warnings + self.deprecate_warnings
|
|
||||||
# Status reporting
|
# Status reporting
|
||||||
def _build_status_config(self, config):
|
def _build_status_config(self, config):
|
||||||
self.status_raw_config = {}
|
self.status_raw_config = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user