Ejemplo n.º 1
0
 def __init__(self, name, on_next=None, on_error=None, on_completed=None):
     on_error = on_error or self._error_handler
     Node.__init__(self, name)
     Observer.__init__(self,
                       on_next=on_next,
                       on_error=on_error,
                       on_completed=on_completed)
Ejemplo n.º 2
0
 def melkweg_observer(self, observer: Observer, _) -> Observer:
     parser = MelkwegParser()
     data = fetch(self.scrape_url)
     observer.on_next(
         parser.parse(ParsingContext(venue=self.venue, content=data)))
     observer.on_completed()
     return observer
Ejemplo n.º 3
0
    def __scan_range(self, observer: Observer, scan_range: range) -> None:

        with self._context.lock:
            try:
                for unit in scan_range:

                    if unit in self.__found_units:
                        continue

                    device: Optional[ModbusDevice] = self.__scan_unit(unit)

                    if device is not None:

                        self.__found_units.add(unit)

                        # TODO
                        # device.on_close().subscribe(
                        #     lambda _: self.__found_units.remove(device.unit)
                        # )

                        observer.on_next(device)

            except SerialException:
                pass

            except Exception as e:
                observer.on_error(e)
Ejemplo n.º 4
0
    def simplon_observer(self, observer: Observer, _) -> Disposable:
        parser = SimplonParser()
        data = fetch(self.scrape_url)
        events = parser.parse(ParsingContext(venue=self.venue, content=data))

        observer.on_next(events)
        observer.on_completed()
        return observer
Ejemplo n.º 5
0
def test_to_observer_notification_on_completed():
    i = 0

    def next(n):
        assert(i == 0)
        assert(n.kind == 'C')
        assert(not n.has_value)

    Observer.from_notifier(next).on_completed()
Ejemplo n.º 6
0
def test_to_observer_notification_on_completed():
    i = 0

    def next(n):
        assert (i == 0)
        assert (n.kind == 'C')
        assert (not n.has_value)

    Observer.from_notifier(next).on_completed()
Ejemplo n.º 7
0
 def rx_loop(observer: Observer, scheduler: typing.Scheduler):
     print("Looping urls")
     loop = asyncio.get_event_loop()
     try:
         loop.run_until_complete(async_sender(urls, observer))
     except Exception as e:
         observer.on_error(e)
     finally:
         loop.close()
         observer.on_completed()
Ejemplo n.º 8
0
def test_to_observer_notification_on_error():
    ex = 'ex'
    i = 0

    def next(n):
        assert(i == 0)
        assert(n.kind == 'E')
        assert(n.exception == ex)
        assert(not n.has_value)

    Observer.from_notifier(next).on_error(ex)
Ejemplo n.º 9
0
def test_to_observer_notification_on_next():
    i = 0

    def next(n):
        assert (i == 0)
        assert (n.kind == 'N')
        assert (n.value == 42)
        assert (not hasattr(n, "exception"))
        assert (n.has_value)

    Observer.from_notifier(next).on_next(42)
Ejemplo n.º 10
0
def test_to_observer_notification_on_error():
    ex = 'ex'
    i = 0

    def next(n):
        assert (i == 0)
        assert (n.kind == 'E')
        assert (n.exception == ex)
        assert (not n.has_value)

    Observer.from_notifier(next).on_error(ex)
Ejemplo n.º 11
0
def test_to_observer_notification_on_next():
    i = 0

    def next(n):
        assert(i == 0)
        assert(n.kind == 'N')
        assert(n.value == 42)
        assert(not hasattr(n, "exception"))
        assert(n.has_value)

    Observer.from_notifier(next).on_next(42)
Ejemplo n.º 12
0
 def observe(observer: Observer, _: Optional[Scheduler]) -> None:
     assert device is not None
     self._should_monitor_evdev_events = True
     for event in device.read_loop():
         if not self._should_monitor_evdev_events:
             break
         if event.type == ecodes.EV_KEY or \
                 (event.type == ecodes.EV_ABS and self.should_send_ev_abs_events):
             observer.on_next(event)
     device.close()
     observer.on_completed()
Ejemplo n.º 13
0
def test_create_on_next():
    next = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    res = Observer(on_next)

    res.on_next(42)
    assert next[0]
    return res.on_completed()
Ejemplo n.º 14
0
    def vera_observer(self, observer: Observer, _) -> Disposable:
        vera_parser = VeraParser()

        items_per_page = 20
        page_index = 0
        done = False
        while not done:
            page_index += 1
            url = self.scrape_url.format(page_index, items_per_page)
            data = fetch(url)
            new_events = vera_parser.parse(ParsingContext(venue=self.venue, content=data))
            observer.on_next(new_events)
            done = len(new_events) < items_per_page
        observer.on_completed()
        return observer
