Pustaka untuk membuat program asinkron dan berbasis peristiwa menggunakan koleksi yang dapat diamati dan fungsi operator kueri dengan Python
Untuk v3.X silakan masuk ke cabang v3.
ReactiveX untuk Python v4.x berjalan pada Python 3.7 atau lebih tinggi. Untuk menginstal:
pip3 install reactivex
ReactiveX untuk Python (RxPY) adalah perpustakaan untuk membuat program asinkron dan berbasis peristiwa menggunakan urutan yang dapat diamati dan operator kueri pipa dengan Python. Dengan menggunakan Rx, pengembang merepresentasikan aliran data asinkron dengan Observables, mengkueri aliran data asinkron menggunakan operator, dan membuat parameter konkurensi dalam aliran data/peristiwa menggunakan Penjadwal.
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 )))
Baca dokumentasi untuk mempelajari prinsip-prinsip ReactiveX dan mendapatkan referensi lengkap dari operator yang tersedia.
Jika Anda perlu memigrasikan kode dari RxPY v1.x atau v3.x, baca bagian migrasi.
Ada juga daftar dokumentasi pihak ketiga yang tersedia di sini.
Bergabunglah dalam percakapan di Diskusi GitHub! jika Anda memiliki pertanyaan atau saran.
ReactiveX untuk Python adalah implementasi Rx yang cukup lengkap dengan lebih dari 120 operator, dan lebih dari 1300 pengujian unit yang lulus. RxPY sebagian besar merupakan port langsung dari RxJS, tetapi juga meminjam sedikit dari Rx.NET dan RxJava dalam hal operator threading dan pemblokiran.
ReactiveX untuk Python mengikuti PEP 8, jadi semua nama fungsi dan metode adalah snake_cased
yaitu huruf kecil dengan kata-kata yang dipisahkan dengan garis bawah seperlunya untuk meningkatkan keterbacaan.
Jadi kode .NET seperti:
var group = source . GroupBy ( i => i % 3 ) ;
perlu ditulis dengan _
dengan Python:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
Dengan ReactiveX untuk Python Anda harus menggunakan argumen kata kunci bernama alih-alih argumen posisi ketika operator memiliki beberapa argumen opsional. RxPY tidak akan mencoba mendeteksi argumen mana yang Anda berikan kepada operator (atau tidak).
Proyek ini dikelola menggunakan Puisi. Kode diformat menggunakan Hitam, isort. Kode diketik secara statis diperiksa menggunakan pyright dan mypy.
Jika Anda ingin memanfaatkan integrasi VSCode default, konfigurasikan Puisi terlebih dahulu untuk menjadikan lingkungan virtualnya di repositori:
poetry config virtualenvs.in-project true
Setelah mengkloning repositori, aktifkan perkakas:
poetry install
poetry run pre-commit install
Jalankan pengujian unit:
poetry run pytest
Jalankan pemeriksaan kode (secara manual):
poetry run pre-commit run --all-files