rlcompleter — Completion function for GNU readline

Python documentation

Source code:

Lib/rlcompleter.py

———
The rlcompleter module defines a completion function suitable to be passed to

set_completer()

in the

readline

module.

When this module is imported on a Unix platform with the

readline

module available, an instance of the

Completer

class is automatically created and its

complete()

method is set as the

readline completer

. The method provides completion of valid Python

identifiers and keywords

.

Example:

>>> importrlcompleter>>> importreadline>>> readline.parse_and_bind("tab: complete")>>> readline.<TABPRESSED>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.The rlcompleter module is designed for use with Python’s

interactive mode

. Unless Python is run with the

-S

option, the module is automatically imported and configured (see

Readline configuration

).

On platforms without

readline

, the

Completer

class defined by this module can still be used for custom purposes.

classrlcompleter.Completer

Completer objects have the following method:

complete(text, state)

Return the next possible completion for text.

When called by the

readline

module, this method is called successively with state==0,1,2,... until the method returns None.

If called for text that doesn’t include a period character ('.'), it will complete from names currently defined in

__main__

,

builtins

and keywords (as defined by the

keyword

module).

If called for a dotted name, it will try to evaluate anything without obvious side-effects (functions will not be evaluated, but it can generate calls to

__getattr__()

) up to the last part, and find matches for the rest via the

dir()

function. Any exception raised during the evaluation of the expression is caught, silenced and

None

is returned.