Added bnf when adding a new concept + Started logging filtering

This commit is contained in:
2019-12-13 20:26:11 +01:00
parent 75c8793d53
commit c668cc46d2
29 changed files with 1487 additions and 190 deletions
+21 -5
View File
@@ -10,7 +10,7 @@ from sdp.sheerkaSerializer import Serializer, SerializerContext
import logging
log = logging.getLogger(__name__)
init_log = logging.getLogger(__name__ + ".init")
def json_default_converter(o):
"""
@@ -278,7 +278,7 @@ class SheerkaDataProvider:
REF_PREFIX = "##REF##:"
def __init__(self, root=None):
log.debug("Initializing sdp.")
init_log.debug("Initializing sdp.")
self.io = SheerkaDataProviderIO.get(root)
self.first_time = self.io.first_time
@@ -312,6 +312,20 @@ class SheerkaDataProvider:
else obj.get_digest() if hasattr(obj, "get_digest") \
else None
@staticmethod
def get_obj_origin(obj):
"""
Get the digest used to save obj if set
"""
if isinstance(obj, dict) and Serializer.ORIGIN in obj:
return obj[Serializer.ORIGIN]
if hasattr(obj, Serializer.ORIGIN):
return getattr(obj, Serializer.ORIGIN)
return None
@staticmethod
def get_stream_digest(stream):
sha256_hash = hashlib.sha256()
@@ -460,10 +474,10 @@ class SheerkaDataProvider:
obj_key = self.get_obj_key(obj) or key
if isinstance(state.data[entry][key], list):
if not hasattr(obj, Serializer.ORIGIN):
obj_origin = self.get_obj_origin(obj)
if obj_origin is None:
raise (SheerkaDataProviderError(f"Multiple entries under '{entry}.{key}'", obj))
obj_origin = getattr(obj, Serializer.ORIGIN)
state.modify_in_list(entry, key, obj, obj_key, obj_origin, self.load_ref_if_needed, self.save_ref_if_needed)
else:
@@ -674,7 +688,9 @@ class SheerkaDataProvider:
obj = self.serializer.deserialize(f, SerializerContext(origin=digest))
# set the origin of the object
if not isinstance(obj, str):
if isinstance(obj, dict):
obj[Serializer.ORIGIN] = digest
elif not isinstance(obj, str):
setattr(obj, Serializer.ORIGIN, digest)
return obj