Refactored ExecutionContext serialization (added sheerkapickle) and added History management
This commit is contained in:
@@ -4,9 +4,22 @@ import time
|
||||
from core.builtin_concepts import BuiltinConcepts
|
||||
from core.concept import Concept
|
||||
from sdp.sheerkaDataProvider import Event
|
||||
from sheerkapickle.SheerkaPickler import SheerkaPickler
|
||||
|
||||
DEBUG_TAB_SIZE = 4
|
||||
|
||||
PROPERTIES_TO_SERIALIZE = ("_id",
|
||||
"_bag",
|
||||
"_start",
|
||||
"_stop",
|
||||
"who",
|
||||
"desc",
|
||||
"children",
|
||||
"inputs",
|
||||
"values",
|
||||
"obj",
|
||||
"concepts")
|
||||
|
||||
|
||||
class ExecutionContext:
|
||||
"""
|
||||
@@ -31,7 +44,7 @@ class ExecutionContext:
|
||||
**kwargs):
|
||||
|
||||
self._parent = None
|
||||
self._id = ExecutionContext.get_id(event.get_digest())
|
||||
self._id = ExecutionContext.get_id(event.get_digest()) if event else None
|
||||
self._tab = ""
|
||||
self._bag = {} # other variables
|
||||
self._start = 0
|
||||
@@ -90,6 +103,26 @@ class ExecutionContext:
|
||||
msg += ")"
|
||||
return msg
|
||||
|
||||
def __eq__(self, other):
|
||||
if id(self) == id(other):
|
||||
return True
|
||||
|
||||
if not isinstance(other, ExecutionContext):
|
||||
return False
|
||||
|
||||
for prop in PROPERTIES_TO_SERIALIZE:
|
||||
if prop == "who":
|
||||
value = str(getattr(self, prop))
|
||||
other_value = str(getattr(other, prop))
|
||||
else:
|
||||
value = getattr(self, prop)
|
||||
other_value = getattr(other, prop)
|
||||
|
||||
if value != other_value:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def add_preprocess(self, name, **kwargs):
|
||||
preprocess = self.sheerka.new(BuiltinConcepts.EVALUATOR_PRE_PROCESS)
|
||||
preprocess.set_prop("name", name)
|
||||
@@ -189,10 +222,6 @@ class ExecutionContext:
|
||||
to_str = self.return_value_to_str(r)
|
||||
logger.debug(f"[{self._id:2}]" + self._tab + "-> " + to_str)
|
||||
|
||||
def to_dict(self):
|
||||
from core.sheerka_transform import SheerkaTransform
|
||||
st = SheerkaTransform(self.sheerka)
|
||||
return st.to_dict(self)
|
||||
|
||||
@staticmethod
|
||||
def return_value_to_str(r):
|
||||
|
||||
Reference in New Issue
Block a user