Jedi ist ein statisches Analysetool für Python, das typischerweise in IDEs/Editor-Plugins verwendet wird. Jedi legt den Schwerpunkt auf die automatische Vervollständigung und die Goto-Funktionalität. Zu den weiteren Funktionen gehören Refactoring, Codesuche und das Finden von Referenzen.
Jedi verfügt über eine einfache API, mit der man arbeiten kann. Es gibt eine Referenzimplementierung als VIM-Plugin. Auch eine Autovervollständigung in Ihrer REPL ist möglich, IPython verwendet sie nativ und für die CPython REPL können Sie sie installieren. Jedi ist gut getestet und Fehler sollten selten sein.
Jedi kann derzeit mit folgenden Editoren/Projekten verwendet werden:
und viele mehr!
Es gibt einige Sprachserver, die Jedi verwenden:
Hier sind einige Bilder von jedi-vim:
Abschluss für fast alles:
Dokumentation:
Holen Sie sich die neueste Version von Github (der Master-Zweig sollte immer einigermaßen stabil/funktionsfähig sein).
Dokumente sind unter https://jedi.readthedocs.org/en/latest/ verfügbar. Pull-Requests mit Verbesserungen und/oder Korrekturen sind großartig und sehr willkommen. Jedi verwendet semantische Versionierung.
Wenn Sie über Veröffentlichungen auf dem Laufenden bleiben möchten, abonnieren Sie bitte diese Mailingliste: https://groups.google.com/g/jedi-announce. Zum Abonnieren können Sie einfach eine leere E-Mail an [email protected]
senden.
Sie können Probleme und Fragen im Issue-Tracker <https://github.com/davidhalter/jedi/> einreichen. Alternativ können Sie auch bei Stack Overflow mit der Bezeichnung python-jedi
nachfragen.
Schauen Sie sich die Dokumente an.
Die Funktionen von Jedi sind hier aufgelistet: Funktionen.
Sie können Jedi auf Python 3.6+ ausführen, es sollte jedoch auch Code verstehen, der älter als diese Versionen ist. Darüber hinaus sollten Sie Virtualenvs sehr gut nutzen können.
Tipps zum effizienten Einsatz von Jedi finden Sie hier.
Eine umfassende Dokumentation zur API finden Sie hier.
Es gibt folgende Befehle:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
Die zurückgegebenen Objekte sind sehr leistungsfähig und sind wirklich alles, was Sie brauchen könnten.
Jedi ist eine Abhängigkeit von IPython. Autovervollständigung in IPython mit Jedi ist daher ohne zusätzliche Konfiguration möglich.
Hier ist ein Beispielvideo, wie die REPL-Vervollständigung aussehen kann. Für die python
-Shell können Sie die Tab-Vervollständigung in einer REPL aktivieren.
Für viele Formen der statischen Analyse können Sie versuchen jedi.Script(...).get_names
zu verwenden. Es wird eine Liste mit Namen zurückgegeben, die Sie dann filtern und bearbeiten können. Es gibt auch eine Möglichkeit, die Syntaxfehler in einer Datei aufzulisten: jedi.Script.get_syntax_errors
.
Jedi unterstützt die folgenden Refactorings:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
Es gibt Unterstützung für die Modulsuche mit jedi.Script.search
und die Projektsuche für jedi.Project.search
. Die Suche erfolgt entweder durch die Angabe eines Namens wie foo
oder durch die Verwendung einer Punktsyntax wie foo.bar
. Zusätzlich können Sie den API-Typ wie class foo.bar.Bar
angeben. Es gibt auch die Funktionen jedi.Script.complete_search
und jedi.Project.complete_search
.
Es gibt eine ziemlich gute und umfangreiche Entwicklungsdokumentation.
Die Testsuite verwendet pytest
:
pip install pytest
Wenn Sie nur eine bestimmte Python-Version testen möchten (z. B. Python 3.8), ist das so einfach:
python3.8 -m pytest
Ausführlichere Informationen finden Sie in der Testdokumentation.
Vielen Dank an alle Mitwirkenden!