• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ReactiveX / RxPY
94%

Build:
DEFAULT BRANCH: master
Repo Added 18 May 2016 06:43PM UTC
Files 417
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH master
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 1.6.1
  • add-repo-assist
  • add-starmap-tests
  • alpha3
  • bo/fixup-docs
  • ci/adopt-easybuild-shipit
  • ci/dependabot-conventional-titles
  • ci/enable-dependabot
  • ci/shipit-3.0.1-and-dep-upgrades
  • ci/shipit-allow-master
  • ci/shipit-fix-historical-versions
  • ci/shipit-skip-invalid-commit
  • ci/upgrade-gh-aw-v0.71.5
  • current
  • curry-flip
  • dependabot/github_actions/github-actions-0fd2d1971d
  • dependabot/github_actions/github-actions-1bf0e6df77
  • dependabot/github_actions/github-actions-7b8ba4dc16
  • dependabot/github_actions/github-actions-8827d84614
  • dependabot/github_actions/github-actions-a12e56bff0
  • dependabot/github_actions/github-actions-c020ac0c2c
  • dependabot/github_actions/github-actions-c8a564380f
  • dependabot/github_actions/github-actions-d95291362f
  • dependabot/uv/python-dependencies-aeda4b483a
  • develop
  • docs
  • docs-version
  • docs/fix-build-and-5.0-refresh
  • drop38
  • feat/switch_map
  • feat/tap-operator
  • feature/add-project-cfg
  • feature/disposable
  • feature/doc-fixes
  • feature/docs
  • feature/fix-async-examples
  • feature/fix-observer-throws
  • feature/non-recursive
  • feature/pipe-typing
  • feature/py.typed
  • feature/readthedocs
  • feature/release-v3
  • feature/rtd-badge
  • feature/rxpy-3.0
  • feature/subscribe-scheduler
  • feature/to_iterabe_returns_list
  • feature/typing-fixes
  • fix-compose-pipe
  • fix-defer-docs
  • fix-docs
  • fix-library-version
  • fix-publish-version
  • fix-publish-version-2
  • fix-readme
  • fix-subscribeon
  • fix-timeflies-tkinter
  • fix-typing
  • fix-typo-occured-run-py
  • fix-version
  • fix-withlatestfrom
  • fix/709-concurrent-futures
  • fix/bump-script-lock-and-sed
  • fix/tkinter-test-skip-pypy-linux
  • flake8-repo
  • fluent-style
  • format-tests
  • gi-require_version-before-import
  • github-publish
  • improvement/combine-latest-thread-safety
  • issue-697
  • master
  • migrate-to-uv
  • modern-typehints
  • optimize-build
  • package-name
  • patch-1
  • poetry
  • poetry-cache
  • pre-commit
  • pre-release
  • py314
  • pyright-254
  • python-3.11
  • reactivex
  • reactivex-rename
  • release/5.0.0-rc.1
  • release/5.0.0-rc.2
  • release/master
  • release/stable-5.0.0
  • release/v1.6.x
  • release/v2.0.x
  • release/v3.2.x
  • repo-assist/eng-pyright-test-scheduler-2026-04-17-762f95f7e6558b77
  • repo-assist/eng-uv-caching-2026-04-25-5d8d9a4690702132
  • repo-assist/fix-issue-480-scheduler-forwarding-ea9c5c512fb11be9
  • repo-assist/fix-issue-697-timer-resubscription-1e703fbea58df523
  • repo-assist/fix-issue-712-retry-resubscription-2b9941042da6d10e
  • repo-assist/improve-typing-exports-2026-04-18-60f123bfd9e95e24
  • repo-assist/pyright-cleanup-test-observable-2026-04-26-3187c4c0696b18d4
  • repo-assist/pyright-cleanup-test-observable-2026-05-01-7222f55d1674f33a
  • repo-assist/pyright-cleanup-test-subject-scheduler-2026-04-17-e214b615e3b8b313
  • repo-assist/pyright-ruff-cleanup-test-observable-scheduler-2026-04-21-6f569da2d139f64e
  • repo-assist/test-exclusive-operator-2026-05-02-2b47081797817f4d
  • repo-assist/testing-improvements-2026-04-17-5e55b8d05a9bf3ee
  • return-types
  • revert-120-multiprocessing
  • rmahfoud/fixes
  • timeout-on-event-loop
  • type-fixes
  • update-actions-cache
  • update-code-checks
  • update-pyright
  • upgrade-deps
  • upgrade-pyright
  • use-ruff
  • v1.5.9
  • v3.0.0
  • v3.0.1
  • v3.1.0
  • v3.1.0_se2
  • v3.1.1
  • v4
  • v4.0.0
  • v4.0.0a4
  • v4.0.0a5
  • v4.0.0a6
  • v4.0.0b1
  • v4.0.0b2
  • v4.0.0b3
  • v4.0.0b4
  • v4.0.0b5
  • v4.0.1
  • v4.0.2
  • v4.0.3
  • v4.0.4
  • v4.1.0
  • v5.0.0a1
  • v5.0.0a2
  • vnext
  • window-thread-issue

