From a470f02373d7806e597d1dccfe9c6e23cdf56961 Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Tue, 22 Nov 2022 19:26:50 +0100 Subject: [PATCH] Move linters into seperate module. Give linters an abstract type to inherit, since they share an interface. Add empty README --- printer-linter/README.md | 0 printer-linter/src/printerlinter/__init__.py | 5 +---- printer-linter/src/printerlinter/factory.py | 11 +++++++---- .../src/printerlinter/linters/__init__.py | 6 ++++++ .../src/printerlinter/{ => linters}/defintion.py | 13 +++++++------ .../printerlinter/linters/diagnostic_generator.py | 14 ++++++++++++++ .../src/printerlinter/{ => linters}/meshes.py | 9 +++++---- .../src/printerlinter/linters/profile.py | 9 +++++++++ printer-linter/src/printerlinter/profile.py | 7 ------- 9 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 printer-linter/README.md create mode 100644 printer-linter/src/printerlinter/linters/__init__.py rename printer-linter/src/printerlinter/{ => linters}/defintion.py (93%) create mode 100644 printer-linter/src/printerlinter/linters/diagnostic_generator.py rename printer-linter/src/printerlinter/{ => linters}/meshes.py (89%) create mode 100644 printer-linter/src/printerlinter/linters/profile.py delete mode 100644 printer-linter/src/printerlinter/profile.py diff --git a/printer-linter/README.md b/printer-linter/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/printer-linter/src/printerlinter/__init__.py b/printer-linter/src/printerlinter/__init__.py index 8023686891..a157443ff5 100644 --- a/printer-linter/src/printerlinter/__init__.py +++ b/printer-linter/src/printerlinter/__init__.py @@ -1,7 +1,4 @@ -from .defintion import Definition from .diagnostic import Diagnostic from .factory import create -from .meshes import Meshes -from .profile import Profile -__all__ = ["Profile", "Definition", "Meshes", "Diagnostic", "create"] +__all__ = ["Diagnostic", "create"] diff --git a/printer-linter/src/printerlinter/factory.py b/printer-linter/src/printerlinter/factory.py index 12e2d36628..3e76456af9 100644 --- a/printer-linter/src/printerlinter/factory.py +++ b/printer-linter/src/printerlinter/factory.py @@ -1,9 +1,12 @@ -from .profile import Profile -from .defintion import Definition -from .meshes import Meshes +from typing import Optional + +from .linters.profile import Profile +from .linters.defintion import Definition +from .linters.diagnostic_generator import DiagnosticGenerator +from .linters.meshes import Meshes -def create(file, settings): +def create(file, settings) -> Optional[DiagnosticGenerator]: if not file.exists(): return None if ".inst" in file.suffixes and ".cfg" in file.suffixes: diff --git a/printer-linter/src/printerlinter/linters/__init__.py b/printer-linter/src/printerlinter/linters/__init__.py new file mode 100644 index 0000000000..bf16caa933 --- /dev/null +++ b/printer-linter/src/printerlinter/linters/__init__.py @@ -0,0 +1,6 @@ +from .profile import Profile +from .meshes import Meshes +from .diagnostic_generator import DiagnosticGenerator +from .defintion import Definition + +__all__ = ["Profile", "Meshes", "DiagnosticGenerator", "Definition"] \ No newline at end of file diff --git a/printer-linter/src/printerlinter/defintion.py b/printer-linter/src/printerlinter/linters/defintion.py similarity index 93% rename from printer-linter/src/printerlinter/defintion.py rename to printer-linter/src/printerlinter/linters/defintion.py index 4d47900d68..c5202f76eb 100644 --- a/printer-linter/src/printerlinter/defintion.py +++ b/printer-linter/src/printerlinter/linters/defintion.py @@ -1,15 +1,16 @@ import json import re from pathlib import Path +from typing import Iterator -from .diagnostic import Diagnostic -from .replacement import Replacement +from ..diagnostic import Diagnostic +from .diagnostic_generator import DiagnosticGenerator +from ..replacement import Replacement -class Definition: +class Definition(DiagnosticGenerator): def __init__(self, file, settings) -> None: - self._settings = settings - self._file = file + super().__init__(file, settings) self._defs = {} self._getDefs(file) @@ -20,7 +21,7 @@ class Definition: self._getSetting(k, v, settings) self._defs["fdmprinter"] = {"overrides": settings} - def check(self) -> None: + def check(self) -> Iterator[Diagnostic]: if self._settings["checks"].get("diagnostic-definition-redundant-override", False): for check in self.checkRedefineOverride(): yield check diff --git a/printer-linter/src/printerlinter/linters/diagnostic_generator.py b/printer-linter/src/printerlinter/linters/diagnostic_generator.py new file mode 100644 index 0000000000..17fccd51f6 --- /dev/null +++ b/printer-linter/src/printerlinter/linters/diagnostic_generator.py @@ -0,0 +1,14 @@ +from abc import ABC, abstractmethod +from typing import Iterator + +from ..diagnostic import Diagnostic + + +class DiagnosticGenerator(ABC): + def __init__(self, file, settings) -> None: + self._settings = settings + self._file = file + + @abstractmethod + def check(self) -> Iterator[Diagnostic]: + pass \ No newline at end of file diff --git a/printer-linter/src/printerlinter/meshes.py b/printer-linter/src/printerlinter/linters/meshes.py similarity index 89% rename from printer-linter/src/printerlinter/meshes.py rename to printer-linter/src/printerlinter/linters/meshes.py index 47205ce219..0a8d0aa8a6 100644 --- a/printer-linter/src/printerlinter/meshes.py +++ b/printer-linter/src/printerlinter/linters/meshes.py @@ -1,13 +1,14 @@ -from .diagnostic import Diagnostic +from typing import Iterator + +from ..diagnostic import Diagnostic class Meshes: def __init__(self, file, settings) -> None: - self._settings = settings - self._file = file + super().__init__(file, settings) self._max_file_size = self._settings.get("diagnostic-mesh-file-size", 1e6) - def check(self) -> None: + def check(self) -> Iterator[Diagnostic]: if self._settings["checks"].get("diagnostic-mesh-file-extension", False): for check in self.checkFileFormat(): yield check diff --git a/printer-linter/src/printerlinter/linters/profile.py b/printer-linter/src/printerlinter/linters/profile.py new file mode 100644 index 0000000000..ac48084943 --- /dev/null +++ b/printer-linter/src/printerlinter/linters/profile.py @@ -0,0 +1,9 @@ +from typing import Iterator + +from ..diagnostic import Diagnostic +from .diagnostic_generator import DiagnosticGenerator + + +class Profile(DiagnosticGenerator): + def check(self) -> Iterator[Diagnostic]: + yield diff --git a/printer-linter/src/printerlinter/profile.py b/printer-linter/src/printerlinter/profile.py deleted file mode 100644 index c5386ab0e8..0000000000 --- a/printer-linter/src/printerlinter/profile.py +++ /dev/null @@ -1,7 +0,0 @@ -class Profile: - def __init__(self, file, settings) -> None: - self._settings = settings - self._file = file - - def check(self) -> None: - yield