Added ModifyConcept function, and fixed 'isa' not working

This commit is contained in:
2020-02-20 11:30:53 +01:00
parent 87f232b527
commit 7cd94e888f
17 changed files with 750 additions and 228 deletions
+27 -2
View File
@@ -1,6 +1,6 @@
import hashlib
from collections import namedtuple
from dataclasses import dataclass, field
from dataclasses import dataclass
from enum import Enum
from core.sheerka_logger import get_logger
@@ -15,6 +15,7 @@ PROPERTIES_FOR_DIGEST = ("name", "key",
PROPERTIES_TO_SERIALIZE = PROPERTIES_FOR_DIGEST + tuple(["id"])
PROPERTIES_FOR_NEW = ("where", "pre", "post", "body", "desc")
VARIABLE_PREFIX = "__var__"
ORIGIN = "##origin##" # same as Serializer.ORIGIN but I don't want to include the reference
class ConceptParts(Enum):
@@ -97,6 +98,7 @@ class Concept:
self.bnf = None
self.log = get_logger("core." + self.__class__.__name__)
self.init_log = get_logger("init.core." + self.__class__.__name__)
self.original_definition_hash = None
def __repr__(self):
return f"({self.metadata.id}){self.metadata.name}"
@@ -243,7 +245,19 @@ class Concept:
def body(self):
return self.values[ConceptParts.BODY] if ConceptParts.BODY in self.values else None
def get_digest(self):
def get_origin(self):
"""
Return the digest used to save the concept if it exists
:return:
"""
if hasattr(self, ORIGIN):
return getattr(self, ORIGIN)
return None
def set_origin(self, origin):
setattr(self, ORIGIN, origin)
def get_definition_hash(self):
"""
Returns the digest of the event
:return: hexa form of the sha256
@@ -301,6 +315,11 @@ class Concept:
for k, v in other.props.items():
self.set_prop(k, v.value)
# origin
from sdp.sheerkaSerializer import Serializer
if hasattr(other, Serializer.ORIGIN):
setattr(self, Serializer.ORIGIN, getattr(other, Serializer.ORIGIN))
return self
def set_prop(self, prop_name, prop_value):
@@ -362,6 +381,12 @@ class Concept:
self.metadata.is_evaluated = True
return self
def freeze_definition_hash(self):
self.original_definition_hash = self.get_definition_hash()
def get_original_definition_hash(self):
return self.original_definition_hash
class Property:
"""