Source code for esptest.adapter.port.data_monitor_mixin

from typing import TYPE_CHECKING

import esptest.common.compat_typing as t

from ...common.data_monitor import DataMonitor

if TYPE_CHECKING:

    class _SupportsMonitors(t.Protocol):
        @property
        def monitors(self) -> t.List[DataMonitor]: ...

        @monitors.setter
        def monitors(self, new_monitors: t.List[DataMonitor]) -> None: ...

else:
    _SupportsMonitors = object


[docs] class DataMonitorMixin(_SupportsMonitors):
[docs] def add_monitor(self, monitor: DataMonitor) -> None: new_monitors = list(self.monitors) if monitor in new_monitors: return new_monitors.append(monitor) self.monitors = new_monitors
[docs] def remove_monitor(self, monitor: DataMonitor) -> None: new_monitors = list(self.monitors) if monitor not in new_monitors: return new_monitors.remove(monitor) self.monitors = new_monitors
[docs] def clear_monitors(self) -> None: self.monitors = []