{"id":16346232,"url":"https://github.com/jorenham/rxio","last_synced_at":"2025-09-06T01:38:43.090Z","repository":{"id":57747167,"uuid":"522287934","full_name":"jorenham/rxio","owner":"jorenham","description":"Declarative Reactivity in modern Python","archived":false,"fork":false,"pushed_at":"2024-04-01T18:58:30.000Z","size":237,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2025-08-05T23:32:17.833Z","etag":null,"topics":["asyncio","declarative-programming","python","reactive-programming","symbolic-computation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jorenham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-07T18:06:01.000Z","updated_at":"2024-03-10T14:36:04.000Z","dependencies_parsed_at":"2024-10-28T15:38:55.584Z","dependency_job_id":null,"html_url":"https://github.com/jorenham/rxio","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"32dfb813ea452082ec60454b1030cb8ba00765c5"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jorenham/rxio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorenham%2Frxio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorenham%2Frxio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorenham%2Frxio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorenham%2Frxio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jorenham","download_url":"https://codeload.github.com/jorenham/rxio/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorenham%2Frxio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273847125,"owners_count":25178633,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["asyncio","declarative-programming","python","reactive-programming","symbolic-computation"],"created_at":"2024-10-11T00:34:50.930Z","updated_at":"2025-09-06T01:38:43.070Z","avatar_url":"https://github.com/jorenham.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eRxIO\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cem\u003eDeclarative Reactive programming in modern Python\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/jorenham/rxio/actions?query=workflow%3ACI\"\u003e\n        \u003cimg\n            alt=\"Continuous Integration\"\n            src=\"https://github.com/jorenham/rxio/workflows/CI/badge.svg\"\n        /\u003e\n    \u003c/a\u003e\n    \u003c!-- \u003ca href=\"https://pypi.org/project/rxio/\"\u003e\n        \u003cimg\n            alt=\"PyPI\"\n            src=\"https://img.shields.io/pypi/v/rxio?style=flat\"\n        /\u003e\n    \u003c/a\u003e --\u003e\n    \u003c!-- \u003ca href=\"https://github.com/jorenham/rxio\"\u003e\n        \u003cimg\n            alt=\"Python Versions\"\n            src=\"https://img.shields.io/pypi/pyversions/rxio?style=flat\"\n        /\u003e\n    \u003c/a\u003e --\u003e\n    \u003ca href=\"https://github.com/jorenham/rxio\"\u003e\n        \u003cimg\n            alt=\"License\"\n            src=\"https://img.shields.io/github/license/jorenham/rxio?style=flat\"\n        /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\n        \u003cimg\n            alt=\"Ruff\"\n            src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\"\n        /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/microsoft/pyright\"\u003e\n        \u003cimg\n            alt=\"Checked with pyright\"\n            src=\"https://microsoft.github.io/pyright/img/pyright_badge.svg\"\n        /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\n- :zap: Reactive\n- :speech_balloon: Declarative\n- :moneybag: Symbolic\n- :crystal_ball: Predictable\n- :globe_with_meridians: Scalable\n- :electric_plug: Pluggable\n- :beetle: Debuggable\n- :floppy_disk: Lightweight\n- :cat: Fast \u0026 Lazy\n- :couple: Sync \u0026 Async\n- :shipit: Not a framework\n\n-----\n\n\u003e [!IMPORTANT]\n\u003e RxIO is an experimental project and has no stable interface.\n\nThe initial v0.2 prototype will require Python 3.12 or higher.\nEspecially the availability of PEP 965 will accelerate the prototyping process.\nOnce I'm satisfied with the prototype, I plan to add support for earlier\nPython versions.\n\n## Sneak Peek\n\n```pycon\n\u003e\u003e\u003e from rxio import rx\n\u003e\u003e\u003e a, b = rx(2), rx(7)\n\u003e\u003e\u003e c = a * b\n\u003e\u003e\u003e int(c)\n14\n\u003e\u003e\u003e a *= 3\n\u003e\u003e\u003e int(c)\n42\n```\n\n## FAQ\n\n\u003e \"If a tree falls in a forest and no one is around to hear it, does it make a sound?\"\n\nNo. The tree was dereferenced, so RxIO inlined it into the forest.\n\n## Optimistic Design Goals\n\nWith the current ideas that I've come up with,\nI believe that the following design goals should be achievable.\nBut as I (slowly) work on the prototype,\nthere's a good chance that the design goals require adjustment.\nSome might call that cheating; I call it agile.\n\nAnd now for some esoteric jargon:\nRxIO is inspired by push-pull FRP,\nsymbolic programming,\nthe composition API of Vue.js,\nPostgreSQL's transaction isolation mechanisms,\nand AnyIO's interface.\n\nMix all of that up,\nand you'll get functionality resembling that of spreadsheet software,\nbut more way more powerful, and working natively in modern Python.\n\n### API\n\n- provides both sync and async interfaces\n- documentation for humans\n- not a framework: can be integrated without rewriting your codebase\n- lightweight and portable: no required runtime dependencies\n- pluggable and extensible backends, e.g. threading, asyncio, joblib, or redis\n\n### Error handling and debugging\n\n- all exceptions should raise, unless explicitly silenced\n- exceptions raise as soon as possible\n- and their tracebacks are concise and helpful\n- plays nicely with debuggers\n- configurable logging, with helpful messages\n- no deadlock by design, a variable can even depend on itself\n\n### Performance\n\n- maximally lazy; *if a tree falls in a forest and no one is around to hear it,\n  it doesn't make a sound*\n- vertically scalable; dereferenced nodes get absorbed, symbolic optimization\n  might be employed\n- horizontally scalable; doesn't require central synchronization\n- robust to failures:\n\n### Code quality\n\n- fully type-annotated, and strictly type-checked\n- thoroughly [hypothesis](https://hypothesis.readthedocs.io/en/latest/)-tested\n- strict code style, enforced by [ruff](https://docs.astral.sh/ruff/)\n- all (public) methods have docstrings, preferably with (doctest) examples\n\n## Use cases\n\n- state management\n- bridging sync and async code\n- front-end (WASM) web apps, e.g. using pyodide or pyscript\n- mobile apps, with e.g. [kivy](https://kivy.org/)\n- GUI's e.g. with TkInter, PyQT, or wxPython\n- interactive data visualization, e.g. with bokeh, plotly, panels, or dash\n- real-time web servers, e.g. with HTTP/3 or WebRTC\n- trading bots\n- robotics\n- home automation\n- automation within Excel spreadsheets\n\n... so that's anything that deals with I/O or state management.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorenham%2Frxio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjorenham%2Frxio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorenham%2Frxio/lists"}