Added set of set handling (thru concept ISA)

This commit is contained in:
2020-02-17 21:07:06 +01:00
parent 7481b458e1
commit 86c2ff58d4
33 changed files with 635 additions and 232 deletions
+20 -27
View File
@@ -16,11 +16,11 @@ class ConceptHandler(BaseHandler):
pickler = self.context
sheerka = self.sheerka
if obj.id:
if obj.metadata.full_serialization:
ref = default_concept
else:
ref = sheerka.get_by_id(obj.id)
data[CONCEPT_ID] = (obj.key, obj.id)
else:
ref = default_concept
# transform metadata
for prop in CONCEPT_PROPERTIES_TO_SERIALIZE:
@@ -41,7 +41,7 @@ class ConceptHandler(BaseHandler):
if prop not in ref.props or value != ref.props[prop].value:
if "props" not in data:
data["props"] = []
data["props"].append((prop, pickler.flatten(value)))
data["props"].append((pickler.flatten(prop), pickler.flatten(value)))
return data
@@ -77,7 +77,7 @@ class ConceptHandler(BaseHandler):
return instance
class UserInputHandler(BaseHandler):
class UserInputHandler(ConceptHandler):
def flatten(self, obj: UserInputConcept, data):
data[CONCEPT_ID] = (obj.key, obj.id)
@@ -86,12 +86,12 @@ class UserInputHandler(BaseHandler):
return data
def new(self, data):
sheerka = self.sheerka
instance = sheerka.new(tuple(data[CONCEPT_ID]), body=data["text"], user_name=data["user_name"])
return instance
return UserInputConcept.__new__(UserInputConcept)
def restore(self, data, instance):
instance.__init__(data["text"], data["user_name"])
instance.metadata.key = data[CONCEPT_ID][0]
instance.metadata.id = data[CONCEPT_ID][1]
return instance
@@ -100,6 +100,7 @@ class ReturnValueHandler(BaseHandler):
def flatten(self, obj: ReturnValueConcept, data):
pickler = self.context
data[CONCEPT_ID] = (obj.key, obj.id)
data["who"] = f"c:{obj.who.id}:" if isinstance(obj.who, Concept) else \
obj.who.name if isinstance(obj.who, (BaseParser, BaseEvaluator)) else \
obj.who
@@ -110,38 +111,30 @@ class ReturnValueHandler(BaseHandler):
return data
def new(self, data):
sheerka = self.sheerka
instance = sheerka.ret(data["who"], data["status"], None)
return instance
return ReturnValueConcept.__new__(ReturnValueConcept)
def restore(self, data, instance):
pickler = self.context
instance.value = pickler.restore(data["value"])
instance.__init__(data["who"], data["status"], pickler.restore(data["value"]))
if "parents" in data:
instance.parents = pickler.restore(data["parents"])
instance.metadata.key = data[CONCEPT_ID][0]
instance.metadata.id = data[CONCEPT_ID][1]
return instance
# class BuiltinConceptsHandler(BaseHandler):
#
# def flatten(self, obj: BuiltinConcepts, data):
# return data
#
# def restore(self, obj):
# pass
class SheerkaHandler(ConceptHandler):
class SheerkaHandler(BaseHandler):
def flatten(self, obj: BuiltinConcepts, data):
return data
# def flatten(self, obj: BuiltinConcepts, data):
# return ConceptHandler().flatten()data
def new(self, data):
return self.sheerka
def restore(self, data, instance):
return instance
# def restore(self, data, instance):
# return instance
class ExecutionContextHandler(BaseHandler):