From 2184afba9b1b27d0eb2a656279fcf7c616dd3256 Mon Sep 17 00:00:00 2001 From: Athanasius Date: Thu, 20 May 2021 15:51:28 +0100 Subject: [PATCH] EngineerProgress: Rank/RankProgress is complicated. And, yes, flake8 checks, validating these events *is* complex. --- monitor.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/monitor.py b/monitor.py index 2b6b1f9e..4c6bc957 100644 --- a/monitor.py +++ b/monitor.py @@ -1635,7 +1635,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below # TODO: *This* will need refactoring and a proper validation infrastructure # designed for this in the future. This is a bandaid for a known issue. - def event_valid_engineerprogress(self, entry) -> bool: # noqa: CCR001 + def event_valid_engineerprogress(self, entry) -> bool: # noqa: CCR001 C901 """ Check an `EngineerProgress` Journal event for validity. @@ -1668,14 +1668,20 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below for e in entry['Engineers']: for f in ('Engineer', 'EngineerID', 'Rank', 'Progress', 'RankProgress'): if f not in e: - logger.warning(f"Engineer entry without '{f}' key: {e=}") + # For some Progress there's no Rank/RankProgress yet + if f in ('Rank', 'RankProgress'): + if (progress := e.get('Progress', None)) is not None: + if progress in ('Invited', 'Known'): + continue + + logger.warning(f"Engineer entry without '{f}' key: {e=} in {entry=}") return False if 'Progress' in entry: for e in entry['Engineers']: for f in ('Engineer', 'EngineerID', 'Rank', 'Progress', 'RankProgress'): if f not in e: - logger.warning(f"Engineer entry without '{f}' key: {e=}") + logger.warning(f"Engineer entry without '{f}' key: {e=} in {entry=}") return False return True