U vij@s$ddlmZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZmZmZmZmZmZmZddlmZddlmZddlmZddlmZm Z m!Z!m"Z"m#Z#m$Z$e dZ%e d Z&e d Z'e d Z(e d Z)e d Z*e dZ+e dZ,e dZ-e dZ.e dZ/e dZ0e#e%eee%gee1fdddZ2ee%eee%gee%fdddZ3eee%gee%fdddZ4de e!e%e5feee%gee5fddd Z6eeeee%geee%fd!d"d#Z7egeefeee%geee%fd$d%d&Z8eeeegeefeee%geee%fd'd(d)Z9de:e e:eee%geee%fd*d+d,Z;dejdejZDde%e ej e%eee%gee1fd?d@dAZEde ej#e%eee%gee:fddBdCZFdejZde e!e&ee'feee&gee'fd<d?d@Zde e"e&ee'feee&gee'fd<dAdBZe:eee%gee%fddCdDZe:eee%gee%fddEdFZe:eee%geee%fddGdHZdejdDdFdHdJdLdOdRdTdVdYd\dadddgdkdndqdsddwdyd{d}ddddddddddgZdS()Future) TYPE_CHECKINGAnyCallableDictIterableListOptionalSetTupleTypeTypeVarUnioncastoverload)ConnectableObservableGroupedObservable Notification Observableabccomposetyping)identity)NotSet)Subject) AccumulatorComparerMapper MapperIndexed PredicatePredicateIndexed_T_T1_T2_TKey_TState_TValue_TRight_TLeft_A_B_C_D) predicatereturncCsddlm}||S)akDetermines whether all elements of an observable sequence satisfy a condition. .. marble:: :alt: all --1--2--3--4--5-| [ all(i: i<10) ] ----------------true-| Example: >>> op = all(lambda value: value.length > 3) Args: predicate: A function to test each element for a condition. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element determining whether all elements in the source sequence pass the test in the specified predicate. )all_)Z_allr0)r-r0r1M/opt/alt/python38/lib/python3.8/site-packages/reactivex/operators/__init__.pyall:s r3) right_sourcer.cCsddlm}||S)aPropagates the observable sequence that reacts first. .. marble:: :alt: amb ---8--6--9-----------| --1--2--3---5--------| ----------10-20-30---| [ amb() ] --1--2--3---5--------| Example: >>> op = amb(ys) Returns: An operator function that takes an observable source and returns an observable sequence that surfaces any of the given sequences, whichever reacted first. r/)amb_)Z_ambr5)r4r5r1r1r2ambVs r6)r.cCsddlm}|S)zHides the identity of an observable sequence. Returns: An operator function that takes an observable source and returns and observable sequence that hides the identity of the source sequence. r/as_observable_)Z _asobservabler8r7r1r1r2 as_observableos r9N) key_mapperr.cCsddlm}||S)aThe average operator. Computes the average of an observable sequence of values that are in the sequence or obtained by invoking a transform function on each element of the input sequence if present. .. marble:: :alt: average ---1--2--3--4----| [ average() ] -----------------2.5-| Examples: >>> op = average() >>> op = average(lambda x: x.value) Args: key_mapper: [Optional] A transform function to apply to each element. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element with the average of the sequence of values. r/)average_)Z_averager;)r:r;r1r1r2average|s r<) boundariesr.cCsddlm}||S)a8Projects each element of an observable sequence into zero or more buffers. .. marble:: :alt: buffer ---a-----b-----c--------| --1--2--3--4--5--6--7---| [ buffer() ] ---1-----2,3---4,5------| Examples: >>> res = buffer(reactivex.interval(1.0)) Args: boundaries: Observable sequence whose elements denote the creation and completion of buffers. Returns: A function that takes an observable source and returns an observable sequence of buffers. r/)buffer_)_bufferr>)r=r>r1r1r2buffers r@)closing_mapperr.cCsddlm}||S)a6Projects each element of an observable sequence into zero or more buffers. .. marble:: :alt: buffer_when --------c-| --------c-| --------c-| ---1--2--3--4--5--6-------| [ buffer_when() ] +-------1,2-----3,4,5---6-| Examples: >>> res = buffer_when(lambda: reactivex.timer(0.5)) Args: closing_mapper: A function invoked to define the closing of each produced buffer. A buffer is started when the previous one is closed, resulting in non-overlapping buffers. The buffer is closed when one item is emitted or when the observable completes. Returns: A function that takes an observable source and returns an observable sequence of windows. r/) buffer_when_)r?rB)rArBr1r1r2 buffer_whens rC)openingsrAr.cCsddlm}|||S)aProjects each element of an observable sequence into zero or more buffers. .. marble:: :alt: buffer_toggle ---a-----------b--------------| ---d--| --------e--| ----1--2--3--4--5--6--7--8----| [ buffer_toggle() ] ------1----------------5,6,7--| >>> res = buffer_toggle(reactivex.interval(0.5), lambda i: reactivex.timer(i)) Args: openings: Observable sequence whose elements denote the creation of buffers. closing_mapper: A function invoked to define the closing of each produced buffer. Value from openings Observable that initiated the associated buffer is provided as argument to the function. The buffer is closed when one item is emitted or when the observable completes. Returns: A function that takes an observable source and returns an observable sequence of windows. r/)buffer_toggle_)r?rE)rDrArEr1r1r2 buffer_toggles rF)countskipr.cCsddlm}|||S)aProjects each element of an observable sequence into zero or more buffers which are produced based on element count information. .. marble:: :alt: buffer_with_count ----1-2-3-4-5-6------| [buffer_with_count(3)] --------1,2,3-4,5,6--| Examples: >>> res = buffer_with_count(10)(xs) >>> res = buffer_with_count(10, 1)(xs) Args: count: Length of each buffer. skip: [Optional] Number of elements to skip between creation of consecutive buffers. If not provided, defaults to the count. Returns: A function that takes an observable source and returns an observable sequence of buffers. r/)buffer_with_count_)r?rI)rGrHrIr1r1r2buffer_with_counts rJ)timespan timeshift schedulerr.cCsddlm}||||S)aProjects each element of an observable sequence into zero or more buffers which are produced based on timing information. .. marble:: :alt: buffer_with_time ---1-2-3-4-5-6-----| [buffer_with_time()] -------1,2,3-4,5,6-| Examples: >>> # non-overlapping segments of 1 second >>> res = buffer_with_time(1.0) >>> # segments of 1 second with time shift 0.5 seconds >>> res = buffer_with_time(1.0, 0.5) Args: timespan: Length of each buffer (specified as a float denoting seconds or an instance of timedelta). timeshift: [Optional] Interval between creation of consecutive buffers (specified as a float denoting seconds or an instance of timedelta). If not specified, the timeshift will be the same as the timespan argument, resulting in non-overlapping adjacent buffers. scheduler: [Optional] Scheduler to run the timer on. If not specified, the timeout scheduler is used Returns: An operator function that takes an observable source and returns an observable sequence of buffers. r/)buffer_with_time_)Z_bufferwithtimerN)rKrLrMrNr1r1r2buffer_with_time!s# rO)rKrGrMr.cCsddlm}||||S)aProjects each element of an observable sequence into a buffer that is completed when either it's full or a given amount of time has elapsed. .. marble:: :alt: buffer_with_time_or_count --1-2-3-4-5-6------| [ buffer() ] ------1,2,3-4,5,6--| Examples: >>> # 5s or 50 items in an array >>> res = source._buffer_with_time_or_count(5.0, 50) >>> # 5s or 50 items in an array >>> res = source._buffer_with_time_or_count(5.0, 50, Scheduler.timeout) Args: timespan: Maximum time length of a buffer. count: Maximum element count of a buffer. scheduler: [Optional] Scheduler to run buffering timers on. If not specified, the timeout scheduler is used. Returns: An operator function that takes an observable source and returns an observable sequence of buffers. r/)buffer_with_time_or_count_)Z_bufferwithtimeorcountrP)rKrGrMrPr1r1r2buffer_with_time_or_countIs rQ)handlerr.cCsddlm}||S)aContinues an observable sequence that is terminated by an exception with the next observable sequence. .. marble:: :alt: catch ---1---2---3-* a-7-8-| [ catch(a) ] ---1---2---3---7-8-| Examples: >>> op = catch(ys) >>> op = catch(lambda ex, src: ys(ex)) Args: handler: Second observable sequence used to produce results when an error occurred in the first sequence, or an exception handler function that returns an observable sequence given the error and source observable that occurred in the first sequence. Returns: A function taking an observable source and returns an observable sequence containing the first sequence's elements, followed by the elements of the handler sequence in case an exception occurred. r/)catch_)Z_catchrS)rRrSr1r1r2catchns! rT)othersr.cGsddlm}||S)azMerges the specified observable sequences into one observable sequence by creating a tuple whenever any of the observable sequences produces an element. .. marble:: :alt: combine_latest ---a-----b--c------| --1---2--------3---| [ combine_latest() ] ---a1-a2-b2-c2-c3--| Examples: >>> obs = combine_latest(other) >>> obs = combine_latest(obs1, obs2, obs3) Returns: An operator function that takes an observable sources and returns an observable sequence containing the result of combining elements of the sources into a tuple. r/)combine_latest_)Z_combinelatestrV)rUrVr1r1r2combine_latests rW)sourcesr.cGsddlm}||S)aConcatenates all the observable sequences. .. marble:: :alt: concat ---1--2--3--| --6--8--| [ concat() ] ---1--2--3----6--8-| Examples: >>> op = concat(xs, ys, zs) Returns: An operator function that takes one or more observable sources and returns an observable sequence that contains the elements of each given sequence, in sequential order. r/)concat_)Z_concatrY)rXrYr1r1r2concats rZ)projectr.cCstt|tddS)a;Projects each source value to an Observable which is merged in the output Observable, in a serialized fashion waiting for each one to complete before merging the next. Warning: if source values arrive endlessly and faster than their corresponding inner Observables can complete, it will result in memory issues as inner Observables amass in an unbounded buffer waiting for their turn to be subscribed to. Note: concatMap is equivalent to mergeMap with concurrency parameter set to 1. .. marble:: :alt: concat_map ---1------------2-----3----------------------------| [ concat_map(i: 10*i---10*i---10*i|) ] ---10---10---10-20---20---(20,30)---30---30--------| Examples: >>> op = concat(lambda i: reactivex.timer(1.0).pipe(take(3))) Args: project: Projecting function which takes the outer observable value and emits the inner observable Returns: An operator function that maps each value to the inner observable and emits its values in order. r/max_concurrent)rmapmerger[r1r1r2 concat_maps"ra)valuecomparerr.cCsddlm}|||S)aDetermines whether an observable sequence contains a specified element with an optional equality comparer. .. marble:: :alt: contains --1--2--3--4--| [ contains(3) ] --------------true-| Examples: >>> op = contains(42) >>> op = contains({ "value": 42 }, lambda x, y: x["value"] == y["value"]) Args: value: The value to locate in the source sequence. comparer: [Optional] An equality comparer to compare elements. Returns: A function that takes a source observable that returns an observable sequence containing a single element determining whether the source sequence contains an element that has the specified value. r/) contains_)Z _containsrd)rbrcrdr1r1r2containss recCsddlm}||S)a)Returns an observable sequence containing a value that represents how many elements in the specified observable sequence satisfy a condition if provided, else the count of items. .. marble:: :alt: count --1--2--3--4--| [ count(i: i>2) ] --------------2-| Examples: >>> op = count() >>> op = count(lambda x: x > 3) Args: predicate: A function to test each element for a condition. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element with a number that represents how many elements in the input sequence satisfy the condition in the predicate function if provided, else the count of items in the sequence. r/)count_)_countrf)r-rfr1r1r2rGs rG)duetimerMr.cCsddlm}|||S)atIgnores values from an observable sequence which are followed by another value before duetime. .. marble:: :alt: debounce --1--2-3-4--5------| [ debounce() ] ----1------4---5---| Example: >>> res = debounce(5.0) # 5 seconds Args: duetime: Duration of the throttle period for each value (specified as a float denoting seconds or an instance of timedelta). scheduler: Scheduler to debounce values on. Returns: An operator function that takes the source observable and returns the debounced observable sequence. r/) debounce_) _debounceri)rhrMrir1r1r2debounce0s rk) default_valuer.cCsdSNr1rlr1r1r2default_if_emptyQsrocCsdSrmr1r1r1r1r2roWscCsddlm}||S)aReturns the elements of the specified sequence or the specified value in a singleton sequence if the sequence is empty. .. marble:: :alt: default_if_empty ----------| [default_if_empty(42)] ----------42-| Examples: >>> res = obs = default_if_empty() >>> obs = default_if_empty(False) Args: default_value: The value to return if the sequence is empty. If not provided, this defaults to None. Returns: An operator function that takes an observable source and returns an observable sequence that contains the specified default value if the source is empty otherwise, the elements of the source. r/)default_if_empty_)Z_defaultifemptyrp)rlrpr1r1r2ro[s cCsddlm}|||dS)aTime shifts the observable sequence by delaying the subscription. .. marble:: :alt: delay_subscription ----1--2--3--4-----| [ delay() ] --------1--2--3--4-| Example: >>> res = delay_subscription(5.0) # 5s Args: duetime: Absolute or relative time to perform the subscription at. scheduler: Scheduler to delay subscription on. Returns: A function that take a source observable and returns a time-shifted observable sequence. r/)delay_subscription_rM)Z_delaysubscriptionrq)rhrMrqr1r1r2delay_subscription{s rs)subscription_delaydelay_duration_mapperr.cCsddlm}|||S)aTime shifts the observable sequence based on a subscription delay and a delay mapper function for each element. .. marble:: :alt: delay_with_mapper ----1--2--3--4-----| [ delay() ] --------1--2--3--4-| Examples: >>> # with mapper only >>> res = source.delay_with_mapper(lambda x: reactivex.timer(5.0)) >>> # with delay and mapper >>> res = source.delay_with_mapper( reactivex.timer(2.0), lambda x: reactivex.timer(x) ) Args: subscription_delay: [Optional] Sequence indicating the delay for the subscription to the source. delay_duration_mapper: [Optional] Selector function to retrieve a sequence indicating the delay for each given element. Returns: A function that takes an observable source and returns a time-shifted observable sequence. r/)delay_with_mapper_)Z_delaywithmapperrv)rtrurvr1r1r2delay_with_mappers$ rwcCsddlm}|S)aDematerialize operator. Dematerializes the explicit notification values of an observable sequence as implicit notifications. Returns: An observable sequence exhibiting the behavior corresponding to the source sequence's notification values. r/dematerialize_)Z_dematerializeryrxr1r1r2 dematerializes rzcCsddlm}|||S)aThe delay operator. .. marble:: :alt: delay ----1--2--3--4-----| [ delay() ] --------1--2--3--4-| Time shifts the observable sequence by duetime. The relative time intervals between the values are preserved. Examples: >>> res = delay(timedelta(seconds=10)) >>> res = delay(5.0) Args: duetime: Relative time, specified as a float denoting seconds or an instance of timedelta, by which to shift the observable sequence. scheduler: [Optional] Scheduler to run the delay timers on. If not specified, the timeout scheduler is used. Returns: A partially applied operator function that takes the source observable and returns a time-shifted sequence. r/)delay_)Z_delayr{)rhrMr{r1r1r2delays r|)r:rcr.cCsddlm}|||S)aReturns an observable sequence that contains only distinct elements according to the key_mapper and the comparer. Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. .. marble:: :alt: distinct -0-1-2-1-3-4-2-0---| [ distinct() ] -0-1-2---3-4-------| Examples: >>> res = obs = xs.distinct() >>> obs = xs.distinct(lambda x: x.id) >>> obs = xs.distinct(lambda x: x.id, lambda a,b: a == b) Args: key_mapper: [Optional] A function to compute the comparison key for each element. comparer: [Optional] Used to compare items in the collection. Returns: An operator function that takes an observable source and returns an observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. r/) distinct_)Z _distinctr})r:rcr}r1r1r2distincts! r~cCsddlm}|||S)aReturns an observable sequence that contains only distinct contiguous elements according to the key_mapper and the comparer. .. marble:: :alt: distinct_until_changed -0-1-1-2-3-1-2-2-3-| [ distinct() ] -0-1---2-3-1-2---3-| Examples: >>> op = distinct_until_changed(); >>> op = distinct_until_changed(lambda x: x.id) >>> op = distinct_until_changed(lambda x: x.id, lambda x, y: x == y) Args: key_mapper: [Optional] A function to compute the comparison key for each element. If not provided, it projects the value. comparer: [Optional] Equality comparer for computed key values. If not provided, defaults to an equality comparer function. Returns: An operator function that takes an observable source and returns an observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence. r/)distinct_until_changed_)Z_distinctuntilchangedr)r:rcrr1r1r2distinct_until_changeds r)observerr.cCsddlm}||S)aInvokes an action for each element in the observable sequence and invokes an action on graceful or exceptional termination of the observable sequence. This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. .. marble:: :alt: do ----1---2---3---4---| [ do(i: foo()) ] ----1---2---3---4---| >>> do(observer) Args: observer: Observer Returns: An operator function that takes the source observable and returns the source sequence with the side-effecting behavior applied. r/)do_)_dor)rrr1r1r2do?s r)on_nexton_error on_completedr.cCsddlm}||||S)aTInvokes an action for each element in the observable sequence and invokes an action on graceful or exceptional termination of the observable sequence. This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. .. marble:: :alt: do_action ----1---2---3---4---| [do_action(i: foo())] ----1---2---3---4---| Examples: >>> do_action(send) >>> do_action(on_next, on_error) >>> do_action(on_next, on_error, on_completed) Args: on_next: [Optional] Action to invoke for each element in the observable sequence. on_error: [Optional] Action to invoke on exceptional termination of the observable sequence. on_completed: [Optional] Action to invoke on graceful termination of the observable sequence. Returns: An operator function that takes the source observable an returns the source sequence with the side-effecting behavior applied. r/) do_action_)rr)rrrrr1r1r2 do_action]s$ r) conditionr.cCsddlm}||S)aRepeats source as long as condition holds emulating a do while loop. .. marble:: :alt: do_while --1--2--| [ do_while() ] --1--2--1--2--1--2--| Args: condition: The condition which determines if the source will be repeated. Returns: An observable sequence which is repeated as long as the condition holds. r/) do_while_)Z_dowhiler)rrr1r1r2do_whiles r)indexr.cCsddlm}||dS)aReturns the element at a specified index in a sequence. .. marble:: :alt: element_at ----1---2---3---4---| [ element_at(2) ] ------------3-| Example: >>> res = source.element_at(5) Args: index: The zero-based index of the element to retrieve. Returns: An operator function that takes an observable source and returns an observable sequence that produces the element at the specified position in the source sequence. r/element_at_or_default_FZ_elementatordefaultr)rrr1r1r2 element_ats r)rrlr.cCsddlm}||d|S)aKReturns the element at a specified index in a sequence or a default value if the index is out of range. .. marble:: :alt: element_at_or_default --1---2---3---4-| [ element_at(6, a) ] ----------------a-| Example: >>> res = source.element_at_or_default(5) >>> res = source.element_at_or_default(5, 0) Args: index: The zero-based index of the element to retrieve. default_value: [Optional] The default value if the index is outside the bounds of the source sequence. Returns: A function that takes an observable source and returns an observable sequence that produces the element at the specified position in the source sequence, or a default value if the index is outside the bounds of the source sequence. r/rTr)rrlrr1r1r2element_at_or_defaults rcCsddlm}|S)aPerforms a exclusive waiting for the first to finish before subscribing to another observable. Observables that come in between subscriptions will be dropped on the floor. .. marble:: :alt: exclusive -+---+-----+-------| +-7-8-9-| +-4-5-6-| +-1-2-3-| [ exclusive() ] ---1-2-3-----7-8-9-| Returns: An exclusive observable with only the results that happen when subscribed. r/ exclusive_)Z _exclusiverrr1r1r2 exclusives r)mapperr.cCsddlm}||S)arExpands an observable sequence by recursively invoking mapper. Args: mapper: Mapper function to invoke for each produced element, resulting in another sequence to which the mapper will be invoked recursively again. Returns: An observable sequence containing all the elements produced by the recursive expansion. r/)expand_)_expandr)rrr1r1r2expands rcCsddlm}||S)a9Filters the elements of an observable sequence based on a predicate. .. marble:: :alt: filter ----1---2---3---4---| [ filter(i: i>2) ] ------------3---4---| Example: >>> op = filter(lambda value: value < 10) Args: predicate: A function to test each source element for a condition. Returns: An operator function that takes an observable source and returns an observable sequence that contains elements from the input sequence that satisfy the condition. r/)filter_)_filterr)r-rr1r1r2filters r)predicate_indexedr.cCsddlm}||S)aFilters the elements of an observable sequence based on a predicate by incorporating the element's index. .. marble:: :alt: filter_indexed ----1---2---3---4---| [ filter(i,id: id>2)] ----------------4---| Example: >>> op = filter_indexed(lambda value, index: (value + index) < 10) Args: predicate: A function to test each source element for a condition; the second parameter of the function represents the index of the source element. Returns: An operator function that takes an observable source and returns an observable sequence that contains elements from the input sequence that satisfy the condition. r/)filter_indexed_)rr)rrr1r1r2filter_indexed$s r)actionr.cCsddlm}||S)avInvokes a specified action after the source observable sequence terminates gracefully or exceptionally. .. marble:: :alt: finally_action --1--2--3--4--| a-6-7-| [finally_action(a)] --1--2--3--4--6-7-| Example: >>> res = finally_action(lambda: print('sequence ended') Args: action: Action to invoke after the source observable sequence terminates. Returns: An operator function that takes an observable source and returns an observable sequence with the action-invoking termination behavior applied. r/)finally_action_)Z_finallyactionr)rrr1r1r2finally_actionCs rcCs6ddlm}ttttgtttdff||dS)aSearches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire Observable sequence. .. marble:: :alt: find --1--2--3--4--3--2--| [ find(3) ] --------3-| Args: predicate: The predicate that defines the conditions of the element to search for. Returns: An operator function that takes an observable source and returns an observable sequence with the first element that matches the conditions defined by the specified predicate, if found otherwise, None. r/ find_value_NF)_findrrrrr!rr-rr1r1r2find`s  rcCs6ddlm}ttttgtttdff||dS)aSearches for an element that matches the conditions defined by the specified predicate, and returns an Observable sequence with the zero-based index of the first occurrence within the entire Observable sequence. .. marble:: :alt: find_index --1--2--3--4--3--2--| [ find_index(3) ] --------2-| Args: predicate: The predicate that defines the conditions of the element to search for. Returns: An operator function that takes an observable source and returns an observable sequence with the zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1. r/rNT)rrrrrr!rintrr1r1r2 find_indexs  rcCsddlm}||S)aReturns the first element of an observable sequence that satisfies the condition in the predicate if present else the first item in the sequence. .. marble:: :alt: first ---1---2---3---4----| [ first(i: i>1) ] -------2-| Examples: >>> res = res = first() >>> res = res = first(lambda x: x > 3) Args: predicate: [Optional] A predicate function to evaluate for elements in the source sequence. Returns: A function that takes an observable source and returns an observable sequence containing the first element in the observable sequence that satisfies the condition in the predicate if provided, else the first item in the sequence. r/)first_)Z_firstr)r-rr1r1r2firsts r)r-rlr.cCsddlm}|||S)aReturns the first element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. .. marble:: :alt: first_or_default --1--2--3--4-| [first(i: i>10, 42)] -------------42-| Examples: >>> res = first_or_default() >>> res = first_or_default(lambda x: x > 3) >>> res = first_or_default(lambda x: x > 3, 0) >>> res = first_or_default(None, 0) Args: predicate: [optional] A predicate function to evaluate for elements in the source sequence. default_value: [Optional] The default value if no such element exists. If not specified, defaults to None. Returns: A function that takes an observable source and returns an observable sequence containing the first element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. r/)first_or_default_)Z_firstordefaultr)r-rlrr1r1r2first_or_defaults rcCsdSrmr1rr1r1r2flat_mapsrcCsdSrmr1rr1r1r2rscCsdSrmr1rr1r1r2rscCsdSrmr1rr1r1r2rscCsddlm}||S)a.The flat_map operator. .. marble:: :alt: flat_map --1-2-3-| [ flat_map(range) ] --0-0-1-0-1-2-| One of the Following: Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. Example: >>> flat_map(lambda x: Observable.range(0, x)) Or: Projects each element of the source observable sequence to the other observable sequence and merges the resulting observable sequences into one observable sequence. Example: >>> flat_map(Observable.of(1, 2, 3)) Args: mapper: A transform function to apply to each element or an observable sequence to project each element from the source sequence onto. Returns: An operator function that takes a source observable and returns an observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. r/) flat_map_)_flatmapr)rrr1r1r2rs( )mapper_indexedr.cCsdSrmr1rr1r1r2flat_map_indexed-srcCsdSrmr1rr1r1r2r3scCsdSrmr1rr1r1r2r9scCsdSrmr1rr1r1r2r?scCsddlm}||S)atThe `flat_map_indexed` operator. One of the Following: Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. .. marble:: :alt: flat_map_indexed --1-2-3-| [ flat_map(range) ] --0-0-1-0-1-2-| Example: >>> source.flat_map_indexed(lambda x, i: Observable.range(0, x)) Or: Projects each element of the source observable sequence to the other observable sequence and merges the resulting observable sequences into one observable sequence. Example: >>> source.flat_map_indexed(Observable.of(1, 2, 3)) Args: mapper_indexed: [Optional] A transform function to apply to each element or an observable sequence to project each element from the source sequence onto. Returns: An operator function that takes an observable source and returns an observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. r/)flat_map_indexed_)rr)rrr1r1r2rEs' z Future[_T2]cCsddlm}||S)aProjects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence. Args: mapper: A transform function to apply to each source element. The second parameter of the function represents the index of the source element. Returns: An operator function that takes an observable source and returns an observable sequence whose elements are the result of invoking the transform function on each element of source producing an observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received. r/)flat_map_latest_)rr)rrr1r1r2flat_map_latestqs r.cGsddlm}||S)aWait for observables to complete and then combine last values they emitted into a tuple. Whenever any of that observables completes without emitting any value, result sequence will complete at that moment as well. .. marble:: :alt: fork_join ---a-----b--c---d-| --1---2------3-4---| -a---------b---| [ fork_join() ] --------------------d4b| Examples: >>> res = fork_join(obs1) >>> res = fork_join(obs1, obs2, obs3) Returns: An operator function that takes an observable source and return an observable sequence containing the result of combining last element from each source in given sequence. r/) fork_join_)Z _forkjoinr)rUrr1r1r2 fork_joins r)r:element_mappersubject_mapperr.cCsddlm}||||S)aGroups the elements of an observable sequence according to a specified key mapper function and comparer and selects the resulting elements by using a specified function. .. marble:: :alt: group_by --1--2--a--3--b--c-| [ group_by() ] -+-----+-----------| +a-----b--c-| +1--2-----3-------| Examples: >>> group_by(lambda x: x.id) >>> group_by(lambda x: x.id, lambda x: x.name) >>> group_by(lambda x: x.id, lambda x: x.name, lambda: ReplaySubject()) Keyword arguments: key_mapper: A function to extract the key for each element. element_mapper: [Optional] A function to map each source element to an element in an observable group. subject_mapper: A function that returns a subject used to initiate a grouped observable. Default mapper returns a Subject object. Returns: An operator function that takes an observable source and returns a sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. r/) group_by_)Z_groupbyr)r:rrrr1r1r2group_bys$ r)r:rduration_mapperrr.cCsddlm}|||||S)aGroups the elements of an observable sequence according to a specified key mapper function. A duration mapper function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. .. marble:: :alt: group_by_until --1--2--a--3--b--c-| [ group_by_until() ] -+-----+-----------| +a-----b--c-| +1--2-----3-------| Examples: >>> group_by_until(lambda x: x.id, None, lambda : reactivex.never()) >>> group_by_until( lambda x: x.id, lambda x: x.name, lambda grp: reactivex.never() ) >>> group_by_until( lambda x: x.id, lambda x: x.name, lambda grp: reactivex.never(), lambda: ReplaySubject() ) Args: key_mapper: A function to extract the key for each element. element_mapper: A function to map each source element to an element in an observable group. duration_mapper: A function to signal the expiration of a group. subject_mapper: A function that returns a subject used to initiate a grouped observable. Default mapper returns a Subject object. Returns: An operator function that takes an observable source and returns a sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. r/)group_by_until_)Z _groupbyuntilr)r:rrrrr1r1r2group_by_untils2 r)rightleft_duration_mapperright_duration_mapperr.cCsddlm}||||S)aCorrelates the elements of two sequences based on overlapping durations, and groups the results. .. marble:: :alt: group_join -1---2----3---4----> --a--------b-----c-> [ group_join() ] --a1-a2----b3-b4-c4| Args: right: The right observable sequence to join elements for. left_duration_mapper: A function to select the duration (expressed as an observable sequence) of each element of the left observable sequence, used to determine overlap. right_duration_mapper: A function to select the duration (expressed as an observable sequence) of each element of the right observable sequence, used to determine overlap. Returns: An operator function that takes an observable source and returns an observable sequence that contains elements combined into a tuple from source elements that have an overlapping duration. r/) group_join_)Z _groupjoinr)rrrrr1r1r2 group_join s rcCsddlm}|S)aIgnores all elements in an observable sequence leaving only the termination messages. .. marble:: :alt: ignore_elements ---1---2---3---4---| [ ignore_elements()] -------------------| Returns: An operator function that takes an observable source and returns an empty observable sequence that signals termination, successful or exceptional, of the source sequence. r/ignore_elements_)Z_ignoreelementsrrr1r1r2ignore_elements/s rcCsddlm}|S)arDetermines whether an observable sequence is empty. .. marble:: :alt: is_empty -------| [ is_empty() ] -------True-| Returns: An operator function that takes an observable source and returns an observable sequence containing a single element determining whether the source sequence is empty. r/ is_empty_)Z_isemptyrrr1r1r2is_emptyDs rcCsddlm}||||S)aCorrelates the elements of two sequences based on overlapping durations. .. marble:: :alt: join -1---2----3---4----> --a--------b-----c-> [ join() ] --a1-a2----b3-b4-c4| Args: right: The right observable sequence to join elements for. left_duration_mapper: A function to select the duration (expressed as an observable sequence) of each element of the left observable sequence, used to determine overlap. right_duration_mapper: A function to select the duration (expressed as an observable sequence) of each element of the right observable sequence, used to determine overlap. Return: An operator function that takes an observable source and returns an observable sequence that contains elements combined into a tuple from source elements that have an overlapping duration. r/)join_)Z_joinr)rrrrr1r1r2joinYs rcCsddlm}||S)aThe last operator. Returns the last element of an observable sequence that satisfies the condition in the predicate if specified, else the last element. .. marble:: :alt: last ---1--2--3--4-| [ last() ] ------------4-| Examples: >>> op = last() >>> op = last(lambda x: x > 3) Args: predicate: [Optional] A predicate function to evaluate for elements in the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the last element in the observable sequence that satisfies the condition in the predicate. r/)last_)_lastr)r-rr1r1r2last}s rcCsdSrmr1r1r1r1r2last_or_defaultsrcCsdSrmr1rnr1r1r2rs)rlr-r.cCsdSrmr1)rlr-r1r1r2rscCsddlm}|||S)aThe last_or_default operator. Returns the last element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. .. marble:: :alt: last ---1--2--3--4-| [last_or_default(8)] --------------8-| Examples: >>> res = last_or_default() >>> res = last_or_default(lambda x: x > 3) >>> res = last_or_default(lambda x: x > 3, 0) >>> res = last_or_default(None, 0) Args: predicate: [Optional] A predicate function to evaluate for elements in the source sequence. default_value: [Optional] The default value if no such element exists. If not specified, defaults to None. Returns: An operator function that takes an observable source and returns an observable sequence containing the last element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. r/)r)Z_lastordefaultr)rlr-rr1r1r2rs$ cCsddlm}||S)aWThe map operator. Project each element of an observable sequence into a new form. .. marble:: :alt: map ---1---2---3---4---> [ map(i: i*2) ] ---2---4---6---8---> Example: >>> map(lambda value: value * 10) Args: mapper: A transform function to apply to each source element. Returns: A partially applied operator function that takes an observable source and returns an observable sequence whose elements are the result of invoking the transform function on each element of the source. r/map_)_mapr)rrr1r1r2r^s r^cCsddlm}||S)aProject each element of an observable sequence into a new form by incorporating the element's index. .. marble:: :alt: map_indexed ---1---2---3---4---> [ map(i,id: i*2) ] ---2---4---6---8---> Example: >>> ret = map_indexed(lambda value, index: value * value + index) Args: mapper_indexed: A transform function to apply to each source element. The second parameter of the function represents the index of the source element. Returns: A partially applied operator function that takes an observable source and returns an observable sequence whose elements are the result of invoking the transform function on each element of the source. r/) map_indexed_)rr)rrr1r1r2 map_indexeds rcCsddlm}|S)a3Materializes the implicit notifications of an observable sequence as explicit notification values. Returns: An operator function that takes an observable source and returns an observable sequence containing the materialized notification values from the source sequence. r/ materialize)Z _materializerrr1r1r2rs r)rcr.cCsddlm}||S)aWReturns the maximum value in an observable sequence according to the specified comparer. .. marble:: :alt: max ---1--2--3--4-| [ max() ] --------------4-| Examples: >>> op = max() >>> op = max(lambda x, y: x.value - y.value) Args: comparer: [Optional] Comparer used to compare elements. Returns: A partially applied operator function that takes an observable source and returns an observable sequence containing a single element with the maximum element in the source sequence. r/)max_)_maxr)rcrr1r1r2max's rcCsddlm}|||S)aThe max_by operator. Returns the elements in an observable sequence with the maximum key value according to the specified comparer. .. marble:: :alt: max_by ---1--2--3--4-| [ max_by() ] --------------4-| Examples: >>> res = max_by(lambda x: x.value) >>> res = max_by(lambda x: x.value, lambda x, y: x - y) Args: key_mapper: Key mapper function. comparer: [Optional] Comparer used to compare key values. Returns: A partially applied operator function that takes an observable source and return an observable sequence containing a list of zero or more elements that have a maximum key value. r/)max_by_)Z_maxbyr)r:rcrr1r1r2max_byEs rr\)rXr]r.cGsddlm}||d|iS)aDMerges an observable sequence of observable sequences into an observable sequence, limiting the number of concurrent subscriptions to inner sequences. Or merges two observable sequences into a single observable sequence. .. marble:: :alt: merge ---1---2---3---4-| -a---b---c---d--| [ merge() ] -a-1-b-2-c-3-d-4-| Examples: >>> op = merge(max_concurrent=1) >>> op = merge(other_source) Args: max_concurrent: [Optional] Maximum number of inner observable sequences being subscribed to concurrently or the second observable sequence. Returns: An operator function that takes an observable source and returns the observable sequence that merges the elements of the inner sequences. r/)merge_r])_merger)r]rXrr1r1r2r_fs r_cCsddlm}|S)aThe merge_all operator. Merges an observable sequence of observable sequences into an observable sequence. .. marble:: :alt: merge_all ---1---2---3---4-| -a---b---c---d--| [ merge_all() ] -a-1-b-2-c-3-d-4-| Returns: A partially applied operator function that takes an observable source and returns the observable sequence that merges the elements of the inner sequences. r/ merge_all_)rrrr1r1r2 merge_alls rcCsddlm}||S)aThe `min` operator. Returns the minimum element in an observable sequence according to the optional comparer else a default greater than less than check. .. marble:: :alt: min ---1--2--3--4-| [ min() ] --------------1-| Examples: >>> res = source.min() >>> res = source.min(lambda x, y: x.value - y.value) Args: comparer: [Optional] Comparer used to compare elements. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element with the minimum element in the source sequence. r/)min_)_minr)rcrr1r1r2mins rcCsddlm}|||S)aThe `min_by` operator. Returns the elements in an observable sequence with the minimum key value according to the specified comparer. .. marble:: :alt: min_by ---1--2--3--4-| [ min_by() ] --------------1-| Examples: >>> res = min_by(lambda x: x.value) >>> res = min_by(lambda x: x.value, lambda x, y: x - y) Args: key_mapper: Key mapper function. comparer: [Optional] Comparer used to compare key values. Returns: An operator function that takes an observable source and reuturns an observable sequence containing a list of zero or more elements that have a minimum key value. r/)min_by_)Z_minbyr)r:rcrr1r1r2min_bys rcCsdSrmr1r1r1r1r2 multicastsr)subjectr.cCsdSrmr1)rr1r1r2rsr)subject_factoryrr.cCsdSrmr1rrr1r1r2rsr)rrrr.cCsddlm}||||dS)aMulticasts the source sequence notifications through an instantiated subject into all uses of the sequence within a mapper function. Each subscription to the resulting sequence causes a separate multicast invocation, exposing the sequence resulting from the mapper function's invocation. For specializations with fixed subject types, see Publish, PublishLast, and Replay. Examples: >>> res = multicast(observable) >>> res = multicast( subject_factory=lambda scheduler: Subject(), mapper=lambda x: x ) Args: subject_factory: Factory function to create an intermediate subject through which the source sequence's elements will be multicast to the mapper function. subject: Subject to push source elements into. mapper: [Optional] Mapper function which can use the multicasted source sequence subject to the policies enforced by the created subject. Specified only if subject_factory" is a factory function. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a mapper function. r/) multicast_r)Z _multicastr)rrrrr1r1r2rs% )rMr.cCsddlm}||S)aWraps the source sequence in order to run its observer callbacks on the specified scheduler. Args: scheduler: Scheduler to notify observers on. This only invokes observer callbacks on a scheduler. In case the subscription and/or unsubscription actions have side-effects that require to be run on a scheduler, use subscribe_on. Returns: An operator function that takes an observable source and returns the source sequence whose observations happen on the specified scheduler. r/) observe_on_)Z _observeonr)rMrr1r1r2 observe_ons r)secondr.cCsddlm}||S)a:Continues an observable sequence that is terminated normally or by an exception with the next observable sequence. .. marble:: :alt: on_error ---1--2--3--4-* e-a--b-| [ on_error(e) ] -1--2--3--4-a--b-| Keyword arguments: second: Second observable sequence used to produce results after the first sequence terminates. Returns: An observable sequence that concatenates the first and second sequence, even if the first sequence terminates exceptionally. r/)on_error_resume_next_)Z_onerrorresumenextr)rrr1r1r2on_error_resume_next5s rcCsddlm}|S)aBThe pairwise operator. Returns a new observable that triggers on the second and subsequent triggerings of the input observable. The Nth triggering of the input observable passes the arguments from the N-1th and Nth triggering as a pair. The argument passed to the N-1th triggering is held in hidden internal state until the Nth triggering occurs. Returns: An operator function that takes an observable source and returns an observable that triggers on successive pairs of observations from the input observable as an array. r/ pairwise_)Z _pairwiserrr1r1r2pairwiseSs rcCsddlm}||S)aReturns two observables which partition the observations of the source by the given function. The first will trigger observations for those values for which the predicate returns true. The second will trigger observations for those values where the predicate returns false. The predicate is executed once for each subscribed observer. Both also propagate all error observations arising from the source and each completes when the source completes. .. marble:: :alt: partition ---1--2--3--4--| [ partition(even) ] ---1-----3-----| ------2-----4--| Args: predicate: The function to determine which output Observable will trigger a particular observation. Returns: An operator function that takes an observable source and returns a list of observables. The first triggers when the predicate returns True, and the second triggers when the predicate returns False. r/) partition_) _partitionr)r-rr1r1r2 partitionfs rcCsddlm}||S)aThe indexed partition operator. Returns two observables which partition the observations of the source by the given function. The first will trigger observations for those values for which the predicate returns true. The second will trigger observations for those values where the predicate returns false. The predicate is executed once for each subscribed observer. Both also propagate all error observations arising from the source and each completes when the source completes. .. marble:: :alt: partition_indexed ---1--2--3--4--| [ partition(even) ] ---1-----3-----| ------2-----4--| Args: predicate: The function to determine which output Observable will trigger a particular observation. Returns: A list of observables. The first triggers when the predicate returns True, and the second triggers when the predicate returns False. r/)partition_indexed_)rr)rrr1r1r2partition_indexeds r)keyr.cCsddlm}||S)awRetrieves the value of a specified key using dict-like access (as in element[key]) from all elements in the Observable sequence. To pluck an attribute of each element, use pluck_attr. Args: key: The key to pluck. Returns: An operator function that takes an observable source and returns a new observable sequence of key values. r/)pluck_)_pluckr)rrr1r1r2plucks r)propr.cCsddlm}||S)aRetrieves the value of a specified property (using getattr) from all elements in the Observable sequence. To pluck values using dict-like access (as in element[key]) on each element, use pluck. Args: property: The property to pluck. Returns: An operator function that takes an observable source and returns a new observable sequence of property values. r/) pluck_attr_)rr)rrr1r1r2 pluck_attrs rcCsdSrmr1r1r1r1r2publishsrcCsdSrmr1rr1r1r2rscCsddlm}||S)aThe `publish` operator. Returns an observable sequence that is the result of invoking the mapper on a connectable observable sequence that shares a single subscription to the underlying sequence. This operator is a specialization of Multicast using a regular Subject. Example: >>> res = publish() >>> res = publish(lambda x: x) Args: mapper: [Optional] Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all notifications of the source from the time of the subscription on. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a mapper function. r/)publish_)_publishr)rrr1r1r2rs ) initial_valuer.cCsdSrmr1)rr1r1r2 publish_valuesr)rrr.cCsdSrmr1)rrr1r1r2r scCsddlm}|||S)aReturns an observable sequence that is the result of invoking the mapper on a connectable observable sequence that shares a single subscription to the underlying sequence and starts with initial_value. This operator is a specialization of Multicast using a BehaviorSubject. Examples: >>> res = source.publish_value(42) >>> res = source.publish_value(42, lambda x: x.map(lambda y: y * y)) Args: initial_value: Initial value received by observers upon subscription. mapper: [Optional] Optional mapper function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive immediately receive the initial value, followed by all notifications of the source from the time of the subscription on. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a mapper function. r/)publish_value_)Z _publishvaluer)rrrr1r1r2r s$ ) accumulatorr.cCsdSrmr1rr1r1r2reduce3 sr )rseedr.cCsdSrmr1rr r1r1r2r 9 scCsddlm}|||S)aThe reduce operator. Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value. For aggregation behavior with incremental intermediate results, see `scan`. .. marble:: :alt: reduce ---1--2--3--4--| [reduce(acc,i: acc+i)] ---------------10-| Examples: >>> res = reduce(lambda acc, x: acc + x) >>> res = reduce(lambda acc, x: acc + x, 0) Args: accumulator: An accumulator function to be invoked on each element. seed: Optional initial accumulator value. Returns: A partially applied operator function that takes an observable source and returns an observable sequence containing a single element with the final accumulator value. r/)reduce_)Z_reducer )rr r r1r1r2r ? s" cCsddlm}|S)zReturns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. r/ ref_count_)Zconnectable._refcountrr r1r1r2 ref_countf s r) repeat_countr.cCsddlm}||S)aRepeats the observable sequence a specified number of times. If the repeat count is not specified, the sequence repeats indefinitely. .. marble:: :alt: repeat -1--2-| [ repeat(3) ] -1--2--1--2--1--2-| Examples: >>> repeated = repeat() >>> repeated = repeat(42) Args: repeat_count: Number of times to repeat the sequence. If not provided, repeats the sequence indefinitely. Returns: An operator function that takes an observable sources and returns an observable sequence producing the elements of the given sequence repeatedly. r/)repeat_)_repeatr)rrr1r1r2repeatp s rrr) buffer_sizewindowrMr.cCsdSrmr1)rrrMr1r1r2replay sr)rrrrMr.cCsdSrmr1)rrrrMr1r1r2r s)rrMcCsddlm}|||||dS)aThe `replay` operator. Returns an observable sequence that is the result of invoking the mapper on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. This operator is a specialization of Multicast using a ReplaySubject. Examples: >>> res = replay(buffer_size=3) >>> res = replay(buffer_size=3, window=0.5) >>> res = replay(None, 3, 0.5) >>> res = replay(lambda x: x.take(6).repeat(), 3, 0.5) Args: mapper: [Optional] Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. buffer_size: [Optional] Maximum element count of the replay buffer. window: [Optional] Maximum time length of the replay buffer. scheduler: [Optional] Scheduler the observers are invoked on. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a mapper function. r/)replay_rr)Z_replayr)rrrrMrr1r1r2r s) ) retry_countr.cCsddlm}||S)a Repeats the source observable sequence the specified number of times or until it successfully terminates. If the retry count is not specified, it retries indefinitely. Examples: >>> retried = retry() >>> retried = retry(42) Args: retry_count: [Optional] Number of times to retry the sequence. If not provided, retry the sequence indefinitely. Returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. r/)retry_)Z_retryr)rrr1r1r2retry s r)samplerrMr.cCsddlm}|||S)aSamples the observable sequence at each interval. .. marble:: :alt: sample ---1-2-3-4------| [ sample(4) ] ----1---3---4---| Examples: >>> res = sample(sample_observable) # Sampler tick sequence >>> res = sample(5.0) # 5 seconds Args: sampler: Observable used to sample the source observable **or** time interval at which to sample (specified as a float denoting seconds or an instance of timedelta). scheduler: Scheduler to use only when a time interval is given. Returns: An operator function that takes an observable source and returns a sampled observable sequence. r/)sample_)Z_sampler)rrMrr1r1r2sample s rcCsdSrmr1rr1r1r2scan srcCsdSrmr1r r1r1r2r scCsddlm}|||S)awThe scan operator. Applies an accumulator function over an observable sequence and returns each intermediate result. The optional seed value is used as the initial accumulator value. For aggregation behavior with no intermediate results, see `aggregate()` or `Observable()`. .. marble:: :alt: scan ----1--2--3--4-----| [scan(acc,i: acc+i)] ----1--3--6--10----| Examples: >>> scanned = source.scan(lambda acc, x: acc + x) >>> scanned = source.scan(lambda acc, x: acc + x, 0) Args: accumulator: An accumulator function to be invoked on each element. seed: [Optional] The initial accumulator value. Returns: A partially applied operator function that takes an observable source and returns an observable sequence containing the accumulated values. r/)scan_)Z_scanr)rr rr1r1r2r s )rrcr.cCsddlm}|||S)ajDetermines whether two sequences are equal by comparing the elements pairwise using a specified equality comparer. .. marble:: :alt: scan -1--2--3--4----| ----1--2--3--4-| [ sequence_equal() ] ---------------True| Examples: >>> res = sequence_equal([1,2,3]) >>> res = sequence_equal([{ "value": 42 }], lambda x, y: x.value == y.value) >>> res = sequence_equal(reactivex.return_value(42)) >>> res = sequence_equal( reactivex.return_value({ "value": 42 }), lambda x, y: x.value == y.value) Args: second: Second observable sequence or iterable to compare. comparer: [Optional] Comparer used to compare elements of both sequences. No guarantees on order of comparer arguments. Returns: An operator function that takes an observable source and returns an observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the specified equality comparer. r/)sequence_equal_)Z_sequenceequalr )rrcr r1r1r2sequence_equal9 s! r!cCsddlm}|S)aShare a single subscription among multiple observers. This is an alias for a composed publish() and ref_count(). Returns: An operator function that takes an observable source and returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will unsubscribe from the source Observable. r/share_)rr#r"r1r1r2share_ s r$cCsddlm}||S)a&The single operator. Returns the only element of an observable sequence that satisfies the condition in the optional predicate, and reports an exception if there is not exactly one element in the observable sequence. .. marble:: :alt: single ----1--2--3--4-----| [ single(3) ] ----------3--------| Example: >>> res = single() >>> res = single(lambda x: x == 42) Args: predicate: [Optional] A predicate function to evaluate for elements in the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the single element in the observable sequence that satisfies the condition in the predicate. r/)single_)Z_singler%)r-r%r1r1r2singler s r&cCsddlm}|||S)aVReturns the only element of an observable sequence that matches the predicate, or a default value if no such element exists this method reports an exception if there is more than one element in the observable sequence. .. marble:: :alt: single_or_default ----1--2--3--4--| [ single(8,42) ] ----------------42-| Examples: >>> res = single_or_default() >>> res = single_or_default(lambda x: x == 42) >>> res = single_or_default(lambda x: x == 42, 0) >>> res = single_or_default(None, 0) Args: predicate: [Optional] A predicate function to evaluate for elements in the source sequence. default_value: [Optional] The default value if the index is outside the bounds of the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the single element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. r/)single_or_default_)_singleordefaultr')r-rlr'r1r1r2single_or_default s! r)F) has_defaultrlr.cCsddlm}|||S)Nr/)single_or_default_async_)r(r+)r*rlr+r1r1r2single_or_default_async s r,)rGr.cCsddlm}||S)aKThe skip operator. Bypasses a specified number of elements in an observable sequence and then returns the remaining elements. .. marble:: :alt: skip ----1--2--3--4-----| [ skip(2) ] ----------3--4-----| Args: count: The number of elements to skip before returning the remaining elements. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements that occur after the specified index in the input sequence. r/)skip_)Z_skipr-)rGr-r1r1r2rH s rHcCsddlm}||S)a*The skip_last operator. .. marble:: :alt: skip_last ----1--2--3--4-----| [ skip_last(1) ] -------1--2--3-----| Bypasses a specified number of elements at the end of an observable sequence. This operator accumulates a queue with a length enough to store the first `count` elements. As more elements are received, elements are taken from the front of the queue and produced on the result sequence. This causes elements to be delayed. Args: count: Number of elements to bypass at the end of the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the source sequence elements except for the bypassed ones at the end. r/) skip_last_)Z _skiplastr.)rGr.r1r1r2 skip_last s r/)durationrMr.cCsddlm}|||dS)a Skips elements for the specified duration from the end of the observable source sequence. Example: >>> res = skip_last_with_time(5.0) This operator accumulates a queue with a length enough to store elements received during the initial duration window. As more elements are received, elements older than the specified duration are taken from the queue and produced on the result sequence. This causes elements to be delayed with duration. Args: duration: Duration for skipping elements from the end of the sequence. scheduler: Scheduler to use for time handling. Returns: An observable sequence with the elements skipped during the specified duration from the end of the source sequence. r/)skip_last_with_time_rr)Z_skiplastwithtimer1)r0rMr1r1r1r2skip_last_with_time s r2z Future[Any])otherr.cCsddlm}||S)aReturns the values from the source observable sequence only after the other observable sequence produces a value. .. marble:: :alt: skip_until ----1--2--3--4-----| ---------1---------| [ skip_until() ] ----------3--4-----| Args: other: The observable sequence that triggers propagation of elements of the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the elements of the source sequence starting from the point the other sequence triggered propagation. r/) skip_until_)Z _skipuntilr4)r3r4r1r1r2 skip_until s r5) start_timerMr.cCsddlm}|||dS)alSkips elements from the observable source sequence until the specified start time. Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the start time. .. marble:: :alt: skip_until ------1--2--3--4-------| [skip_until_with_time()] ------------3--4-------| Examples: >>> res = skip_until_with_time(datetime()) >>> res = skip_until_with_time(5.0) Args: start_time: Time to start taking elements from the source sequence. If this value is less than or equal to `datetime.now(timezone.utc)`, no elements will be skipped. Returns: An operator function that takes an observable source and returns an observable sequence with the elements skipped until the specified start time. r/)skip_until_with_time_rr)Z_skipuntilwithtimer7)r6rMr7r1r1r2skip_until_with_time: s r8cCsddlm}||S)aThe `skip_while` operator. Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. The element's index is used in the logic of the predicate function. .. marble:: :alt: skip_while ----1--2--3--4-----| [skip_while(i: i<3)] ----------3--4-----| Example: >>> skip_while(lambda value: value < 10) Args: predicate: A function to test each element for a condition; the second parameter of the function represents the index of the source element. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. r/) skip_while_) _skipwhiler9)r-r9r1r1r2 skip_while] s r;cCsddlm}||S)aBypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. The element's index is used in the logic of the predicate function. .. marble:: :alt: skip_while_indexed ----1--2--3--4-----| [skip_while(i: i<3)] ----------3--4-----| Example: >>> skip_while(lambda value, index: value < 10 or index < 10) Args: predicate: A function to test each element for a condition; the second parameter of the function represents the index of the source element. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. r/)skip_while_indexed_)r:r<)r-r<r1r1r2skip_while_indexed s r=cCsddlm}|||dS)aCSkips elements for the specified duration from the start of the observable source sequence. .. marble:: :alt: skip_with_time ----1--2--3--4-----| [ skip_with_time() ] ----------3--4-----| Args: >>> res = skip_with_time(5.0) Specifying a zero value for duration doesn't guarantee no elements will be dropped from the start of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, where the action that causes callbacks from the source sequence to be forwarded may not execute immediately, despite the zero due time. Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the duration. Args: duration: Duration for skipping elements from the start of the sequence. Returns: An operator function that takes an observable source and returns an observable sequence with the elements skipped during the specified duration from the start of the source sequence. r/)skip_with_time_rr)Z _skipwithtimer>)r0rMr>r1r1r2skip_with_time s" r?)startstopstepr.cCsddlm}||||S)aThe slice operator. Slices the given observable. It is basically a wrapper around the operators :func:`skip `, :func:`skip_last `, :func:`take `, :func:`take_last ` and :func:`filter `. .. marble:: :alt: slice ----1--2--3--4-----| [ slice(1, 2) ] -------2--3--------| Examples: >>> result = source.slice(1, 10) >>> result = source.slice(1, -2) >>> result = source.slice(1, -1, 2) Args: start: First element to take of skip last stop: Last element to take of skip last step: Takes every step element. Must be larger than zero Returns: An operator function that takes an observable source and returns a sliced observable sequence. r/)slice_)Z_slicerC)r@rArBrCr1r1r2slice s! rDcCsddlm}||S)aThe some operator. Determines whether some element of an observable sequence satisfies a condition if present, else if some items are in the sequence. .. marble:: :alt: some ----1--2--3--4-----| [ some(i: i>3) ] -------------True--| Examples: >>> result = source.some() >>> result = source.some(lambda x: x > 3) Args: predicate: A function to test each element for a condition. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element determining whether some elements in the source sequence pass the test in the specified predicate if given, else if some items are in the sequence. r/)some_)Z_somerE)r-rEr1r1r2some s rFcCsdSrmr1rr1r1r2starmap srGcCsdSrmr1rr1r1r2rG scCsdSrmr1rr1r1r2rG scs8dkrttSttdftdfdd }tt|S)aThe starmap operator. Unpack arguments grouped as tuple elements of an observable sequence and return an observable sequence of values by invoking the mapper function with star applied unpacked elements as positional arguments. Use instead of `map()` when the the arguments to the mapper is grouped as tuples and the mapper function takes multiple arguments. .. marble:: :alt: starmap -----1,2---3,4-----| [ starmap(add) ] -----3-----7-------| Example: >>> starmap(lambda x, y: x + y) Args: mapper: A transform function to invoke with unpacked elements as arguments. Returns: An operator function that takes an observable source and returns an observable sequence containing the results of invoking the mapper function with unpacked elements of the source. N.valuesr.csst|SrmAssertionErrorrIrr1r2starredI szstarmap..starred)rrr rr^)rrMr1rr2rG$ s"cCsdSrmr1rr1r1r2starmap_indexedP srNcCsdSrmr1rr1r1r2rNV scCsdSrmr1rr1r1r2rN\ scCsdSrmr1rr1r1r2rNb scsDddlm}dkrttSttdftdfdd }t||S)azVariant of :func:`starmap` which accepts an indexed mapper. .. marble:: :alt: starmap_indexed ---------1,2---3,4---------| [ starmap_indexed(sum) ] ---------3-----8-----------| Example: >>> starmap_indexed(lambda x, y, i: x + y + i) Args: mapper: A transform function to invoke with unpacked elements as arguments. Returns: An operator function that takes an observable source and returns an observable sequence containing the results of invoking the indexed mapper function with unpacked elements of the source. r/rN.rHcsst|SrmrJrLrr1r2rM sz starmap_indexed..starred)rrrrr r)rrrMr1rr2rNh s  )argsr.cGsddlm}||S)aPrepends a sequence of values to an observable sequence. .. marble:: :alt: start_with -----1--2--3--4----| [ start_with(7,8) ] -7-8-1--2--3--4----| Example: >>> start_with(1, 2, 3) Returns: An operator function that takes a source observable and returns the source sequence prepended with the specified values. r/) start_with_)Z _startswithrP)rOrPr1r1r2 start_with s rQcCsddlm}||S)aSubscribe on the specified scheduler. Wrap the source sequence in order to run its subscription and unsubscription logic on the specified scheduler. This operation is not commonly used; see the remarks section for more information on the distinction between subscribe_on and observe_on. This only performs the side-effects of subscription and unsubscription on the specified scheduler. In order to invoke observer callbacks on a scheduler, use observe_on. Args: scheduler: Scheduler to perform subscription and unsubscription actions on. Returns: An operator function that takes an observable source and returns the source sequence whose subscriptions and un-subscriptions happen on the specified scheduler. r/) subscribe_on_)Z _subscribeonrR)rMrRr1r1r2 subscribe_on s rScCsdSrmr1r1r1r1r2sum srTcCsdSrmr1)r:r1r1r2rT scCsddlm}||S)aComputes the sum of a sequence of values that are obtained by invoking an optional transform function on each element of the input sequence, else if not specified computes the sum on each item in the sequence. .. marble:: :alt: sum -----1--2--3--4-| [ sum() ] ----------------10-| Examples: >>> res = sum() >>> res = sum(lambda x: x.value) Args: key_mapper: [Optional] A transform function to apply to each element. Returns: An operator function that takes a source observable and returns an observable sequence containing a single element with the sum of the values in the source sequence. r/)sum_)Z_sumrU)r:rUr1r1r2rT s z Future[_T]cCsddlm}|S)aThe switch_latest operator. Transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence. .. marble:: :alt: switch_latest -+------+----------| +--a--b--c-| +--1--2--3--4--| [ switch_latest() ] ----1--2---a--b--c-| Returns: A partially applied operator function that takes an observable source and returns the observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received. r/switch_latest_)Z _switchlatestrWrVr1r1r2 switch_latest s rXcCstt|tS)aUProjects each source value to an Observable which is merged in the output Observable, emitting values only from the most recently projected Observable. .. marble:: :alt: switch_map ---a----------b-------c---------| [ switch_map(x: x---x---x|) ] ---a---a---a--b---b---c---c---c-| Examples: >>> op = switch_map(lambda x: reactivex.timer(1.0).pipe(map(lambda x: x))) >>> op = switch_map() Args: project: Projecting function which takes the outer observable value and the emission index and emits the inner observable; defaults to `identity` Returns: An operator function that maps each value to the inner observable and emits its values in order, emitting values only from the most recently projected Observable. If an inner observable complete, the resulting sequence does *not* complete. If an inner observable errors, the resulting sequence errors as well. If the outer observable completes/errors, the resulting sequence completes/errors. )rr^rXr`r1r1r2 switch_map s%rYcCstt|tS)aFProjects each source value to an Observable which is merged in the output Observable, emitting values only from the most recently projected Observable. .. marble:: :alt: switch_map ---a----------b-------c---------------------| [ switch_map_indexed(x,i: x*i---x*i---x*i|) ] ---a---a---a--bb---bb-ccc---ccc---ccc-------| Examples: >>> op = switch_map_indexed(lambda x, i: reactivex.timer(1.0).pipe(map(x*i))) Args: project: Projecting function which takes the outer observable value and the emission index and emits the inner observable Returns: An operator function that maps each value to the inner observable and emits its values in order, emitting values only from the most recently projected Observable. If an inner observable complete, the resulting sequence does *not* complete. If an inner observable errors, the resulting sequence errors as well. If the outer observable completes/errors, the resulting sequence completes/errors. )rrrXr`r1r1r2switch_map_indexed/ s$rZcCsddlm}||S)a Returns a specified number of contiguous elements from the start of an observable sequence. .. marble:: :alt: take -----1--2--3--4----| [ take(2) ] -----1--2-| Example: >>> op = take(5) Args: count: The number of elements to return. Returns: An operator function that takes an observable source and returns an observable sequence that contains the specified number of elements from the start of the input sequence. r/)take_)Z_taker[)rGr[r1r1r2takeV s r\cCsddlm}||S)a"Returns a specified number of contiguous elements from the end of an observable sequence. .. marble:: :alt: take_last -1--2--3--4-| [ take_last(2) ] ------------3--4-| Example: >>> res = take_last(5) This operator accumulates a buffer with a length enough to store elements count elements. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. Args: count: Number of elements to take from the end of the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing the specified number of elements from the end of the source sequence. r/) take_last_)Z _takelastr])rGr]r1r1r2 take_lastq s r^cCsddlm}||S)aThe `take_last_buffer` operator. Returns an array with the specified number of contiguous elements from the end of an observable sequence. .. marble:: :alt: take_last_buffer -----1--2--3--4-| [take_last_buffer(2)] ----------------3,4-| Example: >>> res = source.take_last(5) This operator accumulates a buffer with a length enough to store elements count elements. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. Args: count: Number of elements to take from the end of the source sequence. Returns: An operator function that takes an observable source and returns an observable sequence containing a single list with the specified number of elements from the end of the source sequence. r/)take_last_buffer_)Z_takelastbufferr_)rGr_r1r1r2take_last_buffer s r`cCsddlm}|||dS)aReturns elements within the specified duration from the end of the observable source sequence. .. marble:: :alt: take_last_with_time -----1--2--3--4-| [take_last_with_time(3)] ----------------4-| Example: >>> res = take_last_with_time(5.0) This operator accumulates a queue with a length enough to store elements received during the initial duration window. As more elements are received, elements older than the specified duration are taken from the queue and produced on the result sequence. This causes elements to be delayed with duration. Args: duration: Duration for taking elements from the end of the sequence. Returns: An operator function that takes an observable source and returns an observable sequence with the elements taken during the specified duration from the end of the source sequence. r/)take_last_with_time_rr)Z_takelastwithtimera)r0rMrar1r1r2take_last_with_time s rbcCsddlm}||S)aReturns the values from the source observable sequence until the other observable sequence produces a value. .. marble:: :alt: take_until -----1--2--3--4----| -------------a-| [ take_until(2) ] -----1--2--3-------| Args: other: Observable sequence that terminates propagation of elements of the source sequence. Returns: An operator function that takes an observable source and returns as observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation. r/) take_until_)Z _takeuntilrc)r3rcr1r1r2 take_until s rd)end_timerMr.cCsddlm}|||dS)awTakes elements for the specified duration until the specified end time, using the specified scheduler to run timers. .. marble:: :alt: take_until_with_time -----1--2--3--4--------| [take_until_with_time()] -----1--2--3-----------| Examples: >>> res = take_until_with_time(dt, [optional scheduler]) >>> res = take_until_with_time(5.0, [optional scheduler]) Args: end_time: Time to stop taking elements from the source sequence. If this value is less than or equal to `datetime.now(timezone.utc)`, the result stream will complete immediately. scheduler: Scheduler to run the timer on. Returns: An operator function that takes an observable source and returns an observable sequence with the elements taken until the specified end time. r/)take_until_with_time_rr)Z_takeuntilwithtimerf)rerMrfr1r1r2take_until_with_time s rg)r- inclusiver.cCsddlm}|||S)a*Returns elements from an observable sequence as long as a specified condition is true. .. marble:: :alt: take_while -----1--2--3--4----| [take_while(i: i<3)] -----1--2----------| Example: >>> take_while(lambda value: value < 10) Args: predicate: A function to test each element for a condition. inclusive: [Optional] When set to True the value that caused the predicate function to return False will also be emitted. If not specified, defaults to False. Returns: An operator function that takes an observable source and returns an observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. r/) take_while_) _takewhileri)r-rhrir1r1r2 take_whiles rkcCsddlm}|||S)aReturns elements from an observable sequence as long as a specified condition is true. The element's index is used in the logic of the predicate function. .. marble:: :alt: take_while_indexed --------1------2------3------4-------| [take_while_indexed(v, i: v<4 or i<3)] --------1------2---------------------| Example: >>> take_while_indexed(lambda value, index: value < 10 or index < 10) Args: predicate: A function to test each element for a condition; the second parameter of the function represents the index of the source element. inclusive: [Optional] When set to True the value that caused the predicate function to return False will also be emitted. If not specified, defaults to False. Returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. r/)take_while_indexed_)rjrl)r-rhrlr1r1r2take_while_indexed:s rmcCsddlm}|||dS)aTakes elements for the specified duration from the start of the observable source sequence. .. marble:: :alt: take_with_time -----1--2--3--4----| [ take_with_time() ] -----1--2----------| Example: >>> res = take_with_time(5.0) This operator accumulates a queue with a length enough to store elements received during the initial duration window. As more elements are received, elements older than the specified duration are taken from the queue and produced on the result sequence. This causes elements to be delayed with duration. Args: duration: Duration for taking elements from the start of the sequence. Returns: An operator function that takes an observable source and returns an observable sequence with the elements taken during the specified duration from the start of the source sequence. r/)take_with_time_rr)Z _takewithtimern)r0rMrnr1r1r2take_with_time]s ro)window_durationrMr.cCsddlm}|||S)aReturns an Observable that emits only the first item emitted by the source Observable during sequential time windows of a specified duration. Args: window_duration: time to wait before emitting another item after emitting the last item. Returns: An operator function that takes an observable source and returns an observable that performs the throttle operation. r/)throttle_first_)Z_throttlefirstrq)rprMrqr1r1r2throttle_firsts rr)throttle_duration_mapperr.cCsddlm}||S)a4The throttle_with_mapper operator. Ignores values from an observable sequence which are followed by another value within a computed throttle duration. Example: >>> op = throttle_with_mapper(lambda x: reactivex.timer(x+x)) Args: throttle_duration_mapper: Mapper function to retrieve an observable sequence indicating the throttle duration for each given element. Returns: A partially applied operator function that takes an observable source and returns the throttled observable sequence. r/)throttle_with_mapper_)rjrt)rsrtr1r1r2throttle_with_mappers rur/) Timestampz Timestamp[_T]cCsddlm}||dS)aThe timestamp operator. Records the timestamp for each value in an observable sequence. Examples: >>> timestamp() Produces objects with attributes `value` and `timestamp`, where value is the original value. Returns: A partially applied operator function that takes an observable source and returns an observable sequence with timestamp information on values. r/) timestamp_rr) _timestamprw)rMrwr1r1r2 timestamps ry)rhr3rMr.cCsddlm}||||S)aReturns the source observable sequence or the other observable sequence if duetime elapses. .. marble:: :alt: timeout -1--2--------3--4--| o-6--7-| [ timeout(3,o) ] -1--2---6--7----------| Examples: >>> res = timeout(5.0) >>> res = timeout(datetime(), return_value(42)) >>> res = timeout(5.0, return_value(42)) Args: duetime: Absolute (specified as a datetime object) or relative time (specified as a float denoting seconds or an instance of timedetla) when a timeout occurs. other: Sequence to return in case of a timeout. If not specified, a timeout error throwing sequence will be used. scheduler: Returns: An operator function that takes and observable source and returns the source sequence switching to the other sequence in case of a timeout. r/)timeout_)_timeoutrz)rhr3rMrzr1r1r2timeouts" r|) first_timeouttimeout_duration_mapperr3r.cCsddlm}||||S)aReturns the source observable sequence, switching to the other observable sequence if a timeout is signaled. Examples: >>> res = timeout_with_mapper(reactivex.timer(0.5)) >>> res = timeout_with_mapper( reactivex.timer(0.5), lambda x: reactivex.timer(0.2) ) >>> res = timeout_with_mapper( reactivex.timer(0.5), lambda x: reactivex.timer(0.2), reactivex.return_value(42) ) Args: first_timeout: [Optional] Observable sequence that represents the timeout for the first element. If not provided, this defaults to reactivex.never(). timeout_duration_mapper: [Optional] Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. other: [Optional] Sequence to return in case of a timeout. If not provided, this is set to reactivex.throw(). Returns: An operator function that takes an observable source and returns the source sequence switching to the other sequence in case of a timeout. r/)timeout_with_mapper_)Z_timeoutwithmapperr)r}r~r3rr1r1r2timeout_with_mappers" r) TimeIntervalzTimeInterval[_T]cCsddlm}||dS)aRecords the time interval between consecutive values in an observable sequence. .. marble:: :alt: time_interval --1--2-----3---4--| [ time_interval() ] -----2-----5---5---| Examples: >>> res = time_interval() Return: An operator function that takes an observable source and returns an observable sequence with time interval information on values. r/)time_interval_rr) _timeintervalr)rMrr1r1r2 time_intervals r)r:rr.cCsddlm}|||S)a6Converts the observable sequence to a Map if it exists. Args: key_mapper: A function which produces the key for the dictionary. element_mapper: [Optional] An optional function which produces the element for the dictionary. If not present, defaults to the value from the observable sequence. Returns: An operator function that takes an observable source and returns an observable sequence with a single value of a dictionary containing the values from the observable sequence. r/)to_dict_)Z_todictr)r:rrr1r1r2to_dict5s r) future_ctorr.cCsddlm}||S)aTConverts an existing observable sequence to a Future. Example: op = to_future(asyncio.Future); Args: future_ctor: [Optional] The constructor of the future. Returns: An operator function that takes an observable source and returns a future with the last value from the observable sequence. r/) to_future_)Z _tofuturer)rrr1r1r2 to_futureKs rcCsddlm}|S)aDCreates an iterable from an observable sequence. There is also an alias called ``to_list``. Returns: An operator function that takes an observable source and returns an observable sequence containing a single element with an iterable containing all the elements of the source sequence. r/ to_iterable_)Z _toiterablerrr1r1r2 to_iterable_s r皙?)rKrMr.cCsddlm}|||dS)aGConvert an observable sequence into a marble diagram string. Args: timespan: [Optional] duration of each character in second. If not specified, defaults to 0.1s. scheduler: [Optional] The scheduler used to run the the input sequence on. Returns: Observable stream. r/) to_marbles)rMrK)Z _tomarblesr)rKrMrr1r1r2rqs rcCsddlm}|S)zConverts the observable sequence to a set. Returns: An operator function that takes an observable source and returns an observable sequence with a single value of a set containing the values from the observable sequence. r/to_set_)Z_tosetrrr1r1r2to_sets rcCsddlm}||S)acRepeats source as long as condition holds emulating a while loop. Args: condition: The condition which determines if the source will be repeated. Returns: An operator function that takes an observable source and returns an observable sequence which is repeated as long as the condition holds. r/) while_do_)Z_whiledor)rrr1r1r2while_dos rcCsddlm}||S)aProjects each element of an observable sequence into zero or more windows. .. marble:: :alt: window ---a-----b-----c--------| ----1--2--3--4--5--6--7-| [ window(open) ] +--+-----+-----+--------| +5--6--7-| +3--4-| +1--2-| +--| Examples: >>> res = window(reactivex.interval(1.0)) Args: boundaries: Observable sequence whose elements denote the creation and completion of non-overlapping windows. Returns: An operator function that takes an observable source and returns an observable sequence of windows. r/)window_)_windowr)r=rr1r1r2rs rcCsddlm}||S)aBProjects each element of an observable sequence into zero or more windows. .. marble:: :alt: window ------c| ------c| ------c| ----1--2--3--4--5-| [ window(close) ] +-----+-----+-----+| +4--5-| +2--3-| +----1| Examples: >>> res = window(lambda: reactivex.timer(0.5)) Args: closing_mapper: A function invoked to define the closing of each produced window. It defines the boundaries of the produced windows (a window is started when the previous one is closed, resulting in non-overlapping windows). Returns: An operator function that takes an observable source and returns an observable sequence of windows. r/) window_when_)rr)rArr1r1r2 window_whens! rcCsddlm}|||S)aProjects each element of an observable sequence into zero or more windows. .. marble:: :alt: window ---a-----------b------------| ---d--| --------e-| ----1--2--3--4--5--6--7--8--| [ window(open, close) ] ---+-----------+------------| +5--6--7| +1-| >>> res = window(reactivex.interval(0.5), lambda i: reactivex.timer(i)) Args: openings: Observable sequence whose elements denote the creation of windows. closing_mapper: A function invoked to define the closing of each produced window. Value from openings Observable that initiated the associated window is provided as argument to the function. Returns: An operator function that takes an observable source and returns an observable sequence of windows. r/)window_toggle_)rr)rDrArr1r1r2 window_toggles rcCsddlm}|||S)aProjects each element of an observable sequence into zero or more windows which are produced based on element count information. .. marble:: :alt: window_with_count ---1-2-3---4-5-6---> [ window(3) ] --+-------+--------> +4-5-6-| +1-2-3-| Examples: >>> window_with_count(10) >>> window_with_count(10, 1) Args: count: Length of each window. skip: [Optional] Number of elements to skip between creation of consecutive windows. If not specified, defaults to the count. Returns: An observable sequence of windows. r/)window_with_count_)Z_windowwithcountr)rGrHrr1r1r2window_with_counts rcCsddlm}||||S)Nr/)window_with_time_)Z_windowwithtimer)rKrLrMrr1r1r2window_with_time3s rcCsddlm}||||S)Nr/)window_with_time_or_count_)Z_windowwithtimeorcountr)rKrGrMrr1r1r2window_with_time_or_count=s rcGsddlm}||S)aThe `with_latest_from` operator. Merges the specified observable sequences into one observable sequence by creating a tuple only when the first observable sequence produces an element. The observables can be passed either as separate arguments or as a list. .. marble:: :alt: with_latest_from ---1---2---3----4-| --a-----b----c-d----| [with_latest_from() ] ---1,a-2,a-3,b--4,d-| Examples: >>> op = with_latest_from(obs1) >>> op = with_latest_from([obs1, obs2, obs3]) Returns: An operator function that takes an observable source and returns an observable sequence containing the result of combining elements of the sources into a tuple. r/)with_latest_from_)Z_withlatestfromr)rXrr1r1r2with_latest_fromGs rcGsddlm}||S)aMerges the specified observable sequences into one observable sequence by creating a tuple whenever all of the observable sequences have produced an element at a corresponding index. .. marble:: :alt: zip --1--2---3-----4---| -a----b----c-d------| [ zip() ] --1,a-2,b--3,c-4,d-| Example: >>> res = zip(obs1, obs2) Args: args: Observable sources to zip. Returns: An operator function that takes an observable source and returns an observable sequence containing the result of combining elements of the sources as a tuple. r/)zip_)_zipr)rOrr1r1r2zipgs rcCsddlm}||S)aMerges the specified observable sequence and list into one observable sequence by creating a tuple whenever all of the observable sequences have produced an element at a corresponding index. .. marble:: :alt: zip_with_iterable --1---2----3---4---| [ zip(a,b,c,b) ] --1,a-2,b--3,c-4,d-| Example >>> res = zip([1,2,3]) Args: second: Iterable to zip with the source observable.. Returns: An operator function that takes and observable source and returns an observable sequence containing the result of combining elements of the sources as a tuple. r/)zip_with_iterable_)rr)rrr1r1r2zip_with_iterables rthrottle_with_timeoutto_list zip_with_list)N)N)NN)N)N)N)N)N)N)NN)N)NN)NN)NNN)N)N)N)NN)N)N)N)N)N)N)N)N)N)N)NN)N)N)NN)N)N)N)N)N)N)N)N)N)N)NN)NN)NN)N)N)N)N)NN)FN)N)N)N)NNN)N)N)N)N)N)N)N)N)F)F)N)N)N)NN)NNN)N)N)N)rN)N)NN)N)asynciorrrrrrrrr r r r r rrrZ reactivexrrrrrrZreactivex.internal.basicrZreactivex.internal.utilsrZreactivex.subjectrZreactivex.typingrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,boolr3r6r9floatr<r@rCrFrrJZ RelativeTimeZ SchedulerBaserOrQ ExceptionrTrWrZrarerGrkrroZAbsoluteOrRelativeTimersrwrzr|r~rZ ObserverBaserZOnNextZOnErrorZ OnCompletedrrrrrrrrActionrrrrrrrrrrrrrrrrrr^rrrrr_rrrrZ SubjectBaserrrrrrstrrrrr rrrrrrr!r$r&r)r,rHr/r2r5r8r;r=r?rDrFrGrNrQrSrTrXrYrZr\r^r`rbrdrgrkrmrorrrurxrvryr|rrrrrrrrrrrrrrrrrrrrr__all__r1r1r1r2s @$    &&  "  # % " + & ' & &  !  # & " $ )$ #  '  %(  *  " !$ &  $ ! "  #  %   -   -    -  8 %   %  "&  * ! $    " #$  !  !"  +  ( # $ "" ! )    '    /     % &$ $ '(("$$#(' # , %(& "")'((!,%%,$"$% (  ' (( $'%#   ,