import logging import datetime from .session.org_mode import ( global_session as session, create_global_session, ) from .knowledge_base import KnowledgeBase from .visualization import ( show_knowledge, show_samples, ) from .tests import gac_100 from .modifiable_property import ( ModifiableProperty, ModifiablePropertyWithAst, is_modifiable_property, ) bye_phrases = ['bye', 'exit'] def gen_session_name(): now = datetime.datetime.utcnow() return "treeNLU-cli-session-{}.org".format( now.strftime("%y_%m_%d %H:%M:%S_%f")) def main(): create_global_session(gen_session_name()) logging.getLogger().setLevel(logging.INFO) knowledge = gac_100.main() logging.getLogger().setLevel(logging.DEBUG) while True: try: data = input("> ").strip() except EOFError: print("bye") break if data.lower() in bye_phrases: break if not data: continue if data == '/show': show_knowledge(knowledge) continue elif data == '/samples': show_samples(knowledge) continue with session().log(data): ret = knowledge.process(data) if ret: result, _, _ = ret if not is_modifiable_property(result): print("<", result) else: result.setter() print("OK") elif ret is None: print("- Couldn't understand that, oops... -") else: print("Unhandled response:", ret) print("< Bye!")