Enderpy é um mecanismo de conclusão de código, verificador de tipo estático e servidor de idiomas para Python.
O projeto está sob desenvolvimento ativo. Há mudanças de ruptura e não são consideradas prontas para uso, a menos que você queira contribuir com isso e se divertir.
Ele fornece aos desenvolvedores que os desenvolvedores de conclusão rápida e um loop de feedback rápido ao escrever Python.
Ruff mostrou que há um valor em fornecer uma implementação mais rápida de verificadores estáticos.
Este projeto tem como objetivo construir os componentes necessários para atingir o objetivo de fornecer uma concepção automática rápida e verificação de tipos, incluindo:
Clone o repositório
git submodule init
git submodule update
cargo build
O teste acima deve ser executado sem problemas.
Em seguida, use o cliente do editor. Atualmente, os editores suportados são:
Se você está aqui, você deseja escrever um código de ferrugem, vamos lá. Você pode me enviar uma mensagem para discussões/ajuda.
Você pode usar esses recursos de aprendizado para aprender sobre cada parte do projeto.
O seguinte será uma breve introdução no projeto e como ele funciona. Mas é sempre melhor consultar o código para ver o que exatamente está acontecendo.
Por padrão, a extensão usa o comando enderpy-lsp para executar o servidor de idiomas. Para alterar, defina a variável SERVER_PATH Env como executável personalizado.
Adicione o seguinte snippet ao seu arquivo init.lua .
-- Replace this ↓ with the actual path to your copy of the repository.
local enderpy_path = " /path/to/enderpy "
vim . api . nvim_create_autocmd ( " FileType " , {
pattern = " python " ,
callback = function ()
vim . lsp . start ({
name = " enderpy " ,
cmd = { enderpy_path .. " /target/debug/enderpy-lsp " },
})
end ,
})O projeto consiste em várias caixas cada uma é publicada separadamente no CRATES.IO:
A CLI e o LSP são duas maneiras de usar este projeto. Por exemplo, é isso que acontece quando você usa Enderpy em um editor:
Todos os testes são feitos com o Insta.rs.
Em cada caixa, você encontra uma pasta chamada test_data que tem entradas dentro dela. Essas entradas são arquivos Python usados para testar esse caixote. Por exemplo, é assim que o analisador é testado novamente as entradas:
enderpy/parser/src/parser/parser.rs
Linha 3695 em 4a6f49d
Quando os testes são executados com o Insta, eles produzem um instantâneo que você pode revisar e, depois de salvar os instantâneos, eles serão a saída esperada dos testes. Leia os documentos Insta.RS para ver como você pode executar e revisar os testes.
A fase de análise é sobre pegar o código -fonte do Python e transformá -lo em AST.
O Lexer é responsável por tokenizar o código -fonte do Python.
O analisador usa a saída do Lexer para ler os tokens e produzir AST.
Você pode ver a saída de cada uma dessas etapas usando a ferramenta CLI (use a ajuda para descobrir como usá -la).
Também para comparar os resultados com o Python, você pode usar os seguintes módulos Python:
A fase de análise começa com o caminho para obter os arquivos iniciais para digitar a verificação. Há uma estrutura chamada Builder que gerencia tudo, desde conseguir o caminho até a criação dos diagnósticos.
O Builder primeiro resolve as importações nos arquivos iniciais e importa -os para a verificação. Em seguida, ele fará uma primeira passagem nos arquivos para vincular as definições e armazená -las na tabela de símbolos.
O Project usa o padrão de visitante para atravessar o AST.
O Python possui uma tabela de símbolos que você pode usar para ver a tabela de símbolos para um programa. Há um script na pasta ./scripts .
Depois que a tabela de símbolos é criada, o Bulider executa o TypeCheck para cada arquivo.
No final do construtor final preenche erros em uma lista.
O projeto pode ser usado de duas maneiras, primeiro como uma ferramenta da CLI que pode verificar seus projetos Python e também como um LSP dentro de um editor.
Os seguintes comandos estão disponíveis:
Usage: enderpy < COMMAND >
Commands:
tokenize Print lexer tokens
parse Print abstract syntax tree
check Type check
symbols Prints Symbol table
help Print this message or the help of the given subcommand(s) Para o LSP, você precisa instalar o programa enderpy-lsp e instalar a extensão do seu editor.
Suportes LSP:
Atualmente, não há configuração disponível. Esse é o comportamento padrão do programa.
Raiz do projeto : o caminho que é considerado a raiz do projeto. Isso afeta a resolução da importação e a coleta dos arquivos para verificar.
Python Executável : o caminho para o executável do Python. Isto é para renovar dependências de terceiros.