Jedi est un outil d'analyse statique pour Python qui est généralement utilisé dans les plugins IDE/éditeurs. Jedi se concentre sur la saisie semi-automatique et la fonctionnalité goto. Les autres fonctionnalités incluent la refactorisation, la recherche de code et la recherche de références.
Jedi dispose d'une API simple avec laquelle travailler. Il existe une implémentation de référence en tant que VIM-Plugin. L'autocomplétion dans votre REPL est également possible, IPython l'utilise nativement et pour le CPython REPL vous pouvez l'installer. Jedi est bien testé et les bugs devraient être rares.
Jedi peut actuellement être utilisé avec les éditeurs/projets suivants :
et bien d'autres encore !
Il existe quelques serveurs de langues qui utilisent Jedi :
Voici quelques photos prises depuis jedi-vim :
Achèvement pour presque tout :
Documentation:
Obtenez la dernière version de github (la branche principale doit toujours être plutôt stable/fonctionnelle).
Les documents sont disponibles sur https://jedi.readthedocs.org/en/latest/. Les demandes de tirage avec des améliorations et/ou des correctifs sont géniales et les bienvenues. Jedi utilise le versioning sémantique.
Si vous souhaitez rester informé des versions, veuillez vous abonner à cette liste de diffusion : https://groups.google.com/g/jedi-announce. Pour vous abonner, vous pouvez simplement envoyer un e-mail vide à [email protected]
.
Vous pouvez déposer des problèmes et des questions dans le système de suivi des problèmes <https://github.com/davidhalter/jedi/>. Alternativement, vous pouvez également demander sur Stack Overflow avec le label python-jedi
.
Consultez les documents.
Les fonctionnalités de Jedi sont répertoriées ici : Caractéristiques.
Vous pouvez exécuter Jedi sur Python 3.6+, mais il doit également comprendre le code plus ancien que ces versions. De plus, vous devriez pouvoir très bien utiliser Virtualenvs.
Des conseils sur la façon d’utiliser efficacement Jedi peuvent être trouvés ici.
Vous pouvez trouver une documentation complète sur l'API ici.
Il existe les commandes suivantes :
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
Les objets renvoyés sont très puissants et correspondent vraiment à tout ce dont vous pourriez avoir besoin.
Jedi est une dépendance d'IPython. L'autocomplétion dans IPython avec Jedi est donc possible sans configuration supplémentaire.
Voici un exemple de vidéo à quoi peut ressembler l'achèvement du REPL. Pour le shell python
vous pouvez activer la complétion des tabulations dans un REPL.
Pour de nombreuses formes d'analyse statique, vous pouvez essayer d'utiliser jedi.Script(...).get_names
. Il renverra une liste de noms que vous pourrez ensuite filtrer et utiliser. Il existe également un moyen de lister les erreurs de syntaxe dans un fichier : jedi.Script.get_syntax_errors
.
Jedi prend en charge les refactorisations suivantes :
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
La recherche de module avec jedi.Script.search
et la recherche de projet pour jedi.Project.search
sont prises en charge. La méthode de recherche consiste soit à fournir un nom comme foo
, soit à utiliser une syntaxe en pointillés comme foo.bar
. De plus, vous pouvez fournir le type d'API comme class foo.bar.Bar
. Il existe également les fonctions jedi.Script.complete_search
et jedi.Project.complete_search
.
Il existe une documentation de développement assez bonne et complète.
La suite de tests utilise pytest
:
pip installer pytest
Si vous souhaitez tester uniquement une version spécifique de Python (par exemple Python 3.8), c'est aussi simple que :
python3.8 -m pytest
Pour des informations plus détaillées, visitez la documentation de test.
Merci beaucoup à tous les contributeurs !