diff --git a/nexus/mnemosyne/reasoner.py b/nexus/mnemosyne/reasoner.py new file mode 100644 index 00000000..31e8609c --- /dev/null +++ b/nexus/mnemosyne/reasoner.py @@ -0,0 +1,14 @@ + +class Reasoner: + def __init__(self, rules): + self.rules = rules + def evaluate(self, entries): + return [r['action'] for r in self.rules if self._check(r['condition'], entries)] + def _check(self, cond, entries): + if cond.startswith('count'): + # e.g. count(type=anomaly)>3 + p = cond.replace('count(', '').split(')') + key, val = p[0].split('=') + count = sum(1 for e in entries if e.get(key) == val) + return eval(f"{count}{p[1]}") + return False