21 Jul 2026 08:17PM UTC coverage: 93.618% (+0.04%) from 93.574%
29865117778

push

github

web-flow
fix(operators): accept concurrent.futures.Future wherever futures are accepted (#806)

Since the 3.0 rewrite every operator tested for futures with
`isinstance(x, asyncio.Future)`, so a `concurrent.futures.Future` fell
through to `from_(...)` and raised `TypeError: 'Future' object is not
iterable`. RxPY 2 duck-typed futures via `add_done_callback` and accepted
both flavours.

Restore that behaviour: add a public `reactivex.typing.AnyFuture[T]` alias
(`asyncio.Future[T] | concurrent.futures.Future[T]`) and an internal
`is_future()` TypeIs guard, and use them at all 16 isinstance sites --
flat_map, merge, amb, catch, exclusive, skip_until, switch_latest,
take_until, timeout, while_do, case, defer, if_then, zip,
on_error_resume_next and from_future.

`from_future()` already worked with both kinds at runtime; only its
annotation said otherwise. `to_future()` keeps returning an
`asyncio.Future`, since it constructs one.

Also widen the annotations so the pattern type-checks: `flat_map` gains
future-returning overloads, `merge_all` accepts futures as inner sources,
and the `amb`/`take_until`/`timeout` facades now match their impls.

examples/parallel/timer.py works again as written, and gains the
`__main__` guard that ProcessPoolExecutor needs on non-fork start methods.

Fixes #709

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

191 of 191 new or added lines in 23 files covered. (100.0%)

25702 of 27454 relevant lines covered (93.62%)

0.94 hits per line

Relevant lines Covered
Build:
Build:
27454 RELEVANT LINES 25702 COVERED LINES
0.94 HITS PER LINE
Source Files on master
  • Tree
  • List 417
  • Changed 22
  • Source Changed 0
  • Coverage Changed 22
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
29865117778 master fix(operators): accept concurrent.futures.Future wherever futures are accepted (#806) Since the 3.0 rewrite every operator tested for futures with `isinstance(x, asyncio.Future)`, so a `concurrent.futures.Future` fell through to `from_(...)` and ... push 21 Jul 2026 08:18PM UTC web-flow github
93.62
29864824147 fix/709-concurrent-futures fix(operators): accept concurrent.futures.Future wherever futures are accepted Since the 3.0 rewrite every operator tested for futures with `isinstance(x, asyncio.Future)`, so a `concurrent.futures.Future` fell through to `from_(...)` and raised ... Pull #806 21 Jul 2026 08:13PM UTC dbrattli github
93.62
29863867828 master fix(gtk): call gi.require_version before importing gi.repository (#749) * Call gi.require_version before importing, instead of after * fix(gtk): skip cleanly when GTK 3 is unavailable, pin Gdk in example require_version() raises ValueError when... push 21 Jul 2026 08:00PM UTC web-flow github
93.57
29863477558 gi-require_version-before-import Merge a18c560a7 into 95c54ac36 Pull #749 21 Jul 2026 07:56PM UTC web-flow github
93.57
29861651388 master feat(operators): add tap as an alias for do_action (#804) `tap` existed as an alias for `do_action` from 2014 until the RxPY 3.0 rewrite. It was provided by the `@extensionmethod(Observable, alias=...)` decorator, and disappeared in 5be144c1 (201... push 21 Jul 2026 07:29PM UTC web-flow github
93.58
29861267530 feat/tap-operator feat(operators): add tap as an alias for do_action `tap` existed as an alias for `do_action` from 2014 until the RxPY 3.0 rewrite. It was provided by the `@extensionmethod(Observable, alias=...)` decorator, and disappeared in 5be144c1 (2017-12-16... Pull #804 21 Jul 2026 07:23PM UTC dbrattli github
93.58
29811703340 master docs: fix broken Sphinx build and refresh docs for 5.0 (#803) The documentation build has been broken since the Poetry-to-uv migration. docs/conf.py read project metadata from the `[tool.poetry]` table, which no longer exists, so `config["tool"][... push 21 Jul 2026 07:47AM UTC web-flow github
93.56
29811304037 docs/fix-build-and-5.0-refresh docs: fix broken Sphinx build and refresh docs for 5.0 The documentation build has been broken since the Poetry-to-uv migration. docs/conf.py read project metadata from the `[tool.poetry]` table, which no longer exists, so `config["tool"]["poetry... Pull #803 21 Jul 2026 07:40AM UTC dbrattli github
93.56
29774556012 master chore: release reactivex@5.0.0 (#801) Co-authored-by: 🤖 easybuild-shipit <github-actions[bot]@users.noreply.github.com> push 20 Jul 2026 08:04PM UTC web-flow github
93.56
29774115213 release/master Merge dabc10e18 into 10ccc0a3d Pull #801 20 Jul 2026 08:01PM UTC web-flow github
93.56
See All Builds (1446)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc