Una biblioteca para componer programas asincrónicos y basados en eventos utilizando colecciones observables y funciones de operador de consulta en Python
Para v3.X, vaya a la rama v3.
ReactiveX para Python v4.x se ejecuta en Python 3.7 o superior. Para instalar:
pip3 install reactivex
ReactiveX para Python (RxPY) es una biblioteca para componer programas asincrónicos y basados en eventos utilizando secuencias observables y operadores de consulta pipables en Python. Con Rx, los desarrolladores representan flujos de datos asincrónicos con Observables, consultan flujos de datos asincrónicos mediante operadores y parametrizan la concurrencia en flujos de datos/eventos mediante Programadores.
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 )))
Lea la documentación para conocer los principios de ReactiveX y obtener la referencia completa de los operadores disponibles.
Si necesita migrar código desde RxPY v1.x o v3.x, lea la sección de migración.
También hay una lista de documentación de terceros disponible aquí.
¡Únase a la conversación en GitHub Discussions! si tienes alguna pregunta o sugerencia.
ReactiveX para Python es una implementación bastante completa de Rx con más de 120 operadores y más de 1300 pruebas unitarias aprobadas. RxPY es principalmente una adaptación directa de RxJS, pero también toma prestado un poco de Rx.NET y RxJava en términos de operadores de subprocesamiento y bloqueo.
ReactiveX para Python sigue PEP 8, por lo que todos los nombres de funciones y métodos están snake_cased
es decir, en minúsculas con palabras separadas por guiones bajos según sea necesario para mejorar la legibilidad.
Por lo tanto, código .NET como:
var group = source . GroupBy ( i => i % 3 ) ;
debe escribirse con un _
en Python:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
Con ReactiveX para Python debes usar argumentos de palabras clave con nombre en lugar de argumentos posicionales cuando un operador tiene múltiples argumentos opcionales. RxPY no intentará detectar qué argumentos le estás dando al operador (o no).
Este proyecto se gestiona mediante Poetry. El código está formateado en negro, isort. El código se verifica estáticamente usando pyright y mypy.
Si desea aprovechar la integración predeterminada de VSCode, primero configure Poetry para crear su entorno virtual en el repositorio:
poetry config virtualenvs.in-project true
Después de clonar el repositorio, active las herramientas:
poetry install
poetry run pre-commit install
Ejecute pruebas unitarias:
poetry run pytest
Ejecute comprobaciones de código (manualmente):
poetry run pre-commit run --all-files