rlcompleter — Kompletteringsfunktion för GNU readline

Källkod: Lib/rlcompleter.py


Modulen rlcompleter definierar en kompletteringsfunktion som är lämplig att skicka till set_completer() i modulen readline.

När denna modul importeras på en Unix-plattform med modulen readline tillgänglig, skapas automatiskt en instans av klassen Completer och dess metod complete() anges som readline completer. Metoden ger komplettering av giltiga Python identifierare och nyckelord.

Exempel:

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

Modulen rlcompleter är utformad för att användas med Pythons interaktiva läge. Om inte Python körs med alternativet -S importeras och konfigureras modulen automatiskt (se Konfiguration av läslinje).

På plattformar utan readline kan klassen Completer som definieras av denna modul fortfarande användas för anpassade ändamål.

class rlcompleter.Completer

Completer-objekt har följande metod:

complete(text, state)

Returnerar nästa möjliga komplettering för text.

När den här metoden anropas av modulen readline, anropas den successivt med state == 0, 1, 2, ... tills metoden returnerar None.

Om den anropas för text som inte innehåller ett punkttecken ('.'), kommer den att komplettera från namn som för närvarande definieras i __main__, builtins och nyckelord (som definieras av modulen keyword).

Om den anropas för ett punktat namn försöker den utvärdera allt utan uppenbara bieffekter (funktioner utvärderas inte, men den kan generera anrop till __getattr__()) fram till den sista delen, och hittar matchningar för resten via funktionen dir(). Alla undantag som uppstår under utvärderingen av uttrycket fångas upp, tystas och None returneras.