Une bibliothèque pour composer des programmes asynchrones et basés sur des événements à l'aide de collections observables et de fonctions d'opérateur de requête en Python
Pour la v3.X, veuillez vous rendre sur la branche v3.
ReactiveX pour Python v4.x s'exécute sur Python 3.7 ou supérieur. Pour installer :
pip3 install reactivex
ReactiveX for Python (RxPY) est une bibliothèque permettant de composer des programmes asynchrones et basés sur des événements à l'aide de séquences observables et d'opérateurs de requête pipables en Python. À l'aide de Rx, les développeurs représentent des flux de données asynchrones avec des observables, interrogent des flux de données asynchrones à l'aide d'opérateurs et paramétrent la concurrence dans les flux de données/événements à l'aide de planificateurs.
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 )))
Lisez la documentation pour connaître les principes de ReactiveX et obtenir la référence complète des opérateurs disponibles.
Si vous devez migrer le code depuis RxPY v1.x ou v3.x, lisez la section migration.
Une liste de documentation tierce est également disponible ici.
Rejoignez la conversation sur les discussions GitHub ! si vous avez des questions ou des suggestions.
ReactiveX pour Python est une implémentation assez complète de Rx avec plus de 120 opérateurs et plus de 1 300 tests unitaires réussis. RxPY est principalement un portage direct de RxJS, mais emprunte également un peu à Rx.NET et RxJava en termes d'opérateurs de threading et de blocage.
ReactiveX pour Python suit PEP 8, donc tous les noms de fonctions et de méthodes sont snake_cased
, c'est-à-dire en minuscules avec des mots séparés par des traits de soulignement si nécessaire pour améliorer la lisibilité.
Ainsi du code .NET tel que :
var group = source . GroupBy ( i => i % 3 ) ;
doit être écrit avec un _
en Python :
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
Avec ReactiveX pour Python, vous devez utiliser des arguments de mots-clés nommés au lieu d'arguments de position lorsqu'un opérateur a plusieurs arguments facultatifs. RxPY n'essaiera pas de détecter les arguments que vous donnez (ou non) à l'opérateur.
Ce projet est géré à l'aide de Poésie. Le code est formaté en utilisant Black, isort. Le code est vérifié de manière statique à l'aide de pyright et mypy.
Si vous souhaitez profiter de l'intégration VSCode par défaut, configurez d'abord Poetry pour créer son environnement virtuel dans le référentiel :
poetry config virtualenvs.in-project true
Après avoir cloné le référentiel, activez l'outillage :
poetry install
poetry run pre-commit install
Exécutez des tests unitaires :
poetry run pytest
Exécutez des vérifications de code (manuellement) :
poetry run pre-commit run --all-files