def scan(self, accumulator, seed=None): """Applies an accumulator function over an observable sequence and returns each intermediate result. The optional seed value is used as the initial accumulator value. For aggregation behavior with no intermediate results, see Observable.aggregate. 1 - scanned = source.scan(lambda acc, x: acc + x) 2 - scanned = source.scan(lambda acc, x: acc + x, 0) Keyword arguments: accumulator -- An accumulator function to be invoked on each element. seed -- [Optional] The initial accumulator value. Returns an observable sequence containing the accumulated values.""" has_seed = False if not seed is None: has_seed = True source = self def defer(): has_accumulation = [False] accumulation = [None] def projection(x): if has_accumulation[0]: accumulation[0] = accumulator(accumulation[0], x) else: accumulation[0] = accumulator(seed, x) if has_seed else x has_accumulation[0] = True return accumulation[0] return source.select(projection) return Observable.defer(defer)
def checkTransaction(id, usuario): def defer(): try: ini = datetime.today() resp = client.service.CheckTransaction(id, usuario) fin = datetime.today() delta = fin - ini print( ini.strftime('Inicio: %H:%M:%S Tiempo de ejecucion: ') + str(delta.seconds) + ' segundos - CheckTransaction') #respDic = {'transaction_id': resp['transaction_id'], 'rcode': resp['rcode´],'rcode_description': resp['rcode_description'],'op_account': resp['op_account'],'op_authorization': resp['op_authorization'],'printData': resp['printData'],'xmlDevData': resp['xmlDevData'] } respDic = { 'transaction_id': resp['transaction_id'], 'rcode': resp['rcode'], 'rcode_description': resp['rcode_description'], 'op_account': resp['op_account'], 'op_authorization': resp['op_authorization'], 'xmlDevData': resp['xmlDevData'] } print("valor respDic") print(respDic) return Observable.just(respDic) except: return Observable.just({ "rcode": 12, "rcode_description": "Servicio CheckTransaction no disponible" }) return Observable.defer(defer)
def if_then(cls, condition, then_source, else_source=None, scheduler=None): """Determines whether an observable collection contains values. Example: 1 - res = rx.Observable.if(condition, obs1) 2 - res = rx.Observable.if(condition, obs1, obs2) 3 - res = rx.Observable.if(condition, obs1, scheduler=scheduler) Keyword parameters: condition -- {Function} The condition which determines if the then_source or else_source will be run. then_source -- {Observable} The observable sequence or Promise that will be run if the condition function returns true. else_source -- {Observable} [Optional] The observable sequence or Promise that will be run if the condition function returns False. If this is not provided, it defaults to Rx.Observabe.Empty scheduler -- [Optional] Scheduler to use. Returns an observable {Observable} sequence which is either the then_source or else_source.""" else_source = else_source or Observable.empty(scheduler=scheduler) then_source = Observable.from_future(then_source) else_source = Observable.from_future(else_source) def factory(): return then_source if condition() else else_source return Observable.defer(factory)
def create(): def defer(): nonlocal invoked invoked += 1 raise Exception(ex) return Observable.defer(defer)
def create(): def defer(): nonlocal invoked, xs invoked += 1 xs = scheduler.create_cold_observable(on_next(100, scheduler.clock), on_next(200, invoked), on_next(1100, 1000)) return xs return Observable.defer(defer)
def case(cls, selector, sources, default_source=None, scheduler=None): """Uses selector to determine which source in sources to use. There is an alias 'switch_case'. Example: 1 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }) 2 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }, obs0) 3 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }, scheduler=scheduler) Keyword arguments: :param types.FunctionType selector: The function which extracts the value for to test in a case statement. :param list sources: A object which has keys which correspond to the case statement labels. :param Observable default_source: The observable sequence or Promise that will be run if the sources are not matched. If this is not provided, it defaults to rx.Observabe.empty with the specified scheduler. :returns: An observable sequence which is determined by a case statement. :rtype: Observable """ default_source = default_source or Observable.empty(scheduler=scheduler) def factory(): try: result = sources[selector()] except KeyError: result = default_source result = Observable.from_future(result) return result return Observable.defer(factory)
def create(): def defer(): invoked[0] += 1 xs[0] = scheduler.create_cold_observable( on_next(100, scheduler.clock), on_completed(200)) return xs[0] return Observable.defer(defer)
def create(): def defer(scheduler): invoked[0] += 1 xs[0] = scheduler.create_cold_observable( on_next(100, scheduler.clock), on_error(200, ex)) return xs[0] return Observable.defer(defer)
def create(): def defer(): nonlocal invoked, xs invoked += 1 xs = scheduler.create_cold_observable( on_next(100, scheduler.clock), on_error(200, ex)) return xs return Observable.defer(defer)
def create(): def defer(): invoked[0] += 1 xs[0] = scheduler.create_cold_observable( on_next(100, scheduler.clock), on_completed(200) ) return xs[0] return Observable.defer(defer)
def requestId(usuario, password): def defer(): try: ini = datetime.today() id = client.service.GetTRequestID(usuario, password, '') fin = datetime.today() delta = fin - ini print( ini.strftime('Inicio: %H:%M:%S Tiempo de ejecucion : ') + str(delta.seconds) + ' segundos - GetTRequestID') print(id) return Observable.just((id)) except: return Observable.just((None)) return Observable.defer(defer)
def solicitaTAE(id, usuario, password, sku_code, celular, monto): def defer(): try: ini = datetime.today() resp = client.service.DoT(id, usuario, sku_code, celular, monto) fin = datetime.today() delta = fin - ini print( ini.strftime('Inicio: %H:%M:%S Tiempo de ejecucion: ') + str(delta.seconds) + ' segundos - DoT') return Observable.just((id, resp)) except: return Observable.just({ "rcode": 12, "rcode_description": "Servicio DoT no disponible" }) return Observable.defer(defer)
def saldo(usuario, password): def defer(): try: ini = datetime.today() resp = client.service.GetBalance(usuario, password) print("obtener balance " + usuario + " - " + password) print(resp) fin = datetime.today() delta = fin - ini print( ini.strftime('Inicio: %H:%M:%S Tiempo de ejecucion : ') + str(delta.seconds) + ' segundos - GetBalance') tree = ET.ElementTree(ET.fromstring(resp)) monto = tree.find("balance").text print(monto) return Observable.just((monto)) except: return Observable.just((None)) return Observable.defer(defer)
def test_ref_count_notconnected(self): disconnected = [False] count = [0] def factory(): count[0] += 1 def create(obs): def func(): disconnected[0] = True return func return Observable.create(create) xs = Observable.defer(factory) subject = MySubject() conn = ConnectableObservable(xs, subject) refd = conn.ref_count() dis1 = refd.subscribe() self.assertEqual(1, count[0]) self.assertEqual(1, subject.subscribe_count) assert (not disconnected[0]) dis2 = refd.subscribe() self.assertEqual(1, count[0]) self.assertEqual(2, subject.subscribe_count) assert (not disconnected[0]) dis1.dispose() assert (not disconnected[0]) dis2.dispose() assert (disconnected[0]) disconnected[0] = False dis3 = refd.subscribe() self.assertEqual(2, count[0]) self.assertEqual(3, subject.subscribe_count) assert (not disconnected[0]) dis3.dispose() assert (disconnected[0])
def test_ref_count_notconnected(self): disconnected = [False] count = [0] def factory(): count[0] += 1 def create(obs): def func(): disconnected[0] = True return func return Observable.create(create) xs = Observable.defer(factory) subject = MySubject() conn = ConnectableObservable(xs, subject) refd = conn.ref_count() dis1 = refd.subscribe() self.assertEqual(1, count[0]) self.assertEqual(1, subject.subscribe_count) assert(not disconnected[0]) dis2 = refd.subscribe() self.assertEqual(1, count[0]) self.assertEqual(2, subject.subscribe_count) assert(not disconnected[0]) dis1.dispose() assert(not disconnected[0]) dis2.dispose() assert(disconnected[0]) disconnected[0] = False dis3 = refd.subscribe() self.assertEqual(2, count[0]) self.assertEqual(3, subject.subscribe_count) assert(not disconnected[0]) dis3.dispose() assert(disconnected[0])
def case(cls, selector, sources, default_source=None, scheduler=None): """Uses selector to determine which source in sources to use. There is an alias 'switch_case'. Example: 1 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }) 2 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }, obs0) 3 - res = rx.Observable.case(selector, { '1': obs1, '2': obs2 }, scheduler=scheduler) Keyword arguments: selector -- {Function} The function which extracts the value for to test in a case statement. sources -- {Array} A object which has keys which correspond to the case statement labels. default_source-- {Observable} [Optional] The observable sequence or Promise that will be run if the sources are not matched. If this is not provided, it defaults to Rx.Observabe.empty with the specified scheduler. Returns an observable {Observable} sequence which is determined by a case statement.""" default_source = default_source or Observable.empty( scheduler=scheduler) def factory(): try: result = sources[selector()] except KeyError: result = default_source result = Observable.from_future(result) return result return Observable.defer(factory)
def create(): def defer(): invoked[0] += 1 raise Exception(ex) return Observable.defer(defer)
def create(): def defer(scheduler): invoked[0] += 1 raise Exception(ex) return Observable.defer(defer)
def execute(self) -> Observable: LOG.debug("SetSpeedProfileInteractor.execute()") return Observable.defer(lambda: Observable.just(self.__check_new_version()))
def execute(self) -> Observable: LOG.debug("GetStatusInteractor.execute()") return Observable.defer(lambda: Observable.just(self._kraken_repository.get_status()))
def execute(self, channel_value: str, profile_data: List[Tuple[int, int]]) -> Observable: LOG.debug("SetSpeedProfileInteractor.execute()") return Observable.defer(lambda: Observable.just( self._kraken_repository.set_speed_profile(channel_value, profile_data)))