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

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


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

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

Пример:

>>> 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 разработан для использования в интерактивном режиме Python. Если Python не запущен с параметром -S, модуль автоматически импортируется и настраивается (см. Конфигурация Readline).

На платформах без readline класс Completer, определённый этим модулем, по-прежнему можно использовать для пользовательских целей.

Completer объекты

У Completer объектов есть следующий метод:

Completer.complete(text, state)

Возвращает stateое завершение для text.

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

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