mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-30 15:15:11 +08:00
Add some comments and refactoring
This commit is contained in:
parent
437b05f608
commit
ad436f37f8
@ -9,17 +9,13 @@ from ..replacement import Replacement
|
|||||||
|
|
||||||
|
|
||||||
class Definition(DiagnosticGenerator):
|
class Definition(DiagnosticGenerator):
|
||||||
|
""" Finds issues in definition files, such as overriding default parameters """
|
||||||
def __init__(self, file: Path, settings: dict) -> None:
|
def __init__(self, file: Path, settings: dict) -> None:
|
||||||
super().__init__(file, settings)
|
super().__init__(file, settings)
|
||||||
self._defs = {}
|
self._definitions = {}
|
||||||
self._getDefs(file)
|
self._loadDefinitionFiles(file)
|
||||||
|
|
||||||
self._content = self._file.read_text()
|
self._content = self._file.read_text()
|
||||||
|
self._loadBasePrinterSettings()
|
||||||
settings = {}
|
|
||||||
for k, v in self._defs["fdmprinter"]["settings"].items():
|
|
||||||
self._getSetting(k, v, settings)
|
|
||||||
self._defs["fdmprinter"] = {"overrides": settings}
|
|
||||||
|
|
||||||
def check(self) -> Iterator[Diagnostic]:
|
def check(self) -> Iterator[Diagnostic]:
|
||||||
if self._settings["checks"].get("diagnostic-definition-redundant-override", False):
|
if self._settings["checks"].get("diagnostic-definition-redundant-override", False):
|
||||||
@ -33,9 +29,10 @@ class Definition(DiagnosticGenerator):
|
|||||||
|
|
||||||
yield
|
yield
|
||||||
|
|
||||||
def checkRedefineOverride(self) -> None:
|
def checkRedefineOverride(self) -> Iterator[Diagnostic]:
|
||||||
definition_name = list(self._defs.keys())[0]
|
""" Checks if definition file overrides its parents settings with the same value. """
|
||||||
definition = self._defs[definition_name]
|
definition_name = list(self._definitions.keys())[0]
|
||||||
|
definition = self._definitions[definition_name]
|
||||||
if "overrides" in definition and definition_name != "fdmprinter":
|
if "overrides" in definition and definition_name != "fdmprinter":
|
||||||
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, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
|
||||||
@ -55,30 +52,27 @@ class Definition(DiagnosticGenerator):
|
|||||||
replacement_text = "")]
|
replacement_text = "")]
|
||||||
)
|
)
|
||||||
|
|
||||||
def checkValueOutOfBounds(self) -> None:
|
def _loadDefinitionFiles(self, definition_file) -> None:
|
||||||
pass
|
""" Loads definition file contents into self._definitions. Also load parent definition if it exists. """
|
||||||
|
definition_name = Path(definition_file.stem).stem
|
||||||
|
|
||||||
def _getSetting(self, name, setting, settings) -> None:
|
if not definition_file.exists() or definition_name in self._definitions:
|
||||||
if "children" in setting:
|
|
||||||
for childname, child in setting["children"].items():
|
|
||||||
self._getSetting(childname, child, settings)
|
|
||||||
settings |= {name: setting}
|
|
||||||
|
|
||||||
def _getDefs(self, file) -> None:
|
|
||||||
""" Loads up file, and it's parent definitions into self._defs """
|
|
||||||
if not file.exists() or Path(file.stem).stem in self._defs:
|
|
||||||
return
|
return
|
||||||
self._defs[Path(file.stem).stem] = json.loads(file.read_text())
|
|
||||||
if "inherits" in self._defs[Path(file.stem).stem]:
|
# Load definition file into dictionary
|
||||||
parent_file = file.parent.joinpath(f"{self._defs[Path(file.stem).stem]['inherits']}.def.json")
|
self._definitions[definition_name] = json.loads(definition_file.read_text())
|
||||||
self._getDefs(parent_file)
|
|
||||||
|
# Load parent definition if it exists
|
||||||
|
if "inherits" in self._definitions[definition_name]:
|
||||||
|
parent_file = definition_file.parent.joinpath(f"{self._definitions[definition_name]['inherits']}.def.json")
|
||||||
|
self._loadDefinitionFiles(parent_file)
|
||||||
|
|
||||||
def _isDefinedInParent(self, key, value_dict, inherits_from):
|
def _isDefinedInParent(self, key, value_dict, inherits_from):
|
||||||
if "overrides" not in self._defs[inherits_from]:
|
if "overrides" not in self._definitions[inherits_from]:
|
||||||
return self._isDefinedInParent(key, value_dict, self._defs[inherits_from]["inherits"])
|
return self._isDefinedInParent(key, value_dict, self._definitions[inherits_from]["inherits"])
|
||||||
|
|
||||||
parent = self._defs[inherits_from]["overrides"]
|
parent = self._definitions[inherits_from]["overrides"]
|
||||||
is_number = self._defs["fdmprinter"]["overrides"][key] in ("float", "int")
|
is_number = self._definitions["fdmprinter"]["overrides"][key] in ("float", "int")
|
||||||
for value in value_dict.values():
|
for value in value_dict.values():
|
||||||
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]
|
check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None]
|
||||||
@ -101,3 +95,16 @@ class Definition(DiagnosticGenerator):
|
|||||||
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
|
||||||
|
|
||||||
|
def _loadBasePrinterSettings(self):
|
||||||
|
""" TODO @Jelle please explain why this """
|
||||||
|
settings = {}
|
||||||
|
for k, v in self._definitions["fdmprinter"]["settings"].items():
|
||||||
|
self._getSetting(k, v, settings)
|
||||||
|
self._definitions["fdmprinter"] = {"overrides": settings}
|
||||||
|
|
||||||
|
def _getSetting(self, name, setting, settings) -> None:
|
||||||
|
if "children" in setting:
|
||||||
|
for childname, child in setting["children"].items():
|
||||||
|
self._getSetting(childname, child, settings)
|
||||||
|
settings |= {name: setting}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user