Added SheerkaComparisonManager
This commit is contained in:
+48
-10
@@ -12,14 +12,14 @@ from core.builtin_concepts import BuiltinConcepts, ErrorConcept, ReturnValueConc
|
||||
UnknownConcept
|
||||
from core.concept import Concept, ConceptParts, PROPERTIES_FOR_NEW
|
||||
from core.sheerka.ExecutionContext import ExecutionContext
|
||||
from core.sheerka.Services.SheerkaCreateNewConcept import SheerkaCreateNewConcept
|
||||
from core.sheerka.Services.SheerkaDump import SheerkaDump
|
||||
from core.sheerka.Services.SheerkaEvaluateConcept import SheerkaEvaluateConcept
|
||||
from core.sheerka.Services.SheerkaExecute import SheerkaExecute
|
||||
from core.sheerka.Services.SheerkaHistoryManager import SheerkaHistoryManager
|
||||
from core.sheerka.Services.SheerkaModifyConcept import SheerkaModifyConcept
|
||||
from core.sheerka.Services.SheerkaSetsManager import SheerkaSetsManager
|
||||
from core.sheerka.Services.SheerkaVariableManager import SheerkaVariableManager
|
||||
from core.sheerka.services.SheerkaCreateNewConcept import SheerkaCreateNewConcept
|
||||
from core.sheerka.services.SheerkaDump import SheerkaDump
|
||||
from core.sheerka.services.SheerkaEvaluateConcept import SheerkaEvaluateConcept
|
||||
from core.sheerka.services.SheerkaExecute import SheerkaExecute
|
||||
from core.sheerka.services.SheerkaHistoryManager import SheerkaHistoryManager
|
||||
from core.sheerka.services.SheerkaModifyConcept import SheerkaModifyConcept
|
||||
from core.sheerka.services.SheerkaSetsManager import SheerkaSetsManager
|
||||
from core.sheerka.services.SheerkaVariableManager import SheerkaVariableManager
|
||||
from core.sheerka_logger import console_handler
|
||||
from printer.SheerkaPrinter import SheerkaPrinter
|
||||
from sdp.sheerkaDataProvider import SheerkaDataProvider, Event
|
||||
@@ -72,6 +72,8 @@ class Sheerka(Concept):
|
||||
self.sdp: SheerkaDataProvider = None # SheerkaDataProvider
|
||||
self.cache_manager = CacheManager(cache_only)
|
||||
|
||||
self.services = {} # sheerka plugins
|
||||
|
||||
self.builtin_cache = {} # cache for builtin concepts
|
||||
self.parsers = {} # cache for builtin parsers
|
||||
self.evaluators = [] # cache for builtin evaluators
|
||||
@@ -114,6 +116,20 @@ class Sheerka(Concept):
|
||||
def concepts_grammars(self):
|
||||
return self.cache_manager.caches[self.CONCEPTS_GRAMMARS_ENTRY].cache
|
||||
|
||||
def bind_service_method(self, instance, method, as_name=None):
|
||||
"""
|
||||
Bind service method to sheerka instance for ease to use
|
||||
:param instance:
|
||||
:param method:
|
||||
:param as_name:
|
||||
:return:
|
||||
"""
|
||||
if as_name is None:
|
||||
as_name = method.__name__
|
||||
|
||||
bound_method = method.__get__(instance, instance.__class__)
|
||||
setattr(self, as_name, bound_method)
|
||||
|
||||
def initialize(self, root_folder: str = None, save_execution_context=True):
|
||||
"""
|
||||
Starting Sheerka
|
||||
@@ -139,6 +155,7 @@ class Sheerka(Concept):
|
||||
if self.sdp.first_time:
|
||||
self.first_time_initialisation(exec_context)
|
||||
|
||||
self.initialize_services()
|
||||
self.initialize_builtin_parsers()
|
||||
self.initialize_builtin_evaluators()
|
||||
self.initialize_builtin_concepts()
|
||||
@@ -212,6 +229,21 @@ class Sheerka(Concept):
|
||||
self.cache_manager.put(self.CONCEPTS_KEYS_ENTRY, self.USER_CONCEPTS_KEYS, 1000)
|
||||
self.variable_handler.record(context, self.name, "save_execution_context", True)
|
||||
|
||||
def initialize_services(self):
|
||||
"""
|
||||
Introspect to find services and bind them
|
||||
:return:
|
||||
"""
|
||||
self.init_log.debug("Initializing services")
|
||||
|
||||
core.utils.import_module_and_sub_module('core.sheerka.services')
|
||||
base_class = "core.sheerka.services.sheerka_service.BaseService"
|
||||
for service in core.utils.get_sub_classes("core.sheerka.services", base_class):
|
||||
instance = service(self)
|
||||
if hasattr(instance, "initialize"):
|
||||
instance.initialize()
|
||||
self.services[service.NAME] = instance
|
||||
|
||||
def initialize_builtin_concepts(self):
|
||||
"""
|
||||
Initializes the builtin concepts
|
||||
@@ -300,8 +332,14 @@ class Sheerka(Concept):
|
||||
self.cache_manager.put(self.RESOLVED_CONCEPTS_BY_FIRST_KEYWORD_ENTRY, False, res.body)
|
||||
|
||||
def reset(self, cache_only=False):
|
||||
self.cache_manager.clear()
|
||||
self.cache_manager.cache_only = cache_only
|
||||
if self.cache_manager.cache_only != cache_only:
|
||||
self.cache_manager.reset(cache_only)
|
||||
self.initialize_caching()
|
||||
for service in self.services.values():
|
||||
if hasattr(service, "initialize"):
|
||||
service.initialize()
|
||||
else:
|
||||
self.cache_manager.clear()
|
||||
self.printer_handler.reset()
|
||||
self.sdp.reset()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user