rlcompleter — Vervollständigungsfunktion für GNU readline

Quellcode: Lib/rlcompleter.py


Das Modul rlcompleter definiert eine Vervollständigungsfunktion, die sich an set_completer() im Modul readline übergeben lässt.

Wird dieses Modul auf einer Unix-Plattform importiert, auf der das Modul readline zur Verfügung steht, entsteht selbsttätig eine Instanz der Klasse Completer, und ihre Methode complete() wird als readline-Vervollständigung eingetragen. Die Methode vervollständigt gültige Bezeichner und Schlüsselwörter von Python.

Beispiel:

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

Das Modul rlcompleter ist für Pythons interaktiven Modus gedacht. Sofern Python nicht mit der Option -S gestartet wird, importiert und konfiguriert es sich selbsttätig (siehe Readline-Konfiguration).

Auf Plattformen ohne readline lässt sich die von diesem Modul definierte Klasse Completer dennoch für eigene Zwecke verwenden.

class rlcompleter.Completer

Completer-Objekte haben die folgende Methode:

complete(text, state)

Gibt die nächste mögliche Vervollständigung für text zurück.

Wird sie vom Modul readline aufgerufen, geschieht das nacheinander mit state == 0, 1, 2, ..., bis die Methode None zurückgibt.

Wird sie für ein text ohne Punkt ('.') aufgerufen, vervollständigt sie aus den derzeit in __main__ und builtins definierten Namen sowie aus den Schlüsselwörtern, wie sie das Modul keyword festlegt.

Wird sie für einen Namen mit Punkten aufgerufen, versucht sie, alles bis zum letzten Bestandteil auszuwerten, was keine offensichtlichen Nebenwirkungen hat – Funktionen werden nicht ausgewertet, Aufrufe von __getattr__() können dabei aber entstehen –, und sucht für den Rest über die Funktion dir() nach Treffern. Jede Ausnahme, die beim Auswerten des Ausdrucks auftritt, wird abgefangen und verschluckt, und es wird None zurückgegeben.