1. مبتدئ

    لماذا نستخدم البيئات الافتراضية (venv)؟

    لعزل مكتبات كل مشروع عن Python النظام وعن المشاريع الأخرى، فلا تتعارض الإصدارات ولا تحتاج صلاحيات المدير للتثبيت.

    اقرأ الشرح الكامل
  2. متوسط

    ما دور ملف pyproject.toml؟

    هو الملف القياسي لوصف نظام البناء [build-system] وبيانات المشروع [project] (الاسم والإصدار والاعتماديات وإصدار Python المطلوب)، وإعدادات الأدوات تحت [tool.*].

    اقرأ الشرح الكامل
  3. متوسط

    ما الفرق بين ملفات requirements و constraints؟

    يحدد ملف requirements ما يجب تثبيته، بينما يقيّد ملف constraints الإصدارات المسموح بها لحزم قد تُثبت دون أن يضيف أي حزمة بنفسه.

    اقرأ الشرح الكامل
  4. متوسط

    ما فائدة src layout في تنظيم الحزم؟

    وضع الكود داخل مجلد src يمنع استيراده بالخطأ من مجلد العمل الحالي، فتُجبر الاختبارات على استخدام الحزمة المثبتة، وتظهر أخطاء الـ packaging مبكرًا.

    اقرأ الشرح الكامل
  5. مبتدئ

    ما معنى editable install؟

    تثبيت الحزمة بحيث تشير إلى ملفات المصدر مباشرة (pip install -e .)، فتظهر تعديلاتك فورًا دون إعادة التثبيت.

    اقرأ الشرح الكامل
  6. متوسط

    ما الفرق بين wheel و source distribution (sdist)؟

    الـ wheel حزمة مبنية جاهزة للتثبيت بنسخ الملفات فقط، بينما sdist أرشيف للمصدر يحتاج خطوة بناء على جهاز المستخدم، وقد يحتاج compiler إذا احتوى امتدادات C.

    اقرأ الشرح الكامل
  7. متوسط

    كيف تعرض أمر CLI من حزمة Python؟

    عرّف console script في [project.scripts] داخل pyproject.toml يشير إلى دالة main، فينشئ التثبيت ملفًا تنفيذيًا بهذا الاسم في bin الخاص بالبيئة.

    اقرأ الشرح الكامل
  8. متوسط

    كيف تحدد إصدارات Python التي يدعمها مشروعك؟

    أعلن requires-python في pyproject.toml (مثل >=3.11)، ثم اختبر فعليًا على الحد الأدنى وأحدث إصدار في مصفوفة CI.

    اقرأ الشرح الكامل
  9. متوسط

    كيف تضبط logging في مكتبة أو خدمة دون إزعاج من يستخدمها؟

    في المكتبة أنشئ logger باسم الموديول logging.getLogger(__name__) دون أي handlers أو basicConfig، واترك الإعداد للتطبيق الذي يحدد الـ handlers والمستويات والتنسيق.

    اقرأ الشرح الكامل
  10. متقدم

    كيف تفصل الإعدادات عن الأسرار في تطبيق Python؟

    اقرأ الإعدادات والأسرار من متغيرات البيئة أو secret manager عند بدء التشغيل، وحوّلها إلى كائن إعدادات typed يُتحقق منه مرة واحدة، ولا تضع الأسرار في الكود أو الحزمة أو Git.

    اقرأ الشرح الكامل