Ejemplo n.º 15
0
    def _subscribe_core(self,
                        observer: Observer,
                        scheduler: Scheduler = None) -> Disposable:
        with self.lock:
            self.check_disposed()
            if not self.is_stopped:
                self.observers.append(observer)
                return InnerSubscription(self, observer)

            if self.exception:
                observer.on_error(self.exception)
                return Disposable.empty()

            observer.on_completed()
            return Disposable.empty()
Ejemplo n.º 16
0
def test_subject_create():
    _x = [None]
    _ex = [None]
    done = False

    def on_next(x):
        _x[0] = x

    def on_error(ex):
        _ex[0] = ex

    def on_completed():
        done = True

    v = Observer(on_next, on_error, on_completed)

    o = rx.return_value(42)

    s = Subject.create(v, o)

    def on_next2(x):
        _x[0] = x

    s.subscribe(on_next2)

    assert (42 == _x[0])
    s.on_next(21)

    e = 'ex'
    s.on_error(e)

    assert (e == _ex[0])

    s.on_completed()
    assert (not done)
Ejemplo n.º 17
0
 def grpc_subscribe(self) -> Disposable:
     disposables = []
     for observable in self._observable_to_be_subscribed.values():
         disposables.append(observable.subscribe(
             Observer(
                 on_next=lambda grpc_invocation: grpc_invocation.run(),
                 on_error=lambda e: _log('Error: ', e)
             )
         ))
     self._observable_to_be_subscribed.clear()
     return CompositeDisposable(*disposables)
Ejemplo n.º 18
0
def test_create_on_next_close_has_error():
    e_ = None
    ex = 'ex'
    next = [False]
    completed = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_completed():
        completed[0] = True

    res = Observer(on_next, None, on_completed)

    res.on_next(42)
    assert next[0]
    assert not completed[0]
    try:
        res.on_error(ex)
        assert False
    except Exception as e:
        e_ = e.args[0]

    assert ex == e_
    assert not completed[0]
Ejemplo n.º 19
0
def test_create_on_next_throw_close2():
    ex = 'ex'
    next = [True]
    error = [False]
    completed = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_error(e):
        assert ex == e
        error[0] = True

    def on_completed():
        completed[0] = True

    res = Observer(on_next, on_error, on_completed)

    res.on_next(42)

    assert next[0]
    assert not error[0]
    assert not completed[0]

    res.on_error(ex)

    assert not completed[0]
    assert error[0]
Ejemplo n.º 20
0
    def __read_all_values(self, observer: Observer):

        message1 = modbus.read_holding_registers(slave_id=self.__unit,
                                                 starting_address=0,
                                                 quantity=50)

        message2 = modbus.read_holding_registers(slave_id=self.__unit,
                                                 starting_address=50,
                                                 quantity=50)

        message3 = modbus.read_holding_registers(slave_id=self.__unit,
                                                 starting_address=100,
                                                 quantity=2)

        first_batch = self.__context.send(message1, 0.5)
        second_batch = self.__context.send(message2, 0.5)
        message3 = self.__context.send(message3, 0.5)

        all_values = first_batch + second_batch

        values = struct.unpack("23i6h25i", struct.pack("102H", *all_values))

        for k, v in VALUE_MAP.items():
            observer.on_next(DeviceValue(self, v, values[k]))
Ejemplo n.º 21
0
def test_create_on_next_has_error():
    ex = 'ex'
    next = [False]
    _e = None

    def on_next(x):
        assert 42 == x
        next[0] = True

    res = Observer(on_next)

    res.on_next(42)
    assert next[0]

    try:
        res.on_error(ex)
        assert False
    except Exception as e:
        e_ = e.args[0]

    assert ex == e_
Ejemplo n.º 22
0
def test_create_on_next_on_error():
    ex = 'ex'
    next = [True]
    error = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True

    def on_error(e):
        assert ex == e
        error[0] = True

    res = Observer(on_next, on_error)

    res.on_next(42)

    assert next[0]
    assert not error[0]

    res.on_error(ex)
    assert error[0]
Ejemplo n.º 23
0
def test_create_on_next_on_completed():
    next = [False]
    completed = [False]

    def on_next(x):
        assert 42 == x
        next[0] = True
        return next[0]

    def on_completed():
        completed[0] = True
        return completed[0]

    res = Observer(on_next, None, on_completed)

    res.on_next(42)

    assert next[0]
    assert not completed[0]

    res.on_completed()

    assert completed[0]
Ejemplo n.º 24
0
def make_TM(observer: Observer, _: Scheduler):
    observer.on_next(Write(1, "x"))
    observer.on_next(Read(2, "y"))
    observer.on_next(Read(1, "x"))
    observer.on_next(Commit(1))
    observer.on_next(Read(2, "x"))
    observer.on_next(Write(2, "y"))
    observer.on_next(Commit(2))
    return observer
Ejemplo n.º 25
0
 def __init__(self, name, config=None):
     Node.__init__(self, name, config)
     Observable.__init__(self, self.on_subscribe)
     Observer.__init__(self, self.on_command, self._error_handle)