Concepts bodies are now evaluated on demand
This commit is contained in:
+14
-13
@@ -269,7 +269,6 @@ class Sheerka(Concept):
|
||||
:param execution_context:
|
||||
:param return_values:
|
||||
:param execution_steps:
|
||||
:param logger: logger to use (if not directly called by sheerka)
|
||||
:return:
|
||||
"""
|
||||
return self.execute_handler.execute(execution_context, return_values, execution_steps)
|
||||
@@ -294,7 +293,6 @@ class Sheerka(Concept):
|
||||
Adds a new concept to the system
|
||||
:param context:
|
||||
:param concept: DefConceptNode
|
||||
:param logger
|
||||
:return: digest of the new concept
|
||||
"""
|
||||
|
||||
@@ -309,7 +307,6 @@ class Sheerka(Concept):
|
||||
:param context:
|
||||
:param concept:
|
||||
:param concept_set:
|
||||
:param logger:
|
||||
:return:
|
||||
"""
|
||||
return self.sets_handler.add_concept_to_set(context, concept, concept_set)
|
||||
@@ -320,7 +317,6 @@ class Sheerka(Concept):
|
||||
:param context:
|
||||
:param concept:
|
||||
:param concept_set:
|
||||
:param logger:
|
||||
:return:
|
||||
"""
|
||||
return self.sets_handler.set_isa(context, concept, concept_set)
|
||||
@@ -336,16 +332,17 @@ class Sheerka(Concept):
|
||||
|
||||
return self.sets_handler.get_set_elements(context, concept)
|
||||
|
||||
def evaluate_concept(self, context, concept: Concept):
|
||||
def evaluate_concept(self, context, concept: Concept, evaluate_body=False):
|
||||
"""
|
||||
Evaluation a concept
|
||||
It means that if the where clause is True, will evaluate the body
|
||||
:param evaluate_body:
|
||||
:param context:
|
||||
:param concept:
|
||||
:param logger:
|
||||
:param evaluate_body:
|
||||
:return: value of the evaluation or error
|
||||
"""
|
||||
return self.evaluate_concept_handler.evaluate_concept(context, concept)
|
||||
return self.evaluate_concept_handler.evaluate_concept(context, concept, evaluate_body)
|
||||
|
||||
def add_in_cache(self, concept: Concept):
|
||||
"""
|
||||
@@ -393,11 +390,13 @@ class Sheerka(Concept):
|
||||
if result is None:
|
||||
metadata = [("key", concept_key), ("id", concept_id)] if concept_id else ("key", concept_key)
|
||||
result = self._get_unknown(metadata)
|
||||
|
||||
self.cache_by_key[concept_key] = result
|
||||
for r in (result if isinstance(result, list) else [result]):
|
||||
if r.id:
|
||||
self.cache_by_id[r.id] = r
|
||||
# Do not put in cache_by_key or cache_by_id unknown concept
|
||||
# TODO: implement an MRU cache for them
|
||||
else:
|
||||
self.cache_by_key[concept_key] = result
|
||||
for r in (result if isinstance(result, list) else [result]):
|
||||
if r.id:
|
||||
self.cache_by_id[r.id] = r
|
||||
|
||||
if not (isinstance(result, list) and concept_id):
|
||||
return result
|
||||
@@ -640,7 +639,9 @@ class Sheerka(Concept):
|
||||
if line == "" or line.startswith("#"):
|
||||
continue
|
||||
self.log.info(line)
|
||||
self.evaluate_user_input(line)
|
||||
res = self.evaluate_user_input(line)
|
||||
if len(res) > 1 or not res[0].status:
|
||||
self.log.error("Error detected !")
|
||||
self.during_restore = False
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user