20 lines
555 B
Python
20 lines
555 B
Python
from typing import Callable
|
|
|
|
from cpl_reactive_extensions import Observable, Subscriber
|
|
|
|
|
|
def operate(init: Callable[[Observable, Subscriber], None]):
|
|
def observable(source: Observable):
|
|
def create(self: Subscriber, lifted_source: Observable):
|
|
try:
|
|
return init(lifted_source, self)
|
|
except Exception as e:
|
|
self.error(e)
|
|
|
|
if "lift" not in dir(source):
|
|
raise TypeError("Unable to lift unknown Observable type")
|
|
|
|
return source.lift(create)
|
|
|
|
return observable
|