Browse Source

distinguish between (default_)value and other properties

Jelle Spijker 2 years ago
parent
commit
6109b4b9da
1 changed files with 13 additions and 10 deletions
  1. 13 10
      printer-linter/src/printerlinter/linters/defintion.py

+ 13 - 10
printer-linter/src/printerlinter/linters/defintion.py

@@ -41,7 +41,7 @@ class Definition(Linter):
         definition = self._definitions[definition_name]
         if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
             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:
                     redefined = re.compile(r'.*(\"' + key + r'\"[\s\:\S]*?)\{[\s\S]*?\},?')
                     found = redefined.search(self._content)
@@ -59,7 +59,7 @@ class Definition(Linter):
                     yield Diagnostic(
                         file = self._file,
                         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",
                         offset = found.span(0)[0],
                         replacements = replacements
@@ -92,28 +92,31 @@ class Definition(Linter):
             is_number = False
         else:
             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:
-                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:
-                    if is_number:
+                    if is_number and child_key in ("default_value", "value"):
                         try:
-                            v = str(float(value))
+                            v = str(float(child_value))
                         except:
-                            v = value
+                            v = child_value
                         try:
                             cv = str(float(check_value))
                         except:
                             cv = check_value
                     else:
-                        v = value
+                        v = child_value
                         cv = check_value
                     if v == cv:
-                        return True, value, parent
+                        return True, child_key, child_value, parent
 
                 if "inherits" in parent:
                     return self._isDefinedInParent(key, value_dict, parent["inherits"])
-        return False, None, None
+        return False, None, None, None
 
     def _loadBasePrinterSettings(self):
         """ TODO @Jelle please explain why this """