Enderpy - это механизм завершения кода, Static Type Cheer & Language Server для Python.
Проект находится в активной разработке. Есть нарушительные изменения, и они не считаются готовыми к использованию, если вы не хотите внести свой вклад в это и повеселиться.
Он предоставляет разработчикам быстрое автозаполнение и быстрое петлю обратной связи при написании Python.
Руфф показал, что существует ценность в обеспечении более быстрой реализации статических контролей.
Этот проект направлен на создание компонентов, необходимых для достижения цели обеспечения быстрой проверки автозаполнения и типов, включая:
Клонировать репозиторий
git submodule init
git submodule update
cargo build
Приведенный выше тест должен работать без каких -либо проблем.
Затем используйте клиент редактора. В настоящее время поддерживаемые редакторы:
Если вы здесь, то вы хотите написать код ржавчины, давайте доберемся до него. Вы можете прислать мне сообщение для обсуждений/помощи.
Вы можете использовать эти учебные ресурсы, чтобы узнать о каждой части проекта.
Следующее будет кратким введением в проект и то, как он работает. Но всегда лучше проконсультироваться с кодом, чтобы увидеть, что именно происходит.
По умолчанию расширение использует команду enderpy-lsp для запуска языкового сервера. Чтобы изменить его, установите переменную SERVER_PATH env на пользовательский исполняемый файл.
Добавьте следующий фрагмент в ваш файл 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 ,
})Проект состоит из нескольких ящиков, каждый из которых публикуется в Crates.io:
CLI и LSP являются двумя способами использования этого проекта. Например, это то, что происходит, когда вы используете Enderpy в редакторе:
Все тесты проведены с помощью Insta.rs.
В каждом ящике вы найдете папку с именем test_data , в которой есть входы внутри нее. Эти входы - это файлы Python, которые используются для тестирования этого ящика. Например, так протестируется синтаксический анализатор
Enderpy/parser/src/parser/parser.rs
Линия 3695 в 4A6F49D
Когда тесты запускаются с Insta, они производят снимок, который вы можете просмотреть, и после сохранения этих снимков они станут ожидаемым результатом тестов. Прочитайте документы Insta.rs, чтобы увидеть, как вы можете запустить и просмотреть тесты.
Фаза анализа заключается в том, чтобы принять исходный код Python и превращение его в AST.
Lexer отвечает за токенизация исходного кода Python.
Сигнал использует выход Lexer для чтения токенов и создания AST.
Вы можете увидеть вывод каждого из этих шагов, используя инструмент CLI (используйте помощь, чтобы найти, как его использовать).
Также для сравнения результатов с Python вы можете использовать следующие модули Python:
Фаза анализа начинается с получения пути к начальным файлам для типа проверки. Есть структура под названием Builder , которая управляет всем, от получения пути до создания диагностики.
Builder сначала разрешает импорт в начальных файлах и импортирует их для проверки. Затем он сделает сначала передавать файлы, чтобы связать определения и сохранить их в таблице символов.
Проект использует шаблон посетителей для прохождения AST.
У Python есть таблица символов, которую вы можете использовать для просмотра таблицы символов для программы. В папке ./scripts есть скрипт.
После того, как таблица символов создается Bulider запускает TypeCheck для каждого файла.
В конце конструкции заполняет ошибки в списке.
Проект может использоваться двумя способами, сначала в качестве инструмента CLI, который может проверять ваши проекты Python, а также как LSP внутри редактора.
Доступны следующие команды:
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) Для LSP вам необходимо установить программу enderpy-lsp , а затем установить расширение для вашего редактора.
LSP поддерживает:
В настоящее время нет конфигурации. Это поведение программы по умолчанию.
Корень проекта : путь, который считается корнем проекта. Это влияет на разрешение импорта и на сбору файлов для проверки.
Python исполняется : путь к исполнению Python. Это для разрешения сторонних зависимостей.