عن المشروع

python-patterns هي مجموعة مرجعية لأنماط التصميم والتعابير البرمجية المنفذة في بايثون. وليست مكتبة، بل هي مورد تعليمي: كل نمط يعيش في وحدة صغيرة خاصة به ضمن مجلد فئة، ويقوم ملف README بفهرستها مع أوصاف قصيرة. التغطية منظمة في عدة مجموعات. تشمل الأنماط الإبداعية abstract_factory وborg وbuilder وfactory وlazy_evaluation وpool وprototype. تشمل الأنماط الهيكلية 3-tier وadapter وbridge وcomposite وdecorator وfacade وflyweight وfront_controller وmvc وproxy. تشمل الأنماط السلوكية chain_of_responsibility وcatalog وchaining_method وcommand وinterpreter وiterator (مع تنفيذ بديل) وmediator وmemento وobserver وpublish_subscribe وregistry وservant وspecification وstate وstrategy وtemplate وvisitor. هناك أيضًا أمثلة للتصميم من أجل قابلية الاختبار (dependency_injection مع ثلاثة متغيرات)، ونمط تفويض أساسي (delegation_pattern)، وأنماط أخرى مثل blackboard وgraph_search وآلة حالة هرمية (hsm). يؤكد ملف README صراحةً على أن الأنماط هي مقايضات، ويشجع القراء على التركيز على سبب اختيار نمط معين بدلاً من كيفية كتابته فقط. كما يوثق الأنماط المضادة التي لا يُنصح بها في بايثون، بما في ذلك singleton (الوحدات هي بالفعل singletons)، وgod object، والإفراط في استخدام الوراثة، مع بدائل مقترحة مثل متغيرات على مستوى الوحدة، وحقن التبعية، والتركيب، والتفويض. من المتوقع أن تحمل كل وحدة مثال وثيقة docstring على مستوى الوحدة مع مراجع، وحيثما أمكن، قسم "أمثلة في النظام البيئي لبايثون" يظهر الاستخدام الواقعي. يحتفظ المشروع بعلامة legacy لإصدارات متوافقة مع بايثون 2 لبعض الأنماط. تغطي إرشادات المساهمة الوثائق docstrings وتحديثات README وتشغيل ./lint.sh للتنسيق والفحص والتحقق من الأنواع والاختبارات؛ يتم تثبيت التبعيات التطويرية في Pipfile.lock وإعادة توليدها باستخدام make lock. يتم دعم فرز المشكلات عبر CodeTriage، ويحتوي README على روابط لعدة محاضرات وفيديوهات مؤتمرات حول أنماط التصميم في بايثون.