я протестировал optcomplete
работу с модулем optparse
. Его пример представляет собой простой файл, поэтому я мог заставить его работать. Я также протестировал его с помощью модуля argparse
, поскольку предыдущий устарел. Но я действительно не понимаю, как и кем вызывается программа python при нажатии табуляции. Я подозреваю, что bash
вместе со строкой shebang
и модулем argparse
(или optparse
) каким-то образом задействованы. Я пытался понять это (сейчас прочитаю исходный код).
У меня немного более сложная структура программы, которая включает в себя оболочку вокруг фрагмента кода, обрабатывающего аргументы. Это argparse.Создание экземпляра ArgumentParser()
и вызовы add_argument()
— которые суперклассированы в другой промежуточный модуль, чтобы избежать дублирования кода, и оболочка вокруг вызываемого — находятся внутри функции.
Я хочу понять, как это автодополнение работает между bash и python (или, если уж на то пошло, любым другим интерпретатором, таким как perl
).
ПРИМЕЧАНИЕ. Я неплохо разбираюсь в автодополнении bash (которое я узнал только что), и я думаю, что понимаю пользовательское автодополнение bash(только).
ПРИМЕЧАНИЕ. Я читал другие подобные вопросы SO, и ни один из них не ответил на этот вопрос.
Редактировать: Вот функция bash.
Я уже понял, как модуль python узнает о словах, набранных в командной строке, читая os.environ
значения переменных
$COMP_WORDS
$COMP_CWORD
$COMP_LINE
$COMP_POINT
$COMPREPLY
Эти переменные имеют значения только при нажатии табуляции. Мой вопрос: как запускается модуль python?