مكتبة لإنشاء برامج غير متزامنة ومبنية على الأحداث باستخدام مجموعات يمكن ملاحظتها ووظائف مشغل الاستعلام في بايثون
بالنسبة إلى الإصدار v3.X، يرجى الانتقال إلى فرع الإصدار v3.
يعمل ReactiveX for Python v4.x على Python 3.7 أو أعلى. للتثبيت:
pip3 install reactivex
ReactiveX for Python (RxPY) هي مكتبة لإنشاء برامج غير متزامنة وقائمة على الأحداث باستخدام تسلسلات يمكن ملاحظتها وعوامل تشغيل الاستعلام القابلة للتحويل في Python. باستخدام Rx، يمثل المطورون تدفقات البيانات غير المتزامنة باستخدام العناصر القابلة للملاحظة، والاستعلام عن تدفقات البيانات غير المتزامنة باستخدام عوامل التشغيل، وتحديد معلمات التزامن في تدفقات البيانات/الأحداث باستخدام المجدولين.
import reactivex as rx
from reactivex import operators as ops
source = rx . of ( "Alpha" , "Beta" , "Gamma" , "Delta" , "Epsilon" )
composed = source . pipe (
ops . map ( lambda s : len ( s )),
ops . filter ( lambda i : i >= 5 )
)
composed . subscribe ( lambda value : print ( "Received {0}" . format ( value )))
اقرأ الوثائق للتعرف على مبادئ ReactiveX واحصل على المرجع الكامل للمشغلين المتاحين.
إذا كنت بحاجة إلى ترحيل التعليمات البرمجية من RxPY v1.x أو v3.x، فاقرأ قسم الترحيل.
توجد أيضًا قائمة بوثائق الطرف الثالث المتاحة هنا.
انضم إلى المحادثة على مناقشات GitHub! إذا كان لديك أي أسئلة أو اقتراحات.
يعد ReactiveX for Python تطبيقًا كاملاً إلى حد ما لـ Rx مع أكثر من 120 عامل وأكثر من 1300 اختبار وحدة ناجح. يعد RxPY في الغالب منفذًا مباشرًا لـ RxJS، ولكنه أيضًا يستعير قليلاً من Rx.NET وRxJava فيما يتعلق بمعاملات الترابط والحظر.
يتبع ReactiveX for Python PEP 8، لذا فإن جميع أسماء الوظائف والطرق مكتوبة snake_cased
، أي أحرف صغيرة مع كلمات مفصولة بشرطات سفلية حسب الضرورة لتحسين إمكانية القراءة.
وبالتالي رمز .NET مثل:
var group = source . GroupBy ( i => i % 3 ) ;
يجب كتابتها باستخدام _
في بايثون:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
باستخدام ReactiveX for Python، يجب عليك استخدام وسائط الكلمات الرئيسية المُسمّاة بدلاً من الوسائط الموضعية عندما يكون لدى عامل التشغيل وسائط اختيارية متعددة. لن يحاول RxPY اكتشاف الوسائط التي تقدمها للمشغل (أو لا).
تتم إدارة هذا المشروع باستخدام الشعر. يتم تنسيق التعليمات البرمجية باستخدام الأسود، isort. يتم فحص الكود بشكل ثابت باستخدام pyright وmypy.
إذا كنت تريد الاستفادة من تكامل VSCode الافتراضي، فقم أولاً بتكوين Poetry لإنشاء بيئته الافتراضية في المستودع:
poetry config virtualenvs.in-project true
بعد استنساخ المستودع، قم بتنشيط الأدوات:
poetry install
poetry run pre-commit install
تشغيل اختبارات الوحدة:
poetry run pytest
تشغيل عمليات التحقق من التعليمات البرمجية (يدويًا):
poetry run pre-commit run --all-files