منسق Python
إعادة تنسيق Python بنفس طريقة Black - ومعرفة عدد الأسطر المتبدلة بالضبط.
الكود الخاص بك
0 حرفمنسق
إعادة تنسيق Python بنفس طريقة Black - ومعرفة عدد الأسطر المتبدلة بالضبط.
يُشغّل هذا Black - المنسّق الذي توافقت عليه معظم مشاريع Python بالفعل - على ما تلصقه، بطول السطر ومعالجة علامات الاقتباس التي تختارها. إذا تعذّر تحليل الملف فإنه يذكر في أي سطر، وإذا كان منسّقًا بالفعل فإنه يقول ذلك أيضًا، بدلًا من التظاهر بأنه فعل شيئًا.
تنسيق Python لا يتطلّب تشغيله. يُحلَّل الكود إلى شجرة صياغة ويُعاد كتابته من تلك الشجرة، بالكامل في الذاكرة - لا يُكتب أبدًا إلى ملف، ولا يُستورد أبدًا، ولا يُشغَّل أبدًا. أي منسّق يُشغّل ما لصقته سيكون واجهة أوامر بعيدة بصندوق نص.
Black هو تحويل يحافظ على شجرة الصياغة المجردة (AST): الكود الخارج هو نفس البرنامج الذي دخل. هذه الخاصية هي السبب الكامل في إمكانية الوثوق بمنسّق، وهي السبب في عدم تدخّل أي نموذج لغوي في أي جزء من هذه الأداة. نموذج يُطلب منه ترتيب الكود سيعيد كتابة سطر أحيانًا بينما يقوم بذلك، والتغيير الصامت لكود يعمل هو الفشل الوحيد الذي لا يمكن لمنسّق أن يتحمّله.
نفس السؤال الذي يطرحه CI: هل سيتغيّر هذا الملف؟ وضع التحقق يُعيد كودك الأصلي دون تغيير ويُبيّن ما إذا كان Black سيُعيد تنسيقه، وبكم عدد من الأسطر. إنها الطريقة السريعة لمعرفة لماذا يفشل خط أنابيب على ملف لا يمكنك إعادة إنتاجه محليًا.
الفاصلة بعد العنصر الأخير تطلب من Black إبقاء الاستدعاء أو المجموعة عنصرًا واحدًا في كل سطر: result = compute(alpha, beta,) تعود في أربعة أسطر، وكل من alpha, و beta, في سطر مستقل. فعّل خيار تجاهل الفاصلة الختامية السحرية فيصبح الإدخال نفسه result = compute(alpha, beta) متى اتسع له طول السطر. لحماية كتلة محاذاة يدويًا مثل مصفوفة، ضع # fmt: off في السطر الذي فوقها و # fmt: on تحتها، فيترك Black كل ما بينهما كما كتبته؛ و # fmt: skip في نهاية سطر يحمي ذلك السطر وحده. هذه تعليقات Black نفسه، لذا تبقى سارية عندما يشغّل CI مشروعك Black.
يُرسل إلى الخادم، يُنسَّق في الذاكرة ويُعاد في نفس الاستجابة. لا يُكتب شيء إلى القرص ولا يُخزَّن مؤقتًا ولا يُسجَّل، وسجلّ الاستخدام يحتفظ بالعدادات فقط - الحجم، الخيارات، عدد الأسطر التي تغيّرت - ولا يحتفظ بالكود أبدًا.
لا. يغيّر Black التنسيق لا السلوك، لكنه يفعل أكثر من تحريك المسافات. فهو يزيل الأقواس الزائدة (x = (1) تصبح x = 1)، ويحوّل بادئات الأعداد وأسسها إلى أحرف صغيرة (0XABCDEF تصبح 0xABCDEF، و 1E5 تصبح 1e5)، ويضيف فاصلة ختامية عندما يقسم استدعاءً على عدة أسطر، ويقلّص تتابع الأسطر الفارغة، ويزيل المسافات داخل docstring (""" Doc. """ تصبح """Doc."""). هذا التغيير الأخير يغيّر نص __doc__، وهو أمر لا يهم إلا إذا كان كودك يقرأ docstrings الخاصة به.
لأنه كان منسّقًا بالفعل بطول السطر الذي اخترته. تقول الأداة "منسّق بالفعل" بدلًا من إعادة نسخة بصمت.
لا. ترتيب عمليات الاستيراد هو عمل isort، لا Black، والاثنان يختلفان بما يكفي من التكرار ليُفاجئك لو حدث ذلك هنا.
لا يمكن لأي منسّق ذلك - الملف الذي لا يمكن تحليله لا يملك بنية يُعاد كتابتها. تحصل على السطر والعمود والكود المحيط لتتمكن من تصحيحه والمحاولة مجددًا.
Black متوافق مع PEP 8 مع انحراف معروف واحد: طول سطره الافتراضي هو 88 بدلًا من 79. اختر 79 في محدّد طول السطر إذا احتجت الرقم الأكثر صرامة.
حتى 400,000 حرف في كل تشغيل. يتوقف التنسيق بعد 10 ثوانٍ، ولا تبلغ ذلك إلا الملفات الكبيرة جدًا أو شديدة التكرار، ويمكن لكل عنوان IP إجراء 30 عملية تنسيق كل 10 دقائق.
تستخدم هذه الصفحة Black، ويظهر إصداره في ترويسة الصفحة على الشاشات العريضة. يقرأ Black إعدادات المشروع من pyproject.toml في القسم [tool.black] بالأسماء الطويلة للخيارات: line-length = 88 لخيار "طول السطر" الذي اخترته، و skip-string-normalization = true إذا فعّلت "الاحتفاظ بعلامات التنصيص الخاصة بي"، و skip-magic-trailing-comma = true لخيار "تجاهل الفاصلة الختامية السحرية"، و target-version = ["py311"] لقيمة ثابتة في "الهدف". تقرأ إضافات المحررات وخطاف pre-commit الملف نفسه. شغّل black . للتنسيق و black --check --diff . في CI: لا يغيّر شيئًا وينتهي برمز الخروج 1 إذا كان ملف سيُعاد تنسيقه. ثبّت إصدار Black نفسه المستخدم في هذه الصفحة، لأن أول إصدار في كل سنة ميلادية قد يغيّر النمط المستقر.
في الغالب نعم، لكن ليس بايتًا ببايت. صُمّم منسّق Ruff ليكون بديلًا مباشرًا لـ Black، وتذكر وثائق Ruff أنه في المشاريع الكبيرة المنسّقة بـ Black مثل Django و Zulip تخرج أكثر من 99.9% من الأسطر متطابقة. يختلف أكثر في الشيفرة التي لم تمر عبر Black قط، خصوصًا في التعليقات في نهاية السطر، وتسرد وثائقه الفروق المقصودة. طول السطر الافتراضي لديه 88 أيضًا، ويُضبط بـ line-length تحت [tool.ruff]؛ ويقابل quote-style = "preserve" تحت [tool.ruff.format] خيار "الاحتفاظ بعلامات التنصيص الخاصة بي"، ويقابل skip-magic-trailing-comma = true خيار "تجاهل الفاصلة الختامية السحرية". إذا كان CI لديك يشغّل ruff format --check فاختبر الملف بـ Ruff لا بهذه الصفحة.