Enderpyは、Python用のコード完了エンジン、静的タイプチェッカーおよび言語サーバーです。
このプロジェクトは積極的な開発中です。壊れた変更がありますが、それに貢献して楽しんでいない限り、使用する準備ができているとは考えられていません。
Pythonを作成するときに、開発者に高速オートコンプリートと高速フィードバックループを提供します。
Ruffは、静的チェッカーのより速い実装を提供する価値があることを示しました。
このプロジェクトは、以下を含む、高速のオートコンプリートとタイプチェックを提供するという目標を達成するために必要なコンポーネントを構築することを目的としています。
リポジトリをクローンします
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は、このプロジェクトを使用する2つの方法です。たとえば、これはエディターでEnderpyを使用すると起こることです。
すべてのテストはInsta.RSで行われます。
各クレートには、内部に入力があるtest_dataというフォルダーがあります。これらの入力は、そのクレートのテストに使用されるPythonファイルです。たとえば、これはパーサーのテスト方法です。
enderpy/parser/src/parser/parser.rs
4A6F49Dの3695行
Instaでテストを実行すると、レビューできるスナップショットが作成され、それらのスナップショットを保存した後、テストの予想される出力になります。 Insta.RSドキュメントを読んで、テストを実行およびレビューする方法を確認してください。
解析段階は、Pythonソースコードを取得し、ASTに変えることです。
Lexerは、Pythonソースコードのトークン化を担当します。
パーサーは、lexerの出力を使用してトークンを読み取り、ASTを生成します。
CLIツールを使用して、これらの各ステップの出力を確認できます(ヘルプを使用して使用方法を見つけます)。
また、結果をPythonと比較するには、次のPythonモジュールを使用できます。
分析フェーズは、チェックを入力する初期ファイルへのパスを取得することから始まります。パスを取得することから診断の作成まで、すべてを管理するBuilderと呼ばれる構造体があります。
Builder最初に最初のファイルのインポートを解決し、チェックのためにそれらをインポートします。次に、ファイルを最初にパスして定義をバインドし、シンボルテーブルに保存します。
プロジェクトは訪問者パターンを使用してASTを横断します。
Pythonには、プログラムのシンボルテーブルを表示するために使用できるシンボルテーブルがあります。 ./scriptsフォルダーにスクリプトがあります。
シンボルテーブルが作成された後、Buliderは各ファイルのTypeCheckを実行します。
最後に、ビルダーはリストにエラーに浸透します。
このプロジェクトは、最初にPythonプロジェクトをチェックできるCLIツールとして、またエディター内の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実行可能ファイルへのパス。これは、サードパーティの依存関係を転送するためです。