First implementation of Debugger for SyaNodeParser

This commit is contained in:
2020-12-03 21:50:48 +01:00
parent 4f899280c4
commit 8b86998225
48 changed files with 1781 additions and 1795 deletions
+17 -11
View File
@@ -4,7 +4,7 @@ from cache.FastCache import FastCache
from cache.ListIfNeededCache import ListIfNeededCache
from core.builtin_concepts import BuiltinConcepts
from core.concept import Concept
from core.global_symbols import CONTEXT_DISPOSED
from core.global_symbols import EVENT_CONTEXT_DISPOSED
from core.sheerka.services.sheerka_service import BaseService, ServiceObj
@@ -23,7 +23,7 @@ class SheerkaMemory(BaseService):
def __init__(self, sheerka):
super().__init__(sheerka)
self.short_term_objects = FastCache()
self.objects = ListIfNeededCache(default=lambda k: self.sheerka.sdp.get(self.OBJECTS_ENTRY, k))
self.memory_objects = ListIfNeededCache(default=lambda k: self.sheerka.sdp.get(self.OBJECTS_ENTRY, k))
self.registration = {}
def initialize(self):
@@ -37,14 +37,16 @@ class SheerkaMemory(BaseService):
self.sheerka.bind_service_method(self.unregister_object, True, visible=False)
self.sheerka.bind_service_method(self.add_registered_objects, True, visible=False)
self.sheerka.bind_service_method(self.memory, False)
self.sheerka.bind_service_method(self.mem, False)
self.sheerka.cache_manager.register_cache(self.OBJECTS_ENTRY, self.objects, persist=True, use_ref=True)
self.sheerka.cache_manager.register_cache(self.OBJECTS_ENTRY, self.memory_objects, persist=True, use_ref=True)
def reset(self):
self.short_term_objects.clear()
self.memory_objects.clear()
def initialize_deferred(self, context, is_first_time):
self.sheerka.subscribe(CONTEXT_DISPOSED, self.remove_context)
self.sheerka.subscribe(EVENT_CONTEXT_DISPOSED, self.remove_context)
def get_from_short_term_memory(self, context, key):
while True:
@@ -90,16 +92,16 @@ class SheerkaMemory(BaseService):
:param concept:
:return:
"""
self.objects.put(key, MemoryObject(context.event.get_digest(), concept))
self.memory_objects.put(key, MemoryObject(context.event.get_digest(), concept))
def get_from_memory(self, context, key):
""""
"""
return self.objects.get(key)
return self.memory_objects.get(key)
def register_object(self, context, key, concept):
"""
Before adding objects to memory, they first need to be registered
Before adding memory_objects to memory, they first need to be registered
More:
We don't want to add all evaluated concept into memory
(because some of them may be ref to concept already in memory)
@@ -126,7 +128,7 @@ class SheerkaMemory(BaseService):
def add_registered_objects(self, context):
"""
Adds all registered objects
Adds all registered memory_objects
:param context:
:return:
"""
@@ -136,7 +138,7 @@ class SheerkaMemory(BaseService):
def memory(self, context, name=None):
"""
Get the list of all objects in memory
Get the list of all memory_objects in memory
:param context:
:param name:
:return:
@@ -154,10 +156,14 @@ class SheerkaMemory(BaseService):
return obj.obj
res = {}
for k in self.objects:
obj = self.objects.get(k)
for k in self.memory_objects:
obj = self.memory_objects.get(k)
if isinstance(obj, list):
obj = obj[-1]
res[k] = obj.obj
return res
def mem(self):
keys = sorted([k for k in self.memory_objects])
return {"keys": keys, "len": len(keys)}