U vi @ sz d dl mZmZmZmZ d dlmZmZ d dlm Z m Z mZmZ d dl mZ edZeee ee dddZdgZd S ) )AnyIterableOptionalTypeVar) Observableabc)CompositeDisposable DisposableSerialDisposableSingleAssignmentDisposable)CurrentThreadScheduler_T)sourcesreturnc s6 t | dtjt ttj tjd fdd }t|S )a Continues an observable sequence that is terminated by an exception with the next observable sequence. Examples: >>> res = catch([xs, ys, zs]) >>> res = reactivex.catch(src for src in [xs, ys, zs]) Args: sources: an Iterable of observables. Thus a generator is accepted. Returns: An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully. N)observer scheduler_r c sx p t t t d ddtjtd d f dd _d dfdd}tt |S ) NF) schedulerstater c s t d d fdd}r"d S zt}W nV tk rZ rN n Y nP t k r } z| W 5 d }~X Y n&X