In IPython ist es ziemlich einfach zu tab-Vervollständigung für benutzerdefinierte Objekt bereitzustellen: Definieren Sie einfach eine __dir__
Methode, die eine Liste von Zeichenfolgen an das Objekt zurückgibt.IPython benutzerdefinierte Tab-Vervollständigung für Benutzer magische Funktion
IPython bieten uns auch eine Möglichkeit, unsere eigenen benutzerdefinierten magischen Funktionen mit dem praktischen register_line_magic
Dienstprogramm zu definieren. In einigen ~/.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
Nun meine Frage ist: Wie Auto-Vervollständigung dieser magischen Funktion zur Verfügung zu stellen?
Nach this email, sollte man in IPython.core.interactiveshell.InteractiveShell.init_completer()
suchen Sie nach einem Beispiel der Magie Funktion Beender wie %reset
, ‚% cd‘, etc ...
jedoch in der gleichen Startdatei als dem, in dem meine Magie Funktion definiert ist, hat der folgende Code nicht:
from IPython.core.interactiveshell import InteractiveShell
def show_complete():
return ['dbs', 'databases', 'collections']
InteractiveShell._instance.set_hook(
'complete_command', show_complete, str_key='%show')
im IPython Schale, %show TAB
löst nichts (print-Anweisungen in der Funktion zeigen, dass die Funktion nicht einmal genannt wird) eingeben.
Kann mir jemand auf einige Dokumentationen oder Beispiele hinweisen, wie man solche Benutzer-magischen Befehlsparameter in den Ipython-Startup-Dateien definiert?
Danke!