U vi{ @ s d dl mZmZmZmZ d dlmZmZmZ d dlm Z d dlmZ edZ edZddddeeje eeeej geje f eeee gee f eee geee ee f f d d dZdS ) )CallableOptionalTypeVarUnion)ConnectableObservable Observableabc) operators)CompositeDisposable_TSource_TResultN)subject_factorymapper)subjectr r returnc s0 t t tt t tt f d fdd}|S )a Multicasts 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 observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a mapper function. )sourcer c sP r6dt jt tt j t jd fdd }t|S sBtdt }|S )N)observer schedulerr c sH st tj|d} s&t