Enderpy هو محرك إكمال التعليمات البرمجية ، ومتحقق من النوع الثابت وخادم اللغة لـ 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 ,
})يتكون المشروع من صناديق متعددة لكل منها بشكل منفصل إلى Catse.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 أولاً بحل الواردات في الملفات الأولية واستيراد تلك للتحقق. بعد ذلك ، سيفعل التمرير الأول على الملفات لربط التعريفات وتخزينها في جدول الرموز.
يستخدم Project نمط الزوار لاجتياز 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 قابل للتنفيذ. هذا هو لإعادة التبعية التبعيات الطرف الثالث.