rlcompleter — Функция завершения для GNU readline

Исходный код: Lib/rlcompleter.py


Модуль rlcompleter определяет функцию завершения, подходящую для передачи в set_completer() в модуле readline.

Когда этот модуль импортируется на платформу Unix с доступным модулем readline, автоматически создается экземпляр класса Completer и его методу complete() присваивается значение readline completer. Метод обеспечивает завершение работы с допустимым Python identifiers and keywords.

Пример:

>>> 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 класс Completer, определенный этим модулем, все еще может использоваться для пользовательских целей.

class rlcompleter.Completer

Завершенные объекты имеют следующий метод:

complete(text, state)

Возвращает следующее возможное завершение для text.

При вызове модулем readline этот метод вызывается последовательно с помощью state == 0, 1, 2, ... до тех пор, пока метод не вернет None.

При вызове для текста, который не содержит символа точки ('.'),, он будет заполнен из имен, определенных в настоящее время в __main__, builtins, и ключевых слов (как определено в модуле keyword ).

Если вызывается имя, указанное точкой, он попытается вычислить что-либо без очевидных побочных эффектов (функции вычисляться не будут, но он может генерировать вызовы __getattr__()) вплоть до последней части и найти совпадения для остальных с помощью функции dir() . Любое исключение, возникающее во время вычисления выражения, перехватывается, отключается и возвращается None.

Вернуться на верх