Fixed #61 : SheerkaDebugManager: Add get_value()

Fixed #60 : Hash error when ReturnValue is a list of list
Fixed #59 : Implement smart_get()
Fixed #58 : SheerkaPromptCompleter: Cannot parse concept token
Fixed #57 : SheerkaPrompt: Add concept autocompletion
Fixed #56 : automatically backup command
Fixed #54 : I can record execution status
Fixed #53 : ConceptManager: modify_concept fails
This commit is contained in:
2021-04-09 15:47:32 +02:00
parent 6cda2686fb
commit dd3d8f4abe
37 changed files with 1055 additions and 191 deletions
@@ -1,5 +1,6 @@
from collections import namedtuple
from core.global_symbols import NotInit
from core.sheerka.services.sheerka_service import BaseService
from sdp.sheerkaDataProvider import Event
@@ -7,14 +8,22 @@ hist = namedtuple("HistoryTest", "text status") # tests purposes only
class History:
def __init__(self, event: Event, result):
def __init__(self, event: Event, result, extra_info):
self.event = event
self.result = result
self._status = None
self.extra_info = extra_info
self._status = NotInit
self._is_state_modified = NotInit
self._format_instructions = None
def __str__(self):
msg = f"{self.event.get_digest()} {self.event.date.strftime('%d/%m/%Y %H:%M:%S')} : {self.event.message}"
if self.is_state_modified is NotInit:
state_modified_str = "[?]"
else:
state_modified_str = "[X]" if self.is_state_modified else "[ ]"
event_date = self.event.date.strftime('%d/%m/%Y %H:%M:%S')
msg = f"{self.event.get_digest()} {event_date} {state_modified_str} : {self.event.message}"
status = self.status
if status is not None:
msg += f" => {status}"
@@ -40,12 +49,28 @@ class History:
@property
def status(self):
if self._status:
if self._status is not NotInit:
return self._status
if self.extra_info and "status" in self.extra_info:
self._status = self.extra_info["status"]
return self._status
self._status = self.result.get_status() if self.result else None
return self._status
@property
def is_state_modified(self):
if self._is_state_modified is not NotInit:
return self._is_state_modified
if self.extra_info and "is_state_modified" in self.extra_info:
self._is_state_modified = self.extra_info["is_state_modified"]
return self._is_state_modified
self._is_state_modified = self.result.is_state_modified() if self.result else None
return self._is_state_modified
def get_format_instructions(self):
return self._format_instructions
@@ -73,4 +98,10 @@ class SheerkaHistoryManager(BaseService):
result = self.sheerka.om.current_sdp().load_result(event.get_digest())
except (IOError, KeyError):
result = None
yield History(event, result)
try:
extra_info = self.sheerka.om.current_sdp().load_result_extra_info(event.get_digest())
except (IOError, KeyError):
extra_info = None
yield History(event, result, extra_info)