# 6.8. `rlcompleter` — Fonction de complétion pour GNU readline

Code source : Lib/rlcompleter.py

Le module `rlcompleter` définit une fonction de complétion appropriée pour le module `readline` en complétant des identifiants et mots-clés Python valides.

Quand le module est importé dans une plate-forme Unix et la méthode `complete()` est configurée pour assurer la complétion de `readline`, une instance de classe `Completer` est automatiquement créée et la méthode est configurée au finisseur `complete()`

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.

Le module `rlcompleter` est conçu pour être utilisé par le mode interactif de Python. À moins que Python ne soit exécuté avec l’option `-S`, le module est automatiquement importé et configuré (voir 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.

## 6.8.1. Objets pour la complétion (Completer Objects)

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

`Completer.``complete`(text, state)

  Renvoie la state-ième complétion pour text.

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

  Quand elle est appelée pour un nom qui comporte un point, elle ne tente d’évaluer que ce qui n’a pas d’effet secondaire (les fonctions ne sont pas évaluées, mais elle peut faire des appels à `__getattr__()`), jusqu’à la dernière partie, et trouve des équivalents pour le reste via la fonction `dir()`. Toute exception levée durant l’évaluation de l’expression est interceptée, mise sous silence, et `None` est renvoyé.