IPython では、ユーザー定義オブジェクトにタブ補完を提供するのはかなり簡単__dir__
です。文字列のリストをオブジェクトに返すメソッドを定義するだけです。
register_line_magic
IPython は、便利なユーティリティを使用して独自のカスタム マジック関数を定義する方法も提供します。いくつかで~/.ipython/profile_default/startup/magictest.py
:
from IPython.core.magic import register_line_magic
@register_line_magic
def show(dataType):
# do something depending on the given `dataType` value
今私の質問は: この魔法の関数にオートコンプリートを提供するにはどうすればよいですか?
この電子メールによると、「%cd」IPython.core.interactiveshell.InteractiveShell.init_completer()
などのマジック関数コンプリータの例を調べる必要があります...%reset
ただし、私のマジック関数が定義されているものと同じスタートアップ ファイルでは、次のコードは機能しませんでした。
from IPython.core.interactiveshell import InteractiveShell
def show_complete():
return ['dbs', 'databases', 'collections']
InteractiveShell._instance.set_hook(
'complete_command', show_complete, str_key='%show')
IPython シェルでは、入力%show TAB
しても何もトリガーされません (関数内の print ステートメントは、関数が呼び出されていないことを示しています)。
このようなユーザー マジック コマンド パラメーターの補完を Ipython スタートアップ ファイル内から定義する方法について、ドキュメントや例を誰かに教えてもらえますか?
ありがとう!