Files
Sheerka-Old/src/evaluators/BaseEvaluator.py
T

74 lines
1.9 KiB
Python

from core.sheerka.Sheerka import ExecutionContext
class BaseEvaluator:
"""
Base class to evaluate ReturnValues
"""
PREFIX = "evaluators."
def __init__(self, name, steps, priority: int, enabled=True):
# self.log = get_logger(self.PREFIX + self.__class__.__name__)
# self.init_log = get_logger("init." + self.PREFIX + self.__class__.__name__)
# self.verbose_log = get_logger("verbose." + self.PREFIX + self.__class__.__name__)
self.name = BaseEvaluator.get_name(name)
self.short_name = name
self.steps = steps
self.priority = priority
self.enabled = enabled
def __repr__(self):
return f"{self.name} ({self.priority})"
def __eq__(self, other):
if not isinstance(other, BaseEvaluator):
return False
return self.name == other.name and \
self.priority == other.priority and \
self.steps == other.steps and \
self.enabled == other.enabled
def __hash__(self):
return hash((self.name, self.priority, self.steps, self.enabled))
def reset(self):
pass
@staticmethod
def get_name(name):
return BaseEvaluator.PREFIX + name
class OneReturnValueEvaluator(BaseEvaluator):
"""
Evaluate one specific return value
"""
def matches(self, context: ExecutionContext, return_value):
pass
def eval(self, context: ExecutionContext, return_value):
pass
class AllReturnValuesEvaluator(BaseEvaluator):
"""
Evaluates the groups of ReturnValues
"""
def __init__(self, name, steps, priority: int, enabled=True):
super().__init__(name, steps, priority, enabled)
self.eaten = []
def matches(self, context: ExecutionContext, return_values):
pass
def eval(self, context: ExecutionContext, return_values):
pass
def reset(self):
self.eaten.clear()