示例#1
0
文件: scan.py 项目: jesonjn/RxPY
    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)
示例#2
0
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)
示例#3
0
文件: ifthen.py 项目: jesonjn/RxPY
    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)
示例#4
0
文件: ifthen.py 项目: jesonjn/RxPY
    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
            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)
示例#8
0
文件: case.py 项目: AlexMost/RxPY
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)
示例#9
0
        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)
示例#10
0
        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)
示例#12
0
 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)
示例#13
0
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)
示例#14
0
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)
示例#15
0
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)
示例#16
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])
示例#17
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])
示例#18
0
文件: case.py 项目: jesonjn/RxPY
    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)
示例#19
0
文件: scan.py 项目: jesonjn/RxPY
    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)
示例#20
0
     def create():
         def defer():
             invoked[0] += 1
             raise Exception(ex)
 
         return Observable.defer(defer)
示例#21
0
        def create():
            def defer(scheduler):
                invoked[0] += 1
                raise Exception(ex)

            return Observable.defer(defer)
示例#22
0
 def execute(self) -> Observable:
     LOG.debug("SetSpeedProfileInteractor.execute()")
     return Observable.defer(lambda: Observable.just(self.__check_new_version()))
示例#23
0
 def execute(self) -> Observable:
     LOG.debug("GetStatusInteractor.execute()")
     return Observable.defer(lambda: Observable.just(self._kraken_repository.get_status()))
示例#24
0
 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)))