أدوات بايثون الحديثة: دليل uv وRuff وpyproject.toml

مشروع بايثون تقليدي يجرّك إلى 6 أدوات على الأقل: pip لتثبيت الحزم، وvenv للبيئات الافتراضية، وpyenv لإدارة إصدارات بايثون، وpipx لأدوات سطر الأوامر، ثم flake8 وblack وisort لجودة الكود. لكلٍّ منها ملف إعداد وأسلوب عمل مختلف. المنظومة الحديثة تستبدل بهذا التشتت 3 ركائز لا غير: pyproject.toml أساساً موحّداً للإعدادات، وuv مديراً للحزم والبيئات، وRuff أداةً واحدة للفحص والتنسيق. هذا الدليل يشرح دور كل ركيزة، وكيف تشتغل الثلاث معاً في العمل اليومي، وأين تقف حدودها في 2026.
الخلاصة العملية
ابدأ مشروع بايثون جديداً بهذه العدّة إذا كان الفريق صغيراً أو متوسطاً، أو إذا كان بناء البيئة في CI يستهلك وقتاً واضحاً: pyproject.toml للإعدادات، وuv للحزم والبيئات والقفل، وRuff للفحص والتنسيق. تمهّل فقط إذا كان مشروعك مرتبطاً بعمق بـ conda أو Poetry أو بسياسات مؤسسية مبنية على pip حرفياً. في هذه الحالة، اجعل الانتقال تدريجياً: انقل الإعدادات أولاً إلى pyproject.toml، ثم جرّب uv في مشروع جانبي، ثم أدخل Ruff كبديل للفحص والتنسيق.
pyproject.toml: الأساس الذي تقف عليه العدّة
قبل الأدوات نفسها، يأتي الملف الذي يجمعها. أدخل معيار PEP 518 ملف pyproject.toml، ثم وحّد PEP 621 بيانات المشروع في جدول [project]، فصار ملفاً واحداً يحمل اسم المشروع واعتمادياته وإعدادات أدواته: منه يقرأ uv الاعتماديات، وفيه يسكن إعداد Ruff تحت قسم [tool.ruff]. النتيجة مصدر حقيقة واحد بدل setup.py و.flake8 وأشباهها من ملفات الإعداد المتناثرة. أما الدور الذي كان يؤديه requirements.txt في تثبيت بيئة بعينها، فقد انتقل إلى ملف القفل (lockfile) في منظومة uv. فصّلنا بنية الملف وأقسامه في مقال شرح pyproject.toml: ملف واحد لإعدادات مشاريع بايثون.
uv: أربع أدوات في أداة واحدة
ما كانت تتقاسمه pip وvenv وpyenv وpipx — تثبيت الحزم، وإنشاء البيئات الافتراضية، وتنزيل إصدارات بايثون نفسها، وتشغيل أدوات سطر الأوامر — يغطيه uv وحده، وهو مدير حزم بُني بلغة Rust. أما السرعة، فالرقم الذي يتصدر كل عرض للأداة، «أسرع من pip بـ 10 إلى 100 مرة»، يرد في التوثيق الرسمي فعلاً، والتفصيل الأصلي في إعلان فبراير 2024: نحو 8-10x بلا تخزين مؤقت، و80-115x مع تخزين مؤقت دافئ.
والتبني يجاري السرعة: نحو 87.1 ألف نجمة على GitHub حتى يوليو 2026، و11% من المشاركين في استطلاع مطوري بايثون (PSF/JetBrains، بيانات أواخر 2024 بأكثر من 30 ألف مشارك) خلال سنته الأولى. وقدّر تحليل لموقع aleyan.com في أبريل 2026، شمل أعلى 100 ألف مستودع على GitHub، أن uv حاضر في 32% من مستودعات بايثون المنشأة عام 2025 وأنه تجاوز Poetry خلال تلك السنة — تقدير مستقل، لا رقم رسمي. خطوات الانتقال العملية من pip وvenv شرحناها في أداة uv لإدارة حزم بايثون: دليل عملي للانتقال من pip وvenv.
Ruff: فحص وتنسيق بأمر واحد
وظيفتان كانتا تتطلبان 3 أدوات يجمعهما Ruff: فحص بأكثر من 900 قاعدة تغطي ما تفعله flake8 وisort، وتنسيق متوافق مع Black يحل محله بديلاً مباشراً — وبسرعة أعلى بـ 10 إلى 100 مرة. تعتمده مشاريع كبرى منها Apache Airflow وFastAPI وpandas وSciPy وHugging Face. أحدث إصداراته 0.15.20 (25 يونيو 2026)، وكان الإصدار 0.15.0 في فبراير 2026 قد أضاف «نمط تنسيق 2026» و16 قاعدة مستقرة جديدة. أما الإعداد فمكانه قسم [tool.ruff] في pyproject.toml (أو ملف ruff.toml مستقل إن فضّلت):
[tool.ruff]
line-length = 88
target-version = "py310"
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "B"]
[tool.ruff.format]
quote-style = "double"
سير العمل اليومي بالعدّة كاملة
دورة مشروع جديد كاملة، من الإنشاء إلى التنسيق:
uv init hello-world
uv add requests
uv run main.py
ruff check --fix
ruff format
الأمر uv init ينشئ pyproject.toml و.python-version وREADME.md وmain.py دفعة واحدة. وuv add يضيف الحزمة إلى pyproject.toml ويحدّث ملف القفل المسمّى uv.lock، بينما uv remove يحذفها. أما uv run فيتحقق قبل كل تشغيل من تطابق uv.lock مع pyproject.toml، فلا تشتغل يوماً على بيئة خرجت عن التزامن دون أن تدري. وعلى جانب الجودة، ruff check يفحص، و--fix يصلح ما يمكن إصلاحه آلياً، وruff format ينسّق.
أخطاء شائعة عند الانتقال
- تنفيذ
pip installداخل مشروع uv بدلuv add، ما يكسر تزامن uv.lock مع الاعتماديات الفعلية. - عدم إيداع uv.lock في Git، فيفقد الفريق ضمانة البيئات المتطابقة.
- إبقاء ملفات الإعداد القديمة مثل .flake8 أو قسم
[tool.black]بجانب Ruff؛ فهو لا يقرأ .flake8 أصلاً، وإعداده يكون في[tool.ruff]أو ملف ruff.toml. - الظن أن
ruff checkينسّق الكود؛ الفحص والتنسيق أمران منفصلان، والتنسيق مهمةruff format. - توقّع فحص الأنواع من uv أو Ruff؛ فاحص الأنواع وظيفة أداة أخرى.
من يقف خلف العدّة؟
خلف هذه الأدوات شركة واحدة: Astral، أسسها Charlie Marsh وأعلنها رسمياً عام 2023 بعد نجاح Ruff. أدواتها الثلاث — uv وRuff وty — مبنية كلها بلغة Rust وبرخص مفتوحة متساهلة (MIT/Apache)، وty فاحص أنواع أُعلن إصداره التجريبي في 16 ديسمبر 2025 وما يزال قبل الاستقرار (0.0.56 في 1 يوليو 2026). وتجرّب Astral توسيع uv نحو الأمان: أمر uv audit الصادر في 8 يونيو 2026 يفحص الثغرات أسرع من pip-audit بـ 4 إلى 10 مرات، لكنه ما يزال معاينة غير مستقرة.
وفي 19 مارس 2026 أعلنت OpenAI اعتزامها الاستحواذ على Astral لتنضم إلى فريق Codex، مع تعهد بإبقاء الأدوات مفتوحة المصدر، دون كشف قيمة الصفقة. التعهد قائم، لكن حين تتركز أدوات بهذا الوزن في يد شركة واحدة كبرى، يبقى سؤال استقلاليتها على المدى الطويل مفتوحاً.
متى تبقى على أدواتك القديمة؟
uv لم يبلغ الإصدار 1.0 بعد (أحدثه 0.11.26 في 30 يونيو 2026)، وواجهته قد تتغير قبل الاستقرار. conda يبقى الأنسب للحوسبة العلمية حيث تحتاج حزماً غير بايثونية مثل CUDA، وpip هو الخيار المضمون في البيئات المقيّدة التي لا تسمح بأدوات إضافية. أما المشاريع المبنية بعمق على Poetry، فالانتقال الفوري قد لا يستحق كلفته مؤقتاً. لكن لمشروع جديد في 2026، تمنحك العدّة الحديثة — pyproject.toml أساساً، وuv للإدارة، وRuff للجودة — نقطة انطلاق أبسط وأسرع من أي تركيبة تقليدية.
اقرأ أيضاً عن أدوات بايثون الحديثة
- شرح pyproject.toml: ملف واحد لإعدادات مشاريع بايثون لفهم الملف الذي يجمع إعدادات المشروع.
- أداة uv لإدارة حزم بايثون: دليل عملي للانتقال من pip وvenv إذا كان سؤالك العملي هو طريقة الترحيل من الأدوات القديمة.