اقرأ أحدث الوثائق - تصفح مستودع كود GitHub
قم بفرز وارداتك، حتى لا تضطر إلى القيام بذلك.
isort عبارة عن أداة مساعدة / مكتبة Python لفرز الواردات أبجديًا وفصلها تلقائيًا إلى أقسام وحسب النوع. فهو يوفر أداة مساعدة لسطر الأوامر ومكتبة Python ومكونات إضافية لمختلف المحررين لفرز جميع وارداتك بسرعة. يتطلب تشغيل Python 3.8+ ولكنه يدعم تنسيق كود Python 2 أيضًا.
قبل الفرز:
from my_lib import Object
import os
from my_lib import Object3
from my_lib import Object2
import sys
from third_party import lib15 , lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 , lib9 , lib10 , lib11 , lib12 , lib13 , lib14
import sys
from __future__ import absolute_import
from third_party import lib3
print ( "Hey" )
print ( "yo" )
بعد الفرز:
from __future__ import absolute_import
import os
import sys
from third_party import ( lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 ,
lib9 , lib10 , lib11 , lib12 , lib13 , lib14 , lib15 )
from my_lib import Object , Object2 , Object3
print ( "Hey" )
print ( "yo" )
تثبيت isort بسيط مثل:
pip install isort
من سطر الأوامر :
للتشغيل على ملفات محددة:
isort mypythonfile.py mypythonfile2.py
لتطبيق بشكل متكرر:
isort .
إذا تم تمكين Globstar، isort .
يعادل:
isort ** / * .py
لعرض التغييرات المقترحة دون تطبيقها:
isort mypythonfile.py --diff
أخيرًا، لتشغيل isort بشكل ذري على مشروع، وتطبيق التغييرات فقط إذا لم تسبب أخطاء في بناء الجملة:
isort --atomic .
(ملاحظة: يتم تعطيل هذا افتراضيًا، لأنه يمنع تشغيل isort مقابل التعليمات البرمجية المكتوبة باستخدام إصدار مختلف من Python.)
من داخل بايثون :
import isort
isort . file ( "pythonfile.py" )
أو:
import isort
sorted_code = isort . code ( "import b n import a n " )
تمت كتابة العديد من المكونات الإضافية التي تتيح استخدام isort من خلال مجموعة متنوعة من برامج تحرير النصوص. يمكنك العثور على قائمة كاملة بهم على موقع isort wiki. بالإضافة إلى ذلك، سأقبل بحماس طلبات السحب التي تتضمن مكونات إضافية لمحرري النصوص الآخرين وأضيف وثائق لها عندما يتم إعلامي بذلك.
ستلاحظ أعلاه إعداد "multi_line_output". يحدد هذا الإعداد كيفية التفاف الواردات عندما تتجاوز حد طول الخط ويحتوي على 12 إعدادًا محتملاً.
لتغيير كيفية ظهور المسافات البادئة الثابتة - ما عليك سوى تغيير خاصية المسافة البادئة بالتنسيقات المقبولة التالية:
على سبيل المثال:
" "
يعادل 4.
بالنسبة لأنماط الاستيراد التي تستخدم الأقواس، يمكنك التحكم في ما إذا كنت تريد تضمين فاصلة زائدة بعد عملية الاستيراد الأخيرة أم لا باستخدام خيار include_trailing_comma
(الإعداد الافتراضي هو False
).
اعتبارًا من الإصدار 3.1.0، تمت إضافة دعم للواردات المتوازنة متعددة الخطوط. باستخدام هذا الترتيب الممكّن، سيتم تغيير طول الاستيراد ديناميكيًا إلى الطول الذي ينتج الشبكة الأكثر توازناً، مع البقاء أقل من الحد الأقصى لطول الاستيراد المحدد.
مثال:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
سيتم إنتاجه بدلاً من:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
لتمكين هذا، قم بتعيين balanced_wrapping
على True
في التكوين الخاص بك أو قم بتمرير الخيار -e
إلى الأداة المساعدة لسطر الأوامر.
يوفر isort خيارات تكوين لتغيير كل جانب تقريبًا من جوانب كيفية تنظيم الواردات أو ترتيبها أو تجميعها معًا في أقسام.
انقر هنا للحصول على نظرة عامة على كل هذه الخيارات.
لجعل isort يتجاهل استيرادًا واحدًا، ما عليك سوى إضافة تعليق في نهاية سطر الاستيراد يحتوي على النص isort:skip
:
import module # isort:skip
أو:
from xyz import ( abc , # isort:skip
yo ,
hey )
لجعل isort يتخطى ملفًا بأكمله، ما عليك سوى إضافة isort:skip_file
إلى سلسلة مستند الوحدة:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
يمكن تشغيل isort أو تهيئته لإضافة/إزالة الواردات تلقائيًا.
انظر الدليل الكامل هنا.
--check-only
يمكن أيضًا استخدام isort للتحقق من صحة تنسيق التعليمات البرمجية عن طريق تشغيلها باستخدام -c
. سيتم إخراج أي ملفات تحتوي على عمليات استيراد تم فرزها و/أو تنسيقها بشكل غير صحيح إلى stderr
.
isort ** / * .py -c -v
SUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good !
ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
أحد الأماكن الرائعة التي يمكن استخدام هذا فيها هو ربط git قبل الالتزام، مثل هذا بواسطة @acdha :
https://Gist.github.com/acdha/8717683
يمكن أن يساعد هذا في ضمان مستوى معين من جودة التعليمات البرمجية خلال المشروع.
يوفر isort وظيفة ربط يمكن دمجها في البرنامج النصي للالتزام المسبق لـ Git الخاص بك للتحقق من كود Python قبل الالتزام.
مزيد من المعلومات هنا.
عند التثبيت، يقوم isort بتمكين أمر setuptools
الذي يتحقق من ملفات Python التي أعلنها مشروعك.
مزيد من المعلومات هنا.
ضع هذه الشارة في أعلى مستودعك لإعلام الآخرين بأن مشروعك يستخدم isort.
بالنسبة إلى README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
أو README.rst:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
للإبلاغ عن ثغرة أمنية، يرجى استخدام جهة الاتصال الأمنية Tidelift. سوف يقوم Tidelift بتنسيق الإصلاح والكشف.
isort يرمز ببساطة إلى نوع الاستيراد. كان يُطلق عليه في الأصل اسم "sortImports" ولكنني سئمت من كتابة الأحرف الإضافية وتوصلت إلى إدراك أن CamelCase ليس لغة بايثونية.
لقد كتبت isort لأنه في مؤسسة كنت أعمل فيها، جاء المدير في يوم واحد وقرر أن كل التعليمات البرمجية يجب أن تحتوي على عمليات استيراد مرتبة أبجديًا. كانت قاعدة التعليمات البرمجية ضخمة - وكان ينوي أن نقوم بذلك يدويًا. ومع ذلك، لكوني مبرمجًا، فأنا كسول جدًا بحيث لا أستطيع قضاء 8 ساعات في أداء إحدى الوظائف دون قصد، ولكنني لست كسولًا جدًا بحيث لا أقضي 16 ساعة في أتمتتها. لقد تم إعطائي الإذن بفتح نوع الاستيراد وها نحن هنا :)
احصل على دعم احترافي من خلال اشتراك Tidelift
يتوفر الدعم الاحترافي لـ isort كجزء من اشتراك Tidelift. يوفر Tidelift لفرق تطوير البرمجيات مصدرًا واحدًا لشراء برامجهم وصيانتها، مع ضمانات درجة احترافية من الخبراء الذين يعرفونها جيدًا، مع التكامل بسلاسة مع الأدوات الموجودة.
شكرا وآمل أن تجد isort مفيدة!
~ تيموثي كروسلي