Fixed memory() and RET usage

This commit is contained in:
2020-09-21 21:30:38 +02:00
parent 177a6b1d5f
commit dd520c1680
37 changed files with 816 additions and 353 deletions
+41 -40
View File
@@ -1,40 +1,41 @@
from core.builtin_concepts import BuiltinConcepts
from core.builtin_helpers import ensure_evaluated
from core.concept import Concept, ConceptParts
from evaluators.BaseEvaluator import OneReturnValueEvaluator
class RetEvaluator(OneReturnValueEvaluator):
"""
The evaluator transforms the concept, using the RET metadata value
"""
NAME = "Ret"
def __init__(self):
super().__init__(self.NAME, [BuiltinConcepts.EVALUATION], 10)
def matches(self, context, return_value):
return return_value.status and \
isinstance(return_value.value, Concept) and \
return_value.value.metadata.ret is not None
def eval(self, context, return_value):
sheerka = context.sheerka
concept = return_value.value
context.log(f"Processing ret value for concept {concept}.", self.name)
if not concept.metadata.is_evaluated:
evaluated = ensure_evaluated(context, concept)
if evaluated.key != concept.key:
context.log(f"Failed to evaluate concept '{concept}'")
return None
ret = evaluated.get_value(ConceptParts.RET)
else:
ret = concept.get_value(ConceptParts.RET)
if isinstance(ret, Concept) and sheerka.is_known(ret):
return sheerka.ret(self.name, True, ret, parents=[return_value])
context.log(f"ret '{ret}' is not a concept!")
return None
# from core.builtin_concepts import BuiltinConcepts
# from core.builtin_helpers import ensure_evaluated
# from core.concept import Concept, ConceptParts
# from evaluators.BaseEvaluator import OneReturnValueEvaluator
#
#
# class RetEvaluator(OneReturnValueEvaluator):
# """
# The evaluator transforms the concept, using the RET metadata value
# """
#
# NAME = "Ret"
#
# def __init__(self):
# super().__init__(self.NAME, [BuiltinConcepts.EVALUATION], 10)
# self.enabled = False
#
# def matches(self, context, return_value):
# return return_value.status and \
# isinstance(return_value.value, Concept) and \
# return_value.value.metadata.ret is not None
#
# def eval(self, context, return_value):
# sheerka = context.sheerka
# concept = return_value.value
# context.log(f"Processing ret value for concept {concept}.", self.name)
#
# if not concept.metadata.is_evaluated:
# evaluated = ensure_evaluated(context, concept)
# if evaluated.key != concept.key:
# context.log(f"Failed to evaluate concept '{concept}'")
# return None
# ret = evaluated.get_value(ConceptParts.RET)
# else:
# ret = concept.get_value(ConceptParts.RET)
#
# if isinstance(ret, Concept) and sheerka.is_known(ret):
# return sheerka.ret(self.name, True, ret, parents=[return_value])
#
# context.log(f"ret '{ret}' is not a concept!")
# return None