عن المشروع
nepenthe هي أداة لبناء وإصدار وتوزيع بيئات conda/PyPI المشتركة الكبيرة. الهدف المعلن هو تمكين الفريق من وصف بيئة مرة واحدة، وحلّها مرة واحدة باستخدام rattler، وتجميد النتيجة في ملف قفل محمول، ونشر هذا القفل في سجل مُرقّم على أي مخزن خلفي، بحيث تثبّت كل آلة نفس البيئة تمامًا دون إعادة الحل.
القدرات الرئيسية الموصوفة في README:
- تكوين قائم على manifest: بيانات بيئة تعريفية بدلاً من ملفات متطلبات متناثرة.
- حل أصلي عبر rattler (Rust نقي)، متجنبًا حمل مترجم Python.
- أقفال محمولة: ملفات rattler_lock متعددة المنصات مصممة لتكون قابلة للتكرار بالبناء.
- حل عبر المنصات: حل linux-64 وosx-arm64 وwin-64 من مضيف واحد إلى قفل متعدد المنصات.
- خلفيات قابلة للتوصيل: قراءة/كتابة المواصفات إلى file:// وs3:// وhttps://، مع قنوات تشير إلى أي خادم مثل Artifactory داخلي.
- سجل مُرقّم: إصدار مستقل لكل بيئة مع أقفال غير قابلة للتغيير ومحتواة.
- تثبيت دون conda: ربط قفل ببادئة باستخدام rattler، دون الحاجة إلى conda/mamba/micromamba.
- توافق conda: تصدير أي قفل كمواصفة @EXPLICIT قابلة للاستخدام مع conda create --file.
- وضع الأمان: تُحقن بيانات الاعتماد وقت الاستخدام ولا تُكتب في القطع الأثرية.
يغطي المشروع دورة حياة من المنتج إلى المستهلك: تكوين manifest، حل وتجميد أقفال متعددة المنصات، نشرها في سجل مُرقّم، وتثبيتها دون conda، سواء من سطر الأوامر أو من Python. كما يذكر حزم pack/unpack معزولة عن الشبكة وتكامل pyproject.toml الذي يبقي تبعيات المشروع متزامنة مع البيئة التي يستهلكها.
مثال سير العمل من README: manifest بصيغة YAML يعلن اسم المشروع والقنوات والمنصات وإصدار Python والتبعيات الجذرية؛ أمر build ينتج ملف قفل مثبت بالكامل؛ أمر export يعرض القفل كمواصفة conda @EXPLICIT؛ ويمكن التثبيت إما باستخدام conda من المواصفة أو باستخدام nepenthe من القفل. CLI هو ملف ثنائي متعدد الاستدعاء حيث np وnpb هما روابط رمزية إلى nepenthe، مع npb كاختصار لأمر build الفرعي. ربط Python يعكس CLI لعمليات build وcreate وactivate. قسم pyproject.toml يمكن أن يثبت اسم بيئة وسجلًا وإصدارًا، مع أوامر sync وcheck لتثبيت البيئة المرجعية والتحقق من توافق تبعيات المشروع.
يضع README nepenthe كمتميز عن ملفات القفل لكل مشروع (pixi, uv) وmanifests المعاد حلها (environment.yml): فهو يبني ويوزع بيئة مشتركة تستهلكها مستودعات متعددة، مُرقّمة وغير قابلة للتغيير. الوثائق منظمة في wiki تغطي الدافع والمفاهيم والmanifests والقنوات وArtifactory والسجل والتثبيت والاستهلاك في مشروع والتعبئة وواجهة Python API والخلفيات، بالإضافة إلى مواد للمساهمين حول البنية والبناء من المصدر. المشروع مرخص تحت Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.