from core.sheerka.Sheerka import Sheerka from tests.BaseTest import BaseTest class TestUsingMemoryBasedSheerka(BaseTest): singleton_instance = None builtin_concepts = {} @staticmethod def _inner_get_sheerka(skip_builtins_in_db): sheerka = Sheerka(skip_builtins_in_db=skip_builtins_in_db) sheerka.initialize("mem://") return sheerka def get_sheerka(self, **kwargs): skip_builtins_in_db = kwargs.get("skip_builtins_in_db", True) use_singleton = kwargs.get("singleton", False) sheerka = kwargs.get("sheerka", False) if sheerka: return sheerka if use_singleton: singleton_instance = TestUsingMemoryBasedSheerka.singleton_instance if singleton_instance: singleton_instance.reset() singleton_instance.cache_by_key.update(TestUsingMemoryBasedSheerka.builtin_concepts) # quicker ? # singleton_instance.cache_by_key = TestUsingMemoryBasedSheerka.builtin_concepts return singleton_instance else: new_instance = self._inner_get_sheerka(skip_builtins_in_db) TestUsingMemoryBasedSheerka.builtin_concepts.update(new_instance.cache_by_key) TestUsingMemoryBasedSheerka.singleton_instance = new_instance return TestUsingMemoryBasedSheerka.singleton_instance return self._inner_get_sheerka(skip_builtins_in_db)