Improved PythonEvaluator when dealing with concept class
This commit is contained in:
+4
-7
@@ -363,7 +363,7 @@ def unstr_concept(concept_repr):
|
||||
return key if key != "" else None, id if id != "" else None
|
||||
|
||||
|
||||
def encode_concept(t, use_concept=False):
|
||||
def encode_concept(t):
|
||||
"""
|
||||
Given a tuple of concept id, concept id
|
||||
Create a valid Python identifier that can be parsed back
|
||||
@@ -371,15 +371,13 @@ def encode_concept(t, use_concept=False):
|
||||
>>> assert encode_concept(("key", "id")) == "__C__KEY_key__ID_id__C__"
|
||||
>>> assert encode_concept((None, "id")) == "__C__KEY_00None00__ID_id__C__"
|
||||
>>> assert encode_concept(("key", None)) == "__C__KEY_key__ID_00None00__C__"
|
||||
>>> assert encode_concept(("key", "id"), True) == "__C__USE_CONCEPT__KEY_key__ID_id__C__"
|
||||
|
||||
:param t:
|
||||
:param use_concept:
|
||||
:return:
|
||||
"""
|
||||
|
||||
key, id_ = (t[0], t[1]) if isinstance(t, tuple) else (t.key, t.id)
|
||||
prefix = "__C__USE_CONCEPT" if use_concept else "__C"
|
||||
prefix = "__C"
|
||||
sanitized_key = "".join(c if c.isalnum() else "0" for c in key) if key else "00None00"
|
||||
return prefix + f"__KEY_{sanitized_key}__ID_{id_ or '00None00'}__C__"
|
||||
|
||||
@@ -393,15 +391,14 @@ def decode_concept(text):
|
||||
:param text:
|
||||
:return:
|
||||
"""
|
||||
use_concept = text.startswith("__C__USE_CONCEPT")
|
||||
m = decode_regex.search(text)
|
||||
lookup = {"00None00": None}
|
||||
if m:
|
||||
key = lookup.get(m.group(1), m.group(1))
|
||||
id_ = lookup.get(m.group(2), m.group(2))
|
||||
return key, id_, use_concept
|
||||
return key, id_
|
||||
|
||||
return None, None, None
|
||||
return None, None
|
||||
|
||||
|
||||
def tokens_index(tokens, sub_tokens, skip=0):
|
||||
|
||||
Reference in New Issue
Block a user