diff --git a/printer-linter/src/printerlinter/diagnostic.py b/printer-linter/src/printerlinter/diagnostic.py index a6843ed38f..a379ff6ba2 100644 --- a/printer-linter/src/printerlinter/diagnostic.py +++ b/printer-linter/src/printerlinter/diagnostic.py @@ -1,5 +1,20 @@ +from pathlib import Path +from typing import Optional, List + +from .replacement import Replacement + + class Diagnostic: - def __init__(self, file, diagnostic_name, message, level, offset, replacements=None) -> None: + def __init__(self, file: Path, diagnostic_name: str, message: str, level: str, offset: int, replacements: Optional[List[Replacement]] = None) -> None: + """ A diagnosis of an issue in "file" at "offset" in that file. May include suggested replacements. + + @param file: The path to the file this diagnostic is for. + @param diagnostic_name: The name of the diagnostic rule that spawned this result. A list can be found in .printer-linter. + @param message: A message explaining the issue with this piece of text. + @param level: How important this diagnostic is, ranges from Warning -> Error. + @param offset: The offset in file where the issue is. + @param replacements: A list of Replacement that contain replacement text. + """ self.file = file self.diagnostic_name = diagnostic_name self.message = message @@ -8,13 +23,12 @@ class Diagnostic: self.replacements = replacements def toDict(self) -> dict: - diagnostic_dict = {"DiagnosticName": self.diagnostic_name, - "DiagnosticMessage": { - "Message": self.message, - "FilePath": self.file.as_posix(), - "FileOffset": self.offset, - "Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements], - }, - "Level": self.level - } - return diagnostic_dict + return {"DiagnosticName": self.diagnostic_name, + "DiagnosticMessage": { + "Message": self.message, + "FilePath": self.file.as_posix(), + "FileOffset": self.offset, + "Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements], + }, + "Level": self.level + }