rlcompleter
— Функция завершения для GNU readline¶
Источник: Lib/rlcompleter.py
Модуль rlcompleter
определяет функцию завершения, которую можно передать в set_completer()
в модуле readline
.
При импорте этого модуля на платформе Unix, где доступен модуль readline
, автоматически создается экземпляр класса Completer
, а его метод complete()
устанавливается в качестве readline completer. Метод обеспечивает завершение действительных identifiers and keywords языка Python.
Пример:
>>> import rlcompleter
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> readline. <TAB PRESSED>
readline.__doc__ readline.get_line_buffer( readline.read_init_file(
readline.__file__ readline.insert_text( readline.set_completer(
readline.__name__ readline.parse_and_bind(
>>> readline.
Модуль rlcompleter
предназначен для использования с interactive mode в Python. Если Python не запущен с опцией -S
, модуль импортируется и настраивается автоматически (см. Конфигурация Readline).
На платформах, где нет readline
, класс Completer
, определенный этим модулем, все еще может использоваться для пользовательских целей.
- class rlcompleter.Completer¶
Объекты Completer имеют следующий метод:
- complete(text, state)¶
Возвращает следующее возможное завершение для text.
При вызове модулем
readline
этот метод последовательно вызывается сstate == 0, 1, 2, ...
, пока не вернетсяNone
.Если вызвать текст, не содержащий символа точки (
'.'
), то он будет заполнен из имен, определенных в__main__
,builtins
и ключевых слов (как определено модулемkeyword
).Если его вызвать для точечного имени, он попытается оценить все, что не имеет очевидных побочных эффектов (функции не будут оценены, но он может генерировать вызовы
__getattr__()
), вплоть до последней части, и найти совпадения для остальной части с помощью функцииdir()
. Любое исключение, возникшее во время оценки выражения, перехватывается, замалчивается и возвращаетсяNone
.