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

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


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

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

Пример:

>>> 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 является возвращенный.