Source code for pyaiml21.kernel

"""Kernel - the backwards compatible implementation of the interpreter."""
from typing import Optional, Dict
from .chatbot import Bot


[docs]class Kernel(Bot): """ Backwards compatible way to work with the interpreter. This class represents the whole interpreter, keeps the track of a bot and loading and manipulation with its files, configuration, etc. Note that some methods are missing, or have changed type signature. """ DEFAULT_USED_ID = "default"
[docs] def loadBrain(self, brain_file: str) -> None: """ Attempt to load the brain global for all users from the specified file. Does not load configuration files, nor the custom tags. :param brain_file: filename from which to load the brain """ self.gm.load(brain_file)
[docs] def saveBrain(self, filename: str) -> None: """ Store the global brain into the specified file. Does not save configuration files, nor the custom tags. :param filename: filename to save the brain into """ self.gm.dump(filename)
[docs] def resetBrain(self) -> None: """ Reset bot's brain. Remove the content of bot's brain, equivalent to starting a new instance of the bot with the same name. """ self.gm.root = self.gm.root.__class__()
[docs] def setPredicate(self, name: str, value: str, sessionID: Optional[str] = None) -> None: """ Set the corresponding _predicate. :param name: name of the _predicate to set :param value: desired _predicate value :param sessionID: userID / sessionID to set _predicate for; or None to set global bot's _predicate """ if not sessionID: sessionID = self.DEFAULT_USED_ID if sessionID not in self.sessions: self.init_new_user(sessionID) if sessionID not in self.sessions: raise ValueError("Unknown sessionID") self.sessions[sessionID].predicates[name] = value
[docs] def getPredicate(self, name: str, sessionID: Optional[str] = None) -> str: """ Return bot the specified bot's property. :param name: name of the property :param sessionID: id of the session :return: property value or empty string of not set """ if sessionID is None: sessionID = self.DEFAULT_USED_ID if sessionID not in self.sessions: raise ValueError("Unknown session id") return self.sessions[sessionID].predicates.get(name, "")
[docs] def setBotPredicate(self, name: str, value: str) -> None: """ Set the corresponding bot property to the value. :param name: name of the property :param value: desired value """ self.config.properties[name] = value
[docs] def getBotPredicate(self, name: str) -> Optional[str]: """ Get the corresponding bot property. :param name: name of the property """ res: Optional[str] = self.config.properties.get(name) return res
[docs] def getSessionData(self, sessionID: Optional[str]) -> Dict[str, str]: """ Return a copy of session predicates. :param sessionID: id of the session :return: session predicates or empty dict if session is not found """ if sessionID is None: sessionID = self.DEFAULT_USED_ID if sessionID not in self.sessions: raise ValueError("Unknown session id") return dict(self.sessions[sessionID].predicates)
[docs] def learn(self, filename: str) -> None: """ Load and learn content of the given aiml file. :param filename: .aiml or .aimlif with categories to learn """ self.learn_aiml(filename)