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
readlineaufgerufen, geschieht das nacheinander mitstate == 0, 1, 2, ..., bis die MethodeNonezurückgibt.Wird sie für ein text ohne Punkt (
'.') aufgerufen, vervollständigt sie aus den derzeit in__main__undbuiltinsdefinierten Namen sowie aus den Schlüsselwörtern, wie sie das Modulkeywordfestlegt.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 Funktiondir()nach Treffern. Jede Ausnahme, die beim Auswerten des Ausdrucks auftritt, wird abgefangen und verschluckt, und es wirdNonezurückgegeben.