{"id":13468066,"url":"https://github.com/ReactiveX/RxPY","last_synced_at":"2025-03-26T03:31:27.099Z","repository":{"id":7589901,"uuid":"8946089","full_name":"ReactiveX/RxPY","owner":"ReactiveX","description":"ReactiveX for Python","archived":false,"fork":false,"pushed_at":"2024-08-15T08:27:36.000Z","size":5449,"stargazers_count":4779,"open_issues_count":47,"forks_count":362,"subscribers_count":104,"default_branch":"master","last_synced_at":"2024-10-29T21:59:22.404Z","etag":null,"topics":["python","reactive","reactive-extensions","reactivex","rxpy"],"latest_commit_sha":null,"homepage":"https://rxpy.rtfd.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ReactiveX.png","metadata":{"files":{"readme":"README.rst","changelog":"changes.md","contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"authors.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-03-22T06:16:54.000Z","updated_at":"2024-10-23T21:23:08.000Z","dependencies_parsed_at":"2023-01-13T16:23:38.513Z","dependency_job_id":"4afc795f-741e-436c-a057-d310695c21f2","html_url":"https://github.com/ReactiveX/RxPY","commit_stats":{"total_commits":1911,"total_committers":102,"mean_commits":"18.735294117647058","dds":"0.25850340136054417","last_synced_commit":"af1663d35810fdcd4c25a3ed2e8f0d71b55c341d"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveX%2FRxPY","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveX%2FRxPY/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveX%2FRxPY/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveX%2FRxPY/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ReactiveX","download_url":"https://codeload.github.com/ReactiveX/RxPY/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245584887,"owners_count":20639639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","reactive","reactive-extensions","reactivex","rxpy"],"created_at":"2024-07-31T15:01:05.001Z","updated_at":"2025-03-26T03:31:27.077Z","avatar_url":"https://github.com/ReactiveX.png","language":"Python","readme":"===============================\nThe ReactiveX for Python (RxPY)\n===============================\n\n.. image:: https://github.com/ReactiveX/RxPY/workflows/Python%20package/badge.svg\n    :target: https://github.com/ReactiveX/RxPY/actions\n    :alt: Build Status\n\n.. image:: https://img.shields.io/coveralls/ReactiveX/RxPY.svg\n    :target: https://coveralls.io/github/ReactiveX/RxPY\n    :alt: Coverage Status\n\n.. image:: https://img.shields.io/pypi/v/reactivex.svg\n    :target: https://pypi.org/project/reactivex/\n    :alt: PyPY Package Version\n\n.. image:: https://img.shields.io/readthedocs/rxpy.svg\n    :target: https://readthedocs.org/projects/rxpy/builds/\n    :alt: Documentation Status\n\n\n*A library for composing asynchronous and event-based programs using observable\ncollections and query operator functions in Python*\n\nReactiveX for Python v4\n-----------------------\n\nFor v3.X please go to the `v3 branch\n\u003chttps://github.com/ReactiveX/RxPY/tree/release/v3.2.x\u003e`_.\n\nReactiveX for Python v4.x runs on `Python \u003chttp://www.python.org/\u003e`_ 3.8 or above. To\ninstall:\n\n.. code:: console\n\n    pip3 install reactivex\n\n\nAbout ReactiveX\n---------------\n\nReactiveX for Python (RxPY) is a library for composing asynchronous and event-based\nprograms using observable sequences and pipable query operators in Python. Using Rx,\ndevelopers represent asynchronous data streams with Observables, query asynchronous data\nstreams using operators, and parameterize concurrency in data/event streams using\nSchedulers.\n\n.. code:: python\n\n    import reactivex as rx\n    from reactivex import operators as ops\n\n    source = rx.of(\"Alpha\", \"Beta\", \"Gamma\", \"Delta\", \"Epsilon\")\n\n    composed = source.pipe(\n        ops.map(lambda s: len(s)),\n        ops.filter(lambda i: i \u003e= 5)\n    )\n    composed.subscribe(lambda value: print(\"Received {0}\".format(value)))\n\n\nLearning ReactiveX\n------------------\n\nRead the `documentation\n\u003chttps://rxpy.readthedocs.io/en/latest/\u003e`_ to learn\nthe principles of ReactiveX and get the complete reference of the available\noperators.\n\nIf you need to migrate code from RxPY v1.x or v3.x, read the `migration\n\u003chttps://rxpy.readthedocs.io/en/latest/migration.html\u003e`_ section.\n\nThere is also a list of third party documentation available `here\n\u003chttps://rxpy.readthedocs.io/en/latest/additional_reading.html\u003e`_.\n\n\nCommunity\n----------\n\nJoin the conversation on GitHub `Discussions\n\u003chttps://github.com/ReactiveX/RxPY/discussions\u003e`_! if you have any questions or\nsuggestions.\n\nDifferences from .NET and RxJS\n------------------------------\n\nReactiveX for Python is a fairly complete implementation of\n`Rx \u003chttp://reactivex.io/\u003e`_ with more than\n`120 operators \u003chttps://rxpy.readthedocs.io/en/latest/operators.html\u003e`_, and\nover `1300 passing unit-tests \u003chttps://coveralls.io/github/ReactiveX/RxPY\u003e`_. RxPY\nis mostly a direct port of RxJS, but also borrows a bit from Rx.NET and RxJava in\nterms of threading and blocking operators.\n\nReactiveX for Python follows `PEP 8 \u003chttp://legacy.python.org/dev/peps/pep-0008/\u003e`_, so\nall function and method names are ``snake_cased`` i.e lowercase with words separated by\nunderscores as necessary to improve readability.\n\nThus .NET code such as:\n\n.. code:: c#\n\n    var group = source.GroupBy(i =\u003e i % 3);\n\n\nneed to be written with an ``_`` in Python:\n\n.. code:: python\n\n    group = source.pipe(ops.group_by(lambda i: i % 3))\n\nWith ReactiveX for Python you should use `named keyword arguments\n\u003chttps://docs.python.org/3/glossary.html\u003e`_ instead of positional arguments when an\noperator has multiple optional arguments. RxPY will not try to detect which arguments\nyou are giving to the operator (or not).\n\nDevelopment\n-----------\n\nThis project is managed using `Poetry \u003chttps://python-poetry.org/\u003e`_. Code is formatted\nusing `Black \u003chttps://github.com/psf/black\u003e`_, `isort\n\u003chttps://github.com/PyCQA/isort\u003e`_. Code is statically type checked using `pyright\n\u003chttps://github.com/microsoft/pyright\u003e`_ and `mypy \u003chttp://mypy-lang.org/\u003e`_.\n\nIf you want to take advantage of the default VSCode integration, then\nfirst configure Poetry to make its virtual environment in the\nrepository:\n\n.. code:: console\n\n    poetry config virtualenvs.in-project true\n\nAfter cloning the repository, activate the tooling:\n\n.. code:: console\n\n    poetry install\n    poetry run pre-commit install\n\nRun unit tests:\n\n.. code:: console\n\n    poetry run pytest\n\nRun code checks (manually):\n\n.. code:: console\n\n    poetry run pre-commit run --all-files\n","funding_links":[],"categories":["Python","Topics Index","Awesome Functional Python"],"sub_categories":["Commonly Useful Knowledge","Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FReactiveX%2FRxPY","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FReactiveX%2FRxPY","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FReactiveX%2FRxPY/lists"}