Как работает argparse (и устаревший optparse) реагировать на нажатие клавиши «tab» после имени программы python в bash?

я протестировал 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?

11
задан 0xc0de 5 March 2012 в 17:34
поделиться