Enderpy est un moteur de complétion de code, un damier de type statique et un serveur de langage pour Python.
Le projet est en cours de développement actif. Il y a des changements de rupture, et il n'est pas considéré comme prêt à l'emploi à moins que vous ne vouliez y contribuer et vous amuser.
Il fournit aux développeurs une complétion automatique rapide et une boucle de rétroaction rapide lors de l'écriture de Python.
Ruff a montré qu'il y a une valeur à fournir une implémentation plus rapide des vérificateurs statiques.
Ce projet vise à construire les composants nécessaires pour atteindre l'objectif de fournir une vérification automatique et une vérification des types, notamment:
Cloner le référentiel
git submodule init
git submodule update
cargo build
Le test ci-dessus devrait fonctionner sans aucun problème.
Utilisez ensuite le client de l'éditeur. Actuellement, les éditeurs pris en charge sont:
Si vous êtes ici, vous voulez écrire du code de rouille, allons-y. Vous pouvez m'envoyer un message pour les discussions / l'aide.
Vous pouvez utiliser ces ressources d'apprentissage pour en savoir plus sur chaque partie du projet.
Ce qui suit sera une brève introduction dans le projet et son fonctionnement. Mais il est toujours préférable de consulter le code pour voir ce qui se passe exactement.
Par défaut, l'extension utilise la commande enderpy-lsp pour exécuter le serveur de langue. Pour le modifier, définissez la variable ENV SERVER_PATH sur EXECTIVATION personnalisée.
Ajoutez l'extrait suivant à votre fichier 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 ,
})Le projet se compose de plusieurs caisses chacune sont publiées séparément sur Crates.io:
La CLI et le LSP sont deux façons d'utiliser ce projet. Par exemple, c'est ce qui se passe lorsque vous utilisez Enderpy dans un éditeur:
Tous les tests sont effectués avec Insta.RS.
Dans chaque caisse, vous trouvez un dossier appelé test_data qui a des entrées à l'intérieur. Ces entrées sont des fichiers Python qui sont utilisés pour tester cette caisse. Par exemple, c'est ainsi que l'analyseur est testé à nouveau les entrées:
enderpy / analyser / src / parser / analyser.rs
Ligne 3695 en 4A6F49D
Lorsque les tests sont exécutés avec Insta, ils produisent un instantané que vous pouvez examiner, et après avoir enregistré ces instantanés, ils seront la sortie attendue des tests. Lisez les documents Insta.RS pour voir comment exécuter et consulter les tests.
La phase d'analyse consiste à prendre le code source Python et à le transformer en AST.
Le lexer est responsable de la tokenisation du code source Python.
L'analyseur utilise la sortie de Lexer pour lire les jetons et produire AST.
Vous pouvez voir la sortie de chacune de ces étapes à l'aide de l'outil CLI (utilisez l'aide pour trouver comment l'utiliser).
Pour comparer également les résultats à Python, vous pouvez utiliser les modules Python suivants:
La phase d'analyse commence par l'obtention d'un chemin vers les fichiers initiaux pour taper la vérification. Il y a une structure appelée Builder qui gère tout, de l'obtention du chemin à la création des diagnostics.
Le Builder résout d'abord les importations dans les fichiers initiaux et importent ceux pour la vérification. Ensuite, il fera une première réussite sur les fichiers pour lier les définitions et les stocker dans la table des symboles.
Le projet utilise le modèle des visiteurs pour traverser l'AST.
Python a une table de symboles que vous pouvez utiliser pour voir la table de symboles pour un programme. Il y a un script dans le dossier ./scripts .
Une fois la table de symbole créée, Bulider exécute le TypeCheck pour chaque fichier.
À la fin du constructeur, des erreurs apparaissent dans une liste.
Le projet peut être utilisé de deux manières, d'abord en tant qu'outil CLI qui peut vérifier vos projets Python, ainsi que comme LSP à l'intérieur d'un éditeur.
Les commandes suivantes sont 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) Pour LSP, vous devez installer le programme enderpy-lsp , puis installer l'extension de votre éditeur.
Supports LSP:
Aucune configuration n'est actuellement disponible. Ce sont le comportement par défaut du programme.
Racine du projet : le chemin qui est considéré comme la racine du projet. Cela affecte la résolution d'importation et la collecte des fichiers pour vérifier.
Exécutable Python : le chemin d'accès à Python. Il s'agit de rénover les dépendances tierces.