fixed #18 : I can evaluate concept

This commit is contained in:
2023-06-01 22:08:34 +02:00
parent 09a0246420
commit 62391f786e
25 changed files with 1503 additions and 314 deletions
+14 -3
View File
@@ -10,7 +10,7 @@ from common.utils import get_logger_name, unstr_concept
from core.BuiltinConcepts import BuiltinConcepts
from core.ExecutionContext import ExecutionContext
from core.ReturnValue import ReturnValue
from core.concept import Concept, ConceptMetadata, ConceptDefaultPropsAttrs, DefinitionType
from core.concept import Concept, ConceptDefaultPropsAttrs, ConceptMetadata, DefinitionType
from core.error import ErrorContext, SheerkaException
from parsers.tokenizer import TokenKind, Tokenizer, strip_tokens
from services.BaseService import BaseService
@@ -105,6 +105,9 @@ class ConceptManager(BaseService):
_(4, BuiltinConcepts.USER_INPUT, desc="Any external input", variables=("command",))
_(5, BuiltinConcepts.PARSER_INPUT, desc="tokenized input", variables=("pi",))
_(6, BuiltinConcepts.PYTHON_CODE, desc="python code", variables=("pf",)) # pf for PythonFragment
_(7, BuiltinConcepts.INVALID_CONCEPT, desc="invalid concept", variables=("concept_id", "reason"))
_(8, BuiltinConcepts.EVALUATION_ERROR, desc="evaluation error", variables=("concept", "reason"))
self.init_log.debug('%s builtin concepts created',
len(self.sheerka.om.current_cache_manager().concept_caches))
@@ -237,8 +240,11 @@ class ConceptManager(BaseService):
:return:
:rtype:
"""
if isinstance(identifier, ConceptMetadata):
return self._inner_new(identifier, **kwargs)
if isinstance(identifier, (ConceptMetadata, Concept)):
return self._inner_new(identifier.get_metadata(), **kwargs)
if isinstance(identifier, list):
return [self.new(item, **kwargs) for item in identifier]
if (tmp := unstr_concept(identifier)) != (None, None):
# manage c:name#id:
@@ -380,4 +386,9 @@ class ConceptManager(BaseService):
concept = Concept(_metadata_def)
for k, v in kwargs.items():
concept.set_value(k, v)
if kwargs:
# if an attribute is set, the concept is considered as evaluated
concept.get_runtime_info().is_evaluated = True
return concept