rlcompleter --- GNU readline の補完機能¶
ソースコード: Lib/rlcompleter.py
rlcompleter モジュールは、readline モジュールの set_completer() に渡すのに適した補完関数を定義しています。
readline モジュールが利用可能な Unix プラットフォームでこのモジュールをインポートすると、Completer クラスのインスタンスが自動的に作成され、その complete() メソッドが readline の補完関数 に設定されます。
このメソッドは有効な Python の 識別子とキーワード を補完します。
以下はプログラム例です:
>>> 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.
rlcompleter モジュールは、Python の 対話モード で使うよう設計されています。
-S オプション付きで Python を実行した場合を除き、自動的にインポートされ、設定されます (readline の設定 を参照)。
readline のないプラットフォームでも、このモジュールで定義される Completer クラスは独自の目的に使えます。
- class rlcompleter.Completer¶
Completerオブジェクトは以下のメソッドを持っています:
- complete(text, state)¶
text の次の補完候補を返します。
readlineモジュールから呼び出されるときは、Noneを返すまでstate == 0, 1, 2, ...で順に呼び出されます。もし text がピリオド(
'.')を含まない場合、__main__、builtinsで定義されている名前か、キーワード (keywordモジュールで定義されている) から補完されます。ドットで区切られた名前に対して呼び出された場合、明らかな副作用がない範囲で最後の部分より前を評価し、残りの部分にマッチするものを
dir()関数で探します。 関数は評価しませんが、__getattr__()が呼び出されることはあります。 式の評価中に発生した例外はすべて捕捉して抑制し、Noneを返します。