U vi @ s d dl mZmZmZmZmZmZ d dlmZm Z m Z d dl mZmZm Z d dlmZ edZe jee j eee gee f dddZeegee f eee gee f d d dZddgZdS ) )AnyCallableListOptionalTypeVarcast) Observableabctyping)CompositeDisposableSerialDisposableSingleAssignmentDisposable)TimeoutScheduler_T)duetime schedulerreturnc s" t t t t d fdd}|S )Nsourcer c s2 dt jt tt j t jd fdd }t|S )ay Ignores values from an observable sequence which are followed by another value before duetime. Example: >>> res = debounce(source) Args: source: Source observable to debounce. Returns: An operator function that takes the source observable and returns the debounced observable sequence. N)observer scheduler_r c s p|pt t dgttd gdg td d fdd}td d fdd}d d fd d}j||||d}t|S ) NFr xr c sh dd<