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.