distinguish between (default_)value and other properties

This commit is contained in:
Jelle Spijker 2022-12-13 14:36:14 +01:00
parent cea7bb83c8
commit 6109b4b9da

View File

@ -41,7 +41,7 @@ class Definition(Linter):
definition = self._definitions[definition_name] definition = self._definitions[definition_name]
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"): if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
for key, value_dict in definition["overrides"].items(): for key, value_dict in definition["overrides"].items():
is_redefined, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits']) is_redefined, child_key, child_value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
if is_redefined: if is_redefined:
redefined = re.compile(r'.*(\"' + key + r'\"[\s\:\S]*?)\{[\s\S]*?\},?') redefined = re.compile(r'.*(\"' + key + r'\"[\s\:\S]*?)\{[\s\S]*?\},?')
found = redefined.search(self._content) found = redefined.search(self._content)
@ -59,7 +59,7 @@ class Definition(Linter):
yield Diagnostic( yield Diagnostic(
file = self._file, file = self._file,
diagnostic_name = "diagnostic-definition-redundant-override", diagnostic_name = "diagnostic-definition-redundant-override",
message = f"Overriding {key} with the same value ({value}) as defined in parent definition: {definition['inherits']}", message = f"Overriding {key} with the same value ({child_key}: {child_value}) as defined in parent definition: {definition['inherits']}",
level = "Warning", level = "Warning",
offset = found.span(0)[0], offset = found.span(0)[0],
replacements = replacements replacements = replacements
@ -92,28 +92,31 @@ class Definition(Linter):
is_number = False is_number = False
else: else:
is_number = self._definitions[self.base_def]["overrides"][key]["type"] in ("float", "int") is_number = self._definitions[self.base_def]["overrides"][key]["type"] in ("float", "int")
for value in value_dict.values(): for child_key, child_value in value_dict.items():
if key in parent: if key in parent:
check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None] if child_key in ("default_value", "value"):
check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None]
else:
check_values = [parent[key].get(child_key, None)]
for check_value in check_values: for check_value in check_values:
if is_number: if is_number and child_key in ("default_value", "value"):
try: try:
v = str(float(value)) v = str(float(child_value))
except: except:
v = value v = child_value
try: try:
cv = str(float(check_value)) cv = str(float(check_value))
except: except:
cv = check_value cv = check_value
else: else:
v = value v = child_value
cv = check_value cv = check_value
if v == cv: if v == cv:
return True, value, parent return True, child_key, child_value, parent
if "inherits" in parent: if "inherits" in parent:
return self._isDefinedInParent(key, value_dict, parent["inherits"]) return self._isDefinedInParent(key, value_dict, parent["inherits"])
return False, None, None return False, None, None, None
def _loadBasePrinterSettings(self): def _loadBasePrinterSettings(self):
""" TODO @Jelle please explain why this """ """ TODO @Jelle please explain why this """