rlcompleter — Fonction de complétion pour GNU readline

Code source : 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.

Exemple :

>>> 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.

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).

Sur les plate-formes sans readline, la classe Completer définie par ce module peut quand même être utilisée pour des fins personnalisées.

class rlcompleter.Completer

Les objets pour la complétion (Completer objects en anglais) disposent de la méthode suivante :

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.

Si text ne contient pas un caractère point ('.'), il puise dans les noms actuellement définis dans __main__, builtins ainsi que les mots-clés (ainsi que définis par le module keyword)

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.