U vi @sddlmZmZmZmZddlmZmZmZddlm Z ddl m Z ddl mZedZdeeeeeegeefd d d Zdeeeeeeegeefd d dZdd gZdS))CallableOptionalTypeVarcast) Observableabccompose) operators)SequenceContainsNoElementsError) Predicate_TFN) has_default default_valuereturncs"ttttdfdd }|S)N)sourcercs.dtjtttjdfdd }t|S)N)observer schedulercsJttdtdfdd }fdd}j|j||dS)NFxcs rtdn|ddS)Nz'Sequence contains more than one elementT)on_error Exceptionrr seen_valuevalueU/opt/alt/python38/lib/python3.8/site-packages/reactivex/operators/_singleordefault.pyon_nexts z]single_or_default_async_..single_or_default_async..subscribe..on_nextcs,sstndS)N)rr r on_completedr)r rrrrrr!s zbsingle_or_default_async_..single_or_default_async..subscribe..on_completed)r)rr subscriber)rrrr)rr rrrrs  zLsingle_or_default_async_..single_or_default_async..subscribe)N)rZ ObserverBaser rZ SchedulerBaser)rrrr )rrsingle_or_default_asyncs z9single_or_default_async_..single_or_default_async)rr )r rr rrrsingle_or_default_async_ s r!) predicaterrcCs*|rtt|td|Std|SdS)aReturns 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. 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 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. NT)ropsfilterZsingle_or_defaultr!)r"rrrrsingle_or_default_1s  r%)FN)NN)typingrrrrZ reactivexrrrr r#Zreactivex.internal.exceptionsr Zreactivex.typingr r boolr!r%__all__rrrrs(    '  "