Fixed list of concepts
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import core.utils
|
import core.utils
|
||||||
from core.builtin_concepts import BuiltinConcepts, ErrorConcept
|
from core.builtin_concepts import BuiltinConcepts, ErrorConcept
|
||||||
from core.concept import Concept
|
from core.concept import Concept
|
||||||
from sdp.sheerkaDataProvider_Old import SheerkaDataProviderDuplicateKeyError
|
|
||||||
|
|
||||||
BNF_NODE_PARSER_CLASS = "parsers.BnfNodeParser_Old.BnfNodeParser"
|
BNF_NODE_PARSER_CLASS = "parsers.BnfNodeParser_Old.BnfNodeParser"
|
||||||
BASE_NODE_PARSER_CLASS = "parsers.BaseNodeParser.BaseNodeParser"
|
BASE_NODE_PARSER_CLASS = "parsers.BaseNodeParser.BaseNodeParser"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class SheerkaDump:
|
|||||||
self.sheerka = sheerka
|
self.sheerka = sheerka
|
||||||
|
|
||||||
def dump_concepts(self):
|
def dump_concepts(self):
|
||||||
lst = self.sheerka.sdp.list(self.sheerka.CONCEPTS_BY_KEY_ENTRY)
|
lst = self.sheerka.sdp.list(self.sheerka.CONCEPTS_BY_ID_ENTRY)
|
||||||
for item in lst:
|
for item in lst:
|
||||||
if hasattr(item, "__iter__"):
|
if hasattr(item, "__iter__"):
|
||||||
for i in item:
|
for i in item:
|
||||||
|
|||||||
@@ -89,6 +89,13 @@ class State:
|
|||||||
return hashlib.sha256(as_json.encode("utf-8")).hexdigest()
|
return hashlib.sha256(as_json.encode("utf-8")).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
class SheerkaDataProviderDuplicateKeyError(Exception):
|
||||||
|
def __init__(self, key, obj):
|
||||||
|
Exception.__init__(self, "Duplicate object.")
|
||||||
|
self.key = key
|
||||||
|
self.obj = obj
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class SheerkaDataProviderResult:
|
class SheerkaDataProviderResult:
|
||||||
"""
|
"""
|
||||||
@@ -224,6 +231,39 @@ class SheerkaDataProvider:
|
|||||||
return {self.load_ref_if_needed(i, load_origin) for i in item}
|
return {self.load_ref_if_needed(i, load_origin) for i in item}
|
||||||
return self.load_ref_if_needed(item, load_origin)
|
return self.load_ref_if_needed(item, load_origin)
|
||||||
|
|
||||||
|
def list(self, entry, filter=None):
|
||||||
|
"""
|
||||||
|
Lists elements of entry 'entry'
|
||||||
|
:param entry: name of the entry to list
|
||||||
|
:param filter: filter to use
|
||||||
|
:return: list of elements
|
||||||
|
"""
|
||||||
|
snapshot = self.get_snapshot(SheerkaDataProvider.HeadFile)
|
||||||
|
state = self.load_state(snapshot)
|
||||||
|
if entry not in state.data:
|
||||||
|
return []
|
||||||
|
|
||||||
|
elements = state.data[entry]
|
||||||
|
|
||||||
|
if isinstance(elements, dict):
|
||||||
|
# manage when elements have a key
|
||||||
|
filter_to_use = (lambda k, o: True) if filter is None else filter
|
||||||
|
for key, element in elements.items():
|
||||||
|
if filter_to_use(key, element):
|
||||||
|
if isinstance(element, list):
|
||||||
|
yield [self.load_ref_if_needed(e) for e in element]
|
||||||
|
else:
|
||||||
|
yield self.load_ref_if_needed(element)
|
||||||
|
else:
|
||||||
|
# manage when no key is defined for the elements
|
||||||
|
if not isinstance(elements, list) and not isinstance(elements, set):
|
||||||
|
elements = [elements]
|
||||||
|
|
||||||
|
filter_to_use = (lambda o: True) if filter is None else filter
|
||||||
|
for element in elements:
|
||||||
|
if filter_to_use(element):
|
||||||
|
yield self.load_ref_if_needed(element)
|
||||||
|
|
||||||
def exists(self, entry, key=None):
|
def exists(self, entry, key=None):
|
||||||
"""
|
"""
|
||||||
Returns true if the entry is defined
|
Returns true if the entry is defined
|
||||||
|
|||||||
+1087
-1087
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user