Enderpy adalah mesin penyelesaian kode, checker tipe statis & server bahasa untuk python.
Proyek ini sedang dalam pengembangan aktif. Ada perubahan besar, dan itu tidak dianggap siap digunakan kecuali Anda ingin berkontribusi dan bersenang -senang.
Ini memberikan pengembang dengan pelengkapan otomatis cepat dan loop umpan balik cepat saat menulis python.
Ruff menunjukkan bahwa ada nilai dalam memberikan implementasi catur statis yang lebih cepat.
Proyek ini bertujuan untuk membangun komponen yang diperlukan untuk mencapai tujuan memberikan pelengkapan autokel dan jenis pemeriksaan yang cepat, termasuk:
Klon Repositori
git submodule init
git submodule update
cargo build
Tes di atas harus berjalan tanpa masalah.
Kemudian gunakan klien editor. Saat ini, editor yang didukung adalah:
Jika Anda di sini maka Anda ingin menulis beberapa kode karat, mari kita mulai. Anda dapat mengirimi saya pesan untuk diskusi/bantuan.
Anda dapat menggunakan sumber belajar ini untuk mempelajari setiap bagian dari proyek.
Berikut ini akan menjadi pengantar singkat ke dalam proyek dan cara kerjanya. Tapi selalu lebih baik berkonsultasi dengan kode untuk melihat apa yang sebenarnya terjadi.
Secara default ekstensi menggunakan perintah enderpy-lsp untuk menjalankan server bahasa. Untuk mengubahnya, atur variabel SERVER_PATH yang dapat dieksekusi khusus.
Tambahkan cuplikan berikut ke file init.lua Anda.
-- 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 ,
})Proyek ini terdiri dari beberapa peti masing -masing diterbitkan secara terpisah ke Crates.io:
CLI dan LSP adalah dua cara untuk menggunakan proyek ini. Misalnya inilah yang terjadi ketika Anda menggunakan Enderpy di editor:
Semua tes dilakukan dengan insta.rs.
Di setiap peti Anda menemukan folder yang disebut test_data yang memiliki input di dalamnya. Input ini adalah file Python yang digunakan untuk menguji peti itu. Misalnya ini adalah bagaimana parser diuji lagi di input:
Enderpy/parser/src/parser/parser.rs
Baris 3695 di 4A6F49D
Ketika tes dijalankan dengan Insta mereka menghasilkan snapshot yang dapat Anda ulas, dan setelah menyimpan snapshot itu, mereka akan menjadi output yang diharapkan dari tes. Baca dokumen Insta.RS untuk melihat bagaimana Anda dapat menjalankan dan meninjau tes.
Fase parsing adalah tentang mengambil kode sumber Python dan mengubahnya menjadi AST.
Lexer bertanggung jawab untuk tokenisasi kode sumber Python.
Parser menggunakan output lexer untuk membaca token dan menghasilkan ast.
Anda dapat melihat output dari masing -masing langkah ini menggunakan alat CLI (gunakan bantuan untuk menemukan cara menggunakannya).
Juga untuk membandingkan hasilnya dengan Python Anda dapat menggunakan modul Python berikut:
Fase analisis dimulai dengan mendapatkan jalur ke file awal untuk mengetik pemeriksaan. Ada struct yang disebut Builder yang mengelola segalanya mulai dari mendapatkan jalan hingga menciptakan diagnostik.
Builder pertama menyelesaikan impor di file awal dan mengimpornya untuk memeriksa. Maka itu akan melakukan izin pertama pada file untuk mengikat definisi dan menyimpannya di tabel simbol.
Proyek menggunakan pola pengunjung untuk melintasi AST.
Python memiliki tabel simbol yang dapat Anda gunakan untuk melihat tabel simbol untuk suatu program. Ada skrip di folder ./scripts .
Setelah tabel simbol dibuat Bulider menjalankan typecheck untuk setiap file.
Di akhir pembangun mengisi kesalahan dalam daftar.
Proyek ini dapat digunakan dalam dua cara, pertama sebagai alat CLI yang dapat memeriksa proyek Python Anda, dan juga sebagai LSP di dalam editor.
Perintah berikut tersedia:
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) Untuk LSP Anda harus menginstal program enderpy-lsp , dan kemudian instal ekstensi untuk editor Anda.
Dukungan LSP:
Tidak ada konfigurasi yang tersedia saat ini. Ini adalah perilaku default program.
Root Proyek : Jalur yang dianggap sebagai root proyek. Ini mempengaruhi penyelesaian impor, dan mengumpulkan file untuk memeriksa.
Python Executable : Jalan menuju Python Executable. Ini untuk pemulihan ketergantungan pihak ke -3.