U vi @sddlmZddlmZddlmZmZmZmZmZddl m Z m Z m Z m Z mZddlmZmZmZddlmZedZd ejeee ed fee jee ege efd d d ZdS))Future)datetime)AnyCallableOptionalTypeVarUnion) Observableabc from_futurethrowtyping)CompositeDisposableSerialDisposableSingleAssignmentDisposable)TimeoutScheduler_TNz Future[_T])duetimeother schedulerreturncsL|pttd}t|tr$t|n|ttttdfdd }|S)NTimeout)sourcercs4dtjtttjtjdfdd }t|S)a\Returns the source observable sequence or the other observable sequence if duetime elapses. Examples: >>> res = timeout(source) Args: source: Source observable to timeout Returns: An observable sequence switching to the other sequence in case of a timeout. N)observer scheduler_rc s p|ptdgdgt}tt|_ddfdd tddfdd }tdd fd d }ddfd d } j||||d|_tS)NFr)rcsVddtjtdfdd }ttrD|_n|_dS)Nr)rstatecs0dkd<d}|r,j|d_dS)Nrr) subscribe disposable)rrZ timer_wins)_idmy_idobsr subscriptionswitchedM/opt/alt/python38/lib/python3.8/site-packages/reactivex/operators/_timeout.pyaction<szRtimeout_..timeout..subscribe..create_timer..action)N)r SchedulerBaser isinstancerZschedule_absoluterZschedule_relative)r&)r _schedulerrr!rr"r#timer)r r% create_timer9s " zBtimeout_..timeout..subscribe..create_timer)valuercs2d }|r.dd7<|dSNr)on_next)r,Z send_wins)rr+rr#r$r%r/Ks   z=timeout_..timeout..subscribe..on_next)errorrcs,d }|r(dd7<|dSr-)on_error)r0Z on_error_winsrrr#r$r%r1Rs z>timeout_..timeout..subscribe..on_errorcs*d }|r&dd7<dSr-) on_completed)Zon_completed_winsr2r$r%r3Xs zBtimeout_..timeout..subscribe..on_completedr) rZ singletonrrrr Exceptionrr)rroriginalr/r1r3)rr!rr)rr)r+rr"r#r*r%r+s& z,timeout_..timeout..subscribe)N)r Z ObserverBaserrr'ZDisposableBaser )rrrr!r)rr%timeouts8ztimeout_..timeout)r r4r(rr r r)rrrr7r$r6r%timeout_s    Ir8)NN)asynciorrr rrrrrZ reactivexr r r r Zreactivex.disposablerrrZreactivex.schedulerrrZAbsoluteOrRelativeTimer'r8r$r$r$r%s