Jedi é uma ferramenta de análise estática para Python que normalmente é usada em plug-ins de IDEs/editores. Jedi tem foco no preenchimento automático e na funcionalidade goto. Outros recursos incluem refatoração, pesquisa de código e localização de referências.
Jedi tem uma API simples para trabalhar. Existe uma implementação de referência como um plug-in VIM. O preenchimento automático no seu REPL também é possível, o IPython o utiliza nativamente e para o CPython REPL você pode instalá-lo. Jedi foi bem testado e os bugs devem ser raros.
Atualmente, o Jedi pode ser usado com os seguintes editores/projetos:
e muito mais!
Existem alguns servidores de linguagem que usam Jedi:
Aqui estão algumas fotos tiradas do jedi-vim:
Conclusão para quase tudo:
Documentação:
Obtenha a versão mais recente do github (o branch master deve sempre ser estável/funcionando).
Os documentos estão disponíveis em https://jedi.readthedocs.org/en/latest/. Solicitações pull com melhorias e/ou correções são incríveis e muito bem-vindas. Jedi usa versionamento semântico.
Se você quiser se manter atualizado com os lançamentos, inscreva- se nesta lista de e-mail: https://groups.google.com/g/jedi-announce. Para se inscrever, você pode simplesmente enviar um e-mail vazio para [email protected]
.
Você pode registrar problemas e perguntas no rastreador de problemas <https://github.com/davidhalter/jedi/>. Alternativamente, você também pode perguntar no Stack Overflow com o rótulo python-jedi
.
Confira os documentos.
Os recursos do Jedi estão listados aqui: Recursos.
Você pode executar o Jedi no Python 3.6+, mas ele também deve entender o código mais antigo que essas versões. Além disso, você poderá usar o Virtualenvs muito bem.
Dicas sobre como usar o Jedi com eficiência podem ser encontradas aqui.
Você pode encontrar uma documentação abrangente para a API aqui.
Existem os seguintes comandos:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
Os objetos retornados são muito poderosos e são realmente tudo que você precisa.
Jedi é uma dependência do IPython. O preenchimento automático em IPython com Jedi é, portanto, possível sem configuração adicional.
Aqui está um vídeo de exemplo de como pode ser a conclusão do REPL. Para o shell python
você pode ativar o preenchimento de tabulação em um REPL.
Para muitas formas de análise estática, você pode tentar usar jedi.Script(...).get_names
. Ele retornará uma lista de nomes que você pode filtrar e trabalhar. Também existe uma maneira de listar os erros de sintaxe em um arquivo: jedi.Script.get_syntax_errors
.
Jedi suporta as seguintes refatorações:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
Há suporte para pesquisa de módulo com jedi.Script.search
e pesquisa de projeto para jedi.Project.search
. A maneira de pesquisar é fornecendo um nome como foo
ou usando sintaxe pontilhada como foo.bar
. Além disso, você pode fornecer o tipo de API como class foo.bar.Bar
. Existem também as funções jedi.Script.complete_search
e jedi.Project.complete_search
.
Há uma documentação de desenvolvimento muito boa e extensa.
O conjunto de testes usa pytest
:
pip instalar pytest
Se você quiser testar apenas uma versão específica do Python (por exemplo, Python 3.8), é tão fácil quanto:
python3.8 -m pytest
Para obter informações mais detalhadas, visite a documentação de teste.
Muito obrigado a todos os colaboradores!