reactivex 4.0.0b5__tar.gz → 5.0.0a2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reactivex might be problematic. Click here for more details.
- reactivex-5.0.0a2/.gitignore +85 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/PKG-INFO +67 -30
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/README.rst +53 -16
- reactivex-5.0.0a2/pyproject.toml +121 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/__init__.py +39 -48
- reactivex-5.0.0a2/reactivex/_version.py +1 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/disposable.py +3 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/observable.py +13 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/observer.py +2 -1
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/periodicscheduler.py +7 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/scheduler.py +10 -9
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/subject.py +5 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/compositedisposable.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/disposable.py +1 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/multipleassignmentdisposable.py +3 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/refcountdisposable.py +1 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/serialdisposable.py +5 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/singleassignmentdisposable.py +3 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/__init__.py +2 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/basic.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/concurrency.py +2 -1
- reactivex-5.0.0a2/reactivex/internal/constants.py +4 -0
- reactivex-5.0.0a2/reactivex/internal/curry.py +59 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/exceptions.py +7 -12
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/priorityqueue.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/internal/utils.py +6 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/notification.py +23 -22
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/case.py +5 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/catch.py +3 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/combinelatest.py +4 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/concat.py +3 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/connectableobservable.py +7 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/defer.py +4 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/empty.py +3 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/forkjoin.py +5 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/fromcallback.py +4 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/fromfuture.py +3 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/fromiterable.py +4 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/generate.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/generatewithrelativetime.py +4 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/groupedobservable.py +5 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/ifthen.py +3 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/interval.py +1 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/marbles.py +18 -17
- reactivex-5.0.0a2/reactivex/observable/mixins/__init__.py +32 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/combination.py +481 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/conditional.py +135 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/error_handling.py +130 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/filtering.py +1119 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/mathematical.py +277 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/multicasting.py +306 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/testing.py +193 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/time_based.py +209 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/transformation.py +632 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/utility.py +811 -0
- reactivex-5.0.0a2/reactivex/observable/mixins/windowing.py +688 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/never.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/observable.py +97 -52
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/onerrorresumenext.py +7 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/range.py +6 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/repeat.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/returnvalue.py +6 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/start.py +3 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/startasync.py +2 -1
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/throw.py +3 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/timer.py +12 -12
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/toasync.py +3 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/using.py +5 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/withlatestfrom.py +4 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/zip.py +7 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observer/autodetachobserver.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observer/observer.py +6 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observer/scheduledobserver.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/__init__.py +322 -282
- reactivex-5.0.0a2/reactivex/operators/_all.py +41 -0
- reactivex-5.0.0a2/reactivex/operators/_amb.py +105 -0
- reactivex-5.0.0a2/reactivex/operators/_asobservable.py +34 -0
- reactivex-5.0.0a2/reactivex/operators/_average.py +65 -0
- reactivex-5.0.0a2/reactivex/operators/_buffer.py +126 -0
- reactivex-5.0.0a2/reactivex/operators/_bufferwithtime.py +44 -0
- reactivex-5.0.0a2/reactivex/operators/_bufferwithtimeorcount.py +40 -0
- reactivex-5.0.0a2/reactivex/operators/_catch.py +79 -0
- reactivex-5.0.0a2/reactivex/operators/_combinelatest.py +38 -0
- reactivex-5.0.0a2/reactivex/operators/_concat.py +29 -0
- reactivex-5.0.0a2/reactivex/operators/_contains.py +44 -0
- reactivex-5.0.0a2/reactivex/operators/_count.py +43 -0
- reactivex-5.0.0a2/reactivex/operators/_debounce.py +177 -0
- reactivex-5.0.0a2/reactivex/operators/_defaultifempty.py +55 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_delay.py +24 -23
- reactivex-5.0.0a2/reactivex/operators/_delaysubscription.py +40 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_delaywithmapper.py +10 -11
- reactivex-5.0.0a2/reactivex/operators/_dematerialize.py +40 -0
- reactivex-5.0.0a2/reactivex/operators/_distinct.py +88 -0
- reactivex-5.0.0a2/reactivex/operators/_distinctuntilchanged.py +83 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_do.py +126 -118
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_dowhile.py +3 -2
- reactivex-5.0.0a2/reactivex/operators/_elementatordefault.py +75 -0
- reactivex-5.0.0a2/reactivex/operators/_exclusive.py +80 -0
- reactivex-5.0.0a2/reactivex/operators/_expand.py +107 -0
- reactivex-5.0.0a2/reactivex/operators/_filter.py +93 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_finallyaction.py +3 -2
- reactivex-5.0.0a2/reactivex/operators/_find.py +63 -0
- reactivex-5.0.0a2/reactivex/operators/_first.py +47 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_firstordefault.py +5 -4
- reactivex-5.0.0a2/reactivex/operators/_flatmap.py +135 -0
- reactivex-5.0.0a2/reactivex/operators/_forkjoin.py +33 -0
- reactivex-5.0.0a2/reactivex/operators/_groupby.py +51 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_groupbyuntil.py +13 -10
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_groupjoin.py +7 -6
- reactivex-5.0.0a2/reactivex/operators/_ignoreelements.py +37 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_isempty.py +15 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_join.py +6 -5
- reactivex-5.0.0a2/reactivex/operators/_last.py +49 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_lastordefault.py +8 -8
- reactivex-5.0.0a2/reactivex/operators/_map.py +86 -0
- reactivex-5.0.0a2/reactivex/operators/_materialize.py +47 -0
- reactivex-5.0.0a2/reactivex/operators/_max.py +44 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_maxby.py +5 -5
- reactivex-5.0.0a2/reactivex/operators/_merge.py +156 -0
- reactivex-5.0.0a2/reactivex/operators/_min.py +50 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_minby.py +9 -8
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_multicast.py +9 -9
- reactivex-5.0.0a2/reactivex/operators/_observeon.py +47 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_onerrorresumenext.py +2 -1
- reactivex-5.0.0a2/reactivex/operators/_pairwise.py +57 -0
- reactivex-5.0.0a2/reactivex/operators/_partition.py +95 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_pluck.py +4 -3
- reactivex-5.0.0a2/reactivex/operators/_publish.py +81 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_publishvalue.py +9 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_reduce.py +17 -13
- reactivex-5.0.0a2/reactivex/operators/_repeat.py +45 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_replay.py +9 -9
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_retry.py +12 -10
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_sample.py +31 -27
- reactivex-5.0.0a2/reactivex/operators/_scan.py +62 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_sequenceequal.py +9 -8
- reactivex-5.0.0a2/reactivex/operators/_single.py +46 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_singleordefault.py +6 -5
- reactivex-5.0.0a2/reactivex/operators/_skip.py +53 -0
- reactivex-5.0.0a2/reactivex/operators/_skiplast.py +56 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_skiplastwithtime.py +5 -4
- reactivex-5.0.0a2/reactivex/operators/_skipuntil.py +77 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_skipuntilwithtime.py +4 -3
- reactivex-5.0.0a2/reactivex/operators/_skipwhile.py +99 -0
- reactivex-5.0.0a2/reactivex/operators/_skipwithtime.py +70 -0
- reactivex-5.0.0a2/reactivex/operators/_slice.py +80 -0
- reactivex-5.0.0a2/reactivex/operators/_some.py +60 -0
- reactivex-5.0.0a2/reactivex/operators/_startswith.py +30 -0
- reactivex-5.0.0a2/reactivex/operators/_subscribeon.py +60 -0
- reactivex-5.0.0a2/reactivex/operators/_sum.py +37 -0
- reactivex-5.0.0a2/reactivex/operators/_switchlatest.py +92 -0
- reactivex-5.0.0a2/reactivex/operators/_take.py +57 -0
- reactivex-5.0.0a2/reactivex/operators/_takelast.py +56 -0
- reactivex-5.0.0a2/reactivex/operators/_takelastbuffer.py +56 -0
- reactivex-5.0.0a2/reactivex/operators/_takelastwithtime.py +72 -0
- reactivex-5.0.0a2/reactivex/operators/_takeuntil.py +52 -0
- reactivex-5.0.0a2/reactivex/operators/_takeuntilwithtime.py +56 -0
- reactivex-5.0.0a2/reactivex/operators/_takewhile.py +129 -0
- reactivex-5.0.0a2/reactivex/operators/_takewithtime.py +58 -0
- reactivex-5.0.0a2/reactivex/operators/_throttlefirst.py +64 -0
- reactivex-5.0.0a2/reactivex/operators/_timeinterval.py +57 -0
- reactivex-5.0.0a2/reactivex/operators/_timeout.py +103 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_timeoutwithmapper.py +6 -5
- reactivex-5.0.0a2/reactivex/operators/_timestamp.py +51 -0
- reactivex-5.0.0a2/reactivex/operators/_todict.py +72 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_tofuture.py +24 -15
- reactivex-5.0.0a2/reactivex/operators/_toiterable.py +50 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_tomarbles.py +5 -5
- reactivex-5.0.0a2/reactivex/operators/_toset.py +47 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_whiledo.py +2 -1
- reactivex-5.0.0a2/reactivex/operators/_window.py +178 -0
- reactivex-5.0.0a2/reactivex/operators/_windowwithcount.py +94 -0
- reactivex-5.0.0a2/reactivex/operators/_windowwithtime.py +137 -0
- reactivex-5.0.0a2/reactivex/operators/_windowwithtimeorcount.py +112 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/_withlatestfrom.py +13 -9
- reactivex-5.0.0a2/reactivex/operators/_zip.py +87 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/connectable/_refcount.py +4 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/pipe.py +30 -43
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/run.py +8 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/catchscheduler.py +11 -10
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/currentthreadscheduler.py +7 -8
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/asyncioscheduler.py +7 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/asynciothreadsafescheduler.py +12 -14
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/eventletscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/geventscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/ioloopscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/twistedscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloopscheduler.py +9 -12
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/historicalscheduler.py +1 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/immediatescheduler.py +5 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/gtkscheduler.py +6 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/pygamescheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/qtscheduler.py +6 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/tkinterscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/wxscheduler.py +7 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/newthreadscheduler.py +6 -8
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/periodicscheduler.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/scheduleditem.py +6 -8
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/scheduler.py +7 -7
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/threadpoolscheduler.py +3 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/timeoutscheduler.py +5 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/trampoline.py +1 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/trampolinescheduler.py +5 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/virtualtimescheduler.py +9 -9
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/asyncsubject.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/behaviorsubject.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/innersubscription.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/replaysubject.py +11 -10
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/subject.py +4 -4
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/coldobservable.py +5 -5
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/hotobservable.py +6 -6
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/marbles.py +23 -22
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/mockdisposable.py +1 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/mockobserver.py +2 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/reactivetest.py +4 -2
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/recorded.py +1 -1
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/subscription.py +3 -3
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/testscheduler.py +15 -15
- reactivex-5.0.0a2/reactivex/typing.py +68 -0
- ReactiveX-4.0.0b5/pyproject.toml +0 -78
- ReactiveX-4.0.0b5/reactivex/_version.py +0 -1
- ReactiveX-4.0.0b5/reactivex/internal/constants.py +0 -4
- ReactiveX-4.0.0b5/reactivex/operators/_all.py +0 -24
- ReactiveX-4.0.0b5/reactivex/operators/_amb.py +0 -92
- ReactiveX-4.0.0b5/reactivex/operators/_asobservable.py +0 -31
- ReactiveX-4.0.0b5/reactivex/operators/_average.py +0 -62
- ReactiveX-4.0.0b5/reactivex/operators/_buffer.py +0 -80
- ReactiveX-4.0.0b5/reactivex/operators/_bufferwithtime.py +0 -24
- ReactiveX-4.0.0b5/reactivex/operators/_bufferwithtimeorcount.py +0 -21
- ReactiveX-4.0.0b5/reactivex/operators/_catch.py +0 -78
- ReactiveX-4.0.0b5/reactivex/operators/_combinelatest.py +0 -30
- ReactiveX-4.0.0b5/reactivex/operators/_concat.py +0 -26
- ReactiveX-4.0.0b5/reactivex/operators/_contains.py +0 -25
- ReactiveX-4.0.0b5/reactivex/operators/_count.py +0 -27
- ReactiveX-4.0.0b5/reactivex/operators/_debounce.py +0 -174
- ReactiveX-4.0.0b5/reactivex/operators/_defaultifempty.py +0 -52
- ReactiveX-4.0.0b5/reactivex/operators/_delaysubscription.py +0 -38
- ReactiveX-4.0.0b5/reactivex/operators/_dematerialize.py +0 -36
- ReactiveX-4.0.0b5/reactivex/operators/_distinct.py +0 -83
- ReactiveX-4.0.0b5/reactivex/operators/_distinctuntilchanged.py +0 -80
- ReactiveX-4.0.0b5/reactivex/operators/_elementatordefault.py +0 -51
- ReactiveX-4.0.0b5/reactivex/operators/_exclusive.py +0 -74
- ReactiveX-4.0.0b5/reactivex/operators/_expand.py +0 -102
- ReactiveX-4.0.0b5/reactivex/operators/_filter.py +0 -98
- ReactiveX-4.0.0b5/reactivex/operators/_find.py +0 -46
- ReactiveX-4.0.0b5/reactivex/operators/_first.py +0 -40
- ReactiveX-4.0.0b5/reactivex/operators/_flatmap.py +0 -131
- ReactiveX-4.0.0b5/reactivex/operators/_forkjoin.py +0 -28
- ReactiveX-4.0.0b5/reactivex/operators/_groupby.py +0 -30
- ReactiveX-4.0.0b5/reactivex/operators/_ignoreelements.py +0 -32
- ReactiveX-4.0.0b5/reactivex/operators/_last.py +0 -44
- ReactiveX-4.0.0b5/reactivex/operators/_map.py +0 -72
- ReactiveX-4.0.0b5/reactivex/operators/_materialize.py +0 -48
- ReactiveX-4.0.0b5/reactivex/operators/_max.py +0 -37
- ReactiveX-4.0.0b5/reactivex/operators/_merge.py +0 -153
- ReactiveX-4.0.0b5/reactivex/operators/_min.py +0 -44
- ReactiveX-4.0.0b5/reactivex/operators/_observeon.py +0 -43
- ReactiveX-4.0.0b5/reactivex/operators/_pairwise.py +0 -53
- ReactiveX-4.0.0b5/reactivex/operators/_partition.py +0 -88
- ReactiveX-4.0.0b5/reactivex/operators/_publish.py +0 -66
- ReactiveX-4.0.0b5/reactivex/operators/_repeat.py +0 -46
- ReactiveX-4.0.0b5/reactivex/operators/_scan.py +0 -60
- ReactiveX-4.0.0b5/reactivex/operators/_single.py +0 -36
- ReactiveX-4.0.0b5/reactivex/operators/_skip.py +0 -50
- ReactiveX-4.0.0b5/reactivex/operators/_skiplast.py +0 -52
- ReactiveX-4.0.0b5/reactivex/operators/_skipuntil.py +0 -72
- ReactiveX-4.0.0b5/reactivex/operators/_skipwhile.py +0 -78
- ReactiveX-4.0.0b5/reactivex/operators/_skipwithtime.py +0 -66
- ReactiveX-4.0.0b5/reactivex/operators/_slice.py +0 -75
- ReactiveX-4.0.0b5/reactivex/operators/_some.py +0 -59
- ReactiveX-4.0.0b5/reactivex/operators/_startswith.py +0 -28
- ReactiveX-4.0.0b5/reactivex/operators/_subscribeon.py +0 -57
- ReactiveX-4.0.0b5/reactivex/operators/_sum.py +0 -20
- ReactiveX-4.0.0b5/reactivex/operators/_switchlatest.py +0 -90
- ReactiveX-4.0.0b5/reactivex/operators/_take.py +0 -53
- ReactiveX-4.0.0b5/reactivex/operators/_takelast.py +0 -55
- ReactiveX-4.0.0b5/reactivex/operators/_takelastbuffer.py +0 -55
- ReactiveX-4.0.0b5/reactivex/operators/_takelastwithtime.py +0 -68
- ReactiveX-4.0.0b5/reactivex/operators/_takeuntil.py +0 -51
- ReactiveX-4.0.0b5/reactivex/operators/_takeuntilwithtime.py +0 -53
- ReactiveX-4.0.0b5/reactivex/operators/_takewhile.py +0 -121
- ReactiveX-4.0.0b5/reactivex/operators/_takewithtime.py +0 -53
- ReactiveX-4.0.0b5/reactivex/operators/_throttlefirst.py +0 -57
- ReactiveX-4.0.0b5/reactivex/operators/_timeinterval.py +0 -53
- ReactiveX-4.0.0b5/reactivex/operators/_timeout.py +0 -101
- ReactiveX-4.0.0b5/reactivex/operators/_timestamp.py +0 -49
- ReactiveX-4.0.0b5/reactivex/operators/_todict.py +0 -64
- ReactiveX-4.0.0b5/reactivex/operators/_toiterable.py +0 -44
- ReactiveX-4.0.0b5/reactivex/operators/_toset.py +0 -37
- ReactiveX-4.0.0b5/reactivex/operators/_window.py +0 -177
- ReactiveX-4.0.0b5/reactivex/operators/_windowwithcount.py +0 -92
- ReactiveX-4.0.0b5/reactivex/operators/_windowwithtime.py +0 -121
- ReactiveX-4.0.0b5/reactivex/operators/_windowwithtimeorcount.py +0 -96
- ReactiveX-4.0.0b5/reactivex/operators/_zip.py +0 -83
- ReactiveX-4.0.0b5/reactivex/typing.py +0 -57
- ReactiveX-4.0.0b5/setup.py +0 -45
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/LICENSE +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/abc/startable.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/booleandisposable.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/disposable/scheduleddisposable.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/amb.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observable/merge.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observer/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/observer/observeonobserver.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/operators/connectable/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/py.typed +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/eventloop/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/scheduler/mainloop/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/subject/__init__.py +0 -0
- {ReactiveX-4.0.0b5 → reactivex-5.0.0a2}/reactivex/testing/__init__.py +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
*.py[cod]
|
|
2
|
+
|
|
3
|
+
# C extensions
|
|
4
|
+
*.so
|
|
5
|
+
|
|
6
|
+
# Packages
|
|
7
|
+
*.egg
|
|
8
|
+
*.egg-info
|
|
9
|
+
dist
|
|
10
|
+
build
|
|
11
|
+
eggs
|
|
12
|
+
.eggs
|
|
13
|
+
parts
|
|
14
|
+
bin
|
|
15
|
+
var
|
|
16
|
+
sdist
|
|
17
|
+
develop-eggs
|
|
18
|
+
.installed.cfg
|
|
19
|
+
lib
|
|
20
|
+
lib64
|
|
21
|
+
*tmp_dir
|
|
22
|
+
|
|
23
|
+
# Installer logs
|
|
24
|
+
pip-log.txt
|
|
25
|
+
|
|
26
|
+
# Unit test / coverage reports
|
|
27
|
+
.coverage
|
|
28
|
+
.tox
|
|
29
|
+
nosetests.xml
|
|
30
|
+
coverage.xml
|
|
31
|
+
htmlcov
|
|
32
|
+
.mypy_cache
|
|
33
|
+
.pytest_cache
|
|
34
|
+
|
|
35
|
+
# Virtual env
|
|
36
|
+
venv
|
|
37
|
+
|
|
38
|
+
# Translations
|
|
39
|
+
*.mo
|
|
40
|
+
|
|
41
|
+
# Mr Developer
|
|
42
|
+
.mr.developer.cfg
|
|
43
|
+
.project
|
|
44
|
+
.pydevproject
|
|
45
|
+
|
|
46
|
+
# Visual studio
|
|
47
|
+
*.suo
|
|
48
|
+
*.DotSettings.user
|
|
49
|
+
TestResults/
|
|
50
|
+
|
|
51
|
+
# Log files
|
|
52
|
+
*.log
|
|
53
|
+
Rx.pyperf
|
|
54
|
+
*.coverage
|
|
55
|
+
UpgradeLog.htm
|
|
56
|
+
TestResults/Rx.TE.Tests.mdf
|
|
57
|
+
TestResults/Rx.TE.Tests_log.ldf
|
|
58
|
+
*.user
|
|
59
|
+
|
|
60
|
+
# Cloud9
|
|
61
|
+
.c9
|
|
62
|
+
|
|
63
|
+
# PyCharm
|
|
64
|
+
.idea
|
|
65
|
+
.zedstate
|
|
66
|
+
|
|
67
|
+
# Spyder IDE
|
|
68
|
+
.spyproject/
|
|
69
|
+
|
|
70
|
+
.ipynb_checkpoints
|
|
71
|
+
.cache/
|
|
72
|
+
.vscode/
|
|
73
|
+
.noseids
|
|
74
|
+
_build
|
|
75
|
+
|
|
76
|
+
# Mac OS
|
|
77
|
+
.DS_Store
|
|
78
|
+
|
|
79
|
+
# Type checkers
|
|
80
|
+
.pyre
|
|
81
|
+
|
|
82
|
+
.ionide/
|
|
83
|
+
|
|
84
|
+
.python-version
|
|
85
|
+
__pycache__
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: reactivex
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0a2
|
|
4
4
|
Summary: ReactiveX (Rx) for Python
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Author-email: dag@brattli.net
|
|
9
|
-
|
|
5
|
+
Project-URL: Homepage, http://reactivex.io
|
|
6
|
+
Project-URL: Repository, https://github.com/ReactiveX/RxPY
|
|
7
|
+
Project-URL: Documentation, https://rxpy.readthedocs.io/en/latest/
|
|
8
|
+
Author-email: Dag Brattli <dag@brattli.net>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
10
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
12
|
Classifier: Environment :: Other Environment
|
|
12
13
|
Classifier: Intended Audience :: Developers
|
|
@@ -14,14 +15,14 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
14
15
|
Classifier: Operating System :: OS Independent
|
|
15
16
|
Classifier: Programming Language :: Python :: 3
|
|
16
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
22
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
-
Requires-
|
|
23
|
-
|
|
24
|
-
Project-URL: Repository, https://github.com/ReactiveX/RxPY
|
|
24
|
+
Requires-Python: <4.0,>=3.10
|
|
25
|
+
Requires-Dist: typing-extensions<5,>=4.15.0
|
|
25
26
|
Description-Content-Type: text/x-rst
|
|
26
27
|
|
|
27
28
|
===============================
|
|
@@ -54,12 +55,12 @@ ReactiveX for Python v4
|
|
|
54
55
|
For v3.X please go to the `v3 branch
|
|
55
56
|
<https://github.com/ReactiveX/RxPY/tree/release/v3.2.x>`_.
|
|
56
57
|
|
|
57
|
-
ReactiveX for Python v4.x runs on `Python <http://www.python.org/>`_ 3.
|
|
58
|
+
ReactiveX for Python v4.x runs on `Python <http://www.python.org/>`_ 3.9 or above. To
|
|
58
59
|
install:
|
|
59
60
|
|
|
60
61
|
.. code:: console
|
|
61
62
|
|
|
62
|
-
pip3 install reactivex
|
|
63
|
+
pip3 install reactivex
|
|
63
64
|
|
|
64
65
|
|
|
65
66
|
About ReactiveX
|
|
@@ -85,6 +86,43 @@ Schedulers.
|
|
|
85
86
|
composed.subscribe(lambda value: print("Received {0}".format(value)))
|
|
86
87
|
|
|
87
88
|
|
|
89
|
+
Fluent and Functional Syntax
|
|
90
|
+
-----------------------------
|
|
91
|
+
|
|
92
|
+
RxPY supports both **fluent** (method chaining) and **functional** (pipe-based) syntax,
|
|
93
|
+
giving you the flexibility to choose the style that works best for your codebase:
|
|
94
|
+
|
|
95
|
+
**Fluent style** - Method chaining for a more Pythonic feel:
|
|
96
|
+
|
|
97
|
+
.. code:: python
|
|
98
|
+
|
|
99
|
+
import reactivex as rx
|
|
100
|
+
|
|
101
|
+
result = (rx.of(1, 2, 3, 4, 5)
|
|
102
|
+
.map(lambda x: x * 2)
|
|
103
|
+
.filter(lambda x: x > 5)
|
|
104
|
+
.reduce(lambda acc, x: acc + x, 0)
|
|
105
|
+
)
|
|
106
|
+
result.subscribe(print) # Output: 24
|
|
107
|
+
|
|
108
|
+
**Functional style** - Pipe-based for functional composition:
|
|
109
|
+
|
|
110
|
+
.. code:: python
|
|
111
|
+
|
|
112
|
+
import reactivex as rx
|
|
113
|
+
from reactivex import operators as ops
|
|
114
|
+
|
|
115
|
+
result = rx.of(1, 2, 3, 4, 5).pipe(
|
|
116
|
+
ops.map(lambda x: x * 2),
|
|
117
|
+
ops.filter(lambda x: x > 5),
|
|
118
|
+
ops.reduce(lambda acc, x: acc + x, 0)
|
|
119
|
+
)
|
|
120
|
+
result.subscribe(print) # Output: 24
|
|
121
|
+
|
|
122
|
+
Both styles are **fully supported** and can even be mixed in the same pipeline.
|
|
123
|
+
Choose the style that best fits your team's preferences and coding standards.
|
|
124
|
+
|
|
125
|
+
|
|
88
126
|
Learning ReactiveX
|
|
89
127
|
------------------
|
|
90
128
|
|
|
@@ -132,8 +170,12 @@ need to be written with an ``_`` in Python:
|
|
|
132
170
|
|
|
133
171
|
.. code:: python
|
|
134
172
|
|
|
173
|
+
# Functional style
|
|
135
174
|
group = source.pipe(ops.group_by(lambda i: i % 3))
|
|
136
175
|
|
|
176
|
+
# Or fluent style
|
|
177
|
+
group = source.group_by(lambda i: i % 3)
|
|
178
|
+
|
|
137
179
|
With ReactiveX for Python you should use `named keyword arguments
|
|
138
180
|
<https://docs.python.org/3/glossary.html>`_ instead of positional arguments when an
|
|
139
181
|
operator has multiple optional arguments. RxPY will not try to detect which arguments
|
|
@@ -142,35 +184,30 @@ you are giving to the operator (or not).
|
|
|
142
184
|
Development
|
|
143
185
|
-----------
|
|
144
186
|
|
|
145
|
-
This project is managed using `
|
|
146
|
-
using `
|
|
147
|
-
<https://github.com/
|
|
148
|
-
<https://github.com/microsoft/pyright>`_ and `mypy <http://mypy-lang.org/>`_.
|
|
187
|
+
This project is managed using `uv <https://docs.astral.sh/uv/>`_. Code is formatted
|
|
188
|
+
using `Ruff <https://github.com/astral-sh/ruff>`_. Code is statically type checked
|
|
189
|
+
using `pyright <https://github.com/microsoft/pyright>`_.
|
|
149
190
|
|
|
150
|
-
|
|
151
|
-
first configure Poetry to make its virtual environment in the
|
|
152
|
-
repository:
|
|
191
|
+
After cloning the repository, install dependencies:
|
|
153
192
|
|
|
154
193
|
.. code:: console
|
|
155
194
|
|
|
156
|
-
|
|
195
|
+
uv sync
|
|
157
196
|
|
|
158
|
-
|
|
197
|
+
Run unit tests:
|
|
159
198
|
|
|
160
199
|
.. code:: console
|
|
161
200
|
|
|
162
|
-
|
|
163
|
-
poetry run pre-commit install
|
|
201
|
+
uv run pytest
|
|
164
202
|
|
|
165
|
-
Run
|
|
203
|
+
Run type checking:
|
|
166
204
|
|
|
167
205
|
.. code:: console
|
|
168
206
|
|
|
169
|
-
|
|
207
|
+
uv run pyright
|
|
170
208
|
|
|
171
209
|
Run code checks (manually):
|
|
172
210
|
|
|
173
211
|
.. code:: console
|
|
174
212
|
|
|
175
|
-
|
|
176
|
-
|
|
213
|
+
uv run pre-commit run --all-files
|
|
@@ -28,12 +28,12 @@ ReactiveX for Python v4
|
|
|
28
28
|
For v3.X please go to the `v3 branch
|
|
29
29
|
<https://github.com/ReactiveX/RxPY/tree/release/v3.2.x>`_.
|
|
30
30
|
|
|
31
|
-
ReactiveX for Python v4.x runs on `Python <http://www.python.org/>`_ 3.
|
|
31
|
+
ReactiveX for Python v4.x runs on `Python <http://www.python.org/>`_ 3.9 or above. To
|
|
32
32
|
install:
|
|
33
33
|
|
|
34
34
|
.. code:: console
|
|
35
35
|
|
|
36
|
-
pip3 install reactivex
|
|
36
|
+
pip3 install reactivex
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
About ReactiveX
|
|
@@ -59,6 +59,43 @@ Schedulers.
|
|
|
59
59
|
composed.subscribe(lambda value: print("Received {0}".format(value)))
|
|
60
60
|
|
|
61
61
|
|
|
62
|
+
Fluent and Functional Syntax
|
|
63
|
+
-----------------------------
|
|
64
|
+
|
|
65
|
+
RxPY supports both **fluent** (method chaining) and **functional** (pipe-based) syntax,
|
|
66
|
+
giving you the flexibility to choose the style that works best for your codebase:
|
|
67
|
+
|
|
68
|
+
**Fluent style** - Method chaining for a more Pythonic feel:
|
|
69
|
+
|
|
70
|
+
.. code:: python
|
|
71
|
+
|
|
72
|
+
import reactivex as rx
|
|
73
|
+
|
|
74
|
+
result = (rx.of(1, 2, 3, 4, 5)
|
|
75
|
+
.map(lambda x: x * 2)
|
|
76
|
+
.filter(lambda x: x > 5)
|
|
77
|
+
.reduce(lambda acc, x: acc + x, 0)
|
|
78
|
+
)
|
|
79
|
+
result.subscribe(print) # Output: 24
|
|
80
|
+
|
|
81
|
+
**Functional style** - Pipe-based for functional composition:
|
|
82
|
+
|
|
83
|
+
.. code:: python
|
|
84
|
+
|
|
85
|
+
import reactivex as rx
|
|
86
|
+
from reactivex import operators as ops
|
|
87
|
+
|
|
88
|
+
result = rx.of(1, 2, 3, 4, 5).pipe(
|
|
89
|
+
ops.map(lambda x: x * 2),
|
|
90
|
+
ops.filter(lambda x: x > 5),
|
|
91
|
+
ops.reduce(lambda acc, x: acc + x, 0)
|
|
92
|
+
)
|
|
93
|
+
result.subscribe(print) # Output: 24
|
|
94
|
+
|
|
95
|
+
Both styles are **fully supported** and can even be mixed in the same pipeline.
|
|
96
|
+
Choose the style that best fits your team's preferences and coding standards.
|
|
97
|
+
|
|
98
|
+
|
|
62
99
|
Learning ReactiveX
|
|
63
100
|
------------------
|
|
64
101
|
|
|
@@ -106,8 +143,12 @@ need to be written with an ``_`` in Python:
|
|
|
106
143
|
|
|
107
144
|
.. code:: python
|
|
108
145
|
|
|
146
|
+
# Functional style
|
|
109
147
|
group = source.pipe(ops.group_by(lambda i: i % 3))
|
|
110
148
|
|
|
149
|
+
# Or fluent style
|
|
150
|
+
group = source.group_by(lambda i: i % 3)
|
|
151
|
+
|
|
111
152
|
With ReactiveX for Python you should use `named keyword arguments
|
|
112
153
|
<https://docs.python.org/3/glossary.html>`_ instead of positional arguments when an
|
|
113
154
|
operator has multiple optional arguments. RxPY will not try to detect which arguments
|
|
@@ -116,34 +157,30 @@ you are giving to the operator (or not).
|
|
|
116
157
|
Development
|
|
117
158
|
-----------
|
|
118
159
|
|
|
119
|
-
This project is managed using `
|
|
120
|
-
using `
|
|
121
|
-
<https://github.com/
|
|
122
|
-
<https://github.com/microsoft/pyright>`_ and `mypy <http://mypy-lang.org/>`_.
|
|
160
|
+
This project is managed using `uv <https://docs.astral.sh/uv/>`_. Code is formatted
|
|
161
|
+
using `Ruff <https://github.com/astral-sh/ruff>`_. Code is statically type checked
|
|
162
|
+
using `pyright <https://github.com/microsoft/pyright>`_.
|
|
123
163
|
|
|
124
|
-
|
|
125
|
-
first configure Poetry to make its virtual environment in the
|
|
126
|
-
repository:
|
|
164
|
+
After cloning the repository, install dependencies:
|
|
127
165
|
|
|
128
166
|
.. code:: console
|
|
129
167
|
|
|
130
|
-
|
|
168
|
+
uv sync
|
|
131
169
|
|
|
132
|
-
|
|
170
|
+
Run unit tests:
|
|
133
171
|
|
|
134
172
|
.. code:: console
|
|
135
173
|
|
|
136
|
-
|
|
137
|
-
poetry run pre-commit install
|
|
174
|
+
uv run pytest
|
|
138
175
|
|
|
139
|
-
Run
|
|
176
|
+
Run type checking:
|
|
140
177
|
|
|
141
178
|
.. code:: console
|
|
142
179
|
|
|
143
|
-
|
|
180
|
+
uv run pyright
|
|
144
181
|
|
|
145
182
|
Run code checks (manually):
|
|
146
183
|
|
|
147
184
|
.. code:: console
|
|
148
185
|
|
|
149
|
-
|
|
186
|
+
uv run pre-commit run --all-files
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "reactivex"
|
|
3
|
+
version = "5.0.0a2"
|
|
4
|
+
description = "ReactiveX (Rx) for Python"
|
|
5
|
+
authors = [{ name = "Dag Brattli", email = "dag@brattli.net" }]
|
|
6
|
+
requires-python = ">= 3.10, < 4.0"
|
|
7
|
+
readme = "README.rst"
|
|
8
|
+
license = "MIT"
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 5 - Production/Stable",
|
|
11
|
+
"Environment :: Other Environment",
|
|
12
|
+
"Intended Audience :: Developers",
|
|
13
|
+
"License :: OSI Approved :: MIT License",
|
|
14
|
+
"Operating System :: OS Independent",
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Programming Language :: Python :: 3.10",
|
|
17
|
+
"Programming Language :: Python :: 3.11",
|
|
18
|
+
"Programming Language :: Python :: 3.12",
|
|
19
|
+
"Programming Language :: Python :: 3.13",
|
|
20
|
+
"Programming Language :: Python :: 3.14",
|
|
21
|
+
"Programming Language :: Python :: Implementation :: CPython",
|
|
22
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
23
|
+
]
|
|
24
|
+
dependencies = ["typing-extensions>=4.15.0,<5"]
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "http://reactivex.io"
|
|
28
|
+
Repository = "https://github.com/ReactiveX/RxPY"
|
|
29
|
+
Documentation = "https://rxpy.readthedocs.io/en/latest/"
|
|
30
|
+
|
|
31
|
+
[dependency-groups]
|
|
32
|
+
test = [
|
|
33
|
+
"pyyaml>=6.0.3,<7",
|
|
34
|
+
"pytest-asyncio>=1.2.0,<1.3.0",
|
|
35
|
+
"pytest>=8.4.1,<9",
|
|
36
|
+
"coverage>=6.3.2,<7",
|
|
37
|
+
"pytest-xdist>=3.8.0,<4",
|
|
38
|
+
"ruff>=0.14.0,<1",
|
|
39
|
+
"pyright>=1.1.407,<1.2.0",
|
|
40
|
+
"mypy>=1.18.2,<1.19.0",
|
|
41
|
+
"coveralls>=4.0.2,<5",
|
|
42
|
+
"pre-commit>=4.3.0,<5",
|
|
43
|
+
"dunamai>=1.25.0,<2",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[tool.uv]
|
|
47
|
+
default-groups = ["test"]
|
|
48
|
+
|
|
49
|
+
[tool.hatch.build.targets.sdist]
|
|
50
|
+
include = [
|
|
51
|
+
"reactivex",
|
|
52
|
+
"reactivex/py.typed",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
[tool.hatch.build.targets.wheel]
|
|
56
|
+
include = [
|
|
57
|
+
"reactivex",
|
|
58
|
+
"reactivex/py.typed",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[build-system]
|
|
62
|
+
requires = ["hatchling"]
|
|
63
|
+
build-backend = "hatchling.build"
|
|
64
|
+
|
|
65
|
+
[tool.ruff]
|
|
66
|
+
line-length = 88
|
|
67
|
+
target-version = "5.0.0a2"
|
|
68
|
+
exclude = [
|
|
69
|
+
".git",
|
|
70
|
+
"__pycache__",
|
|
71
|
+
"docs/source/conf.py",
|
|
72
|
+
"old",
|
|
73
|
+
"build",
|
|
74
|
+
"dist",
|
|
75
|
+
"notebooks",
|
|
76
|
+
"examples",
|
|
77
|
+
# Test directories - remove as each stage is completed
|
|
78
|
+
# Stage 1 complete, Stage 2 partial (test_integration complete)
|
|
79
|
+
"tests/test_subject",
|
|
80
|
+
"tests/test_scheduler",
|
|
81
|
+
"tests/test_observable",
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
[tool.ruff.lint]
|
|
85
|
+
select = [
|
|
86
|
+
"E", # pycodestyle errors
|
|
87
|
+
"W", # pycodestyle warnings
|
|
88
|
+
"F", # pyflakes
|
|
89
|
+
"I", # isort
|
|
90
|
+
"UP", # pyupgrade
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
[tool.ruff.lint.pydocstyle]
|
|
94
|
+
convention = "google"
|
|
95
|
+
|
|
96
|
+
[tool.ruff.lint.isort]
|
|
97
|
+
known-first-party = ["reactivex"]
|
|
98
|
+
|
|
99
|
+
[tool.mypy]
|
|
100
|
+
python_version = "5.0.0a2"
|
|
101
|
+
follow_imports = "silent"
|
|
102
|
+
files = ["reactivex"]
|
|
103
|
+
disallow_any_generics = true
|
|
104
|
+
disallow_untyped_defs = true
|
|
105
|
+
|
|
106
|
+
[tool.pytest.ini_options]
|
|
107
|
+
testpaths = ["tests"]
|
|
108
|
+
asyncio_mode = "strict"
|
|
109
|
+
|
|
110
|
+
[tool.pyright]
|
|
111
|
+
include = ["reactivex", "tests"]
|
|
112
|
+
exclude = [
|
|
113
|
+
# Stage 1 complete, Stage 2 partial (test_integration complete)
|
|
114
|
+
"tests/test_subject",
|
|
115
|
+
"tests/test_scheduler",
|
|
116
|
+
"tests/test_observable",
|
|
117
|
+
]
|
|
118
|
+
reportImportCycles = false
|
|
119
|
+
reportMissingImports = false
|
|
120
|
+
pythonVersion = "3.10"
|
|
121
|
+
typeCheckingMode = "strict"
|