Enderpy es un motor de finalización de código, verificador de tipo estático y servidor de lenguaje para Python.
El proyecto está bajo desarrollo activo. Hay cambios de ruptura, y no se considera listo para usar a menos que desee contribuir a ello y divertirse.
Proporciona a los desarrolladores un avance rápido de autocompletación y retroalimentación rápida al escribir Python.
Ruff demostró que existe un valor en proporcionar una implementación más rápida de los controladores estáticos.
Este proyecto tiene como objetivo construir los componentes necesarios para lograr el objetivo de proporcionar una verificación rápida de Autocompletación y Tipo, que incluya:
Clonar el repositorio
git submodule init
git submodule update
cargo build
La prueba anterior debe ejecutarse sin ningún problema.
Luego use el cliente del editor. Actualmente, los editores compatibles son:
Si está aquí, entonces desea escribir un código de óxido, vamos a hacerlo. Puede enviarme un mensaje para discusiones/ayuda.
Puede usar estos recursos de aprendizaje para aprender sobre cada parte del proyecto.
La siguiente será una breve introducción al proyecto y cómo funciona. Pero siempre es mejor consultar el código para ver qué está pasando exactamente.
Por defecto, la extensión usa el comando enderpy-lsp para ejecutar el servidor de idiomas. Para cambiarlo, establezca la variable SERVER_PATH ENV en ejecutable personalizado.
Agregue el siguiente fragmento a su archivo 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 ,
})El proyecto consiste en múltiples cajas cada una se publican por separado en cajas.io:
El CLI y LSP son dos formas de usar este proyecto. Por ejemplo, esto es lo que sucede cuando usa Enderpy en un editor:
Todas las pruebas se realizan con insta.rs.
En cada caja, encuentra una carpeta llamada test_data que tiene entradas dentro de él. Estas entradas son archivos Python que se utilizan para probar esa caja. Por ejemplo, así es como se prueba el analizador nuevamente las entradas:
Enderpy/parser/src/parser/parser.rs
Línea 3695 en 4A6F49D
Cuando se ejecutan las pruebas con Insta, producen una instantánea que puede revisar, y después de guardar esas instantáneas, serán el resultado esperado de las pruebas. Lea los documentos de Insta.RS para ver cómo puede ejecutar y revisar las pruebas.
La fase de análisis se trata de tomar el código fuente de Python y convertirlo en AST.
El Lexer es responsable de tokenizar el código fuente de Python.
El analizador utiliza la salida de Lexer para leer los tokens y producir AST.
Puede ver la salida de cada uno de estos pasos utilizando la herramienta CLI (use la ayuda para encontrar cómo usarla).
También para comparar los resultados con Python, puede usar los siguientes módulos de Python:
La fase de análisis comienza con obtener ruta a los archivos iniciales para escribir verificación. Hay una estructura llamada Builder que administra todo, desde obtener el camino hasta la creación de los diagnósticos.
El Builder primero resuelve las importaciones en los archivos iniciales e importe para verificar. Luego hará un primer pase en los archivos para vincular las definiciones y almacenarlas en la tabla de símbolos.
El proyecto utiliza el patrón de visitantes para atravesar el AST.
Python tiene una tabla de símbolos que puede usar para ver la tabla de símbolos para un programa. Hay un script en la carpeta ./scripts .
Después de que se crea la tabla de símbolos, Bulider ejecuta el Typecheck para cada archivo.
Al final, el constructor poca errores en una lista.
El proyecto se puede usar de dos maneras, primero como una herramienta CLI que puede verificar sus proyectos de Python, y también como LSP dentro de un editor.
Los siguientes comandos están disponibles:
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 LSP, debe instalar el programa enderpy-lsp y luego instalar la extensión para su editor.
LSP admite:
No hay configuración disponible actualmente. Estos son el comportamiento predeterminado del programa.
Raíz del proyecto : la ruta que se considera la raíz del proyecto. Esto afecta la resolución de importación y la recopilación de archivos para verificar.
Ejecutable de Python : el camino al ejecutable de Python. Esto es para volver a las dependencias de terceros.