Jedi — это инструмент статического анализа Python, который обычно используется в плагинах IDE/редакторов. Jedi уделяет особое внимание автозаполнению и функциональности перехода. Другие функции включают рефакторинг, поиск кода и поиск ссылок.
У Jedi есть простой API для работы. Существует эталонная реализация в виде VIM-плагина. Также возможно автодополнение в вашем REPL, IPython использует его изначально, а для CPython REPL вы можете его установить. Jedi хорошо протестирован, и ошибки должны быть редкими.
В настоящее время Jedi можно использовать со следующими редакторами/проектами:
и многое другое!
Есть несколько языковых серверов, которые используют Jedi:
Вот несколько фотографий, взятых из jedi-vim:
Завершение практически всего:
Документация:
Получите последнюю версию с github (главная ветка всегда должна быть стабильной/работающей).
Документы доступны по адресу https://jedi.readthedocs.org/en/latest/. Запросы на включение с улучшениями и/или исправлениями — это здорово, и мы их очень приветствуем. Джедай использует семантическое версионирование.
Если вы хотите быть в курсе выпусков, подпишитесь на этот список рассылки: https://groups.google.com/g/jedi-announce. Чтобы подписаться, вы можете просто отправить пустое электронное письмо на [email protected]
.
Вы можете сообщать о проблемах и вопросах в системе отслеживания проблем <https://github.com/davidhalter/jedi/>. В качестве альтернативы вы также можете задать вопрос о переполнении стека с помощью метки python-jedi
.
Проверьте документы.
Возможности Джедая перечислены здесь: Особенности.
Вы можете запустить Jedi на Python 3.6+, но он также должен понимать код старше этих версий. Кроме того, вы должны уметь очень хорошо использовать Virtualenvs.
Советы о том, как эффективно использовать джедаев, можно найти здесь.
Подробную документацию по API можно найти здесь.
Существуют следующие команды:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
Возвращенные объекты очень мощны и это действительно все, что вам может понадобиться.
Jedi — это зависимость от IPython. Таким образом, автодополнение в IPython с помощью Jedi возможно без дополнительной настройки.
Вот пример видео, как может выглядеть завершение REPL. Для оболочки python
вы можете включить завершение табуляции в REPL.
Для многих форм статического анализа вы можете попробовать использовать jedi.Script(...).get_names
. Он вернет список имен, которые затем можно фильтровать и работать с ними. Существует также способ перечислить синтаксические ошибки в файле: jedi.Script.get_syntax_errors
.
Jedi поддерживает следующие рефакторинги:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
Существует поддержка поиска модулей с помощью jedi.Script.search
и поиска проектов для jedi.Project.search
. Способ поиска — либо указать имя, например foo
, либо использовать синтаксис с точками, например foo.bar
. Кроме того, вы можете указать тип API, например class foo.bar.Bar
. Также существуют функции jedi.Script.complete_search
и jedi.Project.complete_search
.
Имеется довольно хорошая и обширная документация по разработке.
В наборе тестов используется pytest
:
pip установить pytest
Если вы хотите протестировать только определенную версию Python (например, Python 3.8), это так же просто:
python3.8 -m pytest
Для получения более подробной информации посетите документацию по тестированию.
Большое спасибо всем участникам!