15 lines
533 B
Python
15 lines
533 B
Python
|
|
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
|