Jedi هي أداة تحليل ثابتة لـ Python تُستخدم عادةً في المكونات الإضافية لـ IDEs/المحررين. يركز Jedi على الإكمال التلقائي ووظيفة الانتقال. وتشمل الميزات الأخرى إعادة البناء والبحث عن التعليمات البرمجية والعثور على المراجع.
لدى Jedi واجهة برمجة تطبيقات بسيطة للعمل معها. يوجد تطبيق مرجعي باعتباره VIM-Plugin. من الممكن أيضًا الإكمال التلقائي في REPL الخاص بك، ويستخدمه IPython محليًا وبالنسبة لـ CPython REPL يمكنك تثبيته. تم اختبار Jedi جيدًا ويجب أن تكون الأخطاء نادرة.
يمكن استخدام Jedi حاليًا مع المحررين/المشاريع التالية:
وغيرها الكثير!
هناك عدد قليل من خوادم اللغات التي تستخدم Jedi:
إليكم بعض الصور المأخوذة من jedi-vim:
الانتهاء من أي شيء تقريبا:
التوثيق:
احصل على أحدث إصدار من github (يجب أن يكون الفرع الرئيسي دائمًا مستقرًا/عاملًا).
المستندات متاحة على https://jedi.readthedocs.org/en/latest/. طلبات السحب مع التحسينات و/أو الإصلاحات رائعة ومرحب بها للغاية. يستخدم Jedi الإصدارات الدلالية.
إذا كنت ترغب في البقاء على اطلاع دائم بالإصدارات، يرجى الاشتراك في القائمة البريدية هذه: https://groups.google.com/g/jedi-announce. للاشتراك يمكنك ببساطة إرسال بريد إلكتروني فارغ إلى [email protected]
.
يمكنك تقديم المشكلات والأسئلة في أداة تعقب المشكلات <https://github.com/davidhalter/jedi/>. وبدلاً من ذلك، يمكنك أيضًا السؤال عن Stack Overflow بالتسمية python-jedi
.
تحقق من المستندات.
ميزات Jedi مدرجة هنا: الميزات.
يمكنك تشغيل Jedi على Python 3.6+ ولكن يجب أيضًا أن يفهم التعليمات البرمجية الأقدم من تلك الإصدارات. بالإضافة إلى ذلك، يجب أن تكون قادرًا على استخدام Virtualenvs بشكل جيد جدًا.
يمكن العثور على نصائح حول كيفية استخدام Jedi بكفاءة هنا.
يمكنك العثور على وثائق شاملة لواجهة برمجة التطبيقات (API) هنا.
هناك الأوامر التالية:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
الكائنات التي تم إرجاعها قوية جدًا وهي حقًا كل ما قد تحتاجه.
Jedi هو تبعية لـ IPython. وبالتالي فإن الإكمال التلقائي في IPython مع Jedi ممكن بدون تكوين إضافي.
فيما يلي مثال على مقطع فيديو حول الشكل الذي يمكن أن يبدو عليه إكمال REPL. بالنسبة لـ python
Shell، يمكنك تمكين إكمال علامة التبويب في REPL.
بالنسبة للعديد من أشكال التحليل الثابت، يمكنك محاولة استخدام jedi.Script(...).get_names
. سيُرجع قائمة بالأسماء التي يمكنك بعد ذلك تصفيتها والعمل معها. هناك أيضًا طريقة لسرد الأخطاء النحوية في ملف: jedi.Script.get_syntax_errors
.
يدعم Jedi عمليات إعادة البناء التالية:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
يوجد دعم للبحث عن الوحدة باستخدام jedi.Script.search
والبحث عن المشروع لـ jedi.Project.search
. طريقة البحث هي إما عن طريق تقديم اسم مثل foo
أو باستخدام بناء جملة منقط مثل foo.bar
. بالإضافة إلى ذلك، يمكنك توفير نوع واجهة برمجة التطبيقات (API) مثل class foo.bar.Bar
. هناك أيضًا الوظائف jedi.Script.complete_search
و jedi.Project.complete_search
.
هناك وثائق تطوير جيدة وشاملة.
يستخدم جناح الاختبار pytest
:
نقطة تثبيت pytest
إذا كنت تريد اختبار إصدار محدد فقط من Python (مثل Python 3.8)، فالأمر سهل كما يلي:
python3.8 -m pytest
لمزيد من المعلومات التفصيلية، قم بزيارة وثائق الاختبار.
شكرا جزيلا لجميع المساهمين!