Enderpy ist eine Code -Completion -Engine, einen statischen Typ Checker und Sprachserver für Python.
Das Projekt befindet sich unter aktiver Entwicklung. Es gibt Bruchänderungen, und es wird nicht als bereit für die Verwendung angesehen, es sei denn, Sie möchten dazu beitragen und Spaß haben.
Es bietet Entwicklern eine schnelle Autocompletion und eine schnelle Feedback -Schleife beim Schreiben von Python.
Ruff zeigte, dass es einen Wert gibt, um eine schnellere Implementierung von statischen Checkern bereitzustellen.
Dieses Projekt zielt darauf ab, die Komponenten zu erstellen, die erforderlich sind, um das Ziel zu erreichen, eine schnelle Autocompletion und die Typ -Überprüfung bereitzustellen, einschließlich:
Klonen Sie das Repository
git submodule init
git submodule update
cargo build
Der obige Test sollte ohne Probleme durchgeführt werden.
Verwenden Sie dann den Editor -Client. Derzeit sind unterstützte Redakteure:
Wenn Sie hier sind, möchten Sie einen Rostcode schreiben. Kommen wir dazu. Sie können mir eine Nachricht für Diskussionen/Hilfe senden.
Sie können diese Lernressourcen nutzen, um jeden Teil des Projekts zu erfahren.
Das Folgende ist eine kurze Einführung in das Projekt und wie es funktioniert. Aber es ist immer besser, den Code zu konsultieren, um zu sehen, was genau los ist.
Standardmäßig verwendet die Erweiterung den Befehl enderpy-lsp um den Sprachserver auszuführen. So ändern Sie die variable SERVER_PATH in die benutzerdefinierte ausführbare Datei.
Fügen Sie Ihrer init.lua -Datei das folgende Ausschnitt hinzu.
-- 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 ,
})Das Projekt besteht aus mehreren Kisten, die jeweils separat in crate.io veröffentlicht werden:
Die CLI und LSP sind zwei Möglichkeiten, dieses Projekt zu nutzen. Zum Beispiel passiert dies, wenn Sie Enderpy in einem Editor verwenden:
Alle Tests werden mit Insta.rs durchgeführt.
In jeder Kiste finden Sie einen Ordner namens test_data , der Eingänge enthält. Diese Eingaben sind Python -Dateien, die zum Testen dieser Kiste verwendet werden. So wird der Parser beispielsweise die Eingänge erneut getestet:
Enderpy/Parser/SRC/Parser/Parser.rs
Linie 3695 in 4a6f49d
Wenn Tests mit Insta durchgeführt werden, erzeugen sie einen Schnappschuss, den Sie überprüfen können, und nach dem Speichern dieser Schnappschüsse sind sie die erwartete Ausgabe der Tests. Lesen Sie die Insta.RS -Dokumente, um zu sehen, wie Sie Tests ausführen und überprüfen können.
In der Parsingphase geht es darum, Python -Quellcode aufzunehmen und ihn in AST zu verwandeln.
Der Lexer ist für die Tokens des Python -Quellcodes verantwortlich.
Der Parser verwendet die Ausgabe von Lexer, um die Token zu lesen und AST zu produzieren.
Sie können die Ausgabe jeder dieser Schritte mithilfe des CLI -Tools sehen (verwenden Sie die Hilfe, um die Verwendung zu finden).
Um die Ergebnisse mit Python zu vergleichen, können Sie die folgenden Python -Module verwenden:
Die Analysephase beginnt damit, dass der Pfad zu Erstdateien zum Eingeben von Schecks eingeht. Es gibt eine Struktur namens Builder , die alles verwaltet, vom Weg zum Erstellen der Diagnostik.
Der Builder löst zunächst die Importe in den ersten Dateien auf und importiert diese zur Überprüfung. Anschließend wird die Dateien zuerst überlassen, um die Definitionen zu binden und sie in der Symbol -Tabelle zu speichern.
Das Projekt verwendet das Besuchermuster, um den AST zu durchqueren.
Python hat eine Symboltabelle, mit der Sie eine Symboltabelle für ein Programm sehen können. Es gibt ein Skript in ./scripts Ordner.
Nachdem die Symboltabelle erstellt wurde, führt Bulider die typecheck für jede Datei aus.
Am Ende bevölkert Builder Fehler in einer Liste.
Das Projekt kann auf zwei Arten verwendet werden, zunächst als CLI -Tool, mit dem Ihre Python -Projekte und auch als LSP in einem Editor überprüft werden können.
Die folgenden Befehle sind verfügbar:
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) Für LSP müssen Sie das enderpy-lsp -Programm installieren lassen und dann die Erweiterung für Ihren Editor installieren.
LSP unterstützt:
Derzeit sind keine Konfiguration verfügbar. Dies sind das Standardverhalten des Programms.
Projektwurzel : Der Pfad, der als Projektwurzel betrachtet wird. Dies wirkt sich auf die Importauflösung und das Sammeln der Dateien aus, um sie zu überprüfen.
Python Executable : Der Weg zur Python Executable. Dies ist für Abhängigkeiten der Drittanbieter von Resove.