Я хотел бы иметь интерактивную подсказку, похожую на IPython, в программе.
Особенности, которые я хотел бы иметь:
- Пользовательское приглашение
- Автодополнение методов и атрибутов объекта
- Выполнение методов, чтение/запись атрибутов
- Отображать строку документации при ошибке
До сих пор я играл с readline
с функцией обратного вызова с автоматическим завершением и магическими методами, такими как __dir__
, __doc__
или __dict__
.
Я уверен, что смогу реализовать такое решение, но я ищу существующий модуль, который может сделать эту работу за меня.
В моей идее я хотел бы использовать это так:
class Foo:
def Say(self):
return "The answer is 42"
foo = Foo()
cli = Cli() # The terminal interface I want to have
cli.RegisterObject(foo, showAttributes = True, showProtected = True)
cli.AddCommand('exit', exit)
cli.Start(defaultPrompt = ">")
Друг посоветовал мне использовать IPython вместо собственного решения. К сожалению, IPython слишком открыт для моего приложения, где новички наверняка запутаются. Я не хочу, чтобы конечный пользователь имел доступ ко всему.
В конце у нас будет что-то вроде этого:
$ ./cli.py
>foo.<tab>
Say
>foo.Say()
The answer is 42
>bar.AreYouHere()
Unknown command!
>exit
Некоторые связанные вопросы:
- Пользовательская интерактивная оболочка с Python
- Пользовательская интерактивная оболочка с автозаполнением
- Моделирование оболочки cli с помощью python
- Создание CLI (Shell?) в Python
К сожалению, ответы советуют использовать модуль cmd, который мне не очень нужен.